diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,367 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,44 @@
+# Amazon SageMaker geospatial capabilities SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2020-05-27@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-sagemaker-geospatial)
+and the [AWS API Reference](https://aws.amazon.com/documentation/).
+
+The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/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
+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
+
+See [Amazonka.SageMakerGeoSpatial](http://hackage.haskell.org/package/amazonka-sagemaker-geospatial/docs/Amazonka-SageMakerGeoSpatial.html)
+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+
+
+## Licence
+
+`amazonka-sagemaker-geospatial` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+
+Parts of the code are derived from AWS service descriptions, licensed under Apache 2.0.
+Source files subject to this contain an additional licensing clause in their header.
diff --git a/amazonka-sagemaker-geospatial.cabal b/amazonka-sagemaker-geospatial.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-sagemaker-geospatial.cabal
@@ -0,0 +1,186 @@
+cabal-version:      2.2
+name:               amazonka-sagemaker-geospatial
+version:            2.0
+synopsis:           Amazon SageMaker geospatial capabilities 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 @2020-05-27@ 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.SageMakerGeoSpatial.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.SageMakerGeoSpatial" 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-geospatial
+
+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.SageMakerGeoSpatial
+    Amazonka.SageMakerGeoSpatial.DeleteEarthObservationJob
+    Amazonka.SageMakerGeoSpatial.DeleteVectorEnrichmentJob
+    Amazonka.SageMakerGeoSpatial.ExportEarthObservationJob
+    Amazonka.SageMakerGeoSpatial.ExportVectorEnrichmentJob
+    Amazonka.SageMakerGeoSpatial.GetEarthObservationJob
+    Amazonka.SageMakerGeoSpatial.GetRasterDataCollection
+    Amazonka.SageMakerGeoSpatial.GetTile
+    Amazonka.SageMakerGeoSpatial.GetVectorEnrichmentJob
+    Amazonka.SageMakerGeoSpatial.Lens
+    Amazonka.SageMakerGeoSpatial.ListEarthObservationJobs
+    Amazonka.SageMakerGeoSpatial.ListRasterDataCollections
+    Amazonka.SageMakerGeoSpatial.ListTagsForResource
+    Amazonka.SageMakerGeoSpatial.ListVectorEnrichmentJobs
+    Amazonka.SageMakerGeoSpatial.SearchRasterDataCollection
+    Amazonka.SageMakerGeoSpatial.StartEarthObservationJob
+    Amazonka.SageMakerGeoSpatial.StartVectorEnrichmentJob
+    Amazonka.SageMakerGeoSpatial.StopEarthObservationJob
+    Amazonka.SageMakerGeoSpatial.StopVectorEnrichmentJob
+    Amazonka.SageMakerGeoSpatial.TagResource
+    Amazonka.SageMakerGeoSpatial.Types
+    Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameCloudRemoval
+    Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameGeoMosaic
+    Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameResampling
+    Amazonka.SageMakerGeoSpatial.Types.AreaOfInterest
+    Amazonka.SageMakerGeoSpatial.Types.AreaOfInterestGeometry
+    Amazonka.SageMakerGeoSpatial.Types.AssetValue
+    Amazonka.SageMakerGeoSpatial.Types.BandMathConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.CloudMaskingConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.CloudRemovalConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.ComparisonOperator
+    Amazonka.SageMakerGeoSpatial.Types.CustomIndicesInput
+    Amazonka.SageMakerGeoSpatial.Types.DataCollectionType
+    Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobErrorDetails
+    Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobErrorType
+    Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobExportStatus
+    Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobStatus
+    Amazonka.SageMakerGeoSpatial.Types.EoCloudCoverInput
+    Amazonka.SageMakerGeoSpatial.Types.EojDataSourceConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.ExportErrorDetails
+    Amazonka.SageMakerGeoSpatial.Types.ExportErrorDetailsOutput
+    Amazonka.SageMakerGeoSpatial.Types.ExportErrorType
+    Amazonka.SageMakerGeoSpatial.Types.ExportS3DataInput
+    Amazonka.SageMakerGeoSpatial.Types.ExportVectorEnrichmentJobOutputConfig
+    Amazonka.SageMakerGeoSpatial.Types.Filter
+    Amazonka.SageMakerGeoSpatial.Types.Geometry
+    Amazonka.SageMakerGeoSpatial.Types.GeoMosaicConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.GroupBy
+    Amazonka.SageMakerGeoSpatial.Types.InputConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.InputConfigOutput
+    Amazonka.SageMakerGeoSpatial.Types.ItemSource
+    Amazonka.SageMakerGeoSpatial.Types.JobConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.LandCoverSegmentationConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.LandsatCloudCoverLandInput
+    Amazonka.SageMakerGeoSpatial.Types.ListEarthObservationJobOutputConfig
+    Amazonka.SageMakerGeoSpatial.Types.ListVectorEnrichmentJobOutputConfig
+    Amazonka.SageMakerGeoSpatial.Types.LogicalOperator
+    Amazonka.SageMakerGeoSpatial.Types.MapMatchingConfig
+    Amazonka.SageMakerGeoSpatial.Types.MetadataProvider
+    Amazonka.SageMakerGeoSpatial.Types.MultiPolygonGeometryInput
+    Amazonka.SageMakerGeoSpatial.Types.Operation
+    Amazonka.SageMakerGeoSpatial.Types.OutputBand
+    Amazonka.SageMakerGeoSpatial.Types.OutputConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.OutputResolutionResamplingInput
+    Amazonka.SageMakerGeoSpatial.Types.OutputResolutionStackInput
+    Amazonka.SageMakerGeoSpatial.Types.OutputType
+    Amazonka.SageMakerGeoSpatial.Types.PlatformInput
+    Amazonka.SageMakerGeoSpatial.Types.PolygonGeometryInput
+    Amazonka.SageMakerGeoSpatial.Types.PredefinedResolution
+    Amazonka.SageMakerGeoSpatial.Types.Properties
+    Amazonka.SageMakerGeoSpatial.Types.Property
+    Amazonka.SageMakerGeoSpatial.Types.PropertyFilter
+    Amazonka.SageMakerGeoSpatial.Types.PropertyFilters
+    Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionMetadata
+    Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryInput
+    Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryOutput
+    Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryWithBandFilterInput
+    Amazonka.SageMakerGeoSpatial.Types.ResamplingConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.ReverseGeocodingConfig
+    Amazonka.SageMakerGeoSpatial.Types.S3DataInput
+    Amazonka.SageMakerGeoSpatial.Types.SortOrder
+    Amazonka.SageMakerGeoSpatial.Types.StackConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.TargetOptions
+    Amazonka.SageMakerGeoSpatial.Types.TemporalStatistics
+    Amazonka.SageMakerGeoSpatial.Types.TemporalStatisticsConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.TimeRangeFilterInput
+    Amazonka.SageMakerGeoSpatial.Types.Unit
+    Amazonka.SageMakerGeoSpatial.Types.UserDefined
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobConfig
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobDataSourceConfigInput
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobDocumentType
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobErrorDetails
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobErrorType
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportErrorDetails
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportErrorType
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportStatus
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobInputConfig
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobS3Data
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobStatus
+    Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobType
+    Amazonka.SageMakerGeoSpatial.Types.ViewOffNadirInput
+    Amazonka.SageMakerGeoSpatial.Types.ViewSunAzimuthInput
+    Amazonka.SageMakerGeoSpatial.Types.ViewSunElevationInput
+    Amazonka.SageMakerGeoSpatial.Types.ZonalStatistics
+    Amazonka.SageMakerGeoSpatial.Types.ZonalStatisticsConfigInput
+    Amazonka.SageMakerGeoSpatial.UntagResource
+    Amazonka.SageMakerGeoSpatial.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-sagemaker-geospatial-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.SageMakerGeoSpatial
+    Test.Amazonka.SageMakerGeoSpatial
+    Test.Amazonka.SageMakerGeoSpatial.Internal
+
+  build-depends:
+    , amazonka-core                  >=2.0 && <2.1
+    , amazonka-sagemaker-geospatial
+    , amazonka-test                  >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/DeleteEarthObservationJob.yaml b/fixture/DeleteEarthObservationJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEarthObservationJob.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteEarthObservationJobResponse.proto b/fixture/DeleteEarthObservationJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEarthObservationJobResponse.proto
diff --git a/fixture/DeleteVectorEnrichmentJob.yaml b/fixture/DeleteVectorEnrichmentJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVectorEnrichmentJob.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteVectorEnrichmentJobResponse.proto b/fixture/DeleteVectorEnrichmentJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteVectorEnrichmentJobResponse.proto
diff --git a/fixture/ExportEarthObservationJob.yaml b/fixture/ExportEarthObservationJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ExportEarthObservationJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ExportEarthObservationJobResponse.proto b/fixture/ExportEarthObservationJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ExportEarthObservationJobResponse.proto
diff --git a/fixture/ExportVectorEnrichmentJob.yaml b/fixture/ExportVectorEnrichmentJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ExportVectorEnrichmentJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ExportVectorEnrichmentJobResponse.proto b/fixture/ExportVectorEnrichmentJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ExportVectorEnrichmentJobResponse.proto
diff --git a/fixture/GetEarthObservationJob.yaml b/fixture/GetEarthObservationJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetEarthObservationJob.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetEarthObservationJobResponse.proto b/fixture/GetEarthObservationJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetEarthObservationJobResponse.proto
diff --git a/fixture/GetRasterDataCollection.yaml b/fixture/GetRasterDataCollection.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetRasterDataCollection.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetRasterDataCollectionResponse.proto b/fixture/GetRasterDataCollectionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetRasterDataCollectionResponse.proto
diff --git a/fixture/GetTile.yaml b/fixture/GetTile.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetTile.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetTileResponse.proto b/fixture/GetTileResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetTileResponse.proto
diff --git a/fixture/GetVectorEnrichmentJob.yaml b/fixture/GetVectorEnrichmentJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetVectorEnrichmentJob.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetVectorEnrichmentJobResponse.proto b/fixture/GetVectorEnrichmentJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetVectorEnrichmentJobResponse.proto
diff --git a/fixture/ListEarthObservationJobs.yaml b/fixture/ListEarthObservationJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListEarthObservationJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListEarthObservationJobsResponse.proto b/fixture/ListEarthObservationJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListEarthObservationJobsResponse.proto
diff --git a/fixture/ListRasterDataCollections.yaml b/fixture/ListRasterDataCollections.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRasterDataCollections.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListRasterDataCollectionsResponse.proto b/fixture/ListRasterDataCollectionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRasterDataCollectionsResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/ListVectorEnrichmentJobs.yaml b/fixture/ListVectorEnrichmentJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListVectorEnrichmentJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListVectorEnrichmentJobsResponse.proto b/fixture/ListVectorEnrichmentJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListVectorEnrichmentJobsResponse.proto
diff --git a/fixture/SearchRasterDataCollection.yaml b/fixture/SearchRasterDataCollection.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchRasterDataCollection.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SearchRasterDataCollectionResponse.proto b/fixture/SearchRasterDataCollectionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchRasterDataCollectionResponse.proto
diff --git a/fixture/StartEarthObservationJob.yaml b/fixture/StartEarthObservationJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartEarthObservationJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartEarthObservationJobResponse.proto b/fixture/StartEarthObservationJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartEarthObservationJobResponse.proto
diff --git a/fixture/StartVectorEnrichmentJob.yaml b/fixture/StartVectorEnrichmentJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartVectorEnrichmentJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartVectorEnrichmentJobResponse.proto b/fixture/StartVectorEnrichmentJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartVectorEnrichmentJobResponse.proto
diff --git a/fixture/StopEarthObservationJob.yaml b/fixture/StopEarthObservationJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopEarthObservationJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopEarthObservationJobResponse.proto b/fixture/StopEarthObservationJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopEarthObservationJobResponse.proto
diff --git a/fixture/StopVectorEnrichmentJob.yaml b/fixture/StopVectorEnrichmentJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopVectorEnrichmentJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopVectorEnrichmentJobResponse.proto b/fixture/StopVectorEnrichmentJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopVectorEnrichmentJobResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/sagemaker-geospatial/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  sagemaker-geospatial.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Amazonka/SageMakerGeoSpatial.hs b/gen/Amazonka/SageMakerGeoSpatial.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial.hs
@@ -0,0 +1,526 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.SageMakerGeoSpatial
+-- 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 @2020-05-27@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Provides APIs for creating and managing SageMaker geospatial resources.
+module Amazonka.SageMakerGeoSpatial
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** DeleteEarthObservationJob
+    DeleteEarthObservationJob (DeleteEarthObservationJob'),
+    newDeleteEarthObservationJob,
+    DeleteEarthObservationJobResponse (DeleteEarthObservationJobResponse'),
+    newDeleteEarthObservationJobResponse,
+
+    -- ** DeleteVectorEnrichmentJob
+    DeleteVectorEnrichmentJob (DeleteVectorEnrichmentJob'),
+    newDeleteVectorEnrichmentJob,
+    DeleteVectorEnrichmentJobResponse (DeleteVectorEnrichmentJobResponse'),
+    newDeleteVectorEnrichmentJobResponse,
+
+    -- ** ExportEarthObservationJob
+    ExportEarthObservationJob (ExportEarthObservationJob'),
+    newExportEarthObservationJob,
+    ExportEarthObservationJobResponse (ExportEarthObservationJobResponse'),
+    newExportEarthObservationJobResponse,
+
+    -- ** ExportVectorEnrichmentJob
+    ExportVectorEnrichmentJob (ExportVectorEnrichmentJob'),
+    newExportVectorEnrichmentJob,
+    ExportVectorEnrichmentJobResponse (ExportVectorEnrichmentJobResponse'),
+    newExportVectorEnrichmentJobResponse,
+
+    -- ** GetEarthObservationJob
+    GetEarthObservationJob (GetEarthObservationJob'),
+    newGetEarthObservationJob,
+    GetEarthObservationJobResponse (GetEarthObservationJobResponse'),
+    newGetEarthObservationJobResponse,
+
+    -- ** GetRasterDataCollection
+    GetRasterDataCollection (GetRasterDataCollection'),
+    newGetRasterDataCollection,
+    GetRasterDataCollectionResponse (GetRasterDataCollectionResponse'),
+    newGetRasterDataCollectionResponse,
+
+    -- ** GetTile
+    GetTile (GetTile'),
+    newGetTile,
+    GetTileResponse (GetTileResponse'),
+    newGetTileResponse,
+
+    -- ** GetVectorEnrichmentJob
+    GetVectorEnrichmentJob (GetVectorEnrichmentJob'),
+    newGetVectorEnrichmentJob,
+    GetVectorEnrichmentJobResponse (GetVectorEnrichmentJobResponse'),
+    newGetVectorEnrichmentJobResponse,
+
+    -- ** ListEarthObservationJobs (Paginated)
+    ListEarthObservationJobs (ListEarthObservationJobs'),
+    newListEarthObservationJobs,
+    ListEarthObservationJobsResponse (ListEarthObservationJobsResponse'),
+    newListEarthObservationJobsResponse,
+
+    -- ** ListRasterDataCollections (Paginated)
+    ListRasterDataCollections (ListRasterDataCollections'),
+    newListRasterDataCollections,
+    ListRasterDataCollectionsResponse (ListRasterDataCollectionsResponse'),
+    newListRasterDataCollectionsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** ListVectorEnrichmentJobs (Paginated)
+    ListVectorEnrichmentJobs (ListVectorEnrichmentJobs'),
+    newListVectorEnrichmentJobs,
+    ListVectorEnrichmentJobsResponse (ListVectorEnrichmentJobsResponse'),
+    newListVectorEnrichmentJobsResponse,
+
+    -- ** SearchRasterDataCollection
+    SearchRasterDataCollection (SearchRasterDataCollection'),
+    newSearchRasterDataCollection,
+    SearchRasterDataCollectionResponse (SearchRasterDataCollectionResponse'),
+    newSearchRasterDataCollectionResponse,
+
+    -- ** StartEarthObservationJob
+    StartEarthObservationJob (StartEarthObservationJob'),
+    newStartEarthObservationJob,
+    StartEarthObservationJobResponse (StartEarthObservationJobResponse'),
+    newStartEarthObservationJobResponse,
+
+    -- ** StartVectorEnrichmentJob
+    StartVectorEnrichmentJob (StartVectorEnrichmentJob'),
+    newStartVectorEnrichmentJob,
+    StartVectorEnrichmentJobResponse (StartVectorEnrichmentJobResponse'),
+    newStartVectorEnrichmentJobResponse,
+
+    -- ** StopEarthObservationJob
+    StopEarthObservationJob (StopEarthObservationJob'),
+    newStopEarthObservationJob,
+    StopEarthObservationJobResponse (StopEarthObservationJobResponse'),
+    newStopEarthObservationJobResponse,
+
+    -- ** StopVectorEnrichmentJob
+    StopVectorEnrichmentJob (StopVectorEnrichmentJob'),
+    newStopVectorEnrichmentJob,
+    StopVectorEnrichmentJobResponse (StopVectorEnrichmentJobResponse'),
+    newStopVectorEnrichmentJobResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- * Types
+
+    -- ** AlgorithmNameCloudRemoval
+    AlgorithmNameCloudRemoval (..),
+
+    -- ** AlgorithmNameGeoMosaic
+    AlgorithmNameGeoMosaic (..),
+
+    -- ** AlgorithmNameResampling
+    AlgorithmNameResampling (..),
+
+    -- ** ComparisonOperator
+    ComparisonOperator (..),
+
+    -- ** DataCollectionType
+    DataCollectionType (..),
+
+    -- ** EarthObservationJobErrorType
+    EarthObservationJobErrorType (..),
+
+    -- ** EarthObservationJobExportStatus
+    EarthObservationJobExportStatus (..),
+
+    -- ** EarthObservationJobStatus
+    EarthObservationJobStatus (..),
+
+    -- ** ExportErrorType
+    ExportErrorType (..),
+
+    -- ** GroupBy
+    GroupBy (..),
+
+    -- ** LogicalOperator
+    LogicalOperator (..),
+
+    -- ** MetadataProvider
+    MetadataProvider (..),
+
+    -- ** OutputType
+    OutputType (..),
+
+    -- ** PredefinedResolution
+    PredefinedResolution (..),
+
+    -- ** SortOrder
+    SortOrder (..),
+
+    -- ** TargetOptions
+    TargetOptions (..),
+
+    -- ** TemporalStatistics
+    TemporalStatistics (..),
+
+    -- ** Unit
+    Unit (..),
+
+    -- ** VectorEnrichmentJobDocumentType
+    VectorEnrichmentJobDocumentType (..),
+
+    -- ** VectorEnrichmentJobErrorType
+    VectorEnrichmentJobErrorType (..),
+
+    -- ** VectorEnrichmentJobExportErrorType
+    VectorEnrichmentJobExportErrorType (..),
+
+    -- ** VectorEnrichmentJobExportStatus
+    VectorEnrichmentJobExportStatus (..),
+
+    -- ** VectorEnrichmentJobStatus
+    VectorEnrichmentJobStatus (..),
+
+    -- ** VectorEnrichmentJobType
+    VectorEnrichmentJobType (..),
+
+    -- ** ZonalStatistics
+    ZonalStatistics (..),
+
+    -- ** AreaOfInterest
+    AreaOfInterest (AreaOfInterest'),
+    newAreaOfInterest,
+
+    -- ** AreaOfInterestGeometry
+    AreaOfInterestGeometry (AreaOfInterestGeometry'),
+    newAreaOfInterestGeometry,
+
+    -- ** AssetValue
+    AssetValue (AssetValue'),
+    newAssetValue,
+
+    -- ** BandMathConfigInput
+    BandMathConfigInput (BandMathConfigInput'),
+    newBandMathConfigInput,
+
+    -- ** CloudMaskingConfigInput
+    CloudMaskingConfigInput (CloudMaskingConfigInput'),
+    newCloudMaskingConfigInput,
+
+    -- ** CloudRemovalConfigInput
+    CloudRemovalConfigInput (CloudRemovalConfigInput'),
+    newCloudRemovalConfigInput,
+
+    -- ** CustomIndicesInput
+    CustomIndicesInput (CustomIndicesInput'),
+    newCustomIndicesInput,
+
+    -- ** EarthObservationJobErrorDetails
+    EarthObservationJobErrorDetails (EarthObservationJobErrorDetails'),
+    newEarthObservationJobErrorDetails,
+
+    -- ** EoCloudCoverInput
+    EoCloudCoverInput (EoCloudCoverInput'),
+    newEoCloudCoverInput,
+
+    -- ** EojDataSourceConfigInput
+    EojDataSourceConfigInput (EojDataSourceConfigInput'),
+    newEojDataSourceConfigInput,
+
+    -- ** ExportErrorDetails
+    ExportErrorDetails (ExportErrorDetails'),
+    newExportErrorDetails,
+
+    -- ** ExportErrorDetailsOutput
+    ExportErrorDetailsOutput (ExportErrorDetailsOutput'),
+    newExportErrorDetailsOutput,
+
+    -- ** ExportS3DataInput
+    ExportS3DataInput (ExportS3DataInput'),
+    newExportS3DataInput,
+
+    -- ** ExportVectorEnrichmentJobOutputConfig
+    ExportVectorEnrichmentJobOutputConfig (ExportVectorEnrichmentJobOutputConfig'),
+    newExportVectorEnrichmentJobOutputConfig,
+
+    -- ** Filter
+    Filter (Filter'),
+    newFilter,
+
+    -- ** GeoMosaicConfigInput
+    GeoMosaicConfigInput (GeoMosaicConfigInput'),
+    newGeoMosaicConfigInput,
+
+    -- ** Geometry
+    Geometry (Geometry'),
+    newGeometry,
+
+    -- ** InputConfigInput
+    InputConfigInput (InputConfigInput'),
+    newInputConfigInput,
+
+    -- ** InputConfigOutput
+    InputConfigOutput (InputConfigOutput'),
+    newInputConfigOutput,
+
+    -- ** ItemSource
+    ItemSource (ItemSource'),
+    newItemSource,
+
+    -- ** JobConfigInput
+    JobConfigInput (JobConfigInput'),
+    newJobConfigInput,
+
+    -- ** LandCoverSegmentationConfigInput
+    LandCoverSegmentationConfigInput (LandCoverSegmentationConfigInput'),
+    newLandCoverSegmentationConfigInput,
+
+    -- ** LandsatCloudCoverLandInput
+    LandsatCloudCoverLandInput (LandsatCloudCoverLandInput'),
+    newLandsatCloudCoverLandInput,
+
+    -- ** ListEarthObservationJobOutputConfig
+    ListEarthObservationJobOutputConfig (ListEarthObservationJobOutputConfig'),
+    newListEarthObservationJobOutputConfig,
+
+    -- ** ListVectorEnrichmentJobOutputConfig
+    ListVectorEnrichmentJobOutputConfig (ListVectorEnrichmentJobOutputConfig'),
+    newListVectorEnrichmentJobOutputConfig,
+
+    -- ** MapMatchingConfig
+    MapMatchingConfig (MapMatchingConfig'),
+    newMapMatchingConfig,
+
+    -- ** MultiPolygonGeometryInput
+    MultiPolygonGeometryInput (MultiPolygonGeometryInput'),
+    newMultiPolygonGeometryInput,
+
+    -- ** Operation
+    Operation (Operation'),
+    newOperation,
+
+    -- ** OutputBand
+    OutputBand (OutputBand'),
+    newOutputBand,
+
+    -- ** OutputConfigInput
+    OutputConfigInput (OutputConfigInput'),
+    newOutputConfigInput,
+
+    -- ** OutputResolutionResamplingInput
+    OutputResolutionResamplingInput (OutputResolutionResamplingInput'),
+    newOutputResolutionResamplingInput,
+
+    -- ** OutputResolutionStackInput
+    OutputResolutionStackInput (OutputResolutionStackInput'),
+    newOutputResolutionStackInput,
+
+    -- ** PlatformInput
+    PlatformInput (PlatformInput'),
+    newPlatformInput,
+
+    -- ** PolygonGeometryInput
+    PolygonGeometryInput (PolygonGeometryInput'),
+    newPolygonGeometryInput,
+
+    -- ** Properties
+    Properties (Properties'),
+    newProperties,
+
+    -- ** Property
+    Property (Property'),
+    newProperty,
+
+    -- ** PropertyFilter
+    PropertyFilter (PropertyFilter'),
+    newPropertyFilter,
+
+    -- ** PropertyFilters
+    PropertyFilters (PropertyFilters'),
+    newPropertyFilters,
+
+    -- ** RasterDataCollectionMetadata
+    RasterDataCollectionMetadata (RasterDataCollectionMetadata'),
+    newRasterDataCollectionMetadata,
+
+    -- ** RasterDataCollectionQueryInput
+    RasterDataCollectionQueryInput (RasterDataCollectionQueryInput'),
+    newRasterDataCollectionQueryInput,
+
+    -- ** RasterDataCollectionQueryOutput
+    RasterDataCollectionQueryOutput (RasterDataCollectionQueryOutput'),
+    newRasterDataCollectionQueryOutput,
+
+    -- ** RasterDataCollectionQueryWithBandFilterInput
+    RasterDataCollectionQueryWithBandFilterInput (RasterDataCollectionQueryWithBandFilterInput'),
+    newRasterDataCollectionQueryWithBandFilterInput,
+
+    -- ** ResamplingConfigInput
+    ResamplingConfigInput (ResamplingConfigInput'),
+    newResamplingConfigInput,
+
+    -- ** ReverseGeocodingConfig
+    ReverseGeocodingConfig (ReverseGeocodingConfig'),
+    newReverseGeocodingConfig,
+
+    -- ** S3DataInput
+    S3DataInput (S3DataInput'),
+    newS3DataInput,
+
+    -- ** StackConfigInput
+    StackConfigInput (StackConfigInput'),
+    newStackConfigInput,
+
+    -- ** TemporalStatisticsConfigInput
+    TemporalStatisticsConfigInput (TemporalStatisticsConfigInput'),
+    newTemporalStatisticsConfigInput,
+
+    -- ** TimeRangeFilterInput
+    TimeRangeFilterInput (TimeRangeFilterInput'),
+    newTimeRangeFilterInput,
+
+    -- ** UserDefined
+    UserDefined (UserDefined'),
+    newUserDefined,
+
+    -- ** VectorEnrichmentJobConfig
+    VectorEnrichmentJobConfig (VectorEnrichmentJobConfig'),
+    newVectorEnrichmentJobConfig,
+
+    -- ** VectorEnrichmentJobDataSourceConfigInput
+    VectorEnrichmentJobDataSourceConfigInput (VectorEnrichmentJobDataSourceConfigInput'),
+    newVectorEnrichmentJobDataSourceConfigInput,
+
+    -- ** VectorEnrichmentJobErrorDetails
+    VectorEnrichmentJobErrorDetails (VectorEnrichmentJobErrorDetails'),
+    newVectorEnrichmentJobErrorDetails,
+
+    -- ** VectorEnrichmentJobExportErrorDetails
+    VectorEnrichmentJobExportErrorDetails (VectorEnrichmentJobExportErrorDetails'),
+    newVectorEnrichmentJobExportErrorDetails,
+
+    -- ** VectorEnrichmentJobInputConfig
+    VectorEnrichmentJobInputConfig (VectorEnrichmentJobInputConfig'),
+    newVectorEnrichmentJobInputConfig,
+
+    -- ** VectorEnrichmentJobS3Data
+    VectorEnrichmentJobS3Data (VectorEnrichmentJobS3Data'),
+    newVectorEnrichmentJobS3Data,
+
+    -- ** ViewOffNadirInput
+    ViewOffNadirInput (ViewOffNadirInput'),
+    newViewOffNadirInput,
+
+    -- ** ViewSunAzimuthInput
+    ViewSunAzimuthInput (ViewSunAzimuthInput'),
+    newViewSunAzimuthInput,
+
+    -- ** ViewSunElevationInput
+    ViewSunElevationInput (ViewSunElevationInput'),
+    newViewSunElevationInput,
+
+    -- ** ZonalStatisticsConfigInput
+    ZonalStatisticsConfigInput (ZonalStatisticsConfigInput'),
+    newZonalStatisticsConfigInput,
+  )
+where
+
+import Amazonka.SageMakerGeoSpatial.DeleteEarthObservationJob
+import Amazonka.SageMakerGeoSpatial.DeleteVectorEnrichmentJob
+import Amazonka.SageMakerGeoSpatial.ExportEarthObservationJob
+import Amazonka.SageMakerGeoSpatial.ExportVectorEnrichmentJob
+import Amazonka.SageMakerGeoSpatial.GetEarthObservationJob
+import Amazonka.SageMakerGeoSpatial.GetRasterDataCollection
+import Amazonka.SageMakerGeoSpatial.GetTile
+import Amazonka.SageMakerGeoSpatial.GetVectorEnrichmentJob
+import Amazonka.SageMakerGeoSpatial.Lens
+import Amazonka.SageMakerGeoSpatial.ListEarthObservationJobs
+import Amazonka.SageMakerGeoSpatial.ListRasterDataCollections
+import Amazonka.SageMakerGeoSpatial.ListTagsForResource
+import Amazonka.SageMakerGeoSpatial.ListVectorEnrichmentJobs
+import Amazonka.SageMakerGeoSpatial.SearchRasterDataCollection
+import Amazonka.SageMakerGeoSpatial.StartEarthObservationJob
+import Amazonka.SageMakerGeoSpatial.StartVectorEnrichmentJob
+import Amazonka.SageMakerGeoSpatial.StopEarthObservationJob
+import Amazonka.SageMakerGeoSpatial.StopVectorEnrichmentJob
+import Amazonka.SageMakerGeoSpatial.TagResource
+import Amazonka.SageMakerGeoSpatial.Types
+import Amazonka.SageMakerGeoSpatial.UntagResource
+import Amazonka.SageMakerGeoSpatial.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 'SageMakerGeoSpatial'.
+
+-- $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/SageMakerGeoSpatial/DeleteEarthObservationJob.hs b/gen/Amazonka/SageMakerGeoSpatial/DeleteEarthObservationJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/DeleteEarthObservationJob.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMakerGeoSpatial.DeleteEarthObservationJob
+-- 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 an Earth Observation job.
+module Amazonka.SageMakerGeoSpatial.DeleteEarthObservationJob
+  ( -- * Creating a Request
+    DeleteEarthObservationJob (..),
+    newDeleteEarthObservationJob,
+
+    -- * Request Lenses
+    deleteEarthObservationJob_arn,
+
+    -- * Destructuring the Response
+    DeleteEarthObservationJobResponse (..),
+    newDeleteEarthObservationJobResponse,
+
+    -- * Response Lenses
+    deleteEarthObservationJobResponse_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.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newDeleteEarthObservationJob' smart constructor.
+data DeleteEarthObservationJob = DeleteEarthObservationJob'
+  { -- | The Amazon Resource Name (ARN) of the Earth Observation job being
+    -- deleted.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEarthObservationJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteEarthObservationJob_arn' - The Amazon Resource Name (ARN) of the Earth Observation job being
+-- deleted.
+newDeleteEarthObservationJob ::
+  -- | 'arn'
+  Prelude.Text ->
+  DeleteEarthObservationJob
+newDeleteEarthObservationJob pArn_ =
+  DeleteEarthObservationJob' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the Earth Observation job being
+-- deleted.
+deleteEarthObservationJob_arn :: Lens.Lens' DeleteEarthObservationJob Prelude.Text
+deleteEarthObservationJob_arn = Lens.lens (\DeleteEarthObservationJob' {arn} -> arn) (\s@DeleteEarthObservationJob' {} a -> s {arn = a} :: DeleteEarthObservationJob)
+
+instance Core.AWSRequest DeleteEarthObservationJob where
+  type
+    AWSResponse DeleteEarthObservationJob =
+      DeleteEarthObservationJobResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteEarthObservationJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteEarthObservationJob where
+  hashWithSalt _salt DeleteEarthObservationJob' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeleteEarthObservationJob where
+  rnf DeleteEarthObservationJob' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders DeleteEarthObservationJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteEarthObservationJob where
+  toPath DeleteEarthObservationJob' {..} =
+    Prelude.mconcat
+      ["/earth-observation-jobs/", Data.toBS arn]
+
+instance Data.ToQuery DeleteEarthObservationJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteEarthObservationJobResponse' smart constructor.
+data DeleteEarthObservationJobResponse = DeleteEarthObservationJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEarthObservationJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteEarthObservationJobResponse_httpStatus' - The response's http status code.
+newDeleteEarthObservationJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteEarthObservationJobResponse
+newDeleteEarthObservationJobResponse pHttpStatus_ =
+  DeleteEarthObservationJobResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteEarthObservationJobResponse_httpStatus :: Lens.Lens' DeleteEarthObservationJobResponse Prelude.Int
+deleteEarthObservationJobResponse_httpStatus = Lens.lens (\DeleteEarthObservationJobResponse' {httpStatus} -> httpStatus) (\s@DeleteEarthObservationJobResponse' {} a -> s {httpStatus = a} :: DeleteEarthObservationJobResponse)
+
+instance
+  Prelude.NFData
+    DeleteEarthObservationJobResponse
+  where
+  rnf DeleteEarthObservationJobResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMakerGeoSpatial/DeleteVectorEnrichmentJob.hs b/gen/Amazonka/SageMakerGeoSpatial/DeleteVectorEnrichmentJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/DeleteVectorEnrichmentJob.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMakerGeoSpatial.DeleteVectorEnrichmentJob
+-- 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 Vector Enrichment job.
+module Amazonka.SageMakerGeoSpatial.DeleteVectorEnrichmentJob
+  ( -- * Creating a Request
+    DeleteVectorEnrichmentJob (..),
+    newDeleteVectorEnrichmentJob,
+
+    -- * Request Lenses
+    deleteVectorEnrichmentJob_arn,
+
+    -- * Destructuring the Response
+    DeleteVectorEnrichmentJobResponse (..),
+    newDeleteVectorEnrichmentJobResponse,
+
+    -- * Response Lenses
+    deleteVectorEnrichmentJobResponse_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.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newDeleteVectorEnrichmentJob' smart constructor.
+data DeleteVectorEnrichmentJob = DeleteVectorEnrichmentJob'
+  { -- | The Amazon Resource Name (ARN) of the Vector Enrichment job being
+    -- deleted.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVectorEnrichmentJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteVectorEnrichmentJob_arn' - The Amazon Resource Name (ARN) of the Vector Enrichment job being
+-- deleted.
+newDeleteVectorEnrichmentJob ::
+  -- | 'arn'
+  Prelude.Text ->
+  DeleteVectorEnrichmentJob
+newDeleteVectorEnrichmentJob pArn_ =
+  DeleteVectorEnrichmentJob' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the Vector Enrichment job being
+-- deleted.
+deleteVectorEnrichmentJob_arn :: Lens.Lens' DeleteVectorEnrichmentJob Prelude.Text
+deleteVectorEnrichmentJob_arn = Lens.lens (\DeleteVectorEnrichmentJob' {arn} -> arn) (\s@DeleteVectorEnrichmentJob' {} a -> s {arn = a} :: DeleteVectorEnrichmentJob)
+
+instance Core.AWSRequest DeleteVectorEnrichmentJob where
+  type
+    AWSResponse DeleteVectorEnrichmentJob =
+      DeleteVectorEnrichmentJobResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteVectorEnrichmentJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteVectorEnrichmentJob where
+  hashWithSalt _salt DeleteVectorEnrichmentJob' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeleteVectorEnrichmentJob where
+  rnf DeleteVectorEnrichmentJob' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders DeleteVectorEnrichmentJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteVectorEnrichmentJob where
+  toPath DeleteVectorEnrichmentJob' {..} =
+    Prelude.mconcat
+      ["/vector-enrichment-jobs/", Data.toBS arn]
+
+instance Data.ToQuery DeleteVectorEnrichmentJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteVectorEnrichmentJobResponse' smart constructor.
+data DeleteVectorEnrichmentJobResponse = DeleteVectorEnrichmentJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVectorEnrichmentJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteVectorEnrichmentJobResponse_httpStatus' - The response's http status code.
+newDeleteVectorEnrichmentJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteVectorEnrichmentJobResponse
+newDeleteVectorEnrichmentJobResponse pHttpStatus_ =
+  DeleteVectorEnrichmentJobResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteVectorEnrichmentJobResponse_httpStatus :: Lens.Lens' DeleteVectorEnrichmentJobResponse Prelude.Int
+deleteVectorEnrichmentJobResponse_httpStatus = Lens.lens (\DeleteVectorEnrichmentJobResponse' {httpStatus} -> httpStatus) (\s@DeleteVectorEnrichmentJobResponse' {} a -> s {httpStatus = a} :: DeleteVectorEnrichmentJobResponse)
+
+instance
+  Prelude.NFData
+    DeleteVectorEnrichmentJobResponse
+  where
+  rnf DeleteVectorEnrichmentJobResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMakerGeoSpatial/ExportEarthObservationJob.hs b/gen/Amazonka/SageMakerGeoSpatial/ExportEarthObservationJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/ExportEarthObservationJob.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.SageMakerGeoSpatial.ExportEarthObservationJob
+-- 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 export results of an Earth Observation job and
+-- optionally source images used as input to the EOJ to an S3 location.
+module Amazonka.SageMakerGeoSpatial.ExportEarthObservationJob
+  ( -- * Creating a Request
+    ExportEarthObservationJob (..),
+    newExportEarthObservationJob,
+
+    -- * Request Lenses
+    exportEarthObservationJob_exportSourceImages,
+    exportEarthObservationJob_arn,
+    exportEarthObservationJob_executionRoleArn,
+    exportEarthObservationJob_outputConfig,
+
+    -- * Destructuring the Response
+    ExportEarthObservationJobResponse (..),
+    newExportEarthObservationJobResponse,
+
+    -- * Response Lenses
+    exportEarthObservationJobResponse_exportSourceImages,
+    exportEarthObservationJobResponse_httpStatus,
+    exportEarthObservationJobResponse_arn,
+    exportEarthObservationJobResponse_creationTime,
+    exportEarthObservationJobResponse_executionRoleArn,
+    exportEarthObservationJobResponse_exportStatus,
+    exportEarthObservationJobResponse_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.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newExportEarthObservationJob' smart constructor.
+data ExportEarthObservationJob = ExportEarthObservationJob'
+  { -- | The source images provided to the Earth Observation job being exported.
+    exportSourceImages :: Prelude.Maybe Prelude.Bool,
+    -- | The input Amazon Resource Name (ARN) of the Earth Observation job being
+    -- exported.
+    arn :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+    -- the job.
+    executionRoleArn :: Prelude.Text,
+    -- | An object containing information about the output file.
+    outputConfig :: OutputConfigInput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportEarthObservationJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'exportSourceImages', 'exportEarthObservationJob_exportSourceImages' - The source images provided to the Earth Observation job being exported.
+--
+-- 'arn', 'exportEarthObservationJob_arn' - The input Amazon Resource Name (ARN) of the Earth Observation job being
+-- exported.
+--
+-- 'executionRoleArn', 'exportEarthObservationJob_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+--
+-- 'outputConfig', 'exportEarthObservationJob_outputConfig' - An object containing information about the output file.
+newExportEarthObservationJob ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'executionRoleArn'
+  Prelude.Text ->
+  -- | 'outputConfig'
+  OutputConfigInput ->
+  ExportEarthObservationJob
+newExportEarthObservationJob
+  pArn_
+  pExecutionRoleArn_
+  pOutputConfig_ =
+    ExportEarthObservationJob'
+      { exportSourceImages =
+          Prelude.Nothing,
+        arn = pArn_,
+        executionRoleArn = pExecutionRoleArn_,
+        outputConfig = pOutputConfig_
+      }
+
+-- | The source images provided to the Earth Observation job being exported.
+exportEarthObservationJob_exportSourceImages :: Lens.Lens' ExportEarthObservationJob (Prelude.Maybe Prelude.Bool)
+exportEarthObservationJob_exportSourceImages = Lens.lens (\ExportEarthObservationJob' {exportSourceImages} -> exportSourceImages) (\s@ExportEarthObservationJob' {} a -> s {exportSourceImages = a} :: ExportEarthObservationJob)
+
+-- | The input Amazon Resource Name (ARN) of the Earth Observation job being
+-- exported.
+exportEarthObservationJob_arn :: Lens.Lens' ExportEarthObservationJob Prelude.Text
+exportEarthObservationJob_arn = Lens.lens (\ExportEarthObservationJob' {arn} -> arn) (\s@ExportEarthObservationJob' {} a -> s {arn = a} :: ExportEarthObservationJob)
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+exportEarthObservationJob_executionRoleArn :: Lens.Lens' ExportEarthObservationJob Prelude.Text
+exportEarthObservationJob_executionRoleArn = Lens.lens (\ExportEarthObservationJob' {executionRoleArn} -> executionRoleArn) (\s@ExportEarthObservationJob' {} a -> s {executionRoleArn = a} :: ExportEarthObservationJob)
+
+-- | An object containing information about the output file.
+exportEarthObservationJob_outputConfig :: Lens.Lens' ExportEarthObservationJob OutputConfigInput
+exportEarthObservationJob_outputConfig = Lens.lens (\ExportEarthObservationJob' {outputConfig} -> outputConfig) (\s@ExportEarthObservationJob' {} a -> s {outputConfig = a} :: ExportEarthObservationJob)
+
+instance Core.AWSRequest ExportEarthObservationJob where
+  type
+    AWSResponse ExportEarthObservationJob =
+      ExportEarthObservationJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ExportEarthObservationJobResponse'
+            Prelude.<$> (x Data..?> "ExportSourceImages")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Arn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "ExecutionRoleArn")
+            Prelude.<*> (x Data..:> "ExportStatus")
+            Prelude.<*> (x Data..:> "OutputConfig")
+      )
+
+instance Prelude.Hashable ExportEarthObservationJob where
+  hashWithSalt _salt ExportEarthObservationJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` exportSourceImages
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` executionRoleArn
+      `Prelude.hashWithSalt` outputConfig
+
+instance Prelude.NFData ExportEarthObservationJob where
+  rnf ExportEarthObservationJob' {..} =
+    Prelude.rnf exportSourceImages
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf outputConfig
+
+instance Data.ToHeaders ExportEarthObservationJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ExportEarthObservationJob where
+  toJSON ExportEarthObservationJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExportSourceImages" Data..=)
+              Prelude.<$> exportSourceImages,
+            Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just
+              ("ExecutionRoleArn" Data..= executionRoleArn),
+            Prelude.Just ("OutputConfig" Data..= outputConfig)
+          ]
+      )
+
+instance Data.ToPath ExportEarthObservationJob where
+  toPath =
+    Prelude.const "/export-earth-observation-job"
+
+instance Data.ToQuery ExportEarthObservationJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newExportEarthObservationJobResponse' smart constructor.
+data ExportEarthObservationJobResponse = ExportEarthObservationJobResponse'
+  { -- | The source images provided to the Earth Observation job being exported.
+    exportSourceImages :: Prelude.Maybe Prelude.Bool,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The output Amazon Resource Name (ARN) of the Earth Observation job being
+    -- exported.
+    arn :: Prelude.Text,
+    -- | The creation time.
+    creationTime :: Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+    -- the job.
+    executionRoleArn :: Prelude.Text,
+    -- | The status of the results of the Earth Observation job being exported.
+    exportStatus :: EarthObservationJobExportStatus,
+    -- | An object containing information about the output file.
+    outputConfig :: OutputConfigInput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportEarthObservationJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'exportSourceImages', 'exportEarthObservationJobResponse_exportSourceImages' - The source images provided to the Earth Observation job being exported.
+--
+-- 'httpStatus', 'exportEarthObservationJobResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'exportEarthObservationJobResponse_arn' - The output Amazon Resource Name (ARN) of the Earth Observation job being
+-- exported.
+--
+-- 'creationTime', 'exportEarthObservationJobResponse_creationTime' - The creation time.
+--
+-- 'executionRoleArn', 'exportEarthObservationJobResponse_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+--
+-- 'exportStatus', 'exportEarthObservationJobResponse_exportStatus' - The status of the results of the Earth Observation job being exported.
+--
+-- 'outputConfig', 'exportEarthObservationJobResponse_outputConfig' - An object containing information about the output file.
+newExportEarthObservationJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'executionRoleArn'
+  Prelude.Text ->
+  -- | 'exportStatus'
+  EarthObservationJobExportStatus ->
+  -- | 'outputConfig'
+  OutputConfigInput ->
+  ExportEarthObservationJobResponse
+newExportEarthObservationJobResponse
+  pHttpStatus_
+  pArn_
+  pCreationTime_
+  pExecutionRoleArn_
+  pExportStatus_
+  pOutputConfig_ =
+    ExportEarthObservationJobResponse'
+      { exportSourceImages =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        arn = pArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        executionRoleArn = pExecutionRoleArn_,
+        exportStatus = pExportStatus_,
+        outputConfig = pOutputConfig_
+      }
+
+-- | The source images provided to the Earth Observation job being exported.
+exportEarthObservationJobResponse_exportSourceImages :: Lens.Lens' ExportEarthObservationJobResponse (Prelude.Maybe Prelude.Bool)
+exportEarthObservationJobResponse_exportSourceImages = Lens.lens (\ExportEarthObservationJobResponse' {exportSourceImages} -> exportSourceImages) (\s@ExportEarthObservationJobResponse' {} a -> s {exportSourceImages = a} :: ExportEarthObservationJobResponse)
+
+-- | The response's http status code.
+exportEarthObservationJobResponse_httpStatus :: Lens.Lens' ExportEarthObservationJobResponse Prelude.Int
+exportEarthObservationJobResponse_httpStatus = Lens.lens (\ExportEarthObservationJobResponse' {httpStatus} -> httpStatus) (\s@ExportEarthObservationJobResponse' {} a -> s {httpStatus = a} :: ExportEarthObservationJobResponse)
+
+-- | The output Amazon Resource Name (ARN) of the Earth Observation job being
+-- exported.
+exportEarthObservationJobResponse_arn :: Lens.Lens' ExportEarthObservationJobResponse Prelude.Text
+exportEarthObservationJobResponse_arn = Lens.lens (\ExportEarthObservationJobResponse' {arn} -> arn) (\s@ExportEarthObservationJobResponse' {} a -> s {arn = a} :: ExportEarthObservationJobResponse)
+
+-- | The creation time.
+exportEarthObservationJobResponse_creationTime :: Lens.Lens' ExportEarthObservationJobResponse Prelude.UTCTime
+exportEarthObservationJobResponse_creationTime = Lens.lens (\ExportEarthObservationJobResponse' {creationTime} -> creationTime) (\s@ExportEarthObservationJobResponse' {} a -> s {creationTime = a} :: ExportEarthObservationJobResponse) Prelude.. Data._Time
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+exportEarthObservationJobResponse_executionRoleArn :: Lens.Lens' ExportEarthObservationJobResponse Prelude.Text
+exportEarthObservationJobResponse_executionRoleArn = Lens.lens (\ExportEarthObservationJobResponse' {executionRoleArn} -> executionRoleArn) (\s@ExportEarthObservationJobResponse' {} a -> s {executionRoleArn = a} :: ExportEarthObservationJobResponse)
+
+-- | The status of the results of the Earth Observation job being exported.
+exportEarthObservationJobResponse_exportStatus :: Lens.Lens' ExportEarthObservationJobResponse EarthObservationJobExportStatus
+exportEarthObservationJobResponse_exportStatus = Lens.lens (\ExportEarthObservationJobResponse' {exportStatus} -> exportStatus) (\s@ExportEarthObservationJobResponse' {} a -> s {exportStatus = a} :: ExportEarthObservationJobResponse)
+
+-- | An object containing information about the output file.
+exportEarthObservationJobResponse_outputConfig :: Lens.Lens' ExportEarthObservationJobResponse OutputConfigInput
+exportEarthObservationJobResponse_outputConfig = Lens.lens (\ExportEarthObservationJobResponse' {outputConfig} -> outputConfig) (\s@ExportEarthObservationJobResponse' {} a -> s {outputConfig = a} :: ExportEarthObservationJobResponse)
+
+instance
+  Prelude.NFData
+    ExportEarthObservationJobResponse
+  where
+  rnf ExportEarthObservationJobResponse' {..} =
+    Prelude.rnf exportSourceImages
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf exportStatus
+      `Prelude.seq` Prelude.rnf outputConfig
diff --git a/gen/Amazonka/SageMakerGeoSpatial/ExportVectorEnrichmentJob.hs b/gen/Amazonka/SageMakerGeoSpatial/ExportVectorEnrichmentJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/ExportVectorEnrichmentJob.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.SageMakerGeoSpatial.ExportVectorEnrichmentJob
+-- 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 copy results of a Vector Enrichment job to an S3
+-- location.
+module Amazonka.SageMakerGeoSpatial.ExportVectorEnrichmentJob
+  ( -- * Creating a Request
+    ExportVectorEnrichmentJob (..),
+    newExportVectorEnrichmentJob,
+
+    -- * Request Lenses
+    exportVectorEnrichmentJob_arn,
+    exportVectorEnrichmentJob_executionRoleArn,
+    exportVectorEnrichmentJob_outputConfig,
+
+    -- * Destructuring the Response
+    ExportVectorEnrichmentJobResponse (..),
+    newExportVectorEnrichmentJobResponse,
+
+    -- * Response Lenses
+    exportVectorEnrichmentJobResponse_httpStatus,
+    exportVectorEnrichmentJobResponse_arn,
+    exportVectorEnrichmentJobResponse_creationTime,
+    exportVectorEnrichmentJobResponse_executionRoleArn,
+    exportVectorEnrichmentJobResponse_exportStatus,
+    exportVectorEnrichmentJobResponse_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.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newExportVectorEnrichmentJob' smart constructor.
+data ExportVectorEnrichmentJob = ExportVectorEnrichmentJob'
+  { -- | The Amazon Resource Name (ARN) of the Vector Enrichment job.
+    arn :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the IAM rolewith permission to upload
+    -- to the location in OutputConfig.
+    executionRoleArn :: Prelude.Text,
+    -- | Output location information for exporting Vector Enrichment Job results.
+    outputConfig :: ExportVectorEnrichmentJobOutputConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportVectorEnrichmentJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'exportVectorEnrichmentJob_arn' - The Amazon Resource Name (ARN) of the Vector Enrichment job.
+--
+-- 'executionRoleArn', 'exportVectorEnrichmentJob_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM rolewith permission to upload
+-- to the location in OutputConfig.
+--
+-- 'outputConfig', 'exportVectorEnrichmentJob_outputConfig' - Output location information for exporting Vector Enrichment Job results.
+newExportVectorEnrichmentJob ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'executionRoleArn'
+  Prelude.Text ->
+  -- | 'outputConfig'
+  ExportVectorEnrichmentJobOutputConfig ->
+  ExportVectorEnrichmentJob
+newExportVectorEnrichmentJob
+  pArn_
+  pExecutionRoleArn_
+  pOutputConfig_ =
+    ExportVectorEnrichmentJob'
+      { arn = pArn_,
+        executionRoleArn = pExecutionRoleArn_,
+        outputConfig = pOutputConfig_
+      }
+
+-- | The Amazon Resource Name (ARN) of the Vector Enrichment job.
+exportVectorEnrichmentJob_arn :: Lens.Lens' ExportVectorEnrichmentJob Prelude.Text
+exportVectorEnrichmentJob_arn = Lens.lens (\ExportVectorEnrichmentJob' {arn} -> arn) (\s@ExportVectorEnrichmentJob' {} a -> s {arn = a} :: ExportVectorEnrichmentJob)
+
+-- | The Amazon Resource Name (ARN) of the IAM rolewith permission to upload
+-- to the location in OutputConfig.
+exportVectorEnrichmentJob_executionRoleArn :: Lens.Lens' ExportVectorEnrichmentJob Prelude.Text
+exportVectorEnrichmentJob_executionRoleArn = Lens.lens (\ExportVectorEnrichmentJob' {executionRoleArn} -> executionRoleArn) (\s@ExportVectorEnrichmentJob' {} a -> s {executionRoleArn = a} :: ExportVectorEnrichmentJob)
+
+-- | Output location information for exporting Vector Enrichment Job results.
+exportVectorEnrichmentJob_outputConfig :: Lens.Lens' ExportVectorEnrichmentJob ExportVectorEnrichmentJobOutputConfig
+exportVectorEnrichmentJob_outputConfig = Lens.lens (\ExportVectorEnrichmentJob' {outputConfig} -> outputConfig) (\s@ExportVectorEnrichmentJob' {} a -> s {outputConfig = a} :: ExportVectorEnrichmentJob)
+
+instance Core.AWSRequest ExportVectorEnrichmentJob where
+  type
+    AWSResponse ExportVectorEnrichmentJob =
+      ExportVectorEnrichmentJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ExportVectorEnrichmentJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Arn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "ExecutionRoleArn")
+            Prelude.<*> (x Data..:> "ExportStatus")
+            Prelude.<*> (x Data..:> "OutputConfig")
+      )
+
+instance Prelude.Hashable ExportVectorEnrichmentJob where
+  hashWithSalt _salt ExportVectorEnrichmentJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` executionRoleArn
+      `Prelude.hashWithSalt` outputConfig
+
+instance Prelude.NFData ExportVectorEnrichmentJob where
+  rnf ExportVectorEnrichmentJob' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf outputConfig
+
+instance Data.ToHeaders ExportVectorEnrichmentJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ExportVectorEnrichmentJob where
+  toJSON ExportVectorEnrichmentJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just
+              ("ExecutionRoleArn" Data..= executionRoleArn),
+            Prelude.Just ("OutputConfig" Data..= outputConfig)
+          ]
+      )
+
+instance Data.ToPath ExportVectorEnrichmentJob where
+  toPath =
+    Prelude.const "/export-vector-enrichment-jobs"
+
+instance Data.ToQuery ExportVectorEnrichmentJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newExportVectorEnrichmentJobResponse' smart constructor.
+data ExportVectorEnrichmentJobResponse = ExportVectorEnrichmentJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the Vector Enrichment job being
+    -- exported.
+    arn :: Prelude.Text,
+    -- | The creation time.
+    creationTime :: Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the IAM role with permission to upload
+    -- to the location in OutputConfig.
+    executionRoleArn :: Prelude.Text,
+    -- | The status of the results the Vector Enrichment job being exported.
+    exportStatus :: VectorEnrichmentJobExportStatus,
+    -- | Output location information for exporting Vector Enrichment Job results.
+    outputConfig :: ExportVectorEnrichmentJobOutputConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportVectorEnrichmentJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'exportVectorEnrichmentJobResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'exportVectorEnrichmentJobResponse_arn' - The Amazon Resource Name (ARN) of the Vector Enrichment job being
+-- exported.
+--
+-- 'creationTime', 'exportVectorEnrichmentJobResponse_creationTime' - The creation time.
+--
+-- 'executionRoleArn', 'exportVectorEnrichmentJobResponse_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role with permission to upload
+-- to the location in OutputConfig.
+--
+-- 'exportStatus', 'exportVectorEnrichmentJobResponse_exportStatus' - The status of the results the Vector Enrichment job being exported.
+--
+-- 'outputConfig', 'exportVectorEnrichmentJobResponse_outputConfig' - Output location information for exporting Vector Enrichment Job results.
+newExportVectorEnrichmentJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'executionRoleArn'
+  Prelude.Text ->
+  -- | 'exportStatus'
+  VectorEnrichmentJobExportStatus ->
+  -- | 'outputConfig'
+  ExportVectorEnrichmentJobOutputConfig ->
+  ExportVectorEnrichmentJobResponse
+newExportVectorEnrichmentJobResponse
+  pHttpStatus_
+  pArn_
+  pCreationTime_
+  pExecutionRoleArn_
+  pExportStatus_
+  pOutputConfig_ =
+    ExportVectorEnrichmentJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        arn = pArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        executionRoleArn = pExecutionRoleArn_,
+        exportStatus = pExportStatus_,
+        outputConfig = pOutputConfig_
+      }
+
+-- | The response's http status code.
+exportVectorEnrichmentJobResponse_httpStatus :: Lens.Lens' ExportVectorEnrichmentJobResponse Prelude.Int
+exportVectorEnrichmentJobResponse_httpStatus = Lens.lens (\ExportVectorEnrichmentJobResponse' {httpStatus} -> httpStatus) (\s@ExportVectorEnrichmentJobResponse' {} a -> s {httpStatus = a} :: ExportVectorEnrichmentJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the Vector Enrichment job being
+-- exported.
+exportVectorEnrichmentJobResponse_arn :: Lens.Lens' ExportVectorEnrichmentJobResponse Prelude.Text
+exportVectorEnrichmentJobResponse_arn = Lens.lens (\ExportVectorEnrichmentJobResponse' {arn} -> arn) (\s@ExportVectorEnrichmentJobResponse' {} a -> s {arn = a} :: ExportVectorEnrichmentJobResponse)
+
+-- | The creation time.
+exportVectorEnrichmentJobResponse_creationTime :: Lens.Lens' ExportVectorEnrichmentJobResponse Prelude.UTCTime
+exportVectorEnrichmentJobResponse_creationTime = Lens.lens (\ExportVectorEnrichmentJobResponse' {creationTime} -> creationTime) (\s@ExportVectorEnrichmentJobResponse' {} a -> s {creationTime = a} :: ExportVectorEnrichmentJobResponse) Prelude.. Data._Time
+
+-- | The Amazon Resource Name (ARN) of the IAM role with permission to upload
+-- to the location in OutputConfig.
+exportVectorEnrichmentJobResponse_executionRoleArn :: Lens.Lens' ExportVectorEnrichmentJobResponse Prelude.Text
+exportVectorEnrichmentJobResponse_executionRoleArn = Lens.lens (\ExportVectorEnrichmentJobResponse' {executionRoleArn} -> executionRoleArn) (\s@ExportVectorEnrichmentJobResponse' {} a -> s {executionRoleArn = a} :: ExportVectorEnrichmentJobResponse)
+
+-- | The status of the results the Vector Enrichment job being exported.
+exportVectorEnrichmentJobResponse_exportStatus :: Lens.Lens' ExportVectorEnrichmentJobResponse VectorEnrichmentJobExportStatus
+exportVectorEnrichmentJobResponse_exportStatus = Lens.lens (\ExportVectorEnrichmentJobResponse' {exportStatus} -> exportStatus) (\s@ExportVectorEnrichmentJobResponse' {} a -> s {exportStatus = a} :: ExportVectorEnrichmentJobResponse)
+
+-- | Output location information for exporting Vector Enrichment Job results.
+exportVectorEnrichmentJobResponse_outputConfig :: Lens.Lens' ExportVectorEnrichmentJobResponse ExportVectorEnrichmentJobOutputConfig
+exportVectorEnrichmentJobResponse_outputConfig = Lens.lens (\ExportVectorEnrichmentJobResponse' {outputConfig} -> outputConfig) (\s@ExportVectorEnrichmentJobResponse' {} a -> s {outputConfig = a} :: ExportVectorEnrichmentJobResponse)
+
+instance
+  Prelude.NFData
+    ExportVectorEnrichmentJobResponse
+  where
+  rnf ExportVectorEnrichmentJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf exportStatus
+      `Prelude.seq` Prelude.rnf outputConfig
diff --git a/gen/Amazonka/SageMakerGeoSpatial/GetEarthObservationJob.hs b/gen/Amazonka/SageMakerGeoSpatial/GetEarthObservationJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/GetEarthObservationJob.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.SageMakerGeoSpatial.GetEarthObservationJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get the details for a previously initiated Earth Observation job.
+module Amazonka.SageMakerGeoSpatial.GetEarthObservationJob
+  ( -- * Creating a Request
+    GetEarthObservationJob (..),
+    newGetEarthObservationJob,
+
+    -- * Request Lenses
+    getEarthObservationJob_arn,
+
+    -- * Destructuring the Response
+    GetEarthObservationJobResponse (..),
+    newGetEarthObservationJobResponse,
+
+    -- * Response Lenses
+    getEarthObservationJobResponse_errorDetails,
+    getEarthObservationJobResponse_executionRoleArn,
+    getEarthObservationJobResponse_exportErrorDetails,
+    getEarthObservationJobResponse_exportStatus,
+    getEarthObservationJobResponse_kmsKeyId,
+    getEarthObservationJobResponse_outputBands,
+    getEarthObservationJobResponse_tags,
+    getEarthObservationJobResponse_httpStatus,
+    getEarthObservationJobResponse_arn,
+    getEarthObservationJobResponse_creationTime,
+    getEarthObservationJobResponse_durationInSeconds,
+    getEarthObservationJobResponse_inputConfig,
+    getEarthObservationJobResponse_jobConfig,
+    getEarthObservationJobResponse_name,
+    getEarthObservationJobResponse_status,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newGetEarthObservationJob' smart constructor.
+data GetEarthObservationJob = GetEarthObservationJob'
+  { -- | The Amazon Resource Name (ARN) of the Earth Observation job.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetEarthObservationJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getEarthObservationJob_arn' - The Amazon Resource Name (ARN) of the Earth Observation job.
+newGetEarthObservationJob ::
+  -- | 'arn'
+  Prelude.Text ->
+  GetEarthObservationJob
+newGetEarthObservationJob pArn_ =
+  GetEarthObservationJob' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the Earth Observation job.
+getEarthObservationJob_arn :: Lens.Lens' GetEarthObservationJob Prelude.Text
+getEarthObservationJob_arn = Lens.lens (\GetEarthObservationJob' {arn} -> arn) (\s@GetEarthObservationJob' {} a -> s {arn = a} :: GetEarthObservationJob)
+
+instance Core.AWSRequest GetEarthObservationJob where
+  type
+    AWSResponse GetEarthObservationJob =
+      GetEarthObservationJobResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetEarthObservationJobResponse'
+            Prelude.<$> (x Data..?> "ErrorDetails")
+            Prelude.<*> (x Data..?> "ExecutionRoleArn")
+            Prelude.<*> (x Data..?> "ExportErrorDetails")
+            Prelude.<*> (x Data..?> "ExportStatus")
+            Prelude.<*> (x Data..?> "KmsKeyId")
+            Prelude.<*> (x Data..?> "OutputBands" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Arn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "DurationInSeconds")
+            Prelude.<*> (x Data..:> "InputConfig")
+            Prelude.<*> (x Data..:> "JobConfig")
+            Prelude.<*> (x Data..:> "Name")
+            Prelude.<*> (x Data..:> "Status")
+      )
+
+instance Prelude.Hashable GetEarthObservationJob where
+  hashWithSalt _salt GetEarthObservationJob' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData GetEarthObservationJob where
+  rnf GetEarthObservationJob' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders GetEarthObservationJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetEarthObservationJob where
+  toPath GetEarthObservationJob' {..} =
+    Prelude.mconcat
+      ["/earth-observation-jobs/", Data.toBS arn]
+
+instance Data.ToQuery GetEarthObservationJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetEarthObservationJobResponse' smart constructor.
+data GetEarthObservationJobResponse = GetEarthObservationJobResponse'
+  { -- | Details about the errors generated during the Earth Observation job.
+    errorDetails :: Prelude.Maybe EarthObservationJobErrorDetails,
+    -- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+    -- the job.
+    executionRoleArn :: Prelude.Maybe Prelude.Text,
+    -- | Details about the errors generated during ExportEarthObservationJob.
+    exportErrorDetails :: Prelude.Maybe ExportErrorDetails,
+    -- | The status of the Earth Observation job.
+    exportStatus :: Prelude.Maybe EarthObservationJobExportStatus,
+    -- | The Amazon Key Management Service (KMS) key ID for server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    outputBands :: Prelude.Maybe [OutputBand],
+    -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the Earth Observation job.
+    arn :: Prelude.Text,
+    -- | The creation time of the initiated Earth Observation job.
+    creationTime :: Data.POSIX,
+    -- | The duration of Earth Observation job, in seconds.
+    durationInSeconds :: Prelude.Int,
+    -- | Input data for the Earth Observation job.
+    inputConfig :: InputConfigOutput,
+    -- | An object containing information about the job configuration.
+    jobConfig :: JobConfigInput,
+    -- | The name of the Earth Observation job.
+    name :: Prelude.Text,
+    -- | The status of a previously initiated Earth Observation job.
+    status :: EarthObservationJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetEarthObservationJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorDetails', 'getEarthObservationJobResponse_errorDetails' - Details about the errors generated during the Earth Observation job.
+--
+-- 'executionRoleArn', 'getEarthObservationJobResponse_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+--
+-- 'exportErrorDetails', 'getEarthObservationJobResponse_exportErrorDetails' - Details about the errors generated during ExportEarthObservationJob.
+--
+-- 'exportStatus', 'getEarthObservationJobResponse_exportStatus' - The status of the Earth Observation job.
+--
+-- 'kmsKeyId', 'getEarthObservationJobResponse_kmsKeyId' - The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+--
+-- 'outputBands', 'getEarthObservationJobResponse_outputBands' -
+--
+-- 'tags', 'getEarthObservationJobResponse_tags' - Each tag consists of a key and a value.
+--
+-- 'httpStatus', 'getEarthObservationJobResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'getEarthObservationJobResponse_arn' - The Amazon Resource Name (ARN) of the Earth Observation job.
+--
+-- 'creationTime', 'getEarthObservationJobResponse_creationTime' - The creation time of the initiated Earth Observation job.
+--
+-- 'durationInSeconds', 'getEarthObservationJobResponse_durationInSeconds' - The duration of Earth Observation job, in seconds.
+--
+-- 'inputConfig', 'getEarthObservationJobResponse_inputConfig' - Input data for the Earth Observation job.
+--
+-- 'jobConfig', 'getEarthObservationJobResponse_jobConfig' - An object containing information about the job configuration.
+--
+-- 'name', 'getEarthObservationJobResponse_name' - The name of the Earth Observation job.
+--
+-- 'status', 'getEarthObservationJobResponse_status' - The status of a previously initiated Earth Observation job.
+newGetEarthObservationJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'durationInSeconds'
+  Prelude.Int ->
+  -- | 'inputConfig'
+  InputConfigOutput ->
+  -- | 'jobConfig'
+  JobConfigInput ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'status'
+  EarthObservationJobStatus ->
+  GetEarthObservationJobResponse
+newGetEarthObservationJobResponse
+  pHttpStatus_
+  pArn_
+  pCreationTime_
+  pDurationInSeconds_
+  pInputConfig_
+  pJobConfig_
+  pName_
+  pStatus_ =
+    GetEarthObservationJobResponse'
+      { errorDetails =
+          Prelude.Nothing,
+        executionRoleArn = Prelude.Nothing,
+        exportErrorDetails = Prelude.Nothing,
+        exportStatus = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        outputBands = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        arn = pArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        durationInSeconds = pDurationInSeconds_,
+        inputConfig = pInputConfig_,
+        jobConfig = pJobConfig_,
+        name = pName_,
+        status = pStatus_
+      }
+
+-- | Details about the errors generated during the Earth Observation job.
+getEarthObservationJobResponse_errorDetails :: Lens.Lens' GetEarthObservationJobResponse (Prelude.Maybe EarthObservationJobErrorDetails)
+getEarthObservationJobResponse_errorDetails = Lens.lens (\GetEarthObservationJobResponse' {errorDetails} -> errorDetails) (\s@GetEarthObservationJobResponse' {} a -> s {errorDetails = a} :: GetEarthObservationJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+getEarthObservationJobResponse_executionRoleArn :: Lens.Lens' GetEarthObservationJobResponse (Prelude.Maybe Prelude.Text)
+getEarthObservationJobResponse_executionRoleArn = Lens.lens (\GetEarthObservationJobResponse' {executionRoleArn} -> executionRoleArn) (\s@GetEarthObservationJobResponse' {} a -> s {executionRoleArn = a} :: GetEarthObservationJobResponse)
+
+-- | Details about the errors generated during ExportEarthObservationJob.
+getEarthObservationJobResponse_exportErrorDetails :: Lens.Lens' GetEarthObservationJobResponse (Prelude.Maybe ExportErrorDetails)
+getEarthObservationJobResponse_exportErrorDetails = Lens.lens (\GetEarthObservationJobResponse' {exportErrorDetails} -> exportErrorDetails) (\s@GetEarthObservationJobResponse' {} a -> s {exportErrorDetails = a} :: GetEarthObservationJobResponse)
+
+-- | The status of the Earth Observation job.
+getEarthObservationJobResponse_exportStatus :: Lens.Lens' GetEarthObservationJobResponse (Prelude.Maybe EarthObservationJobExportStatus)
+getEarthObservationJobResponse_exportStatus = Lens.lens (\GetEarthObservationJobResponse' {exportStatus} -> exportStatus) (\s@GetEarthObservationJobResponse' {} a -> s {exportStatus = a} :: GetEarthObservationJobResponse)
+
+-- | The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+getEarthObservationJobResponse_kmsKeyId :: Lens.Lens' GetEarthObservationJobResponse (Prelude.Maybe Prelude.Text)
+getEarthObservationJobResponse_kmsKeyId = Lens.lens (\GetEarthObservationJobResponse' {kmsKeyId} -> kmsKeyId) (\s@GetEarthObservationJobResponse' {} a -> s {kmsKeyId = a} :: GetEarthObservationJobResponse)
+
+getEarthObservationJobResponse_outputBands :: Lens.Lens' GetEarthObservationJobResponse (Prelude.Maybe [OutputBand])
+getEarthObservationJobResponse_outputBands = Lens.lens (\GetEarthObservationJobResponse' {outputBands} -> outputBands) (\s@GetEarthObservationJobResponse' {} a -> s {outputBands = a} :: GetEarthObservationJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Each tag consists of a key and a value.
+getEarthObservationJobResponse_tags :: Lens.Lens' GetEarthObservationJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getEarthObservationJobResponse_tags = Lens.lens (\GetEarthObservationJobResponse' {tags} -> tags) (\s@GetEarthObservationJobResponse' {} a -> s {tags = a} :: GetEarthObservationJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getEarthObservationJobResponse_httpStatus :: Lens.Lens' GetEarthObservationJobResponse Prelude.Int
+getEarthObservationJobResponse_httpStatus = Lens.lens (\GetEarthObservationJobResponse' {httpStatus} -> httpStatus) (\s@GetEarthObservationJobResponse' {} a -> s {httpStatus = a} :: GetEarthObservationJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the Earth Observation job.
+getEarthObservationJobResponse_arn :: Lens.Lens' GetEarthObservationJobResponse Prelude.Text
+getEarthObservationJobResponse_arn = Lens.lens (\GetEarthObservationJobResponse' {arn} -> arn) (\s@GetEarthObservationJobResponse' {} a -> s {arn = a} :: GetEarthObservationJobResponse)
+
+-- | The creation time of the initiated Earth Observation job.
+getEarthObservationJobResponse_creationTime :: Lens.Lens' GetEarthObservationJobResponse Prelude.UTCTime
+getEarthObservationJobResponse_creationTime = Lens.lens (\GetEarthObservationJobResponse' {creationTime} -> creationTime) (\s@GetEarthObservationJobResponse' {} a -> s {creationTime = a} :: GetEarthObservationJobResponse) Prelude.. Data._Time
+
+-- | The duration of Earth Observation job, in seconds.
+getEarthObservationJobResponse_durationInSeconds :: Lens.Lens' GetEarthObservationJobResponse Prelude.Int
+getEarthObservationJobResponse_durationInSeconds = Lens.lens (\GetEarthObservationJobResponse' {durationInSeconds} -> durationInSeconds) (\s@GetEarthObservationJobResponse' {} a -> s {durationInSeconds = a} :: GetEarthObservationJobResponse)
+
+-- | Input data for the Earth Observation job.
+getEarthObservationJobResponse_inputConfig :: Lens.Lens' GetEarthObservationJobResponse InputConfigOutput
+getEarthObservationJobResponse_inputConfig = Lens.lens (\GetEarthObservationJobResponse' {inputConfig} -> inputConfig) (\s@GetEarthObservationJobResponse' {} a -> s {inputConfig = a} :: GetEarthObservationJobResponse)
+
+-- | An object containing information about the job configuration.
+getEarthObservationJobResponse_jobConfig :: Lens.Lens' GetEarthObservationJobResponse JobConfigInput
+getEarthObservationJobResponse_jobConfig = Lens.lens (\GetEarthObservationJobResponse' {jobConfig} -> jobConfig) (\s@GetEarthObservationJobResponse' {} a -> s {jobConfig = a} :: GetEarthObservationJobResponse)
+
+-- | The name of the Earth Observation job.
+getEarthObservationJobResponse_name :: Lens.Lens' GetEarthObservationJobResponse Prelude.Text
+getEarthObservationJobResponse_name = Lens.lens (\GetEarthObservationJobResponse' {name} -> name) (\s@GetEarthObservationJobResponse' {} a -> s {name = a} :: GetEarthObservationJobResponse)
+
+-- | The status of a previously initiated Earth Observation job.
+getEarthObservationJobResponse_status :: Lens.Lens' GetEarthObservationJobResponse EarthObservationJobStatus
+getEarthObservationJobResponse_status = Lens.lens (\GetEarthObservationJobResponse' {status} -> status) (\s@GetEarthObservationJobResponse' {} a -> s {status = a} :: GetEarthObservationJobResponse)
+
+instance
+  Prelude.NFData
+    GetEarthObservationJobResponse
+  where
+  rnf GetEarthObservationJobResponse' {..} =
+    Prelude.rnf errorDetails
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf exportErrorDetails
+      `Prelude.seq` Prelude.rnf exportStatus
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf outputBands
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf durationInSeconds
+      `Prelude.seq` Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf jobConfig
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMakerGeoSpatial/GetRasterDataCollection.hs b/gen/Amazonka/SageMakerGeoSpatial/GetRasterDataCollection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/GetRasterDataCollection.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.SageMakerGeoSpatial.GetRasterDataCollection
+-- 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 get details of a specific raster data collection.
+module Amazonka.SageMakerGeoSpatial.GetRasterDataCollection
+  ( -- * Creating a Request
+    GetRasterDataCollection (..),
+    newGetRasterDataCollection,
+
+    -- * Request Lenses
+    getRasterDataCollection_arn,
+
+    -- * Destructuring the Response
+    GetRasterDataCollectionResponse (..),
+    newGetRasterDataCollectionResponse,
+
+    -- * Response Lenses
+    getRasterDataCollectionResponse_tags,
+    getRasterDataCollectionResponse_httpStatus,
+    getRasterDataCollectionResponse_arn,
+    getRasterDataCollectionResponse_description,
+    getRasterDataCollectionResponse_descriptionPageUrl,
+    getRasterDataCollectionResponse_imageSourceBands,
+    getRasterDataCollectionResponse_name,
+    getRasterDataCollectionResponse_supportedFilters,
+    getRasterDataCollectionResponse_type,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newGetRasterDataCollection' smart constructor.
+data GetRasterDataCollection = GetRasterDataCollection'
+  { -- | The Amazon Resource Name (ARN) of the raster data collection.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRasterDataCollection' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getRasterDataCollection_arn' - The Amazon Resource Name (ARN) of the raster data collection.
+newGetRasterDataCollection ::
+  -- | 'arn'
+  Prelude.Text ->
+  GetRasterDataCollection
+newGetRasterDataCollection pArn_ =
+  GetRasterDataCollection' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the raster data collection.
+getRasterDataCollection_arn :: Lens.Lens' GetRasterDataCollection Prelude.Text
+getRasterDataCollection_arn = Lens.lens (\GetRasterDataCollection' {arn} -> arn) (\s@GetRasterDataCollection' {} a -> s {arn = a} :: GetRasterDataCollection)
+
+instance Core.AWSRequest GetRasterDataCollection where
+  type
+    AWSResponse GetRasterDataCollection =
+      GetRasterDataCollectionResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetRasterDataCollectionResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Arn")
+            Prelude.<*> (x Data..:> "Description")
+            Prelude.<*> (x Data..:> "DescriptionPageUrl")
+            Prelude.<*> ( x
+                            Data..?> "ImageSourceBands"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:> "Name")
+            Prelude.<*> ( x
+                            Data..?> "SupportedFilters"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:> "Type")
+      )
+
+instance Prelude.Hashable GetRasterDataCollection where
+  hashWithSalt _salt GetRasterDataCollection' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData GetRasterDataCollection where
+  rnf GetRasterDataCollection' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders GetRasterDataCollection where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetRasterDataCollection where
+  toPath GetRasterDataCollection' {..} =
+    Prelude.mconcat
+      ["/raster-data-collection/", Data.toBS arn]
+
+instance Data.ToQuery GetRasterDataCollection where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetRasterDataCollectionResponse' smart constructor.
+data GetRasterDataCollectionResponse = GetRasterDataCollectionResponse'
+  { -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the raster data collection.
+    arn :: Prelude.Text,
+    -- | A description of the raster data collection.
+    description :: Prelude.Text,
+    -- | The URL of the description page.
+    descriptionPageUrl :: Prelude.Text,
+    imageSourceBands :: [Prelude.Text],
+    -- | The name of the raster data collection.
+    name :: Prelude.Text,
+    -- | The filters supported by the raster data collection.
+    supportedFilters :: [Filter],
+    -- | The raster data collection type.
+    type' :: DataCollectionType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRasterDataCollectionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getRasterDataCollectionResponse_tags' - Each tag consists of a key and a value.
+--
+-- 'httpStatus', 'getRasterDataCollectionResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'getRasterDataCollectionResponse_arn' - The Amazon Resource Name (ARN) of the raster data collection.
+--
+-- 'description', 'getRasterDataCollectionResponse_description' - A description of the raster data collection.
+--
+-- 'descriptionPageUrl', 'getRasterDataCollectionResponse_descriptionPageUrl' - The URL of the description page.
+--
+-- 'imageSourceBands', 'getRasterDataCollectionResponse_imageSourceBands' -
+--
+-- 'name', 'getRasterDataCollectionResponse_name' - The name of the raster data collection.
+--
+-- 'supportedFilters', 'getRasterDataCollectionResponse_supportedFilters' - The filters supported by the raster data collection.
+--
+-- 'type'', 'getRasterDataCollectionResponse_type' - The raster data collection type.
+newGetRasterDataCollectionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'description'
+  Prelude.Text ->
+  -- | 'descriptionPageUrl'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'type''
+  DataCollectionType ->
+  GetRasterDataCollectionResponse
+newGetRasterDataCollectionResponse
+  pHttpStatus_
+  pArn_
+  pDescription_
+  pDescriptionPageUrl_
+  pName_
+  pType_ =
+    GetRasterDataCollectionResponse'
+      { tags =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        arn = pArn_,
+        description = pDescription_,
+        descriptionPageUrl = pDescriptionPageUrl_,
+        imageSourceBands = Prelude.mempty,
+        name = pName_,
+        supportedFilters = Prelude.mempty,
+        type' = pType_
+      }
+
+-- | Each tag consists of a key and a value.
+getRasterDataCollectionResponse_tags :: Lens.Lens' GetRasterDataCollectionResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getRasterDataCollectionResponse_tags = Lens.lens (\GetRasterDataCollectionResponse' {tags} -> tags) (\s@GetRasterDataCollectionResponse' {} a -> s {tags = a} :: GetRasterDataCollectionResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getRasterDataCollectionResponse_httpStatus :: Lens.Lens' GetRasterDataCollectionResponse Prelude.Int
+getRasterDataCollectionResponse_httpStatus = Lens.lens (\GetRasterDataCollectionResponse' {httpStatus} -> httpStatus) (\s@GetRasterDataCollectionResponse' {} a -> s {httpStatus = a} :: GetRasterDataCollectionResponse)
+
+-- | The Amazon Resource Name (ARN) of the raster data collection.
+getRasterDataCollectionResponse_arn :: Lens.Lens' GetRasterDataCollectionResponse Prelude.Text
+getRasterDataCollectionResponse_arn = Lens.lens (\GetRasterDataCollectionResponse' {arn} -> arn) (\s@GetRasterDataCollectionResponse' {} a -> s {arn = a} :: GetRasterDataCollectionResponse)
+
+-- | A description of the raster data collection.
+getRasterDataCollectionResponse_description :: Lens.Lens' GetRasterDataCollectionResponse Prelude.Text
+getRasterDataCollectionResponse_description = Lens.lens (\GetRasterDataCollectionResponse' {description} -> description) (\s@GetRasterDataCollectionResponse' {} a -> s {description = a} :: GetRasterDataCollectionResponse)
+
+-- | The URL of the description page.
+getRasterDataCollectionResponse_descriptionPageUrl :: Lens.Lens' GetRasterDataCollectionResponse Prelude.Text
+getRasterDataCollectionResponse_descriptionPageUrl = Lens.lens (\GetRasterDataCollectionResponse' {descriptionPageUrl} -> descriptionPageUrl) (\s@GetRasterDataCollectionResponse' {} a -> s {descriptionPageUrl = a} :: GetRasterDataCollectionResponse)
+
+getRasterDataCollectionResponse_imageSourceBands :: Lens.Lens' GetRasterDataCollectionResponse [Prelude.Text]
+getRasterDataCollectionResponse_imageSourceBands = Lens.lens (\GetRasterDataCollectionResponse' {imageSourceBands} -> imageSourceBands) (\s@GetRasterDataCollectionResponse' {} a -> s {imageSourceBands = a} :: GetRasterDataCollectionResponse) Prelude.. Lens.coerced
+
+-- | The name of the raster data collection.
+getRasterDataCollectionResponse_name :: Lens.Lens' GetRasterDataCollectionResponse Prelude.Text
+getRasterDataCollectionResponse_name = Lens.lens (\GetRasterDataCollectionResponse' {name} -> name) (\s@GetRasterDataCollectionResponse' {} a -> s {name = a} :: GetRasterDataCollectionResponse)
+
+-- | The filters supported by the raster data collection.
+getRasterDataCollectionResponse_supportedFilters :: Lens.Lens' GetRasterDataCollectionResponse [Filter]
+getRasterDataCollectionResponse_supportedFilters = Lens.lens (\GetRasterDataCollectionResponse' {supportedFilters} -> supportedFilters) (\s@GetRasterDataCollectionResponse' {} a -> s {supportedFilters = a} :: GetRasterDataCollectionResponse) Prelude.. Lens.coerced
+
+-- | The raster data collection type.
+getRasterDataCollectionResponse_type :: Lens.Lens' GetRasterDataCollectionResponse DataCollectionType
+getRasterDataCollectionResponse_type = Lens.lens (\GetRasterDataCollectionResponse' {type'} -> type') (\s@GetRasterDataCollectionResponse' {} a -> s {type' = a} :: GetRasterDataCollectionResponse)
+
+instance
+  Prelude.NFData
+    GetRasterDataCollectionResponse
+  where
+  rnf GetRasterDataCollectionResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf descriptionPageUrl
+      `Prelude.seq` Prelude.rnf imageSourceBands
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf supportedFilters
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMakerGeoSpatial/GetTile.hs b/gen/Amazonka/SageMakerGeoSpatial/GetTile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/GetTile.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.SageMakerGeoSpatial.GetTile
+-- 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 web mercator tile for the given Earth Observation job.
+module Amazonka.SageMakerGeoSpatial.GetTile
+  ( -- * Creating a Request
+    GetTile (..),
+    newGetTile,
+
+    -- * Request Lenses
+    getTile_imageMask,
+    getTile_outputDataType,
+    getTile_outputFormat,
+    getTile_propertyFilters,
+    getTile_timeRangeFilter,
+    getTile_arn,
+    getTile_imageAssets,
+    getTile_target,
+    getTile_x,
+    getTile_y,
+    getTile_z,
+
+    -- * Destructuring the Response
+    GetTileResponse (..),
+    newGetTileResponse,
+
+    -- * Response Lenses
+    getTileResponse_httpStatus,
+    getTileResponse_binaryFile,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newGetTile' smart constructor.
+data GetTile = GetTile'
+  { -- | Determines whether or not to return a valid data mask.
+    imageMask :: Prelude.Maybe Prelude.Bool,
+    -- | The output data type of the tile operation.
+    outputDataType :: Prelude.Maybe OutputType,
+    -- | The data format of the output tile. The formats include .npy, .png and
+    -- .jpg.
+    outputFormat :: Prelude.Maybe Prelude.Text,
+    -- | Property filters for the imagery to tile.
+    propertyFilters :: Prelude.Maybe Prelude.Text,
+    -- | Time range filter applied to imagery to find the images to tile.
+    timeRangeFilter :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the tile operation.
+    arn :: Prelude.Text,
+    -- | The particular assets or bands to tile.
+    imageAssets :: Prelude.NonEmpty Prelude.Text,
+    -- | Determines what part of the Earth Observation job to tile. \'INPUT\' or
+    -- \'OUTPUT\' are the valid options.
+    target :: TargetOptions,
+    -- | The x coordinate of the tile input.
+    x :: Prelude.Int,
+    -- | The y coordinate of the tile input.
+    y :: Prelude.Int,
+    -- | The z coordinate of the tile input.
+    z :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTile' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'imageMask', 'getTile_imageMask' - Determines whether or not to return a valid data mask.
+--
+-- 'outputDataType', 'getTile_outputDataType' - The output data type of the tile operation.
+--
+-- 'outputFormat', 'getTile_outputFormat' - The data format of the output tile. The formats include .npy, .png and
+-- .jpg.
+--
+-- 'propertyFilters', 'getTile_propertyFilters' - Property filters for the imagery to tile.
+--
+-- 'timeRangeFilter', 'getTile_timeRangeFilter' - Time range filter applied to imagery to find the images to tile.
+--
+-- 'arn', 'getTile_arn' - The Amazon Resource Name (ARN) of the tile operation.
+--
+-- 'imageAssets', 'getTile_imageAssets' - The particular assets or bands to tile.
+--
+-- 'target', 'getTile_target' - Determines what part of the Earth Observation job to tile. \'INPUT\' or
+-- \'OUTPUT\' are the valid options.
+--
+-- 'x', 'getTile_x' - The x coordinate of the tile input.
+--
+-- 'y', 'getTile_y' - The y coordinate of the tile input.
+--
+-- 'z', 'getTile_z' - The z coordinate of the tile input.
+newGetTile ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'imageAssets'
+  Prelude.NonEmpty Prelude.Text ->
+  -- | 'target'
+  TargetOptions ->
+  -- | 'x'
+  Prelude.Int ->
+  -- | 'y'
+  Prelude.Int ->
+  -- | 'z'
+  Prelude.Int ->
+  GetTile
+newGetTile pArn_ pImageAssets_ pTarget_ pX_ pY_ pZ_ =
+  GetTile'
+    { imageMask = Prelude.Nothing,
+      outputDataType = Prelude.Nothing,
+      outputFormat = Prelude.Nothing,
+      propertyFilters = Prelude.Nothing,
+      timeRangeFilter = Prelude.Nothing,
+      arn = pArn_,
+      imageAssets = Lens.coerced Lens.# pImageAssets_,
+      target = pTarget_,
+      x = pX_,
+      y = pY_,
+      z = pZ_
+    }
+
+-- | Determines whether or not to return a valid data mask.
+getTile_imageMask :: Lens.Lens' GetTile (Prelude.Maybe Prelude.Bool)
+getTile_imageMask = Lens.lens (\GetTile' {imageMask} -> imageMask) (\s@GetTile' {} a -> s {imageMask = a} :: GetTile)
+
+-- | The output data type of the tile operation.
+getTile_outputDataType :: Lens.Lens' GetTile (Prelude.Maybe OutputType)
+getTile_outputDataType = Lens.lens (\GetTile' {outputDataType} -> outputDataType) (\s@GetTile' {} a -> s {outputDataType = a} :: GetTile)
+
+-- | The data format of the output tile. The formats include .npy, .png and
+-- .jpg.
+getTile_outputFormat :: Lens.Lens' GetTile (Prelude.Maybe Prelude.Text)
+getTile_outputFormat = Lens.lens (\GetTile' {outputFormat} -> outputFormat) (\s@GetTile' {} a -> s {outputFormat = a} :: GetTile)
+
+-- | Property filters for the imagery to tile.
+getTile_propertyFilters :: Lens.Lens' GetTile (Prelude.Maybe Prelude.Text)
+getTile_propertyFilters = Lens.lens (\GetTile' {propertyFilters} -> propertyFilters) (\s@GetTile' {} a -> s {propertyFilters = a} :: GetTile)
+
+-- | Time range filter applied to imagery to find the images to tile.
+getTile_timeRangeFilter :: Lens.Lens' GetTile (Prelude.Maybe Prelude.Text)
+getTile_timeRangeFilter = Lens.lens (\GetTile' {timeRangeFilter} -> timeRangeFilter) (\s@GetTile' {} a -> s {timeRangeFilter = a} :: GetTile)
+
+-- | The Amazon Resource Name (ARN) of the tile operation.
+getTile_arn :: Lens.Lens' GetTile Prelude.Text
+getTile_arn = Lens.lens (\GetTile' {arn} -> arn) (\s@GetTile' {} a -> s {arn = a} :: GetTile)
+
+-- | The particular assets or bands to tile.
+getTile_imageAssets :: Lens.Lens' GetTile (Prelude.NonEmpty Prelude.Text)
+getTile_imageAssets = Lens.lens (\GetTile' {imageAssets} -> imageAssets) (\s@GetTile' {} a -> s {imageAssets = a} :: GetTile) Prelude.. Lens.coerced
+
+-- | Determines what part of the Earth Observation job to tile. \'INPUT\' or
+-- \'OUTPUT\' are the valid options.
+getTile_target :: Lens.Lens' GetTile TargetOptions
+getTile_target = Lens.lens (\GetTile' {target} -> target) (\s@GetTile' {} a -> s {target = a} :: GetTile)
+
+-- | The x coordinate of the tile input.
+getTile_x :: Lens.Lens' GetTile Prelude.Int
+getTile_x = Lens.lens (\GetTile' {x} -> x) (\s@GetTile' {} a -> s {x = a} :: GetTile)
+
+-- | The y coordinate of the tile input.
+getTile_y :: Lens.Lens' GetTile Prelude.Int
+getTile_y = Lens.lens (\GetTile' {y} -> y) (\s@GetTile' {} a -> s {y = a} :: GetTile)
+
+-- | The z coordinate of the tile input.
+getTile_z :: Lens.Lens' GetTile Prelude.Int
+getTile_z = Lens.lens (\GetTile' {z} -> z) (\s@GetTile' {} a -> s {z = a} :: GetTile)
+
+instance Core.AWSRequest GetTile where
+  type AWSResponse GetTile = GetTileResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveBody
+      ( \s h x ->
+          GetTileResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (Prelude.pure x)
+      )
+
+instance Prelude.Hashable GetTile where
+  hashWithSalt _salt GetTile' {..} =
+    _salt
+      `Prelude.hashWithSalt` imageMask
+      `Prelude.hashWithSalt` outputDataType
+      `Prelude.hashWithSalt` outputFormat
+      `Prelude.hashWithSalt` propertyFilters
+      `Prelude.hashWithSalt` timeRangeFilter
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` imageAssets
+      `Prelude.hashWithSalt` target
+      `Prelude.hashWithSalt` x
+      `Prelude.hashWithSalt` y
+      `Prelude.hashWithSalt` z
+
+instance Prelude.NFData GetTile where
+  rnf GetTile' {..} =
+    Prelude.rnf imageMask
+      `Prelude.seq` Prelude.rnf outputDataType
+      `Prelude.seq` Prelude.rnf outputFormat
+      `Prelude.seq` Prelude.rnf propertyFilters
+      `Prelude.seq` Prelude.rnf timeRangeFilter
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf imageAssets
+      `Prelude.seq` Prelude.rnf target
+      `Prelude.seq` Prelude.rnf x
+      `Prelude.seq` Prelude.rnf y
+      `Prelude.seq` Prelude.rnf z
+
+instance Data.ToHeaders GetTile where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetTile where
+  toPath GetTile' {..} =
+    Prelude.mconcat
+      [ "/tile/",
+        Data.toBS z,
+        "/",
+        Data.toBS x,
+        "/",
+        Data.toBS y
+      ]
+
+instance Data.ToQuery GetTile where
+  toQuery GetTile' {..} =
+    Prelude.mconcat
+      [ "ImageMask" Data.=: imageMask,
+        "OutputDataType" Data.=: outputDataType,
+        "OutputFormat" Data.=: outputFormat,
+        "PropertyFilters" Data.=: propertyFilters,
+        "TimeRangeFilter" Data.=: timeRangeFilter,
+        "Arn" Data.=: arn,
+        "ImageAssets"
+          Data.=: Data.toQueryList "member" imageAssets,
+        "Target" Data.=: target
+      ]
+
+-- | /See:/ 'newGetTileResponse' smart constructor.
+data GetTileResponse = GetTileResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The output binary file.
+    binaryFile :: Data.ResponseBody
+  }
+  deriving (Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTileResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getTileResponse_httpStatus' - The response's http status code.
+--
+-- 'binaryFile', 'getTileResponse_binaryFile' - The output binary file.
+newGetTileResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'binaryFile'
+  Data.ResponseBody ->
+  GetTileResponse
+newGetTileResponse pHttpStatus_ pBinaryFile_ =
+  GetTileResponse'
+    { httpStatus = pHttpStatus_,
+      binaryFile = pBinaryFile_
+    }
+
+-- | The response's http status code.
+getTileResponse_httpStatus :: Lens.Lens' GetTileResponse Prelude.Int
+getTileResponse_httpStatus = Lens.lens (\GetTileResponse' {httpStatus} -> httpStatus) (\s@GetTileResponse' {} a -> s {httpStatus = a} :: GetTileResponse)
+
+-- | The output binary file.
+getTileResponse_binaryFile :: Lens.Lens' GetTileResponse Data.ResponseBody
+getTileResponse_binaryFile = Lens.lens (\GetTileResponse' {binaryFile} -> binaryFile) (\s@GetTileResponse' {} a -> s {binaryFile = a} :: GetTileResponse)
diff --git a/gen/Amazonka/SageMakerGeoSpatial/GetVectorEnrichmentJob.hs b/gen/Amazonka/SageMakerGeoSpatial/GetVectorEnrichmentJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/GetVectorEnrichmentJob.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.SageMakerGeoSpatial.GetVectorEnrichmentJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details of a Vector Enrichment Job for a given job Amazon
+-- Resource Name (ARN).
+module Amazonka.SageMakerGeoSpatial.GetVectorEnrichmentJob
+  ( -- * Creating a Request
+    GetVectorEnrichmentJob (..),
+    newGetVectorEnrichmentJob,
+
+    -- * Request Lenses
+    getVectorEnrichmentJob_arn,
+
+    -- * Destructuring the Response
+    GetVectorEnrichmentJobResponse (..),
+    newGetVectorEnrichmentJobResponse,
+
+    -- * Response Lenses
+    getVectorEnrichmentJobResponse_errorDetails,
+    getVectorEnrichmentJobResponse_exportErrorDetails,
+    getVectorEnrichmentJobResponse_exportStatus,
+    getVectorEnrichmentJobResponse_kmsKeyId,
+    getVectorEnrichmentJobResponse_tags,
+    getVectorEnrichmentJobResponse_httpStatus,
+    getVectorEnrichmentJobResponse_arn,
+    getVectorEnrichmentJobResponse_creationTime,
+    getVectorEnrichmentJobResponse_durationInSeconds,
+    getVectorEnrichmentJobResponse_executionRoleArn,
+    getVectorEnrichmentJobResponse_inputConfig,
+    getVectorEnrichmentJobResponse_jobConfig,
+    getVectorEnrichmentJobResponse_name,
+    getVectorEnrichmentJobResponse_status,
+    getVectorEnrichmentJobResponse_type,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newGetVectorEnrichmentJob' smart constructor.
+data GetVectorEnrichmentJob = GetVectorEnrichmentJob'
+  { -- | The Amazon Resource Name (ARN) of the Vector Enrichment job.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVectorEnrichmentJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getVectorEnrichmentJob_arn' - The Amazon Resource Name (ARN) of the Vector Enrichment job.
+newGetVectorEnrichmentJob ::
+  -- | 'arn'
+  Prelude.Text ->
+  GetVectorEnrichmentJob
+newGetVectorEnrichmentJob pArn_ =
+  GetVectorEnrichmentJob' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the Vector Enrichment job.
+getVectorEnrichmentJob_arn :: Lens.Lens' GetVectorEnrichmentJob Prelude.Text
+getVectorEnrichmentJob_arn = Lens.lens (\GetVectorEnrichmentJob' {arn} -> arn) (\s@GetVectorEnrichmentJob' {} a -> s {arn = a} :: GetVectorEnrichmentJob)
+
+instance Core.AWSRequest GetVectorEnrichmentJob where
+  type
+    AWSResponse GetVectorEnrichmentJob =
+      GetVectorEnrichmentJobResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetVectorEnrichmentJobResponse'
+            Prelude.<$> (x Data..?> "ErrorDetails")
+            Prelude.<*> (x Data..?> "ExportErrorDetails")
+            Prelude.<*> (x Data..?> "ExportStatus")
+            Prelude.<*> (x Data..?> "KmsKeyId")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Arn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "DurationInSeconds")
+            Prelude.<*> (x Data..:> "ExecutionRoleArn")
+            Prelude.<*> (x Data..:> "InputConfig")
+            Prelude.<*> (x Data..:> "JobConfig")
+            Prelude.<*> (x Data..:> "Name")
+            Prelude.<*> (x Data..:> "Status")
+            Prelude.<*> (x Data..:> "Type")
+      )
+
+instance Prelude.Hashable GetVectorEnrichmentJob where
+  hashWithSalt _salt GetVectorEnrichmentJob' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData GetVectorEnrichmentJob where
+  rnf GetVectorEnrichmentJob' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders GetVectorEnrichmentJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetVectorEnrichmentJob where
+  toPath GetVectorEnrichmentJob' {..} =
+    Prelude.mconcat
+      ["/vector-enrichment-jobs/", Data.toBS arn]
+
+instance Data.ToQuery GetVectorEnrichmentJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetVectorEnrichmentJobResponse' smart constructor.
+data GetVectorEnrichmentJobResponse = GetVectorEnrichmentJobResponse'
+  { -- | Details about the errors generated during the Vector Enrichment job.
+    errorDetails :: Prelude.Maybe VectorEnrichmentJobErrorDetails,
+    -- | Details about the errors generated during the ExportVectorEnrichmentJob.
+    exportErrorDetails :: Prelude.Maybe VectorEnrichmentJobExportErrorDetails,
+    -- | The export status of the Vector Enrichment job being initiated.
+    exportStatus :: Prelude.Maybe VectorEnrichmentJobExportStatus,
+    -- | The Amazon Key Management Service (KMS) key ID for server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the Vector Enrichment job.
+    arn :: Prelude.Text,
+    -- | The creation time.
+    creationTime :: Data.POSIX,
+    -- | The duration of the Vector Enrichment job, in seconds.
+    durationInSeconds :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+    -- the job.
+    executionRoleArn :: Prelude.Text,
+    -- | Input configuration information for the Vector Enrichment job.
+    inputConfig :: VectorEnrichmentJobInputConfig,
+    -- | An object containing information about the job configuration.
+    jobConfig :: VectorEnrichmentJobConfig,
+    -- | The name of the Vector Enrichment job.
+    name :: Prelude.Text,
+    -- | The status of the initiated Vector Enrichment job.
+    status :: VectorEnrichmentJobStatus,
+    -- | The type of the Vector Enrichment job being initiated.
+    type' :: VectorEnrichmentJobType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetVectorEnrichmentJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorDetails', 'getVectorEnrichmentJobResponse_errorDetails' - Details about the errors generated during the Vector Enrichment job.
+--
+-- 'exportErrorDetails', 'getVectorEnrichmentJobResponse_exportErrorDetails' - Details about the errors generated during the ExportVectorEnrichmentJob.
+--
+-- 'exportStatus', 'getVectorEnrichmentJobResponse_exportStatus' - The export status of the Vector Enrichment job being initiated.
+--
+-- 'kmsKeyId', 'getVectorEnrichmentJobResponse_kmsKeyId' - The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+--
+-- 'tags', 'getVectorEnrichmentJobResponse_tags' - Each tag consists of a key and a value.
+--
+-- 'httpStatus', 'getVectorEnrichmentJobResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'getVectorEnrichmentJobResponse_arn' - The Amazon Resource Name (ARN) of the Vector Enrichment job.
+--
+-- 'creationTime', 'getVectorEnrichmentJobResponse_creationTime' - The creation time.
+--
+-- 'durationInSeconds', 'getVectorEnrichmentJobResponse_durationInSeconds' - The duration of the Vector Enrichment job, in seconds.
+--
+-- 'executionRoleArn', 'getVectorEnrichmentJobResponse_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+--
+-- 'inputConfig', 'getVectorEnrichmentJobResponse_inputConfig' - Input configuration information for the Vector Enrichment job.
+--
+-- 'jobConfig', 'getVectorEnrichmentJobResponse_jobConfig' - An object containing information about the job configuration.
+--
+-- 'name', 'getVectorEnrichmentJobResponse_name' - The name of the Vector Enrichment job.
+--
+-- 'status', 'getVectorEnrichmentJobResponse_status' - The status of the initiated Vector Enrichment job.
+--
+-- 'type'', 'getVectorEnrichmentJobResponse_type' - The type of the Vector Enrichment job being initiated.
+newGetVectorEnrichmentJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'durationInSeconds'
+  Prelude.Int ->
+  -- | 'executionRoleArn'
+  Prelude.Text ->
+  -- | 'inputConfig'
+  VectorEnrichmentJobInputConfig ->
+  -- | 'jobConfig'
+  VectorEnrichmentJobConfig ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'status'
+  VectorEnrichmentJobStatus ->
+  -- | 'type''
+  VectorEnrichmentJobType ->
+  GetVectorEnrichmentJobResponse
+newGetVectorEnrichmentJobResponse
+  pHttpStatus_
+  pArn_
+  pCreationTime_
+  pDurationInSeconds_
+  pExecutionRoleArn_
+  pInputConfig_
+  pJobConfig_
+  pName_
+  pStatus_
+  pType_ =
+    GetVectorEnrichmentJobResponse'
+      { errorDetails =
+          Prelude.Nothing,
+        exportErrorDetails = Prelude.Nothing,
+        exportStatus = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        arn = pArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        durationInSeconds = pDurationInSeconds_,
+        executionRoleArn = pExecutionRoleArn_,
+        inputConfig = pInputConfig_,
+        jobConfig = pJobConfig_,
+        name = pName_,
+        status = pStatus_,
+        type' = pType_
+      }
+
+-- | Details about the errors generated during the Vector Enrichment job.
+getVectorEnrichmentJobResponse_errorDetails :: Lens.Lens' GetVectorEnrichmentJobResponse (Prelude.Maybe VectorEnrichmentJobErrorDetails)
+getVectorEnrichmentJobResponse_errorDetails = Lens.lens (\GetVectorEnrichmentJobResponse' {errorDetails} -> errorDetails) (\s@GetVectorEnrichmentJobResponse' {} a -> s {errorDetails = a} :: GetVectorEnrichmentJobResponse)
+
+-- | Details about the errors generated during the ExportVectorEnrichmentJob.
+getVectorEnrichmentJobResponse_exportErrorDetails :: Lens.Lens' GetVectorEnrichmentJobResponse (Prelude.Maybe VectorEnrichmentJobExportErrorDetails)
+getVectorEnrichmentJobResponse_exportErrorDetails = Lens.lens (\GetVectorEnrichmentJobResponse' {exportErrorDetails} -> exportErrorDetails) (\s@GetVectorEnrichmentJobResponse' {} a -> s {exportErrorDetails = a} :: GetVectorEnrichmentJobResponse)
+
+-- | The export status of the Vector Enrichment job being initiated.
+getVectorEnrichmentJobResponse_exportStatus :: Lens.Lens' GetVectorEnrichmentJobResponse (Prelude.Maybe VectorEnrichmentJobExportStatus)
+getVectorEnrichmentJobResponse_exportStatus = Lens.lens (\GetVectorEnrichmentJobResponse' {exportStatus} -> exportStatus) (\s@GetVectorEnrichmentJobResponse' {} a -> s {exportStatus = a} :: GetVectorEnrichmentJobResponse)
+
+-- | The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+getVectorEnrichmentJobResponse_kmsKeyId :: Lens.Lens' GetVectorEnrichmentJobResponse (Prelude.Maybe Prelude.Text)
+getVectorEnrichmentJobResponse_kmsKeyId = Lens.lens (\GetVectorEnrichmentJobResponse' {kmsKeyId} -> kmsKeyId) (\s@GetVectorEnrichmentJobResponse' {} a -> s {kmsKeyId = a} :: GetVectorEnrichmentJobResponse)
+
+-- | Each tag consists of a key and a value.
+getVectorEnrichmentJobResponse_tags :: Lens.Lens' GetVectorEnrichmentJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getVectorEnrichmentJobResponse_tags = Lens.lens (\GetVectorEnrichmentJobResponse' {tags} -> tags) (\s@GetVectorEnrichmentJobResponse' {} a -> s {tags = a} :: GetVectorEnrichmentJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getVectorEnrichmentJobResponse_httpStatus :: Lens.Lens' GetVectorEnrichmentJobResponse Prelude.Int
+getVectorEnrichmentJobResponse_httpStatus = Lens.lens (\GetVectorEnrichmentJobResponse' {httpStatus} -> httpStatus) (\s@GetVectorEnrichmentJobResponse' {} a -> s {httpStatus = a} :: GetVectorEnrichmentJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the Vector Enrichment job.
+getVectorEnrichmentJobResponse_arn :: Lens.Lens' GetVectorEnrichmentJobResponse Prelude.Text
+getVectorEnrichmentJobResponse_arn = Lens.lens (\GetVectorEnrichmentJobResponse' {arn} -> arn) (\s@GetVectorEnrichmentJobResponse' {} a -> s {arn = a} :: GetVectorEnrichmentJobResponse)
+
+-- | The creation time.
+getVectorEnrichmentJobResponse_creationTime :: Lens.Lens' GetVectorEnrichmentJobResponse Prelude.UTCTime
+getVectorEnrichmentJobResponse_creationTime = Lens.lens (\GetVectorEnrichmentJobResponse' {creationTime} -> creationTime) (\s@GetVectorEnrichmentJobResponse' {} a -> s {creationTime = a} :: GetVectorEnrichmentJobResponse) Prelude.. Data._Time
+
+-- | The duration of the Vector Enrichment job, in seconds.
+getVectorEnrichmentJobResponse_durationInSeconds :: Lens.Lens' GetVectorEnrichmentJobResponse Prelude.Int
+getVectorEnrichmentJobResponse_durationInSeconds = Lens.lens (\GetVectorEnrichmentJobResponse' {durationInSeconds} -> durationInSeconds) (\s@GetVectorEnrichmentJobResponse' {} a -> s {durationInSeconds = a} :: GetVectorEnrichmentJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+getVectorEnrichmentJobResponse_executionRoleArn :: Lens.Lens' GetVectorEnrichmentJobResponse Prelude.Text
+getVectorEnrichmentJobResponse_executionRoleArn = Lens.lens (\GetVectorEnrichmentJobResponse' {executionRoleArn} -> executionRoleArn) (\s@GetVectorEnrichmentJobResponse' {} a -> s {executionRoleArn = a} :: GetVectorEnrichmentJobResponse)
+
+-- | Input configuration information for the Vector Enrichment job.
+getVectorEnrichmentJobResponse_inputConfig :: Lens.Lens' GetVectorEnrichmentJobResponse VectorEnrichmentJobInputConfig
+getVectorEnrichmentJobResponse_inputConfig = Lens.lens (\GetVectorEnrichmentJobResponse' {inputConfig} -> inputConfig) (\s@GetVectorEnrichmentJobResponse' {} a -> s {inputConfig = a} :: GetVectorEnrichmentJobResponse)
+
+-- | An object containing information about the job configuration.
+getVectorEnrichmentJobResponse_jobConfig :: Lens.Lens' GetVectorEnrichmentJobResponse VectorEnrichmentJobConfig
+getVectorEnrichmentJobResponse_jobConfig = Lens.lens (\GetVectorEnrichmentJobResponse' {jobConfig} -> jobConfig) (\s@GetVectorEnrichmentJobResponse' {} a -> s {jobConfig = a} :: GetVectorEnrichmentJobResponse)
+
+-- | The name of the Vector Enrichment job.
+getVectorEnrichmentJobResponse_name :: Lens.Lens' GetVectorEnrichmentJobResponse Prelude.Text
+getVectorEnrichmentJobResponse_name = Lens.lens (\GetVectorEnrichmentJobResponse' {name} -> name) (\s@GetVectorEnrichmentJobResponse' {} a -> s {name = a} :: GetVectorEnrichmentJobResponse)
+
+-- | The status of the initiated Vector Enrichment job.
+getVectorEnrichmentJobResponse_status :: Lens.Lens' GetVectorEnrichmentJobResponse VectorEnrichmentJobStatus
+getVectorEnrichmentJobResponse_status = Lens.lens (\GetVectorEnrichmentJobResponse' {status} -> status) (\s@GetVectorEnrichmentJobResponse' {} a -> s {status = a} :: GetVectorEnrichmentJobResponse)
+
+-- | The type of the Vector Enrichment job being initiated.
+getVectorEnrichmentJobResponse_type :: Lens.Lens' GetVectorEnrichmentJobResponse VectorEnrichmentJobType
+getVectorEnrichmentJobResponse_type = Lens.lens (\GetVectorEnrichmentJobResponse' {type'} -> type') (\s@GetVectorEnrichmentJobResponse' {} a -> s {type' = a} :: GetVectorEnrichmentJobResponse)
+
+instance
+  Prelude.NFData
+    GetVectorEnrichmentJobResponse
+  where
+  rnf GetVectorEnrichmentJobResponse' {..} =
+    Prelude.rnf errorDetails
+      `Prelude.seq` Prelude.rnf exportErrorDetails
+      `Prelude.seq` Prelude.rnf exportStatus
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf durationInSeconds
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf jobConfig
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Lens.hs b/gen/Amazonka/SageMakerGeoSpatial/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Lens.hs
@@ -0,0 +1,566 @@
+{-# 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.SageMakerGeoSpatial.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.SageMakerGeoSpatial.Lens
+  ( -- * Operations
+
+    -- ** DeleteEarthObservationJob
+    deleteEarthObservationJob_arn,
+    deleteEarthObservationJobResponse_httpStatus,
+
+    -- ** DeleteVectorEnrichmentJob
+    deleteVectorEnrichmentJob_arn,
+    deleteVectorEnrichmentJobResponse_httpStatus,
+
+    -- ** ExportEarthObservationJob
+    exportEarthObservationJob_exportSourceImages,
+    exportEarthObservationJob_arn,
+    exportEarthObservationJob_executionRoleArn,
+    exportEarthObservationJob_outputConfig,
+    exportEarthObservationJobResponse_exportSourceImages,
+    exportEarthObservationJobResponse_httpStatus,
+    exportEarthObservationJobResponse_arn,
+    exportEarthObservationJobResponse_creationTime,
+    exportEarthObservationJobResponse_executionRoleArn,
+    exportEarthObservationJobResponse_exportStatus,
+    exportEarthObservationJobResponse_outputConfig,
+
+    -- ** ExportVectorEnrichmentJob
+    exportVectorEnrichmentJob_arn,
+    exportVectorEnrichmentJob_executionRoleArn,
+    exportVectorEnrichmentJob_outputConfig,
+    exportVectorEnrichmentJobResponse_httpStatus,
+    exportVectorEnrichmentJobResponse_arn,
+    exportVectorEnrichmentJobResponse_creationTime,
+    exportVectorEnrichmentJobResponse_executionRoleArn,
+    exportVectorEnrichmentJobResponse_exportStatus,
+    exportVectorEnrichmentJobResponse_outputConfig,
+
+    -- ** GetEarthObservationJob
+    getEarthObservationJob_arn,
+    getEarthObservationJobResponse_errorDetails,
+    getEarthObservationJobResponse_executionRoleArn,
+    getEarthObservationJobResponse_exportErrorDetails,
+    getEarthObservationJobResponse_exportStatus,
+    getEarthObservationJobResponse_kmsKeyId,
+    getEarthObservationJobResponse_outputBands,
+    getEarthObservationJobResponse_tags,
+    getEarthObservationJobResponse_httpStatus,
+    getEarthObservationJobResponse_arn,
+    getEarthObservationJobResponse_creationTime,
+    getEarthObservationJobResponse_durationInSeconds,
+    getEarthObservationJobResponse_inputConfig,
+    getEarthObservationJobResponse_jobConfig,
+    getEarthObservationJobResponse_name,
+    getEarthObservationJobResponse_status,
+
+    -- ** GetRasterDataCollection
+    getRasterDataCollection_arn,
+    getRasterDataCollectionResponse_tags,
+    getRasterDataCollectionResponse_httpStatus,
+    getRasterDataCollectionResponse_arn,
+    getRasterDataCollectionResponse_description,
+    getRasterDataCollectionResponse_descriptionPageUrl,
+    getRasterDataCollectionResponse_imageSourceBands,
+    getRasterDataCollectionResponse_name,
+    getRasterDataCollectionResponse_supportedFilters,
+    getRasterDataCollectionResponse_type,
+
+    -- ** GetTile
+    getTile_imageMask,
+    getTile_outputDataType,
+    getTile_outputFormat,
+    getTile_propertyFilters,
+    getTile_timeRangeFilter,
+    getTile_arn,
+    getTile_imageAssets,
+    getTile_target,
+    getTile_x,
+    getTile_y,
+    getTile_z,
+    getTileResponse_httpStatus,
+    getTileResponse_binaryFile,
+
+    -- ** GetVectorEnrichmentJob
+    getVectorEnrichmentJob_arn,
+    getVectorEnrichmentJobResponse_errorDetails,
+    getVectorEnrichmentJobResponse_exportErrorDetails,
+    getVectorEnrichmentJobResponse_exportStatus,
+    getVectorEnrichmentJobResponse_kmsKeyId,
+    getVectorEnrichmentJobResponse_tags,
+    getVectorEnrichmentJobResponse_httpStatus,
+    getVectorEnrichmentJobResponse_arn,
+    getVectorEnrichmentJobResponse_creationTime,
+    getVectorEnrichmentJobResponse_durationInSeconds,
+    getVectorEnrichmentJobResponse_executionRoleArn,
+    getVectorEnrichmentJobResponse_inputConfig,
+    getVectorEnrichmentJobResponse_jobConfig,
+    getVectorEnrichmentJobResponse_name,
+    getVectorEnrichmentJobResponse_status,
+    getVectorEnrichmentJobResponse_type,
+
+    -- ** ListEarthObservationJobs
+    listEarthObservationJobs_maxResults,
+    listEarthObservationJobs_nextToken,
+    listEarthObservationJobs_sortBy,
+    listEarthObservationJobs_sortOrder,
+    listEarthObservationJobs_statusEquals,
+    listEarthObservationJobsResponse_nextToken,
+    listEarthObservationJobsResponse_httpStatus,
+    listEarthObservationJobsResponse_earthObservationJobSummaries,
+
+    -- ** ListRasterDataCollections
+    listRasterDataCollections_maxResults,
+    listRasterDataCollections_nextToken,
+    listRasterDataCollectionsResponse_nextToken,
+    listRasterDataCollectionsResponse_httpStatus,
+    listRasterDataCollectionsResponse_rasterDataCollectionSummaries,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** ListVectorEnrichmentJobs
+    listVectorEnrichmentJobs_maxResults,
+    listVectorEnrichmentJobs_nextToken,
+    listVectorEnrichmentJobs_sortBy,
+    listVectorEnrichmentJobs_sortOrder,
+    listVectorEnrichmentJobs_statusEquals,
+    listVectorEnrichmentJobsResponse_nextToken,
+    listVectorEnrichmentJobsResponse_httpStatus,
+    listVectorEnrichmentJobsResponse_vectorEnrichmentJobSummaries,
+
+    -- ** SearchRasterDataCollection
+    searchRasterDataCollection_nextToken,
+    searchRasterDataCollection_arn,
+    searchRasterDataCollection_rasterDataCollectionQuery,
+    searchRasterDataCollectionResponse_items,
+    searchRasterDataCollectionResponse_nextToken,
+    searchRasterDataCollectionResponse_httpStatus,
+    searchRasterDataCollectionResponse_approximateResultCount,
+
+    -- ** StartEarthObservationJob
+    startEarthObservationJob_clientToken,
+    startEarthObservationJob_executionRoleArn,
+    startEarthObservationJob_kmsKeyId,
+    startEarthObservationJob_tags,
+    startEarthObservationJob_inputConfig,
+    startEarthObservationJob_jobConfig,
+    startEarthObservationJob_name,
+    startEarthObservationJobResponse_executionRoleArn,
+    startEarthObservationJobResponse_inputConfig,
+    startEarthObservationJobResponse_kmsKeyId,
+    startEarthObservationJobResponse_tags,
+    startEarthObservationJobResponse_httpStatus,
+    startEarthObservationJobResponse_arn,
+    startEarthObservationJobResponse_creationTime,
+    startEarthObservationJobResponse_durationInSeconds,
+    startEarthObservationJobResponse_jobConfig,
+    startEarthObservationJobResponse_name,
+    startEarthObservationJobResponse_status,
+
+    -- ** StartVectorEnrichmentJob
+    startVectorEnrichmentJob_clientToken,
+    startVectorEnrichmentJob_kmsKeyId,
+    startVectorEnrichmentJob_tags,
+    startVectorEnrichmentJob_executionRoleArn,
+    startVectorEnrichmentJob_inputConfig,
+    startVectorEnrichmentJob_jobConfig,
+    startVectorEnrichmentJob_name,
+    startVectorEnrichmentJobResponse_kmsKeyId,
+    startVectorEnrichmentJobResponse_tags,
+    startVectorEnrichmentJobResponse_httpStatus,
+    startVectorEnrichmentJobResponse_arn,
+    startVectorEnrichmentJobResponse_creationTime,
+    startVectorEnrichmentJobResponse_durationInSeconds,
+    startVectorEnrichmentJobResponse_executionRoleArn,
+    startVectorEnrichmentJobResponse_inputConfig,
+    startVectorEnrichmentJobResponse_jobConfig,
+    startVectorEnrichmentJobResponse_name,
+    startVectorEnrichmentJobResponse_status,
+    startVectorEnrichmentJobResponse_type,
+
+    -- ** StopEarthObservationJob
+    stopEarthObservationJob_arn,
+    stopEarthObservationJobResponse_httpStatus,
+
+    -- ** StopVectorEnrichmentJob
+    stopVectorEnrichmentJob_arn,
+    stopVectorEnrichmentJobResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- * Types
+
+    -- ** AreaOfInterest
+    areaOfInterest_areaOfInterestGeometry,
+
+    -- ** AreaOfInterestGeometry
+    areaOfInterestGeometry_multiPolygonGeometry,
+    areaOfInterestGeometry_polygonGeometry,
+
+    -- ** AssetValue
+    assetValue_href,
+
+    -- ** BandMathConfigInput
+    bandMathConfigInput_customIndices,
+    bandMathConfigInput_predefinedIndices,
+
+    -- ** CloudMaskingConfigInput
+
+    -- ** CloudRemovalConfigInput
+    cloudRemovalConfigInput_algorithmName,
+    cloudRemovalConfigInput_interpolationValue,
+    cloudRemovalConfigInput_targetBands,
+
+    -- ** CustomIndicesInput
+    customIndicesInput_operations,
+
+    -- ** EarthObservationJobErrorDetails
+    earthObservationJobErrorDetails_message,
+    earthObservationJobErrorDetails_type,
+
+    -- ** EoCloudCoverInput
+    eoCloudCoverInput_lowerBound,
+    eoCloudCoverInput_upperBound,
+
+    -- ** EojDataSourceConfigInput
+    eojDataSourceConfigInput_s3Data,
+
+    -- ** ExportErrorDetails
+    exportErrorDetails_exportResults,
+    exportErrorDetails_exportSourceImages,
+
+    -- ** ExportErrorDetailsOutput
+    exportErrorDetailsOutput_message,
+    exportErrorDetailsOutput_type,
+
+    -- ** ExportS3DataInput
+    exportS3DataInput_kmsKeyId,
+    exportS3DataInput_s3Uri,
+
+    -- ** ExportVectorEnrichmentJobOutputConfig
+    exportVectorEnrichmentJobOutputConfig_s3Data,
+
+    -- ** Filter
+    filter_maximum,
+    filter_minimum,
+    filter_name,
+    filter_type,
+
+    -- ** GeoMosaicConfigInput
+    geoMosaicConfigInput_algorithmName,
+    geoMosaicConfigInput_targetBands,
+
+    -- ** Geometry
+    geometry_coordinates,
+    geometry_type,
+
+    -- ** InputConfigInput
+    inputConfigInput_dataSourceConfig,
+    inputConfigInput_previousEarthObservationJobArn,
+    inputConfigInput_rasterDataCollectionQuery,
+
+    -- ** InputConfigOutput
+    inputConfigOutput_dataSourceConfig,
+    inputConfigOutput_previousEarthObservationJobArn,
+    inputConfigOutput_rasterDataCollectionQuery,
+
+    -- ** ItemSource
+    itemSource_assets,
+    itemSource_properties,
+    itemSource_dateTime,
+    itemSource_geometry,
+    itemSource_id,
+
+    -- ** JobConfigInput
+    jobConfigInput_bandMathConfig,
+    jobConfigInput_cloudMaskingConfig,
+    jobConfigInput_cloudRemovalConfig,
+    jobConfigInput_geoMosaicConfig,
+    jobConfigInput_landCoverSegmentationConfig,
+    jobConfigInput_resamplingConfig,
+    jobConfigInput_stackConfig,
+    jobConfigInput_temporalStatisticsConfig,
+    jobConfigInput_zonalStatisticsConfig,
+
+    -- ** LandCoverSegmentationConfigInput
+
+    -- ** LandsatCloudCoverLandInput
+    landsatCloudCoverLandInput_lowerBound,
+    landsatCloudCoverLandInput_upperBound,
+
+    -- ** ListEarthObservationJobOutputConfig
+    listEarthObservationJobOutputConfig_tags,
+    listEarthObservationJobOutputConfig_arn,
+    listEarthObservationJobOutputConfig_creationTime,
+    listEarthObservationJobOutputConfig_durationInSeconds,
+    listEarthObservationJobOutputConfig_name,
+    listEarthObservationJobOutputConfig_operationType,
+    listEarthObservationJobOutputConfig_status,
+
+    -- ** ListVectorEnrichmentJobOutputConfig
+    listVectorEnrichmentJobOutputConfig_tags,
+    listVectorEnrichmentJobOutputConfig_arn,
+    listVectorEnrichmentJobOutputConfig_creationTime,
+    listVectorEnrichmentJobOutputConfig_durationInSeconds,
+    listVectorEnrichmentJobOutputConfig_name,
+    listVectorEnrichmentJobOutputConfig_status,
+    listVectorEnrichmentJobOutputConfig_type,
+
+    -- ** MapMatchingConfig
+    mapMatchingConfig_idAttributeName,
+    mapMatchingConfig_timestampAttributeName,
+    mapMatchingConfig_xAttributeName,
+    mapMatchingConfig_yAttributeName,
+
+    -- ** MultiPolygonGeometryInput
+    multiPolygonGeometryInput_coordinates,
+
+    -- ** Operation
+    operation_outputType,
+    operation_equation,
+    operation_name,
+
+    -- ** OutputBand
+    outputBand_bandName,
+    outputBand_outputDataType,
+
+    -- ** OutputConfigInput
+    outputConfigInput_s3Data,
+
+    -- ** OutputResolutionResamplingInput
+    outputResolutionResamplingInput_userDefined,
+
+    -- ** OutputResolutionStackInput
+    outputResolutionStackInput_predefined,
+    outputResolutionStackInput_userDefined,
+
+    -- ** PlatformInput
+    platformInput_comparisonOperator,
+    platformInput_value,
+
+    -- ** PolygonGeometryInput
+    polygonGeometryInput_coordinates,
+
+    -- ** Properties
+    properties_eoCloudCover,
+    properties_landsatCloudCoverLand,
+    properties_platform,
+    properties_viewOffNadir,
+    properties_viewSunAzimuth,
+    properties_viewSunElevation,
+
+    -- ** Property
+    property_eoCloudCover,
+    property_landsatCloudCoverLand,
+    property_platform,
+    property_viewOffNadir,
+    property_viewSunAzimuth,
+    property_viewSunElevation,
+
+    -- ** PropertyFilter
+    propertyFilter_property,
+
+    -- ** PropertyFilters
+    propertyFilters_logicalOperator,
+    propertyFilters_properties,
+
+    -- ** RasterDataCollectionMetadata
+    rasterDataCollectionMetadata_descriptionPageUrl,
+    rasterDataCollectionMetadata_tags,
+    rasterDataCollectionMetadata_arn,
+    rasterDataCollectionMetadata_description,
+    rasterDataCollectionMetadata_name,
+    rasterDataCollectionMetadata_supportedFilters,
+    rasterDataCollectionMetadata_type,
+
+    -- ** RasterDataCollectionQueryInput
+    rasterDataCollectionQueryInput_areaOfInterest,
+    rasterDataCollectionQueryInput_propertyFilters,
+    rasterDataCollectionQueryInput_rasterDataCollectionArn,
+    rasterDataCollectionQueryInput_timeRangeFilter,
+
+    -- ** RasterDataCollectionQueryOutput
+    rasterDataCollectionQueryOutput_areaOfInterest,
+    rasterDataCollectionQueryOutput_propertyFilters,
+    rasterDataCollectionQueryOutput_rasterDataCollectionArn,
+    rasterDataCollectionQueryOutput_rasterDataCollectionName,
+    rasterDataCollectionQueryOutput_timeRangeFilter,
+
+    -- ** RasterDataCollectionQueryWithBandFilterInput
+    rasterDataCollectionQueryWithBandFilterInput_areaOfInterest,
+    rasterDataCollectionQueryWithBandFilterInput_bandFilter,
+    rasterDataCollectionQueryWithBandFilterInput_propertyFilters,
+    rasterDataCollectionQueryWithBandFilterInput_timeRangeFilter,
+
+    -- ** ResamplingConfigInput
+    resamplingConfigInput_algorithmName,
+    resamplingConfigInput_targetBands,
+    resamplingConfigInput_outputResolution,
+
+    -- ** ReverseGeocodingConfig
+    reverseGeocodingConfig_xAttributeName,
+    reverseGeocodingConfig_yAttributeName,
+
+    -- ** S3DataInput
+    s3DataInput_kmsKeyId,
+    s3DataInput_metadataProvider,
+    s3DataInput_s3Uri,
+
+    -- ** StackConfigInput
+    stackConfigInput_outputResolution,
+    stackConfigInput_targetBands,
+
+    -- ** TemporalStatisticsConfigInput
+    temporalStatisticsConfigInput_groupBy,
+    temporalStatisticsConfigInput_targetBands,
+    temporalStatisticsConfigInput_statistics,
+
+    -- ** TimeRangeFilterInput
+    timeRangeFilterInput_endTime,
+    timeRangeFilterInput_startTime,
+
+    -- ** UserDefined
+    userDefined_unit,
+    userDefined_value,
+
+    -- ** VectorEnrichmentJobConfig
+    vectorEnrichmentJobConfig_mapMatchingConfig,
+    vectorEnrichmentJobConfig_reverseGeocodingConfig,
+
+    -- ** VectorEnrichmentJobDataSourceConfigInput
+    vectorEnrichmentJobDataSourceConfigInput_s3Data,
+
+    -- ** VectorEnrichmentJobErrorDetails
+    vectorEnrichmentJobErrorDetails_errorMessage,
+    vectorEnrichmentJobErrorDetails_errorType,
+
+    -- ** VectorEnrichmentJobExportErrorDetails
+    vectorEnrichmentJobExportErrorDetails_message,
+    vectorEnrichmentJobExportErrorDetails_type,
+
+    -- ** VectorEnrichmentJobInputConfig
+    vectorEnrichmentJobInputConfig_dataSourceConfig,
+    vectorEnrichmentJobInputConfig_documentType,
+
+    -- ** VectorEnrichmentJobS3Data
+    vectorEnrichmentJobS3Data_kmsKeyId,
+    vectorEnrichmentJobS3Data_s3Uri,
+
+    -- ** ViewOffNadirInput
+    viewOffNadirInput_lowerBound,
+    viewOffNadirInput_upperBound,
+
+    -- ** ViewSunAzimuthInput
+    viewSunAzimuthInput_lowerBound,
+    viewSunAzimuthInput_upperBound,
+
+    -- ** ViewSunElevationInput
+    viewSunElevationInput_lowerBound,
+    viewSunElevationInput_upperBound,
+
+    -- ** ZonalStatisticsConfigInput
+    zonalStatisticsConfigInput_targetBands,
+    zonalStatisticsConfigInput_statistics,
+    zonalStatisticsConfigInput_zoneS3Path,
+  )
+where
+
+import Amazonka.SageMakerGeoSpatial.DeleteEarthObservationJob
+import Amazonka.SageMakerGeoSpatial.DeleteVectorEnrichmentJob
+import Amazonka.SageMakerGeoSpatial.ExportEarthObservationJob
+import Amazonka.SageMakerGeoSpatial.ExportVectorEnrichmentJob
+import Amazonka.SageMakerGeoSpatial.GetEarthObservationJob
+import Amazonka.SageMakerGeoSpatial.GetRasterDataCollection
+import Amazonka.SageMakerGeoSpatial.GetTile
+import Amazonka.SageMakerGeoSpatial.GetVectorEnrichmentJob
+import Amazonka.SageMakerGeoSpatial.ListEarthObservationJobs
+import Amazonka.SageMakerGeoSpatial.ListRasterDataCollections
+import Amazonka.SageMakerGeoSpatial.ListTagsForResource
+import Amazonka.SageMakerGeoSpatial.ListVectorEnrichmentJobs
+import Amazonka.SageMakerGeoSpatial.SearchRasterDataCollection
+import Amazonka.SageMakerGeoSpatial.StartEarthObservationJob
+import Amazonka.SageMakerGeoSpatial.StartVectorEnrichmentJob
+import Amazonka.SageMakerGeoSpatial.StopEarthObservationJob
+import Amazonka.SageMakerGeoSpatial.StopVectorEnrichmentJob
+import Amazonka.SageMakerGeoSpatial.TagResource
+import Amazonka.SageMakerGeoSpatial.Types.AreaOfInterest
+import Amazonka.SageMakerGeoSpatial.Types.AreaOfInterestGeometry
+import Amazonka.SageMakerGeoSpatial.Types.AssetValue
+import Amazonka.SageMakerGeoSpatial.Types.BandMathConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.CloudMaskingConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.CloudRemovalConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.CustomIndicesInput
+import Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobErrorDetails
+import Amazonka.SageMakerGeoSpatial.Types.EoCloudCoverInput
+import Amazonka.SageMakerGeoSpatial.Types.EojDataSourceConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.ExportErrorDetails
+import Amazonka.SageMakerGeoSpatial.Types.ExportErrorDetailsOutput
+import Amazonka.SageMakerGeoSpatial.Types.ExportS3DataInput
+import Amazonka.SageMakerGeoSpatial.Types.ExportVectorEnrichmentJobOutputConfig
+import Amazonka.SageMakerGeoSpatial.Types.Filter
+import Amazonka.SageMakerGeoSpatial.Types.GeoMosaicConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.Geometry
+import Amazonka.SageMakerGeoSpatial.Types.InputConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.InputConfigOutput
+import Amazonka.SageMakerGeoSpatial.Types.ItemSource
+import Amazonka.SageMakerGeoSpatial.Types.JobConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.LandCoverSegmentationConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.LandsatCloudCoverLandInput
+import Amazonka.SageMakerGeoSpatial.Types.ListEarthObservationJobOutputConfig
+import Amazonka.SageMakerGeoSpatial.Types.ListVectorEnrichmentJobOutputConfig
+import Amazonka.SageMakerGeoSpatial.Types.MapMatchingConfig
+import Amazonka.SageMakerGeoSpatial.Types.MultiPolygonGeometryInput
+import Amazonka.SageMakerGeoSpatial.Types.Operation
+import Amazonka.SageMakerGeoSpatial.Types.OutputBand
+import Amazonka.SageMakerGeoSpatial.Types.OutputConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.OutputResolutionResamplingInput
+import Amazonka.SageMakerGeoSpatial.Types.OutputResolutionStackInput
+import Amazonka.SageMakerGeoSpatial.Types.PlatformInput
+import Amazonka.SageMakerGeoSpatial.Types.PolygonGeometryInput
+import Amazonka.SageMakerGeoSpatial.Types.Properties
+import Amazonka.SageMakerGeoSpatial.Types.Property
+import Amazonka.SageMakerGeoSpatial.Types.PropertyFilter
+import Amazonka.SageMakerGeoSpatial.Types.PropertyFilters
+import Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionMetadata
+import Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryInput
+import Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryOutput
+import Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryWithBandFilterInput
+import Amazonka.SageMakerGeoSpatial.Types.ResamplingConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.ReverseGeocodingConfig
+import Amazonka.SageMakerGeoSpatial.Types.S3DataInput
+import Amazonka.SageMakerGeoSpatial.Types.StackConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.TemporalStatisticsConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.TimeRangeFilterInput
+import Amazonka.SageMakerGeoSpatial.Types.UserDefined
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobConfig
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobDataSourceConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobErrorDetails
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportErrorDetails
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobInputConfig
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobS3Data
+import Amazonka.SageMakerGeoSpatial.Types.ViewOffNadirInput
+import Amazonka.SageMakerGeoSpatial.Types.ViewSunAzimuthInput
+import Amazonka.SageMakerGeoSpatial.Types.ViewSunElevationInput
+import Amazonka.SageMakerGeoSpatial.Types.ZonalStatisticsConfigInput
+import Amazonka.SageMakerGeoSpatial.UntagResource
diff --git a/gen/Amazonka/SageMakerGeoSpatial/ListEarthObservationJobs.hs b/gen/Amazonka/SageMakerGeoSpatial/ListEarthObservationJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/ListEarthObservationJobs.hs
@@ -0,0 +1,272 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMakerGeoSpatial.ListEarthObservationJobs
+-- 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 get a list of the Earth Observation jobs
+-- associated with the calling Amazon Web Services account.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMakerGeoSpatial.ListEarthObservationJobs
+  ( -- * Creating a Request
+    ListEarthObservationJobs (..),
+    newListEarthObservationJobs,
+
+    -- * Request Lenses
+    listEarthObservationJobs_maxResults,
+    listEarthObservationJobs_nextToken,
+    listEarthObservationJobs_sortBy,
+    listEarthObservationJobs_sortOrder,
+    listEarthObservationJobs_statusEquals,
+
+    -- * Destructuring the Response
+    ListEarthObservationJobsResponse (..),
+    newListEarthObservationJobsResponse,
+
+    -- * Response Lenses
+    listEarthObservationJobsResponse_nextToken,
+    listEarthObservationJobsResponse_httpStatus,
+    listEarthObservationJobsResponse_earthObservationJobSummaries,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newListEarthObservationJobs' smart constructor.
+data ListEarthObservationJobs = ListEarthObservationJobs'
+  { -- | The total number of items to return.
+    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 (Data.Sensitive Prelude.Text),
+    -- | The parameter by which to sort the results.
+    sortBy :: Prelude.Maybe Prelude.Text,
+    -- | An optional value that specifies whether you want the results sorted in
+    -- @Ascending@ or @Descending@ order.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that retrieves only jobs with a specific status.
+    statusEquals :: Prelude.Maybe EarthObservationJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEarthObservationJobs' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listEarthObservationJobs_maxResults' - The total number of items to return.
+--
+-- 'nextToken', 'listEarthObservationJobs_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', 'listEarthObservationJobs_sortBy' - The parameter by which to sort the results.
+--
+-- 'sortOrder', 'listEarthObservationJobs_sortOrder' - An optional value that specifies whether you want the results sorted in
+-- @Ascending@ or @Descending@ order.
+--
+-- 'statusEquals', 'listEarthObservationJobs_statusEquals' - A filter that retrieves only jobs with a specific status.
+newListEarthObservationJobs ::
+  ListEarthObservationJobs
+newListEarthObservationJobs =
+  ListEarthObservationJobs'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | The total number of items to return.
+listEarthObservationJobs_maxResults :: Lens.Lens' ListEarthObservationJobs (Prelude.Maybe Prelude.Natural)
+listEarthObservationJobs_maxResults = Lens.lens (\ListEarthObservationJobs' {maxResults} -> maxResults) (\s@ListEarthObservationJobs' {} a -> s {maxResults = a} :: ListEarthObservationJobs)
+
+-- | If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+listEarthObservationJobs_nextToken :: Lens.Lens' ListEarthObservationJobs (Prelude.Maybe Prelude.Text)
+listEarthObservationJobs_nextToken = Lens.lens (\ListEarthObservationJobs' {nextToken} -> nextToken) (\s@ListEarthObservationJobs' {} a -> s {nextToken = a} :: ListEarthObservationJobs) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The parameter by which to sort the results.
+listEarthObservationJobs_sortBy :: Lens.Lens' ListEarthObservationJobs (Prelude.Maybe Prelude.Text)
+listEarthObservationJobs_sortBy = Lens.lens (\ListEarthObservationJobs' {sortBy} -> sortBy) (\s@ListEarthObservationJobs' {} a -> s {sortBy = a} :: ListEarthObservationJobs)
+
+-- | An optional value that specifies whether you want the results sorted in
+-- @Ascending@ or @Descending@ order.
+listEarthObservationJobs_sortOrder :: Lens.Lens' ListEarthObservationJobs (Prelude.Maybe SortOrder)
+listEarthObservationJobs_sortOrder = Lens.lens (\ListEarthObservationJobs' {sortOrder} -> sortOrder) (\s@ListEarthObservationJobs' {} a -> s {sortOrder = a} :: ListEarthObservationJobs)
+
+-- | A filter that retrieves only jobs with a specific status.
+listEarthObservationJobs_statusEquals :: Lens.Lens' ListEarthObservationJobs (Prelude.Maybe EarthObservationJobStatus)
+listEarthObservationJobs_statusEquals = Lens.lens (\ListEarthObservationJobs' {statusEquals} -> statusEquals) (\s@ListEarthObservationJobs' {} a -> s {statusEquals = a} :: ListEarthObservationJobs)
+
+instance Core.AWSPager ListEarthObservationJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listEarthObservationJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listEarthObservationJobsResponse_earthObservationJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listEarthObservationJobs_nextToken
+          Lens..~ rs
+          Lens.^? listEarthObservationJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListEarthObservationJobs where
+  type
+    AWSResponse ListEarthObservationJobs =
+      ListEarthObservationJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListEarthObservationJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "EarthObservationJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListEarthObservationJobs where
+  hashWithSalt _salt ListEarthObservationJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListEarthObservationJobs where
+  rnf ListEarthObservationJobs' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListEarthObservationJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListEarthObservationJobs where
+  toJSON ListEarthObservationJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListEarthObservationJobs where
+  toPath = Prelude.const "/list-earth-observation-jobs"
+
+instance Data.ToQuery ListEarthObservationJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListEarthObservationJobsResponse' smart constructor.
+data ListEarthObservationJobsResponse = ListEarthObservationJobsResponse'
+  { -- | 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 (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Contains summary information about the Earth Observation jobs.
+    earthObservationJobSummaries :: [ListEarthObservationJobOutputConfig]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEarthObservationJobsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listEarthObservationJobsResponse_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', 'listEarthObservationJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'earthObservationJobSummaries', 'listEarthObservationJobsResponse_earthObservationJobSummaries' - Contains summary information about the Earth Observation jobs.
+newListEarthObservationJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListEarthObservationJobsResponse
+newListEarthObservationJobsResponse pHttpStatus_ =
+  ListEarthObservationJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      earthObservationJobSummaries =
+        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.
+listEarthObservationJobsResponse_nextToken :: Lens.Lens' ListEarthObservationJobsResponse (Prelude.Maybe Prelude.Text)
+listEarthObservationJobsResponse_nextToken = Lens.lens (\ListEarthObservationJobsResponse' {nextToken} -> nextToken) (\s@ListEarthObservationJobsResponse' {} a -> s {nextToken = a} :: ListEarthObservationJobsResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listEarthObservationJobsResponse_httpStatus :: Lens.Lens' ListEarthObservationJobsResponse Prelude.Int
+listEarthObservationJobsResponse_httpStatus = Lens.lens (\ListEarthObservationJobsResponse' {httpStatus} -> httpStatus) (\s@ListEarthObservationJobsResponse' {} a -> s {httpStatus = a} :: ListEarthObservationJobsResponse)
+
+-- | Contains summary information about the Earth Observation jobs.
+listEarthObservationJobsResponse_earthObservationJobSummaries :: Lens.Lens' ListEarthObservationJobsResponse [ListEarthObservationJobOutputConfig]
+listEarthObservationJobsResponse_earthObservationJobSummaries = Lens.lens (\ListEarthObservationJobsResponse' {earthObservationJobSummaries} -> earthObservationJobSummaries) (\s@ListEarthObservationJobsResponse' {} a -> s {earthObservationJobSummaries = a} :: ListEarthObservationJobsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListEarthObservationJobsResponse
+  where
+  rnf ListEarthObservationJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf earthObservationJobSummaries
diff --git a/gen/Amazonka/SageMakerGeoSpatial/ListRasterDataCollections.hs b/gen/Amazonka/SageMakerGeoSpatial/ListRasterDataCollections.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/ListRasterDataCollections.hs
@@ -0,0 +1,224 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMakerGeoSpatial.ListRasterDataCollections
+-- 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 get raster data collections.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMakerGeoSpatial.ListRasterDataCollections
+  ( -- * Creating a Request
+    ListRasterDataCollections (..),
+    newListRasterDataCollections,
+
+    -- * Request Lenses
+    listRasterDataCollections_maxResults,
+    listRasterDataCollections_nextToken,
+
+    -- * Destructuring the Response
+    ListRasterDataCollectionsResponse (..),
+    newListRasterDataCollectionsResponse,
+
+    -- * Response Lenses
+    listRasterDataCollectionsResponse_nextToken,
+    listRasterDataCollectionsResponse_httpStatus,
+    listRasterDataCollectionsResponse_rasterDataCollectionSummaries,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newListRasterDataCollections' smart constructor.
+data ListRasterDataCollections = ListRasterDataCollections'
+  { -- | The total number of items to return.
+    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 (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRasterDataCollections' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRasterDataCollections_maxResults' - The total number of items to return.
+--
+-- 'nextToken', 'listRasterDataCollections_nextToken' - If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+newListRasterDataCollections ::
+  ListRasterDataCollections
+newListRasterDataCollections =
+  ListRasterDataCollections'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The total number of items to return.
+listRasterDataCollections_maxResults :: Lens.Lens' ListRasterDataCollections (Prelude.Maybe Prelude.Natural)
+listRasterDataCollections_maxResults = Lens.lens (\ListRasterDataCollections' {maxResults} -> maxResults) (\s@ListRasterDataCollections' {} a -> s {maxResults = a} :: ListRasterDataCollections)
+
+-- | If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+listRasterDataCollections_nextToken :: Lens.Lens' ListRasterDataCollections (Prelude.Maybe Prelude.Text)
+listRasterDataCollections_nextToken = Lens.lens (\ListRasterDataCollections' {nextToken} -> nextToken) (\s@ListRasterDataCollections' {} a -> s {nextToken = a} :: ListRasterDataCollections) Prelude.. Lens.mapping Data._Sensitive
+
+instance Core.AWSPager ListRasterDataCollections where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listRasterDataCollectionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listRasterDataCollectionsResponse_rasterDataCollectionSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listRasterDataCollections_nextToken
+          Lens..~ rs
+          Lens.^? listRasterDataCollectionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListRasterDataCollections where
+  type
+    AWSResponse ListRasterDataCollections =
+      ListRasterDataCollectionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRasterDataCollectionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "RasterDataCollectionSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListRasterDataCollections where
+  hashWithSalt _salt ListRasterDataCollections' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListRasterDataCollections where
+  rnf ListRasterDataCollections' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListRasterDataCollections where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListRasterDataCollections where
+  toPath = Prelude.const "/raster-data-collections"
+
+instance Data.ToQuery ListRasterDataCollections where
+  toQuery ListRasterDataCollections' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListRasterDataCollectionsResponse' smart constructor.
+data ListRasterDataCollectionsResponse = ListRasterDataCollectionsResponse'
+  { -- | 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 (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Contains summary information about the raster data collection.
+    rasterDataCollectionSummaries :: [RasterDataCollectionMetadata]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRasterDataCollectionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRasterDataCollectionsResponse_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', 'listRasterDataCollectionsResponse_httpStatus' - The response's http status code.
+--
+-- 'rasterDataCollectionSummaries', 'listRasterDataCollectionsResponse_rasterDataCollectionSummaries' - Contains summary information about the raster data collection.
+newListRasterDataCollectionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRasterDataCollectionsResponse
+newListRasterDataCollectionsResponse pHttpStatus_ =
+  ListRasterDataCollectionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      rasterDataCollectionSummaries =
+        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.
+listRasterDataCollectionsResponse_nextToken :: Lens.Lens' ListRasterDataCollectionsResponse (Prelude.Maybe Prelude.Text)
+listRasterDataCollectionsResponse_nextToken = Lens.lens (\ListRasterDataCollectionsResponse' {nextToken} -> nextToken) (\s@ListRasterDataCollectionsResponse' {} a -> s {nextToken = a} :: ListRasterDataCollectionsResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listRasterDataCollectionsResponse_httpStatus :: Lens.Lens' ListRasterDataCollectionsResponse Prelude.Int
+listRasterDataCollectionsResponse_httpStatus = Lens.lens (\ListRasterDataCollectionsResponse' {httpStatus} -> httpStatus) (\s@ListRasterDataCollectionsResponse' {} a -> s {httpStatus = a} :: ListRasterDataCollectionsResponse)
+
+-- | Contains summary information about the raster data collection.
+listRasterDataCollectionsResponse_rasterDataCollectionSummaries :: Lens.Lens' ListRasterDataCollectionsResponse [RasterDataCollectionMetadata]
+listRasterDataCollectionsResponse_rasterDataCollectionSummaries = Lens.lens (\ListRasterDataCollectionsResponse' {rasterDataCollectionSummaries} -> rasterDataCollectionSummaries) (\s@ListRasterDataCollectionsResponse' {} a -> s {rasterDataCollectionSummaries = a} :: ListRasterDataCollectionsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListRasterDataCollectionsResponse
+  where
+  rnf ListRasterDataCollectionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf rasterDataCollectionSummaries
diff --git a/gen/Amazonka/SageMakerGeoSpatial/ListTagsForResource.hs b/gen/Amazonka/SageMakerGeoSpatial/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/ListTagsForResource.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.SageMakerGeoSpatial.ListTagsForResource
+-- 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 tags attached to the resource.
+module Amazonka.SageMakerGeoSpatial.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_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.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the resource you want to tag.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the resource you want to tag.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the resource you want to tag.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTagsForResourceResponse_tags' - Each tag consists of a key and a value.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Each tag consists of a key and a value.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMakerGeoSpatial/ListVectorEnrichmentJobs.hs b/gen/Amazonka/SageMakerGeoSpatial/ListVectorEnrichmentJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/ListVectorEnrichmentJobs.hs
@@ -0,0 +1,271 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMakerGeoSpatial.ListVectorEnrichmentJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of vector enrichment jobs.
+--
+-- This operation returns paginated results.
+module Amazonka.SageMakerGeoSpatial.ListVectorEnrichmentJobs
+  ( -- * Creating a Request
+    ListVectorEnrichmentJobs (..),
+    newListVectorEnrichmentJobs,
+
+    -- * Request Lenses
+    listVectorEnrichmentJobs_maxResults,
+    listVectorEnrichmentJobs_nextToken,
+    listVectorEnrichmentJobs_sortBy,
+    listVectorEnrichmentJobs_sortOrder,
+    listVectorEnrichmentJobs_statusEquals,
+
+    -- * Destructuring the Response
+    ListVectorEnrichmentJobsResponse (..),
+    newListVectorEnrichmentJobsResponse,
+
+    -- * Response Lenses
+    listVectorEnrichmentJobsResponse_nextToken,
+    listVectorEnrichmentJobsResponse_httpStatus,
+    listVectorEnrichmentJobsResponse_vectorEnrichmentJobSummaries,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newListVectorEnrichmentJobs' smart constructor.
+data ListVectorEnrichmentJobs = ListVectorEnrichmentJobs'
+  { -- | The maximum number of items to return.
+    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 (Data.Sensitive Prelude.Text),
+    -- | The parameter by which to sort the results.
+    sortBy :: Prelude.Maybe Prelude.Text,
+    -- | An optional value that specifies whether you want the results sorted in
+    -- @Ascending@ or @Descending@ order.
+    sortOrder :: Prelude.Maybe SortOrder,
+    -- | A filter that retrieves only jobs with a specific status.
+    statusEquals :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVectorEnrichmentJobs' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listVectorEnrichmentJobs_maxResults' - The maximum number of items to return.
+--
+-- 'nextToken', 'listVectorEnrichmentJobs_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', 'listVectorEnrichmentJobs_sortBy' - The parameter by which to sort the results.
+--
+-- 'sortOrder', 'listVectorEnrichmentJobs_sortOrder' - An optional value that specifies whether you want the results sorted in
+-- @Ascending@ or @Descending@ order.
+--
+-- 'statusEquals', 'listVectorEnrichmentJobs_statusEquals' - A filter that retrieves only jobs with a specific status.
+newListVectorEnrichmentJobs ::
+  ListVectorEnrichmentJobs
+newListVectorEnrichmentJobs =
+  ListVectorEnrichmentJobs'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sortBy = Prelude.Nothing,
+      sortOrder = Prelude.Nothing,
+      statusEquals = Prelude.Nothing
+    }
+
+-- | The maximum number of items to return.
+listVectorEnrichmentJobs_maxResults :: Lens.Lens' ListVectorEnrichmentJobs (Prelude.Maybe Prelude.Natural)
+listVectorEnrichmentJobs_maxResults = Lens.lens (\ListVectorEnrichmentJobs' {maxResults} -> maxResults) (\s@ListVectorEnrichmentJobs' {} a -> s {maxResults = a} :: ListVectorEnrichmentJobs)
+
+-- | If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+listVectorEnrichmentJobs_nextToken :: Lens.Lens' ListVectorEnrichmentJobs (Prelude.Maybe Prelude.Text)
+listVectorEnrichmentJobs_nextToken = Lens.lens (\ListVectorEnrichmentJobs' {nextToken} -> nextToken) (\s@ListVectorEnrichmentJobs' {} a -> s {nextToken = a} :: ListVectorEnrichmentJobs) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The parameter by which to sort the results.
+listVectorEnrichmentJobs_sortBy :: Lens.Lens' ListVectorEnrichmentJobs (Prelude.Maybe Prelude.Text)
+listVectorEnrichmentJobs_sortBy = Lens.lens (\ListVectorEnrichmentJobs' {sortBy} -> sortBy) (\s@ListVectorEnrichmentJobs' {} a -> s {sortBy = a} :: ListVectorEnrichmentJobs)
+
+-- | An optional value that specifies whether you want the results sorted in
+-- @Ascending@ or @Descending@ order.
+listVectorEnrichmentJobs_sortOrder :: Lens.Lens' ListVectorEnrichmentJobs (Prelude.Maybe SortOrder)
+listVectorEnrichmentJobs_sortOrder = Lens.lens (\ListVectorEnrichmentJobs' {sortOrder} -> sortOrder) (\s@ListVectorEnrichmentJobs' {} a -> s {sortOrder = a} :: ListVectorEnrichmentJobs)
+
+-- | A filter that retrieves only jobs with a specific status.
+listVectorEnrichmentJobs_statusEquals :: Lens.Lens' ListVectorEnrichmentJobs (Prelude.Maybe Prelude.Text)
+listVectorEnrichmentJobs_statusEquals = Lens.lens (\ListVectorEnrichmentJobs' {statusEquals} -> statusEquals) (\s@ListVectorEnrichmentJobs' {} a -> s {statusEquals = a} :: ListVectorEnrichmentJobs)
+
+instance Core.AWSPager ListVectorEnrichmentJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listVectorEnrichmentJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^. listVectorEnrichmentJobsResponse_vectorEnrichmentJobSummaries
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listVectorEnrichmentJobs_nextToken
+          Lens..~ rs
+          Lens.^? listVectorEnrichmentJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListVectorEnrichmentJobs where
+  type
+    AWSResponse ListVectorEnrichmentJobs =
+      ListVectorEnrichmentJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListVectorEnrichmentJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "VectorEnrichmentJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListVectorEnrichmentJobs where
+  hashWithSalt _salt ListVectorEnrichmentJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sortBy
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` statusEquals
+
+instance Prelude.NFData ListVectorEnrichmentJobs where
+  rnf ListVectorEnrichmentJobs' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sortBy
+      `Prelude.seq` Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf statusEquals
+
+instance Data.ToHeaders ListVectorEnrichmentJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListVectorEnrichmentJobs where
+  toJSON ListVectorEnrichmentJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SortBy" Data..=) Prelude.<$> sortBy,
+            ("SortOrder" Data..=) Prelude.<$> sortOrder,
+            ("StatusEquals" Data..=) Prelude.<$> statusEquals
+          ]
+      )
+
+instance Data.ToPath ListVectorEnrichmentJobs where
+  toPath = Prelude.const "/list-vector-enrichment-jobs"
+
+instance Data.ToQuery ListVectorEnrichmentJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListVectorEnrichmentJobsResponse' smart constructor.
+data ListVectorEnrichmentJobsResponse = ListVectorEnrichmentJobsResponse'
+  { -- | 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 (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Contains summary information about the Vector Enrichment jobs.
+    vectorEnrichmentJobSummaries :: [ListVectorEnrichmentJobOutputConfig]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVectorEnrichmentJobsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listVectorEnrichmentJobsResponse_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', 'listVectorEnrichmentJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'vectorEnrichmentJobSummaries', 'listVectorEnrichmentJobsResponse_vectorEnrichmentJobSummaries' - Contains summary information about the Vector Enrichment jobs.
+newListVectorEnrichmentJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListVectorEnrichmentJobsResponse
+newListVectorEnrichmentJobsResponse pHttpStatus_ =
+  ListVectorEnrichmentJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      vectorEnrichmentJobSummaries =
+        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.
+listVectorEnrichmentJobsResponse_nextToken :: Lens.Lens' ListVectorEnrichmentJobsResponse (Prelude.Maybe Prelude.Text)
+listVectorEnrichmentJobsResponse_nextToken = Lens.lens (\ListVectorEnrichmentJobsResponse' {nextToken} -> nextToken) (\s@ListVectorEnrichmentJobsResponse' {} a -> s {nextToken = a} :: ListVectorEnrichmentJobsResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+listVectorEnrichmentJobsResponse_httpStatus :: Lens.Lens' ListVectorEnrichmentJobsResponse Prelude.Int
+listVectorEnrichmentJobsResponse_httpStatus = Lens.lens (\ListVectorEnrichmentJobsResponse' {httpStatus} -> httpStatus) (\s@ListVectorEnrichmentJobsResponse' {} a -> s {httpStatus = a} :: ListVectorEnrichmentJobsResponse)
+
+-- | Contains summary information about the Vector Enrichment jobs.
+listVectorEnrichmentJobsResponse_vectorEnrichmentJobSummaries :: Lens.Lens' ListVectorEnrichmentJobsResponse [ListVectorEnrichmentJobOutputConfig]
+listVectorEnrichmentJobsResponse_vectorEnrichmentJobSummaries = Lens.lens (\ListVectorEnrichmentJobsResponse' {vectorEnrichmentJobSummaries} -> vectorEnrichmentJobSummaries) (\s@ListVectorEnrichmentJobsResponse' {} a -> s {vectorEnrichmentJobSummaries = a} :: ListVectorEnrichmentJobsResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    ListVectorEnrichmentJobsResponse
+  where
+  rnf ListVectorEnrichmentJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf vectorEnrichmentJobSummaries
diff --git a/gen/Amazonka/SageMakerGeoSpatial/SearchRasterDataCollection.hs b/gen/Amazonka/SageMakerGeoSpatial/SearchRasterDataCollection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/SearchRasterDataCollection.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.SageMakerGeoSpatial.SearchRasterDataCollection
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Allows you run image query on a specific raster data collection to get a
+-- list of the satellite imagery matching the selected filters.
+module Amazonka.SageMakerGeoSpatial.SearchRasterDataCollection
+  ( -- * Creating a Request
+    SearchRasterDataCollection (..),
+    newSearchRasterDataCollection,
+
+    -- * Request Lenses
+    searchRasterDataCollection_nextToken,
+    searchRasterDataCollection_arn,
+    searchRasterDataCollection_rasterDataCollectionQuery,
+
+    -- * Destructuring the Response
+    SearchRasterDataCollectionResponse (..),
+    newSearchRasterDataCollectionResponse,
+
+    -- * Response Lenses
+    searchRasterDataCollectionResponse_items,
+    searchRasterDataCollectionResponse_nextToken,
+    searchRasterDataCollectionResponse_httpStatus,
+    searchRasterDataCollectionResponse_approximateResultCount,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newSearchRasterDataCollection' smart constructor.
+data SearchRasterDataCollection = SearchRasterDataCollection'
+  { -- | 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 (Data.Sensitive Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the raster data collection.
+    arn :: Prelude.Text,
+    rasterDataCollectionQuery :: RasterDataCollectionQueryWithBandFilterInput
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchRasterDataCollection' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchRasterDataCollection_nextToken' - If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+--
+-- 'arn', 'searchRasterDataCollection_arn' - The Amazon Resource Name (ARN) of the raster data collection.
+--
+-- 'rasterDataCollectionQuery', 'searchRasterDataCollection_rasterDataCollectionQuery' -
+newSearchRasterDataCollection ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'rasterDataCollectionQuery'
+  RasterDataCollectionQueryWithBandFilterInput ->
+  SearchRasterDataCollection
+newSearchRasterDataCollection
+  pArn_
+  pRasterDataCollectionQuery_ =
+    SearchRasterDataCollection'
+      { nextToken =
+          Prelude.Nothing,
+        arn = pArn_,
+        rasterDataCollectionQuery =
+          pRasterDataCollectionQuery_
+      }
+
+-- | If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+searchRasterDataCollection_nextToken :: Lens.Lens' SearchRasterDataCollection (Prelude.Maybe Prelude.Text)
+searchRasterDataCollection_nextToken = Lens.lens (\SearchRasterDataCollection' {nextToken} -> nextToken) (\s@SearchRasterDataCollection' {} a -> s {nextToken = a} :: SearchRasterDataCollection) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Amazon Resource Name (ARN) of the raster data collection.
+searchRasterDataCollection_arn :: Lens.Lens' SearchRasterDataCollection Prelude.Text
+searchRasterDataCollection_arn = Lens.lens (\SearchRasterDataCollection' {arn} -> arn) (\s@SearchRasterDataCollection' {} a -> s {arn = a} :: SearchRasterDataCollection)
+
+searchRasterDataCollection_rasterDataCollectionQuery :: Lens.Lens' SearchRasterDataCollection RasterDataCollectionQueryWithBandFilterInput
+searchRasterDataCollection_rasterDataCollectionQuery = Lens.lens (\SearchRasterDataCollection' {rasterDataCollectionQuery} -> rasterDataCollectionQuery) (\s@SearchRasterDataCollection' {} a -> s {rasterDataCollectionQuery = a} :: SearchRasterDataCollection)
+
+instance Core.AWSRequest SearchRasterDataCollection where
+  type
+    AWSResponse SearchRasterDataCollection =
+      SearchRasterDataCollectionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchRasterDataCollectionResponse'
+            Prelude.<$> (x Data..?> "Items" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ApproximateResultCount")
+      )
+
+instance Prelude.Hashable SearchRasterDataCollection where
+  hashWithSalt _salt SearchRasterDataCollection' {..} =
+    _salt
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` rasterDataCollectionQuery
+
+instance Prelude.NFData SearchRasterDataCollection where
+  rnf SearchRasterDataCollection' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf rasterDataCollectionQuery
+
+instance Data.ToHeaders SearchRasterDataCollection where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SearchRasterDataCollection where
+  toJSON SearchRasterDataCollection' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just
+              ( "RasterDataCollectionQuery"
+                  Data..= rasterDataCollectionQuery
+              )
+          ]
+      )
+
+instance Data.ToPath SearchRasterDataCollection where
+  toPath =
+    Prelude.const "/search-raster-data-collection"
+
+instance Data.ToQuery SearchRasterDataCollection where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchRasterDataCollectionResponse' smart constructor.
+data SearchRasterDataCollectionResponse = SearchRasterDataCollectionResponse'
+  { items :: Prelude.Maybe [ItemSource],
+    -- | 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 (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    approximateResultCount :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchRasterDataCollectionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'items', 'searchRasterDataCollectionResponse_items' -
+--
+-- 'nextToken', 'searchRasterDataCollectionResponse_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', 'searchRasterDataCollectionResponse_httpStatus' - The response's http status code.
+--
+-- 'approximateResultCount', 'searchRasterDataCollectionResponse_approximateResultCount' -
+newSearchRasterDataCollectionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'approximateResultCount'
+  Prelude.Int ->
+  SearchRasterDataCollectionResponse
+newSearchRasterDataCollectionResponse
+  pHttpStatus_
+  pApproximateResultCount_ =
+    SearchRasterDataCollectionResponse'
+      { items =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        approximateResultCount =
+          pApproximateResultCount_
+      }
+
+searchRasterDataCollectionResponse_items :: Lens.Lens' SearchRasterDataCollectionResponse (Prelude.Maybe [ItemSource])
+searchRasterDataCollectionResponse_items = Lens.lens (\SearchRasterDataCollectionResponse' {items} -> items) (\s@SearchRasterDataCollectionResponse' {} a -> s {items = a} :: SearchRasterDataCollectionResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If the previous response was truncated, you receive this token. Use it
+-- in your next request to receive the next set of results.
+searchRasterDataCollectionResponse_nextToken :: Lens.Lens' SearchRasterDataCollectionResponse (Prelude.Maybe Prelude.Text)
+searchRasterDataCollectionResponse_nextToken = Lens.lens (\SearchRasterDataCollectionResponse' {nextToken} -> nextToken) (\s@SearchRasterDataCollectionResponse' {} a -> s {nextToken = a} :: SearchRasterDataCollectionResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+searchRasterDataCollectionResponse_httpStatus :: Lens.Lens' SearchRasterDataCollectionResponse Prelude.Int
+searchRasterDataCollectionResponse_httpStatus = Lens.lens (\SearchRasterDataCollectionResponse' {httpStatus} -> httpStatus) (\s@SearchRasterDataCollectionResponse' {} a -> s {httpStatus = a} :: SearchRasterDataCollectionResponse)
+
+searchRasterDataCollectionResponse_approximateResultCount :: Lens.Lens' SearchRasterDataCollectionResponse Prelude.Int
+searchRasterDataCollectionResponse_approximateResultCount = Lens.lens (\SearchRasterDataCollectionResponse' {approximateResultCount} -> approximateResultCount) (\s@SearchRasterDataCollectionResponse' {} a -> s {approximateResultCount = a} :: SearchRasterDataCollectionResponse)
+
+instance
+  Prelude.NFData
+    SearchRasterDataCollectionResponse
+  where
+  rnf SearchRasterDataCollectionResponse' {..} =
+    Prelude.rnf items
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf approximateResultCount
diff --git a/gen/Amazonka/SageMakerGeoSpatial/StartEarthObservationJob.hs b/gen/Amazonka/SageMakerGeoSpatial/StartEarthObservationJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/StartEarthObservationJob.hs
@@ -0,0 +1,399 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMakerGeoSpatial.StartEarthObservationJob
+-- 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 an Earth observation job.
+module Amazonka.SageMakerGeoSpatial.StartEarthObservationJob
+  ( -- * Creating a Request
+    StartEarthObservationJob (..),
+    newStartEarthObservationJob,
+
+    -- * Request Lenses
+    startEarthObservationJob_clientToken,
+    startEarthObservationJob_executionRoleArn,
+    startEarthObservationJob_kmsKeyId,
+    startEarthObservationJob_tags,
+    startEarthObservationJob_inputConfig,
+    startEarthObservationJob_jobConfig,
+    startEarthObservationJob_name,
+
+    -- * Destructuring the Response
+    StartEarthObservationJobResponse (..),
+    newStartEarthObservationJobResponse,
+
+    -- * Response Lenses
+    startEarthObservationJobResponse_executionRoleArn,
+    startEarthObservationJobResponse_inputConfig,
+    startEarthObservationJobResponse_kmsKeyId,
+    startEarthObservationJobResponse_tags,
+    startEarthObservationJobResponse_httpStatus,
+    startEarthObservationJobResponse_arn,
+    startEarthObservationJobResponse_creationTime,
+    startEarthObservationJobResponse_durationInSeconds,
+    startEarthObservationJobResponse_jobConfig,
+    startEarthObservationJobResponse_name,
+    startEarthObservationJobResponse_status,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newStartEarthObservationJob' smart constructor.
+data StartEarthObservationJob = StartEarthObservationJob'
+  { -- | A unique token that guarantees that the call to this API is idempotent.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+    -- the job.
+    executionRoleArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Key Management Service (KMS) key ID for server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Input configuration information for the Earth Observation job.
+    inputConfig :: InputConfigInput,
+    -- | An object containing information about the job configuration.
+    jobConfig :: JobConfigInput,
+    -- | The name of the Earth Observation job.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartEarthObservationJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'startEarthObservationJob_clientToken' - A unique token that guarantees that the call to this API is idempotent.
+--
+-- 'executionRoleArn', 'startEarthObservationJob_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+--
+-- 'kmsKeyId', 'startEarthObservationJob_kmsKeyId' - The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+--
+-- 'tags', 'startEarthObservationJob_tags' - Each tag consists of a key and a value.
+--
+-- 'inputConfig', 'startEarthObservationJob_inputConfig' - Input configuration information for the Earth Observation job.
+--
+-- 'jobConfig', 'startEarthObservationJob_jobConfig' - An object containing information about the job configuration.
+--
+-- 'name', 'startEarthObservationJob_name' - The name of the Earth Observation job.
+newStartEarthObservationJob ::
+  -- | 'inputConfig'
+  InputConfigInput ->
+  -- | 'jobConfig'
+  JobConfigInput ->
+  -- | 'name'
+  Prelude.Text ->
+  StartEarthObservationJob
+newStartEarthObservationJob
+  pInputConfig_
+  pJobConfig_
+  pName_ =
+    StartEarthObservationJob'
+      { clientToken =
+          Prelude.Nothing,
+        executionRoleArn = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        inputConfig = pInputConfig_,
+        jobConfig = pJobConfig_,
+        name = pName_
+      }
+
+-- | A unique token that guarantees that the call to this API is idempotent.
+startEarthObservationJob_clientToken :: Lens.Lens' StartEarthObservationJob (Prelude.Maybe Prelude.Text)
+startEarthObservationJob_clientToken = Lens.lens (\StartEarthObservationJob' {clientToken} -> clientToken) (\s@StartEarthObservationJob' {} a -> s {clientToken = a} :: StartEarthObservationJob)
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+startEarthObservationJob_executionRoleArn :: Lens.Lens' StartEarthObservationJob (Prelude.Maybe Prelude.Text)
+startEarthObservationJob_executionRoleArn = Lens.lens (\StartEarthObservationJob' {executionRoleArn} -> executionRoleArn) (\s@StartEarthObservationJob' {} a -> s {executionRoleArn = a} :: StartEarthObservationJob)
+
+-- | The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+startEarthObservationJob_kmsKeyId :: Lens.Lens' StartEarthObservationJob (Prelude.Maybe Prelude.Text)
+startEarthObservationJob_kmsKeyId = Lens.lens (\StartEarthObservationJob' {kmsKeyId} -> kmsKeyId) (\s@StartEarthObservationJob' {} a -> s {kmsKeyId = a} :: StartEarthObservationJob)
+
+-- | Each tag consists of a key and a value.
+startEarthObservationJob_tags :: Lens.Lens' StartEarthObservationJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+startEarthObservationJob_tags = Lens.lens (\StartEarthObservationJob' {tags} -> tags) (\s@StartEarthObservationJob' {} a -> s {tags = a} :: StartEarthObservationJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Input configuration information for the Earth Observation job.
+startEarthObservationJob_inputConfig :: Lens.Lens' StartEarthObservationJob InputConfigInput
+startEarthObservationJob_inputConfig = Lens.lens (\StartEarthObservationJob' {inputConfig} -> inputConfig) (\s@StartEarthObservationJob' {} a -> s {inputConfig = a} :: StartEarthObservationJob)
+
+-- | An object containing information about the job configuration.
+startEarthObservationJob_jobConfig :: Lens.Lens' StartEarthObservationJob JobConfigInput
+startEarthObservationJob_jobConfig = Lens.lens (\StartEarthObservationJob' {jobConfig} -> jobConfig) (\s@StartEarthObservationJob' {} a -> s {jobConfig = a} :: StartEarthObservationJob)
+
+-- | The name of the Earth Observation job.
+startEarthObservationJob_name :: Lens.Lens' StartEarthObservationJob Prelude.Text
+startEarthObservationJob_name = Lens.lens (\StartEarthObservationJob' {name} -> name) (\s@StartEarthObservationJob' {} a -> s {name = a} :: StartEarthObservationJob)
+
+instance Core.AWSRequest StartEarthObservationJob where
+  type
+    AWSResponse StartEarthObservationJob =
+      StartEarthObservationJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartEarthObservationJobResponse'
+            Prelude.<$> (x Data..?> "ExecutionRoleArn")
+            Prelude.<*> (x Data..?> "InputConfig")
+            Prelude.<*> (x Data..?> "KmsKeyId")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Arn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "DurationInSeconds")
+            Prelude.<*> (x Data..:> "JobConfig")
+            Prelude.<*> (x Data..:> "Name")
+            Prelude.<*> (x Data..:> "Status")
+      )
+
+instance Prelude.Hashable StartEarthObservationJob where
+  hashWithSalt _salt StartEarthObservationJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` executionRoleArn
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` inputConfig
+      `Prelude.hashWithSalt` jobConfig
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData StartEarthObservationJob where
+  rnf StartEarthObservationJob' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf jobConfig
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders StartEarthObservationJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartEarthObservationJob where
+  toJSON StartEarthObservationJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("ExecutionRoleArn" Data..=)
+              Prelude.<$> executionRoleArn,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("InputConfig" Data..= inputConfig),
+            Prelude.Just ("JobConfig" Data..= jobConfig),
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath StartEarthObservationJob where
+  toPath = Prelude.const "/earth-observation-jobs"
+
+instance Data.ToQuery StartEarthObservationJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartEarthObservationJobResponse' smart constructor.
+data StartEarthObservationJobResponse = StartEarthObservationJobResponse'
+  { -- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+    -- the job.
+    executionRoleArn :: Prelude.Maybe Prelude.Text,
+    -- | Input configuration information for the Earth Observation job.
+    inputConfig :: Prelude.Maybe InputConfigOutput,
+    -- | The Amazon Key Management Service (KMS) key ID for server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the Earth Observation job.
+    arn :: Prelude.Text,
+    -- | The creation time.
+    creationTime :: Data.POSIX,
+    -- | The duration of the session, in seconds.
+    durationInSeconds :: Prelude.Int,
+    -- | An object containing information about the job configuration.
+    jobConfig :: JobConfigInput,
+    -- | The name of the Earth Observation job.
+    name :: Prelude.Text,
+    -- | The status of the Earth Observation job.
+    status :: EarthObservationJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartEarthObservationJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'executionRoleArn', 'startEarthObservationJobResponse_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+--
+-- 'inputConfig', 'startEarthObservationJobResponse_inputConfig' - Input configuration information for the Earth Observation job.
+--
+-- 'kmsKeyId', 'startEarthObservationJobResponse_kmsKeyId' - The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+--
+-- 'tags', 'startEarthObservationJobResponse_tags' - Each tag consists of a key and a value.
+--
+-- 'httpStatus', 'startEarthObservationJobResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'startEarthObservationJobResponse_arn' - The Amazon Resource Name (ARN) of the Earth Observation job.
+--
+-- 'creationTime', 'startEarthObservationJobResponse_creationTime' - The creation time.
+--
+-- 'durationInSeconds', 'startEarthObservationJobResponse_durationInSeconds' - The duration of the session, in seconds.
+--
+-- 'jobConfig', 'startEarthObservationJobResponse_jobConfig' - An object containing information about the job configuration.
+--
+-- 'name', 'startEarthObservationJobResponse_name' - The name of the Earth Observation job.
+--
+-- 'status', 'startEarthObservationJobResponse_status' - The status of the Earth Observation job.
+newStartEarthObservationJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'durationInSeconds'
+  Prelude.Int ->
+  -- | 'jobConfig'
+  JobConfigInput ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'status'
+  EarthObservationJobStatus ->
+  StartEarthObservationJobResponse
+newStartEarthObservationJobResponse
+  pHttpStatus_
+  pArn_
+  pCreationTime_
+  pDurationInSeconds_
+  pJobConfig_
+  pName_
+  pStatus_ =
+    StartEarthObservationJobResponse'
+      { executionRoleArn =
+          Prelude.Nothing,
+        inputConfig = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        arn = pArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        durationInSeconds = pDurationInSeconds_,
+        jobConfig = pJobConfig_,
+        name = pName_,
+        status = pStatus_
+      }
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+startEarthObservationJobResponse_executionRoleArn :: Lens.Lens' StartEarthObservationJobResponse (Prelude.Maybe Prelude.Text)
+startEarthObservationJobResponse_executionRoleArn = Lens.lens (\StartEarthObservationJobResponse' {executionRoleArn} -> executionRoleArn) (\s@StartEarthObservationJobResponse' {} a -> s {executionRoleArn = a} :: StartEarthObservationJobResponse)
+
+-- | Input configuration information for the Earth Observation job.
+startEarthObservationJobResponse_inputConfig :: Lens.Lens' StartEarthObservationJobResponse (Prelude.Maybe InputConfigOutput)
+startEarthObservationJobResponse_inputConfig = Lens.lens (\StartEarthObservationJobResponse' {inputConfig} -> inputConfig) (\s@StartEarthObservationJobResponse' {} a -> s {inputConfig = a} :: StartEarthObservationJobResponse)
+
+-- | The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+startEarthObservationJobResponse_kmsKeyId :: Lens.Lens' StartEarthObservationJobResponse (Prelude.Maybe Prelude.Text)
+startEarthObservationJobResponse_kmsKeyId = Lens.lens (\StartEarthObservationJobResponse' {kmsKeyId} -> kmsKeyId) (\s@StartEarthObservationJobResponse' {} a -> s {kmsKeyId = a} :: StartEarthObservationJobResponse)
+
+-- | Each tag consists of a key and a value.
+startEarthObservationJobResponse_tags :: Lens.Lens' StartEarthObservationJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+startEarthObservationJobResponse_tags = Lens.lens (\StartEarthObservationJobResponse' {tags} -> tags) (\s@StartEarthObservationJobResponse' {} a -> s {tags = a} :: StartEarthObservationJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+startEarthObservationJobResponse_httpStatus :: Lens.Lens' StartEarthObservationJobResponse Prelude.Int
+startEarthObservationJobResponse_httpStatus = Lens.lens (\StartEarthObservationJobResponse' {httpStatus} -> httpStatus) (\s@StartEarthObservationJobResponse' {} a -> s {httpStatus = a} :: StartEarthObservationJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the Earth Observation job.
+startEarthObservationJobResponse_arn :: Lens.Lens' StartEarthObservationJobResponse Prelude.Text
+startEarthObservationJobResponse_arn = Lens.lens (\StartEarthObservationJobResponse' {arn} -> arn) (\s@StartEarthObservationJobResponse' {} a -> s {arn = a} :: StartEarthObservationJobResponse)
+
+-- | The creation time.
+startEarthObservationJobResponse_creationTime :: Lens.Lens' StartEarthObservationJobResponse Prelude.UTCTime
+startEarthObservationJobResponse_creationTime = Lens.lens (\StartEarthObservationJobResponse' {creationTime} -> creationTime) (\s@StartEarthObservationJobResponse' {} a -> s {creationTime = a} :: StartEarthObservationJobResponse) Prelude.. Data._Time
+
+-- | The duration of the session, in seconds.
+startEarthObservationJobResponse_durationInSeconds :: Lens.Lens' StartEarthObservationJobResponse Prelude.Int
+startEarthObservationJobResponse_durationInSeconds = Lens.lens (\StartEarthObservationJobResponse' {durationInSeconds} -> durationInSeconds) (\s@StartEarthObservationJobResponse' {} a -> s {durationInSeconds = a} :: StartEarthObservationJobResponse)
+
+-- | An object containing information about the job configuration.
+startEarthObservationJobResponse_jobConfig :: Lens.Lens' StartEarthObservationJobResponse JobConfigInput
+startEarthObservationJobResponse_jobConfig = Lens.lens (\StartEarthObservationJobResponse' {jobConfig} -> jobConfig) (\s@StartEarthObservationJobResponse' {} a -> s {jobConfig = a} :: StartEarthObservationJobResponse)
+
+-- | The name of the Earth Observation job.
+startEarthObservationJobResponse_name :: Lens.Lens' StartEarthObservationJobResponse Prelude.Text
+startEarthObservationJobResponse_name = Lens.lens (\StartEarthObservationJobResponse' {name} -> name) (\s@StartEarthObservationJobResponse' {} a -> s {name = a} :: StartEarthObservationJobResponse)
+
+-- | The status of the Earth Observation job.
+startEarthObservationJobResponse_status :: Lens.Lens' StartEarthObservationJobResponse EarthObservationJobStatus
+startEarthObservationJobResponse_status = Lens.lens (\StartEarthObservationJobResponse' {status} -> status) (\s@StartEarthObservationJobResponse' {} a -> s {status = a} :: StartEarthObservationJobResponse)
+
+instance
+  Prelude.NFData
+    StartEarthObservationJobResponse
+  where
+  rnf StartEarthObservationJobResponse' {..} =
+    Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf durationInSeconds
+      `Prelude.seq` Prelude.rnf jobConfig
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMakerGeoSpatial/StartVectorEnrichmentJob.hs b/gen/Amazonka/SageMakerGeoSpatial/StartVectorEnrichmentJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/StartVectorEnrichmentJob.hs
@@ -0,0 +1,424 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMakerGeoSpatial.StartVectorEnrichmentJob
+-- 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 Vector Enrichment job for the supplied job type. Currently,
+-- there are two supported job types: reverse geocoding and map matching.
+module Amazonka.SageMakerGeoSpatial.StartVectorEnrichmentJob
+  ( -- * Creating a Request
+    StartVectorEnrichmentJob (..),
+    newStartVectorEnrichmentJob,
+
+    -- * Request Lenses
+    startVectorEnrichmentJob_clientToken,
+    startVectorEnrichmentJob_kmsKeyId,
+    startVectorEnrichmentJob_tags,
+    startVectorEnrichmentJob_executionRoleArn,
+    startVectorEnrichmentJob_inputConfig,
+    startVectorEnrichmentJob_jobConfig,
+    startVectorEnrichmentJob_name,
+
+    -- * Destructuring the Response
+    StartVectorEnrichmentJobResponse (..),
+    newStartVectorEnrichmentJobResponse,
+
+    -- * Response Lenses
+    startVectorEnrichmentJobResponse_kmsKeyId,
+    startVectorEnrichmentJobResponse_tags,
+    startVectorEnrichmentJobResponse_httpStatus,
+    startVectorEnrichmentJobResponse_arn,
+    startVectorEnrichmentJobResponse_creationTime,
+    startVectorEnrichmentJobResponse_durationInSeconds,
+    startVectorEnrichmentJobResponse_executionRoleArn,
+    startVectorEnrichmentJobResponse_inputConfig,
+    startVectorEnrichmentJobResponse_jobConfig,
+    startVectorEnrichmentJobResponse_name,
+    startVectorEnrichmentJobResponse_status,
+    startVectorEnrichmentJobResponse_type,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newStartVectorEnrichmentJob' smart constructor.
+data StartVectorEnrichmentJob = StartVectorEnrichmentJob'
+  { -- | A unique token that guarantees that the call to this API is idempotent.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Key Management Service (KMS) key ID for server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+    -- the job.
+    executionRoleArn :: Prelude.Text,
+    -- | Input configuration information for the Vector Enrichment job.
+    inputConfig :: VectorEnrichmentJobInputConfig,
+    -- | An object containing information about the job configuration.
+    jobConfig :: VectorEnrichmentJobConfig,
+    -- | The name of the Vector Enrichment job.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartVectorEnrichmentJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'startVectorEnrichmentJob_clientToken' - A unique token that guarantees that the call to this API is idempotent.
+--
+-- 'kmsKeyId', 'startVectorEnrichmentJob_kmsKeyId' - The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+--
+-- 'tags', 'startVectorEnrichmentJob_tags' - Each tag consists of a key and a value.
+--
+-- 'executionRoleArn', 'startVectorEnrichmentJob_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+--
+-- 'inputConfig', 'startVectorEnrichmentJob_inputConfig' - Input configuration information for the Vector Enrichment job.
+--
+-- 'jobConfig', 'startVectorEnrichmentJob_jobConfig' - An object containing information about the job configuration.
+--
+-- 'name', 'startVectorEnrichmentJob_name' - The name of the Vector Enrichment job.
+newStartVectorEnrichmentJob ::
+  -- | 'executionRoleArn'
+  Prelude.Text ->
+  -- | 'inputConfig'
+  VectorEnrichmentJobInputConfig ->
+  -- | 'jobConfig'
+  VectorEnrichmentJobConfig ->
+  -- | 'name'
+  Prelude.Text ->
+  StartVectorEnrichmentJob
+newStartVectorEnrichmentJob
+  pExecutionRoleArn_
+  pInputConfig_
+  pJobConfig_
+  pName_ =
+    StartVectorEnrichmentJob'
+      { clientToken =
+          Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        executionRoleArn = pExecutionRoleArn_,
+        inputConfig = pInputConfig_,
+        jobConfig = pJobConfig_,
+        name = pName_
+      }
+
+-- | A unique token that guarantees that the call to this API is idempotent.
+startVectorEnrichmentJob_clientToken :: Lens.Lens' StartVectorEnrichmentJob (Prelude.Maybe Prelude.Text)
+startVectorEnrichmentJob_clientToken = Lens.lens (\StartVectorEnrichmentJob' {clientToken} -> clientToken) (\s@StartVectorEnrichmentJob' {} a -> s {clientToken = a} :: StartVectorEnrichmentJob)
+
+-- | The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+startVectorEnrichmentJob_kmsKeyId :: Lens.Lens' StartVectorEnrichmentJob (Prelude.Maybe Prelude.Text)
+startVectorEnrichmentJob_kmsKeyId = Lens.lens (\StartVectorEnrichmentJob' {kmsKeyId} -> kmsKeyId) (\s@StartVectorEnrichmentJob' {} a -> s {kmsKeyId = a} :: StartVectorEnrichmentJob)
+
+-- | Each tag consists of a key and a value.
+startVectorEnrichmentJob_tags :: Lens.Lens' StartVectorEnrichmentJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+startVectorEnrichmentJob_tags = Lens.lens (\StartVectorEnrichmentJob' {tags} -> tags) (\s@StartVectorEnrichmentJob' {} a -> s {tags = a} :: StartVectorEnrichmentJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+startVectorEnrichmentJob_executionRoleArn :: Lens.Lens' StartVectorEnrichmentJob Prelude.Text
+startVectorEnrichmentJob_executionRoleArn = Lens.lens (\StartVectorEnrichmentJob' {executionRoleArn} -> executionRoleArn) (\s@StartVectorEnrichmentJob' {} a -> s {executionRoleArn = a} :: StartVectorEnrichmentJob)
+
+-- | Input configuration information for the Vector Enrichment job.
+startVectorEnrichmentJob_inputConfig :: Lens.Lens' StartVectorEnrichmentJob VectorEnrichmentJobInputConfig
+startVectorEnrichmentJob_inputConfig = Lens.lens (\StartVectorEnrichmentJob' {inputConfig} -> inputConfig) (\s@StartVectorEnrichmentJob' {} a -> s {inputConfig = a} :: StartVectorEnrichmentJob)
+
+-- | An object containing information about the job configuration.
+startVectorEnrichmentJob_jobConfig :: Lens.Lens' StartVectorEnrichmentJob VectorEnrichmentJobConfig
+startVectorEnrichmentJob_jobConfig = Lens.lens (\StartVectorEnrichmentJob' {jobConfig} -> jobConfig) (\s@StartVectorEnrichmentJob' {} a -> s {jobConfig = a} :: StartVectorEnrichmentJob)
+
+-- | The name of the Vector Enrichment job.
+startVectorEnrichmentJob_name :: Lens.Lens' StartVectorEnrichmentJob Prelude.Text
+startVectorEnrichmentJob_name = Lens.lens (\StartVectorEnrichmentJob' {name} -> name) (\s@StartVectorEnrichmentJob' {} a -> s {name = a} :: StartVectorEnrichmentJob)
+
+instance Core.AWSRequest StartVectorEnrichmentJob where
+  type
+    AWSResponse StartVectorEnrichmentJob =
+      StartVectorEnrichmentJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartVectorEnrichmentJobResponse'
+            Prelude.<$> (x Data..?> "KmsKeyId")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "Arn")
+            Prelude.<*> (x Data..:> "CreationTime")
+            Prelude.<*> (x Data..:> "DurationInSeconds")
+            Prelude.<*> (x Data..:> "ExecutionRoleArn")
+            Prelude.<*> (x Data..:> "InputConfig")
+            Prelude.<*> (x Data..:> "JobConfig")
+            Prelude.<*> (x Data..:> "Name")
+            Prelude.<*> (x Data..:> "Status")
+            Prelude.<*> (x Data..:> "Type")
+      )
+
+instance Prelude.Hashable StartVectorEnrichmentJob where
+  hashWithSalt _salt StartVectorEnrichmentJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` executionRoleArn
+      `Prelude.hashWithSalt` inputConfig
+      `Prelude.hashWithSalt` jobConfig
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData StartVectorEnrichmentJob where
+  rnf StartVectorEnrichmentJob' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf jobConfig
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders StartVectorEnrichmentJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartVectorEnrichmentJob where
+  toJSON StartVectorEnrichmentJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("ExecutionRoleArn" Data..= executionRoleArn),
+            Prelude.Just ("InputConfig" Data..= inputConfig),
+            Prelude.Just ("JobConfig" Data..= jobConfig),
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath StartVectorEnrichmentJob where
+  toPath = Prelude.const "/vector-enrichment-jobs"
+
+instance Data.ToQuery StartVectorEnrichmentJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartVectorEnrichmentJobResponse' smart constructor.
+data StartVectorEnrichmentJobResponse = StartVectorEnrichmentJobResponse'
+  { -- | The Amazon Key Management Service (KMS) key ID for server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the Vector Enrichment job.
+    arn :: Prelude.Text,
+    -- | The creation time.
+    creationTime :: Data.POSIX,
+    -- | The duration of the Vector Enrichment job, in seconds.
+    durationInSeconds :: Prelude.Int,
+    -- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+    -- the job.
+    executionRoleArn :: Prelude.Text,
+    -- | Input configuration information for starting the Vector Enrichment job.
+    inputConfig :: VectorEnrichmentJobInputConfig,
+    -- | An object containing information about the job configuration.
+    jobConfig :: VectorEnrichmentJobConfig,
+    -- | The name of the Vector Enrichment job.
+    name :: Prelude.Text,
+    -- | The status of the Vector Enrichment job being started.
+    status :: VectorEnrichmentJobStatus,
+    -- | The type of the Vector Enrichment job.
+    type' :: VectorEnrichmentJobType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartVectorEnrichmentJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startVectorEnrichmentJobResponse_kmsKeyId' - The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+--
+-- 'tags', 'startVectorEnrichmentJobResponse_tags' - Each tag consists of a key and a value.
+--
+-- 'httpStatus', 'startVectorEnrichmentJobResponse_httpStatus' - The response's http status code.
+--
+-- 'arn', 'startVectorEnrichmentJobResponse_arn' - The Amazon Resource Name (ARN) of the Vector Enrichment job.
+--
+-- 'creationTime', 'startVectorEnrichmentJobResponse_creationTime' - The creation time.
+--
+-- 'durationInSeconds', 'startVectorEnrichmentJobResponse_durationInSeconds' - The duration of the Vector Enrichment job, in seconds.
+--
+-- 'executionRoleArn', 'startVectorEnrichmentJobResponse_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+--
+-- 'inputConfig', 'startVectorEnrichmentJobResponse_inputConfig' - Input configuration information for starting the Vector Enrichment job.
+--
+-- 'jobConfig', 'startVectorEnrichmentJobResponse_jobConfig' - An object containing information about the job configuration.
+--
+-- 'name', 'startVectorEnrichmentJobResponse_name' - The name of the Vector Enrichment job.
+--
+-- 'status', 'startVectorEnrichmentJobResponse_status' - The status of the Vector Enrichment job being started.
+--
+-- 'type'', 'startVectorEnrichmentJobResponse_type' - The type of the Vector Enrichment job.
+newStartVectorEnrichmentJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'durationInSeconds'
+  Prelude.Int ->
+  -- | 'executionRoleArn'
+  Prelude.Text ->
+  -- | 'inputConfig'
+  VectorEnrichmentJobInputConfig ->
+  -- | 'jobConfig'
+  VectorEnrichmentJobConfig ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'status'
+  VectorEnrichmentJobStatus ->
+  -- | 'type''
+  VectorEnrichmentJobType ->
+  StartVectorEnrichmentJobResponse
+newStartVectorEnrichmentJobResponse
+  pHttpStatus_
+  pArn_
+  pCreationTime_
+  pDurationInSeconds_
+  pExecutionRoleArn_
+  pInputConfig_
+  pJobConfig_
+  pName_
+  pStatus_
+  pType_ =
+    StartVectorEnrichmentJobResponse'
+      { kmsKeyId =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        arn = pArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        durationInSeconds = pDurationInSeconds_,
+        executionRoleArn = pExecutionRoleArn_,
+        inputConfig = pInputConfig_,
+        jobConfig = pJobConfig_,
+        name = pName_,
+        status = pStatus_,
+        type' = pType_
+      }
+
+-- | The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+startVectorEnrichmentJobResponse_kmsKeyId :: Lens.Lens' StartVectorEnrichmentJobResponse (Prelude.Maybe Prelude.Text)
+startVectorEnrichmentJobResponse_kmsKeyId = Lens.lens (\StartVectorEnrichmentJobResponse' {kmsKeyId} -> kmsKeyId) (\s@StartVectorEnrichmentJobResponse' {} a -> s {kmsKeyId = a} :: StartVectorEnrichmentJobResponse)
+
+-- | Each tag consists of a key and a value.
+startVectorEnrichmentJobResponse_tags :: Lens.Lens' StartVectorEnrichmentJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+startVectorEnrichmentJobResponse_tags = Lens.lens (\StartVectorEnrichmentJobResponse' {tags} -> tags) (\s@StartVectorEnrichmentJobResponse' {} a -> s {tags = a} :: StartVectorEnrichmentJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+startVectorEnrichmentJobResponse_httpStatus :: Lens.Lens' StartVectorEnrichmentJobResponse Prelude.Int
+startVectorEnrichmentJobResponse_httpStatus = Lens.lens (\StartVectorEnrichmentJobResponse' {httpStatus} -> httpStatus) (\s@StartVectorEnrichmentJobResponse' {} a -> s {httpStatus = a} :: StartVectorEnrichmentJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the Vector Enrichment job.
+startVectorEnrichmentJobResponse_arn :: Lens.Lens' StartVectorEnrichmentJobResponse Prelude.Text
+startVectorEnrichmentJobResponse_arn = Lens.lens (\StartVectorEnrichmentJobResponse' {arn} -> arn) (\s@StartVectorEnrichmentJobResponse' {} a -> s {arn = a} :: StartVectorEnrichmentJobResponse)
+
+-- | The creation time.
+startVectorEnrichmentJobResponse_creationTime :: Lens.Lens' StartVectorEnrichmentJobResponse Prelude.UTCTime
+startVectorEnrichmentJobResponse_creationTime = Lens.lens (\StartVectorEnrichmentJobResponse' {creationTime} -> creationTime) (\s@StartVectorEnrichmentJobResponse' {} a -> s {creationTime = a} :: StartVectorEnrichmentJobResponse) Prelude.. Data._Time
+
+-- | The duration of the Vector Enrichment job, in seconds.
+startVectorEnrichmentJobResponse_durationInSeconds :: Lens.Lens' StartVectorEnrichmentJobResponse Prelude.Int
+startVectorEnrichmentJobResponse_durationInSeconds = Lens.lens (\StartVectorEnrichmentJobResponse' {durationInSeconds} -> durationInSeconds) (\s@StartVectorEnrichmentJobResponse' {} a -> s {durationInSeconds = a} :: StartVectorEnrichmentJobResponse)
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you specified for
+-- the job.
+startVectorEnrichmentJobResponse_executionRoleArn :: Lens.Lens' StartVectorEnrichmentJobResponse Prelude.Text
+startVectorEnrichmentJobResponse_executionRoleArn = Lens.lens (\StartVectorEnrichmentJobResponse' {executionRoleArn} -> executionRoleArn) (\s@StartVectorEnrichmentJobResponse' {} a -> s {executionRoleArn = a} :: StartVectorEnrichmentJobResponse)
+
+-- | Input configuration information for starting the Vector Enrichment job.
+startVectorEnrichmentJobResponse_inputConfig :: Lens.Lens' StartVectorEnrichmentJobResponse VectorEnrichmentJobInputConfig
+startVectorEnrichmentJobResponse_inputConfig = Lens.lens (\StartVectorEnrichmentJobResponse' {inputConfig} -> inputConfig) (\s@StartVectorEnrichmentJobResponse' {} a -> s {inputConfig = a} :: StartVectorEnrichmentJobResponse)
+
+-- | An object containing information about the job configuration.
+startVectorEnrichmentJobResponse_jobConfig :: Lens.Lens' StartVectorEnrichmentJobResponse VectorEnrichmentJobConfig
+startVectorEnrichmentJobResponse_jobConfig = Lens.lens (\StartVectorEnrichmentJobResponse' {jobConfig} -> jobConfig) (\s@StartVectorEnrichmentJobResponse' {} a -> s {jobConfig = a} :: StartVectorEnrichmentJobResponse)
+
+-- | The name of the Vector Enrichment job.
+startVectorEnrichmentJobResponse_name :: Lens.Lens' StartVectorEnrichmentJobResponse Prelude.Text
+startVectorEnrichmentJobResponse_name = Lens.lens (\StartVectorEnrichmentJobResponse' {name} -> name) (\s@StartVectorEnrichmentJobResponse' {} a -> s {name = a} :: StartVectorEnrichmentJobResponse)
+
+-- | The status of the Vector Enrichment job being started.
+startVectorEnrichmentJobResponse_status :: Lens.Lens' StartVectorEnrichmentJobResponse VectorEnrichmentJobStatus
+startVectorEnrichmentJobResponse_status = Lens.lens (\StartVectorEnrichmentJobResponse' {status} -> status) (\s@StartVectorEnrichmentJobResponse' {} a -> s {status = a} :: StartVectorEnrichmentJobResponse)
+
+-- | The type of the Vector Enrichment job.
+startVectorEnrichmentJobResponse_type :: Lens.Lens' StartVectorEnrichmentJobResponse VectorEnrichmentJobType
+startVectorEnrichmentJobResponse_type = Lens.lens (\StartVectorEnrichmentJobResponse' {type'} -> type') (\s@StartVectorEnrichmentJobResponse' {} a -> s {type' = a} :: StartVectorEnrichmentJobResponse)
+
+instance
+  Prelude.NFData
+    StartVectorEnrichmentJobResponse
+  where
+  rnf StartVectorEnrichmentJobResponse' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf durationInSeconds
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf inputConfig
+      `Prelude.seq` Prelude.rnf jobConfig
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMakerGeoSpatial/StopEarthObservationJob.hs b/gen/Amazonka/SageMakerGeoSpatial/StopEarthObservationJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/StopEarthObservationJob.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.SageMakerGeoSpatial.StopEarthObservationJob
+-- 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 stop an existing earth observation job.
+module Amazonka.SageMakerGeoSpatial.StopEarthObservationJob
+  ( -- * Creating a Request
+    StopEarthObservationJob (..),
+    newStopEarthObservationJob,
+
+    -- * Request Lenses
+    stopEarthObservationJob_arn,
+
+    -- * Destructuring the Response
+    StopEarthObservationJobResponse (..),
+    newStopEarthObservationJobResponse,
+
+    -- * Response Lenses
+    stopEarthObservationJobResponse_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.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newStopEarthObservationJob' smart constructor.
+data StopEarthObservationJob = StopEarthObservationJob'
+  { -- | The Amazon Resource Name (ARN) of the Earth Observation job being
+    -- stopped.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopEarthObservationJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopEarthObservationJob_arn' - The Amazon Resource Name (ARN) of the Earth Observation job being
+-- stopped.
+newStopEarthObservationJob ::
+  -- | 'arn'
+  Prelude.Text ->
+  StopEarthObservationJob
+newStopEarthObservationJob pArn_ =
+  StopEarthObservationJob' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the Earth Observation job being
+-- stopped.
+stopEarthObservationJob_arn :: Lens.Lens' StopEarthObservationJob Prelude.Text
+stopEarthObservationJob_arn = Lens.lens (\StopEarthObservationJob' {arn} -> arn) (\s@StopEarthObservationJob' {} a -> s {arn = a} :: StopEarthObservationJob)
+
+instance Core.AWSRequest StopEarthObservationJob where
+  type
+    AWSResponse StopEarthObservationJob =
+      StopEarthObservationJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          StopEarthObservationJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopEarthObservationJob where
+  hashWithSalt _salt StopEarthObservationJob' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData StopEarthObservationJob where
+  rnf StopEarthObservationJob' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders StopEarthObservationJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopEarthObservationJob where
+  toJSON StopEarthObservationJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Arn" Data..= arn)]
+      )
+
+instance Data.ToPath StopEarthObservationJob where
+  toPath = Prelude.const "/earth-observation-jobs/stop"
+
+instance Data.ToQuery StopEarthObservationJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopEarthObservationJobResponse' smart constructor.
+data StopEarthObservationJobResponse = StopEarthObservationJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopEarthObservationJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopEarthObservationJobResponse_httpStatus' - The response's http status code.
+newStopEarthObservationJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopEarthObservationJobResponse
+newStopEarthObservationJobResponse pHttpStatus_ =
+  StopEarthObservationJobResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+stopEarthObservationJobResponse_httpStatus :: Lens.Lens' StopEarthObservationJobResponse Prelude.Int
+stopEarthObservationJobResponse_httpStatus = Lens.lens (\StopEarthObservationJobResponse' {httpStatus} -> httpStatus) (\s@StopEarthObservationJobResponse' {} a -> s {httpStatus = a} :: StopEarthObservationJobResponse)
+
+instance
+  Prelude.NFData
+    StopEarthObservationJobResponse
+  where
+  rnf StopEarthObservationJobResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMakerGeoSpatial/StopVectorEnrichmentJob.hs b/gen/Amazonka/SageMakerGeoSpatial/StopVectorEnrichmentJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/StopVectorEnrichmentJob.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.SageMakerGeoSpatial.StopVectorEnrichmentJob
+-- 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 the Vector Enrichment job for a given job ARN.
+module Amazonka.SageMakerGeoSpatial.StopVectorEnrichmentJob
+  ( -- * Creating a Request
+    StopVectorEnrichmentJob (..),
+    newStopVectorEnrichmentJob,
+
+    -- * Request Lenses
+    stopVectorEnrichmentJob_arn,
+
+    -- * Destructuring the Response
+    StopVectorEnrichmentJobResponse (..),
+    newStopVectorEnrichmentJobResponse,
+
+    -- * Response Lenses
+    stopVectorEnrichmentJobResponse_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.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newStopVectorEnrichmentJob' smart constructor.
+data StopVectorEnrichmentJob = StopVectorEnrichmentJob'
+  { -- | The Amazon Resource Name (ARN) of the Vector Enrichment job.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopVectorEnrichmentJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopVectorEnrichmentJob_arn' - The Amazon Resource Name (ARN) of the Vector Enrichment job.
+newStopVectorEnrichmentJob ::
+  -- | 'arn'
+  Prelude.Text ->
+  StopVectorEnrichmentJob
+newStopVectorEnrichmentJob pArn_ =
+  StopVectorEnrichmentJob' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the Vector Enrichment job.
+stopVectorEnrichmentJob_arn :: Lens.Lens' StopVectorEnrichmentJob Prelude.Text
+stopVectorEnrichmentJob_arn = Lens.lens (\StopVectorEnrichmentJob' {arn} -> arn) (\s@StopVectorEnrichmentJob' {} a -> s {arn = a} :: StopVectorEnrichmentJob)
+
+instance Core.AWSRequest StopVectorEnrichmentJob where
+  type
+    AWSResponse StopVectorEnrichmentJob =
+      StopVectorEnrichmentJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          StopVectorEnrichmentJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopVectorEnrichmentJob where
+  hashWithSalt _salt StopVectorEnrichmentJob' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData StopVectorEnrichmentJob where
+  rnf StopVectorEnrichmentJob' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders StopVectorEnrichmentJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopVectorEnrichmentJob where
+  toJSON StopVectorEnrichmentJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Arn" Data..= arn)]
+      )
+
+instance Data.ToPath StopVectorEnrichmentJob where
+  toPath = Prelude.const "/vector-enrichment-jobs/stop"
+
+instance Data.ToQuery StopVectorEnrichmentJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopVectorEnrichmentJobResponse' smart constructor.
+data StopVectorEnrichmentJobResponse = StopVectorEnrichmentJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopVectorEnrichmentJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopVectorEnrichmentJobResponse_httpStatus' - The response's http status code.
+newStopVectorEnrichmentJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopVectorEnrichmentJobResponse
+newStopVectorEnrichmentJobResponse pHttpStatus_ =
+  StopVectorEnrichmentJobResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+stopVectorEnrichmentJobResponse_httpStatus :: Lens.Lens' StopVectorEnrichmentJobResponse Prelude.Int
+stopVectorEnrichmentJobResponse_httpStatus = Lens.lens (\StopVectorEnrichmentJobResponse' {httpStatus} -> httpStatus) (\s@StopVectorEnrichmentJobResponse' {} a -> s {httpStatus = a} :: StopVectorEnrichmentJobResponse)
+
+instance
+  Prelude.NFData
+    StopVectorEnrichmentJobResponse
+  where
+  rnf StopVectorEnrichmentJobResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMakerGeoSpatial/TagResource.hs b/gen/Amazonka/SageMakerGeoSpatial/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/TagResource.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.SageMakerGeoSpatial.TagResource
+-- 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 you want to tag.
+module Amazonka.SageMakerGeoSpatial.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_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.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource you want to tag.
+    resourceArn :: Prelude.Text,
+    -- | Each tag consists of a key and a value.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource you want to tag.
+--
+-- 'tags', 'tagResource_tags' - Each tag consists of a key and a value.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource you want to tag.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | Each tag consists of a key and a value.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types.hs b/gen/Amazonka/SageMakerGeoSpatial/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types.hs
@@ -0,0 +1,711 @@
+{-# 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.SageMakerGeoSpatial.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.SageMakerGeoSpatial.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * AlgorithmNameCloudRemoval
+    AlgorithmNameCloudRemoval (..),
+
+    -- * AlgorithmNameGeoMosaic
+    AlgorithmNameGeoMosaic (..),
+
+    -- * AlgorithmNameResampling
+    AlgorithmNameResampling (..),
+
+    -- * ComparisonOperator
+    ComparisonOperator (..),
+
+    -- * DataCollectionType
+    DataCollectionType (..),
+
+    -- * EarthObservationJobErrorType
+    EarthObservationJobErrorType (..),
+
+    -- * EarthObservationJobExportStatus
+    EarthObservationJobExportStatus (..),
+
+    -- * EarthObservationJobStatus
+    EarthObservationJobStatus (..),
+
+    -- * ExportErrorType
+    ExportErrorType (..),
+
+    -- * GroupBy
+    GroupBy (..),
+
+    -- * LogicalOperator
+    LogicalOperator (..),
+
+    -- * MetadataProvider
+    MetadataProvider (..),
+
+    -- * OutputType
+    OutputType (..),
+
+    -- * PredefinedResolution
+    PredefinedResolution (..),
+
+    -- * SortOrder
+    SortOrder (..),
+
+    -- * TargetOptions
+    TargetOptions (..),
+
+    -- * TemporalStatistics
+    TemporalStatistics (..),
+
+    -- * Unit
+    Unit (..),
+
+    -- * VectorEnrichmentJobDocumentType
+    VectorEnrichmentJobDocumentType (..),
+
+    -- * VectorEnrichmentJobErrorType
+    VectorEnrichmentJobErrorType (..),
+
+    -- * VectorEnrichmentJobExportErrorType
+    VectorEnrichmentJobExportErrorType (..),
+
+    -- * VectorEnrichmentJobExportStatus
+    VectorEnrichmentJobExportStatus (..),
+
+    -- * VectorEnrichmentJobStatus
+    VectorEnrichmentJobStatus (..),
+
+    -- * VectorEnrichmentJobType
+    VectorEnrichmentJobType (..),
+
+    -- * ZonalStatistics
+    ZonalStatistics (..),
+
+    -- * AreaOfInterest
+    AreaOfInterest (..),
+    newAreaOfInterest,
+    areaOfInterest_areaOfInterestGeometry,
+
+    -- * AreaOfInterestGeometry
+    AreaOfInterestGeometry (..),
+    newAreaOfInterestGeometry,
+    areaOfInterestGeometry_multiPolygonGeometry,
+    areaOfInterestGeometry_polygonGeometry,
+
+    -- * AssetValue
+    AssetValue (..),
+    newAssetValue,
+    assetValue_href,
+
+    -- * BandMathConfigInput
+    BandMathConfigInput (..),
+    newBandMathConfigInput,
+    bandMathConfigInput_customIndices,
+    bandMathConfigInput_predefinedIndices,
+
+    -- * CloudMaskingConfigInput
+    CloudMaskingConfigInput (..),
+    newCloudMaskingConfigInput,
+
+    -- * CloudRemovalConfigInput
+    CloudRemovalConfigInput (..),
+    newCloudRemovalConfigInput,
+    cloudRemovalConfigInput_algorithmName,
+    cloudRemovalConfigInput_interpolationValue,
+    cloudRemovalConfigInput_targetBands,
+
+    -- * CustomIndicesInput
+    CustomIndicesInput (..),
+    newCustomIndicesInput,
+    customIndicesInput_operations,
+
+    -- * EarthObservationJobErrorDetails
+    EarthObservationJobErrorDetails (..),
+    newEarthObservationJobErrorDetails,
+    earthObservationJobErrorDetails_message,
+    earthObservationJobErrorDetails_type,
+
+    -- * EoCloudCoverInput
+    EoCloudCoverInput (..),
+    newEoCloudCoverInput,
+    eoCloudCoverInput_lowerBound,
+    eoCloudCoverInput_upperBound,
+
+    -- * EojDataSourceConfigInput
+    EojDataSourceConfigInput (..),
+    newEojDataSourceConfigInput,
+    eojDataSourceConfigInput_s3Data,
+
+    -- * ExportErrorDetails
+    ExportErrorDetails (..),
+    newExportErrorDetails,
+    exportErrorDetails_exportResults,
+    exportErrorDetails_exportSourceImages,
+
+    -- * ExportErrorDetailsOutput
+    ExportErrorDetailsOutput (..),
+    newExportErrorDetailsOutput,
+    exportErrorDetailsOutput_message,
+    exportErrorDetailsOutput_type,
+
+    -- * ExportS3DataInput
+    ExportS3DataInput (..),
+    newExportS3DataInput,
+    exportS3DataInput_kmsKeyId,
+    exportS3DataInput_s3Uri,
+
+    -- * ExportVectorEnrichmentJobOutputConfig
+    ExportVectorEnrichmentJobOutputConfig (..),
+    newExportVectorEnrichmentJobOutputConfig,
+    exportVectorEnrichmentJobOutputConfig_s3Data,
+
+    -- * Filter
+    Filter (..),
+    newFilter,
+    filter_maximum,
+    filter_minimum,
+    filter_name,
+    filter_type,
+
+    -- * GeoMosaicConfigInput
+    GeoMosaicConfigInput (..),
+    newGeoMosaicConfigInput,
+    geoMosaicConfigInput_algorithmName,
+    geoMosaicConfigInput_targetBands,
+
+    -- * Geometry
+    Geometry (..),
+    newGeometry,
+    geometry_coordinates,
+    geometry_type,
+
+    -- * InputConfigInput
+    InputConfigInput (..),
+    newInputConfigInput,
+    inputConfigInput_dataSourceConfig,
+    inputConfigInput_previousEarthObservationJobArn,
+    inputConfigInput_rasterDataCollectionQuery,
+
+    -- * InputConfigOutput
+    InputConfigOutput (..),
+    newInputConfigOutput,
+    inputConfigOutput_dataSourceConfig,
+    inputConfigOutput_previousEarthObservationJobArn,
+    inputConfigOutput_rasterDataCollectionQuery,
+
+    -- * ItemSource
+    ItemSource (..),
+    newItemSource,
+    itemSource_assets,
+    itemSource_properties,
+    itemSource_dateTime,
+    itemSource_geometry,
+    itemSource_id,
+
+    -- * JobConfigInput
+    JobConfigInput (..),
+    newJobConfigInput,
+    jobConfigInput_bandMathConfig,
+    jobConfigInput_cloudMaskingConfig,
+    jobConfigInput_cloudRemovalConfig,
+    jobConfigInput_geoMosaicConfig,
+    jobConfigInput_landCoverSegmentationConfig,
+    jobConfigInput_resamplingConfig,
+    jobConfigInput_stackConfig,
+    jobConfigInput_temporalStatisticsConfig,
+    jobConfigInput_zonalStatisticsConfig,
+
+    -- * LandCoverSegmentationConfigInput
+    LandCoverSegmentationConfigInput (..),
+    newLandCoverSegmentationConfigInput,
+
+    -- * LandsatCloudCoverLandInput
+    LandsatCloudCoverLandInput (..),
+    newLandsatCloudCoverLandInput,
+    landsatCloudCoverLandInput_lowerBound,
+    landsatCloudCoverLandInput_upperBound,
+
+    -- * ListEarthObservationJobOutputConfig
+    ListEarthObservationJobOutputConfig (..),
+    newListEarthObservationJobOutputConfig,
+    listEarthObservationJobOutputConfig_tags,
+    listEarthObservationJobOutputConfig_arn,
+    listEarthObservationJobOutputConfig_creationTime,
+    listEarthObservationJobOutputConfig_durationInSeconds,
+    listEarthObservationJobOutputConfig_name,
+    listEarthObservationJobOutputConfig_operationType,
+    listEarthObservationJobOutputConfig_status,
+
+    -- * ListVectorEnrichmentJobOutputConfig
+    ListVectorEnrichmentJobOutputConfig (..),
+    newListVectorEnrichmentJobOutputConfig,
+    listVectorEnrichmentJobOutputConfig_tags,
+    listVectorEnrichmentJobOutputConfig_arn,
+    listVectorEnrichmentJobOutputConfig_creationTime,
+    listVectorEnrichmentJobOutputConfig_durationInSeconds,
+    listVectorEnrichmentJobOutputConfig_name,
+    listVectorEnrichmentJobOutputConfig_status,
+    listVectorEnrichmentJobOutputConfig_type,
+
+    -- * MapMatchingConfig
+    MapMatchingConfig (..),
+    newMapMatchingConfig,
+    mapMatchingConfig_idAttributeName,
+    mapMatchingConfig_timestampAttributeName,
+    mapMatchingConfig_xAttributeName,
+    mapMatchingConfig_yAttributeName,
+
+    -- * MultiPolygonGeometryInput
+    MultiPolygonGeometryInput (..),
+    newMultiPolygonGeometryInput,
+    multiPolygonGeometryInput_coordinates,
+
+    -- * Operation
+    Operation (..),
+    newOperation,
+    operation_outputType,
+    operation_equation,
+    operation_name,
+
+    -- * OutputBand
+    OutputBand (..),
+    newOutputBand,
+    outputBand_bandName,
+    outputBand_outputDataType,
+
+    -- * OutputConfigInput
+    OutputConfigInput (..),
+    newOutputConfigInput,
+    outputConfigInput_s3Data,
+
+    -- * OutputResolutionResamplingInput
+    OutputResolutionResamplingInput (..),
+    newOutputResolutionResamplingInput,
+    outputResolutionResamplingInput_userDefined,
+
+    -- * OutputResolutionStackInput
+    OutputResolutionStackInput (..),
+    newOutputResolutionStackInput,
+    outputResolutionStackInput_predefined,
+    outputResolutionStackInput_userDefined,
+
+    -- * PlatformInput
+    PlatformInput (..),
+    newPlatformInput,
+    platformInput_comparisonOperator,
+    platformInput_value,
+
+    -- * PolygonGeometryInput
+    PolygonGeometryInput (..),
+    newPolygonGeometryInput,
+    polygonGeometryInput_coordinates,
+
+    -- * Properties
+    Properties (..),
+    newProperties,
+    properties_eoCloudCover,
+    properties_landsatCloudCoverLand,
+    properties_platform,
+    properties_viewOffNadir,
+    properties_viewSunAzimuth,
+    properties_viewSunElevation,
+
+    -- * Property
+    Property (..),
+    newProperty,
+    property_eoCloudCover,
+    property_landsatCloudCoverLand,
+    property_platform,
+    property_viewOffNadir,
+    property_viewSunAzimuth,
+    property_viewSunElevation,
+
+    -- * PropertyFilter
+    PropertyFilter (..),
+    newPropertyFilter,
+    propertyFilter_property,
+
+    -- * PropertyFilters
+    PropertyFilters (..),
+    newPropertyFilters,
+    propertyFilters_logicalOperator,
+    propertyFilters_properties,
+
+    -- * RasterDataCollectionMetadata
+    RasterDataCollectionMetadata (..),
+    newRasterDataCollectionMetadata,
+    rasterDataCollectionMetadata_descriptionPageUrl,
+    rasterDataCollectionMetadata_tags,
+    rasterDataCollectionMetadata_arn,
+    rasterDataCollectionMetadata_description,
+    rasterDataCollectionMetadata_name,
+    rasterDataCollectionMetadata_supportedFilters,
+    rasterDataCollectionMetadata_type,
+
+    -- * RasterDataCollectionQueryInput
+    RasterDataCollectionQueryInput (..),
+    newRasterDataCollectionQueryInput,
+    rasterDataCollectionQueryInput_areaOfInterest,
+    rasterDataCollectionQueryInput_propertyFilters,
+    rasterDataCollectionQueryInput_rasterDataCollectionArn,
+    rasterDataCollectionQueryInput_timeRangeFilter,
+
+    -- * RasterDataCollectionQueryOutput
+    RasterDataCollectionQueryOutput (..),
+    newRasterDataCollectionQueryOutput,
+    rasterDataCollectionQueryOutput_areaOfInterest,
+    rasterDataCollectionQueryOutput_propertyFilters,
+    rasterDataCollectionQueryOutput_rasterDataCollectionArn,
+    rasterDataCollectionQueryOutput_rasterDataCollectionName,
+    rasterDataCollectionQueryOutput_timeRangeFilter,
+
+    -- * RasterDataCollectionQueryWithBandFilterInput
+    RasterDataCollectionQueryWithBandFilterInput (..),
+    newRasterDataCollectionQueryWithBandFilterInput,
+    rasterDataCollectionQueryWithBandFilterInput_areaOfInterest,
+    rasterDataCollectionQueryWithBandFilterInput_bandFilter,
+    rasterDataCollectionQueryWithBandFilterInput_propertyFilters,
+    rasterDataCollectionQueryWithBandFilterInput_timeRangeFilter,
+
+    -- * ResamplingConfigInput
+    ResamplingConfigInput (..),
+    newResamplingConfigInput,
+    resamplingConfigInput_algorithmName,
+    resamplingConfigInput_targetBands,
+    resamplingConfigInput_outputResolution,
+
+    -- * ReverseGeocodingConfig
+    ReverseGeocodingConfig (..),
+    newReverseGeocodingConfig,
+    reverseGeocodingConfig_xAttributeName,
+    reverseGeocodingConfig_yAttributeName,
+
+    -- * S3DataInput
+    S3DataInput (..),
+    newS3DataInput,
+    s3DataInput_kmsKeyId,
+    s3DataInput_metadataProvider,
+    s3DataInput_s3Uri,
+
+    -- * StackConfigInput
+    StackConfigInput (..),
+    newStackConfigInput,
+    stackConfigInput_outputResolution,
+    stackConfigInput_targetBands,
+
+    -- * TemporalStatisticsConfigInput
+    TemporalStatisticsConfigInput (..),
+    newTemporalStatisticsConfigInput,
+    temporalStatisticsConfigInput_groupBy,
+    temporalStatisticsConfigInput_targetBands,
+    temporalStatisticsConfigInput_statistics,
+
+    -- * TimeRangeFilterInput
+    TimeRangeFilterInput (..),
+    newTimeRangeFilterInput,
+    timeRangeFilterInput_endTime,
+    timeRangeFilterInput_startTime,
+
+    -- * UserDefined
+    UserDefined (..),
+    newUserDefined,
+    userDefined_unit,
+    userDefined_value,
+
+    -- * VectorEnrichmentJobConfig
+    VectorEnrichmentJobConfig (..),
+    newVectorEnrichmentJobConfig,
+    vectorEnrichmentJobConfig_mapMatchingConfig,
+    vectorEnrichmentJobConfig_reverseGeocodingConfig,
+
+    -- * VectorEnrichmentJobDataSourceConfigInput
+    VectorEnrichmentJobDataSourceConfigInput (..),
+    newVectorEnrichmentJobDataSourceConfigInput,
+    vectorEnrichmentJobDataSourceConfigInput_s3Data,
+
+    -- * VectorEnrichmentJobErrorDetails
+    VectorEnrichmentJobErrorDetails (..),
+    newVectorEnrichmentJobErrorDetails,
+    vectorEnrichmentJobErrorDetails_errorMessage,
+    vectorEnrichmentJobErrorDetails_errorType,
+
+    -- * VectorEnrichmentJobExportErrorDetails
+    VectorEnrichmentJobExportErrorDetails (..),
+    newVectorEnrichmentJobExportErrorDetails,
+    vectorEnrichmentJobExportErrorDetails_message,
+    vectorEnrichmentJobExportErrorDetails_type,
+
+    -- * VectorEnrichmentJobInputConfig
+    VectorEnrichmentJobInputConfig (..),
+    newVectorEnrichmentJobInputConfig,
+    vectorEnrichmentJobInputConfig_dataSourceConfig,
+    vectorEnrichmentJobInputConfig_documentType,
+
+    -- * VectorEnrichmentJobS3Data
+    VectorEnrichmentJobS3Data (..),
+    newVectorEnrichmentJobS3Data,
+    vectorEnrichmentJobS3Data_kmsKeyId,
+    vectorEnrichmentJobS3Data_s3Uri,
+
+    -- * ViewOffNadirInput
+    ViewOffNadirInput (..),
+    newViewOffNadirInput,
+    viewOffNadirInput_lowerBound,
+    viewOffNadirInput_upperBound,
+
+    -- * ViewSunAzimuthInput
+    ViewSunAzimuthInput (..),
+    newViewSunAzimuthInput,
+    viewSunAzimuthInput_lowerBound,
+    viewSunAzimuthInput_upperBound,
+
+    -- * ViewSunElevationInput
+    ViewSunElevationInput (..),
+    newViewSunElevationInput,
+    viewSunElevationInput_lowerBound,
+    viewSunElevationInput_upperBound,
+
+    -- * ZonalStatisticsConfigInput
+    ZonalStatisticsConfigInput (..),
+    newZonalStatisticsConfigInput,
+    zonalStatisticsConfigInput_targetBands,
+    zonalStatisticsConfigInput_statistics,
+    zonalStatisticsConfigInput_zoneS3Path,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameCloudRemoval
+import Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameGeoMosaic
+import Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameResampling
+import Amazonka.SageMakerGeoSpatial.Types.AreaOfInterest
+import Amazonka.SageMakerGeoSpatial.Types.AreaOfInterestGeometry
+import Amazonka.SageMakerGeoSpatial.Types.AssetValue
+import Amazonka.SageMakerGeoSpatial.Types.BandMathConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.CloudMaskingConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.CloudRemovalConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.ComparisonOperator
+import Amazonka.SageMakerGeoSpatial.Types.CustomIndicesInput
+import Amazonka.SageMakerGeoSpatial.Types.DataCollectionType
+import Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobErrorDetails
+import Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobErrorType
+import Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobExportStatus
+import Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobStatus
+import Amazonka.SageMakerGeoSpatial.Types.EoCloudCoverInput
+import Amazonka.SageMakerGeoSpatial.Types.EojDataSourceConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.ExportErrorDetails
+import Amazonka.SageMakerGeoSpatial.Types.ExportErrorDetailsOutput
+import Amazonka.SageMakerGeoSpatial.Types.ExportErrorType
+import Amazonka.SageMakerGeoSpatial.Types.ExportS3DataInput
+import Amazonka.SageMakerGeoSpatial.Types.ExportVectorEnrichmentJobOutputConfig
+import Amazonka.SageMakerGeoSpatial.Types.Filter
+import Amazonka.SageMakerGeoSpatial.Types.GeoMosaicConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.Geometry
+import Amazonka.SageMakerGeoSpatial.Types.GroupBy
+import Amazonka.SageMakerGeoSpatial.Types.InputConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.InputConfigOutput
+import Amazonka.SageMakerGeoSpatial.Types.ItemSource
+import Amazonka.SageMakerGeoSpatial.Types.JobConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.LandCoverSegmentationConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.LandsatCloudCoverLandInput
+import Amazonka.SageMakerGeoSpatial.Types.ListEarthObservationJobOutputConfig
+import Amazonka.SageMakerGeoSpatial.Types.ListVectorEnrichmentJobOutputConfig
+import Amazonka.SageMakerGeoSpatial.Types.LogicalOperator
+import Amazonka.SageMakerGeoSpatial.Types.MapMatchingConfig
+import Amazonka.SageMakerGeoSpatial.Types.MetadataProvider
+import Amazonka.SageMakerGeoSpatial.Types.MultiPolygonGeometryInput
+import Amazonka.SageMakerGeoSpatial.Types.Operation
+import Amazonka.SageMakerGeoSpatial.Types.OutputBand
+import Amazonka.SageMakerGeoSpatial.Types.OutputConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.OutputResolutionResamplingInput
+import Amazonka.SageMakerGeoSpatial.Types.OutputResolutionStackInput
+import Amazonka.SageMakerGeoSpatial.Types.OutputType
+import Amazonka.SageMakerGeoSpatial.Types.PlatformInput
+import Amazonka.SageMakerGeoSpatial.Types.PolygonGeometryInput
+import Amazonka.SageMakerGeoSpatial.Types.PredefinedResolution
+import Amazonka.SageMakerGeoSpatial.Types.Properties
+import Amazonka.SageMakerGeoSpatial.Types.Property
+import Amazonka.SageMakerGeoSpatial.Types.PropertyFilter
+import Amazonka.SageMakerGeoSpatial.Types.PropertyFilters
+import Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionMetadata
+import Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryInput
+import Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryOutput
+import Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryWithBandFilterInput
+import Amazonka.SageMakerGeoSpatial.Types.ResamplingConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.ReverseGeocodingConfig
+import Amazonka.SageMakerGeoSpatial.Types.S3DataInput
+import Amazonka.SageMakerGeoSpatial.Types.SortOrder
+import Amazonka.SageMakerGeoSpatial.Types.StackConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.TargetOptions
+import Amazonka.SageMakerGeoSpatial.Types.TemporalStatistics
+import Amazonka.SageMakerGeoSpatial.Types.TemporalStatisticsConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.TimeRangeFilterInput
+import Amazonka.SageMakerGeoSpatial.Types.Unit
+import Amazonka.SageMakerGeoSpatial.Types.UserDefined
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobConfig
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobDataSourceConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobDocumentType
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobErrorDetails
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobErrorType
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportErrorDetails
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportErrorType
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportStatus
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobInputConfig
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobS3Data
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobStatus
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobType
+import Amazonka.SageMakerGeoSpatial.Types.ViewOffNadirInput
+import Amazonka.SageMakerGeoSpatial.Types.ViewSunAzimuthInput
+import Amazonka.SageMakerGeoSpatial.Types.ViewSunElevationInput
+import Amazonka.SageMakerGeoSpatial.Types.ZonalStatistics
+import Amazonka.SageMakerGeoSpatial.Types.ZonalStatisticsConfigInput
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2020-05-27@ of the Amazon SageMaker geospatial capabilities SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "SageMakerGeoSpatial",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "sagemaker-geospatial",
+      Core.signingName = "sagemaker-geospatial",
+      Core.version = "2020-05-27",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error =
+        Core.parseJSONError "SageMakerGeoSpatial",
+      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
+
+-- | You do not have sufficient access to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | The request processing has failed because of an unknown error,
+-- exception, or failure.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | You have exceeded the service quota.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | The request was denied due to request throttling.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | The input fails to satisfy the constraints specified by an Amazon Web
+-- Services service.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/AlgorithmNameCloudRemoval.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/AlgorithmNameCloudRemoval.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/AlgorithmNameCloudRemoval.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.SageMakerGeoSpatial.Types.AlgorithmNameCloudRemoval
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameCloudRemoval
+  ( AlgorithmNameCloudRemoval
+      ( ..,
+        AlgorithmNameCloudRemoval_INTERPOLATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AlgorithmNameCloudRemoval = AlgorithmNameCloudRemoval'
+  { fromAlgorithmNameCloudRemoval ::
+      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 AlgorithmNameCloudRemoval_INTERPOLATION :: AlgorithmNameCloudRemoval
+pattern AlgorithmNameCloudRemoval_INTERPOLATION = AlgorithmNameCloudRemoval' "INTERPOLATION"
+
+{-# COMPLETE
+  AlgorithmNameCloudRemoval_INTERPOLATION,
+  AlgorithmNameCloudRemoval'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/AlgorithmNameGeoMosaic.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/AlgorithmNameGeoMosaic.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/AlgorithmNameGeoMosaic.hs
@@ -0,0 +1,131 @@
+{-# 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.SageMakerGeoSpatial.Types.AlgorithmNameGeoMosaic
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameGeoMosaic
+  ( AlgorithmNameGeoMosaic
+      ( ..,
+        AlgorithmNameGeoMosaic_AVERAGE,
+        AlgorithmNameGeoMosaic_BILINEAR,
+        AlgorithmNameGeoMosaic_CUBIC,
+        AlgorithmNameGeoMosaic_CUBICSPLINE,
+        AlgorithmNameGeoMosaic_LANCZOS,
+        AlgorithmNameGeoMosaic_MAX,
+        AlgorithmNameGeoMosaic_MED,
+        AlgorithmNameGeoMosaic_MIN,
+        AlgorithmNameGeoMosaic_MODE,
+        AlgorithmNameGeoMosaic_NEAR,
+        AlgorithmNameGeoMosaic_Q1,
+        AlgorithmNameGeoMosaic_Q3,
+        AlgorithmNameGeoMosaic_RMS,
+        AlgorithmNameGeoMosaic_SUM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AlgorithmNameGeoMosaic = AlgorithmNameGeoMosaic'
+  { fromAlgorithmNameGeoMosaic ::
+      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 AlgorithmNameGeoMosaic_AVERAGE :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_AVERAGE = AlgorithmNameGeoMosaic' "AVERAGE"
+
+pattern AlgorithmNameGeoMosaic_BILINEAR :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_BILINEAR = AlgorithmNameGeoMosaic' "BILINEAR"
+
+pattern AlgorithmNameGeoMosaic_CUBIC :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_CUBIC = AlgorithmNameGeoMosaic' "CUBIC"
+
+pattern AlgorithmNameGeoMosaic_CUBICSPLINE :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_CUBICSPLINE = AlgorithmNameGeoMosaic' "CUBICSPLINE"
+
+pattern AlgorithmNameGeoMosaic_LANCZOS :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_LANCZOS = AlgorithmNameGeoMosaic' "LANCZOS"
+
+pattern AlgorithmNameGeoMosaic_MAX :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_MAX = AlgorithmNameGeoMosaic' "MAX"
+
+pattern AlgorithmNameGeoMosaic_MED :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_MED = AlgorithmNameGeoMosaic' "MED"
+
+pattern AlgorithmNameGeoMosaic_MIN :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_MIN = AlgorithmNameGeoMosaic' "MIN"
+
+pattern AlgorithmNameGeoMosaic_MODE :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_MODE = AlgorithmNameGeoMosaic' "MODE"
+
+pattern AlgorithmNameGeoMosaic_NEAR :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_NEAR = AlgorithmNameGeoMosaic' "NEAR"
+
+pattern AlgorithmNameGeoMosaic_Q1 :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_Q1 = AlgorithmNameGeoMosaic' "Q1"
+
+pattern AlgorithmNameGeoMosaic_Q3 :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_Q3 = AlgorithmNameGeoMosaic' "Q3"
+
+pattern AlgorithmNameGeoMosaic_RMS :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_RMS = AlgorithmNameGeoMosaic' "RMS"
+
+pattern AlgorithmNameGeoMosaic_SUM :: AlgorithmNameGeoMosaic
+pattern AlgorithmNameGeoMosaic_SUM = AlgorithmNameGeoMosaic' "SUM"
+
+{-# COMPLETE
+  AlgorithmNameGeoMosaic_AVERAGE,
+  AlgorithmNameGeoMosaic_BILINEAR,
+  AlgorithmNameGeoMosaic_CUBIC,
+  AlgorithmNameGeoMosaic_CUBICSPLINE,
+  AlgorithmNameGeoMosaic_LANCZOS,
+  AlgorithmNameGeoMosaic_MAX,
+  AlgorithmNameGeoMosaic_MED,
+  AlgorithmNameGeoMosaic_MIN,
+  AlgorithmNameGeoMosaic_MODE,
+  AlgorithmNameGeoMosaic_NEAR,
+  AlgorithmNameGeoMosaic_Q1,
+  AlgorithmNameGeoMosaic_Q3,
+  AlgorithmNameGeoMosaic_RMS,
+  AlgorithmNameGeoMosaic_SUM,
+  AlgorithmNameGeoMosaic'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/AlgorithmNameResampling.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/AlgorithmNameResampling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/AlgorithmNameResampling.hs
@@ -0,0 +1,131 @@
+{-# 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.SageMakerGeoSpatial.Types.AlgorithmNameResampling
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameResampling
+  ( AlgorithmNameResampling
+      ( ..,
+        AlgorithmNameResampling_AVERAGE,
+        AlgorithmNameResampling_BILINEAR,
+        AlgorithmNameResampling_CUBIC,
+        AlgorithmNameResampling_CUBICSPLINE,
+        AlgorithmNameResampling_LANCZOS,
+        AlgorithmNameResampling_MAX,
+        AlgorithmNameResampling_MED,
+        AlgorithmNameResampling_MIN,
+        AlgorithmNameResampling_MODE,
+        AlgorithmNameResampling_NEAR,
+        AlgorithmNameResampling_Q1,
+        AlgorithmNameResampling_Q3,
+        AlgorithmNameResampling_RMS,
+        AlgorithmNameResampling_SUM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AlgorithmNameResampling = AlgorithmNameResampling'
+  { fromAlgorithmNameResampling ::
+      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 AlgorithmNameResampling_AVERAGE :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_AVERAGE = AlgorithmNameResampling' "AVERAGE"
+
+pattern AlgorithmNameResampling_BILINEAR :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_BILINEAR = AlgorithmNameResampling' "BILINEAR"
+
+pattern AlgorithmNameResampling_CUBIC :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_CUBIC = AlgorithmNameResampling' "CUBIC"
+
+pattern AlgorithmNameResampling_CUBICSPLINE :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_CUBICSPLINE = AlgorithmNameResampling' "CUBICSPLINE"
+
+pattern AlgorithmNameResampling_LANCZOS :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_LANCZOS = AlgorithmNameResampling' "LANCZOS"
+
+pattern AlgorithmNameResampling_MAX :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_MAX = AlgorithmNameResampling' "MAX"
+
+pattern AlgorithmNameResampling_MED :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_MED = AlgorithmNameResampling' "MED"
+
+pattern AlgorithmNameResampling_MIN :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_MIN = AlgorithmNameResampling' "MIN"
+
+pattern AlgorithmNameResampling_MODE :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_MODE = AlgorithmNameResampling' "MODE"
+
+pattern AlgorithmNameResampling_NEAR :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_NEAR = AlgorithmNameResampling' "NEAR"
+
+pattern AlgorithmNameResampling_Q1 :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_Q1 = AlgorithmNameResampling' "Q1"
+
+pattern AlgorithmNameResampling_Q3 :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_Q3 = AlgorithmNameResampling' "Q3"
+
+pattern AlgorithmNameResampling_RMS :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_RMS = AlgorithmNameResampling' "RMS"
+
+pattern AlgorithmNameResampling_SUM :: AlgorithmNameResampling
+pattern AlgorithmNameResampling_SUM = AlgorithmNameResampling' "SUM"
+
+{-# COMPLETE
+  AlgorithmNameResampling_AVERAGE,
+  AlgorithmNameResampling_BILINEAR,
+  AlgorithmNameResampling_CUBIC,
+  AlgorithmNameResampling_CUBICSPLINE,
+  AlgorithmNameResampling_LANCZOS,
+  AlgorithmNameResampling_MAX,
+  AlgorithmNameResampling_MED,
+  AlgorithmNameResampling_MIN,
+  AlgorithmNameResampling_MODE,
+  AlgorithmNameResampling_NEAR,
+  AlgorithmNameResampling_Q1,
+  AlgorithmNameResampling_Q3,
+  AlgorithmNameResampling_RMS,
+  AlgorithmNameResampling_SUM,
+  AlgorithmNameResampling'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/AreaOfInterest.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/AreaOfInterest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/AreaOfInterest.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.SageMakerGeoSpatial.Types.AreaOfInterest
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.AreaOfInterest where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.AreaOfInterestGeometry
+
+-- |
+--
+-- /See:/ 'newAreaOfInterest' smart constructor.
+data AreaOfInterest = AreaOfInterest'
+  { areaOfInterestGeometry :: Prelude.Maybe AreaOfInterestGeometry
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AreaOfInterest' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'areaOfInterestGeometry', 'areaOfInterest_areaOfInterestGeometry' -
+newAreaOfInterest ::
+  AreaOfInterest
+newAreaOfInterest =
+  AreaOfInterest'
+    { areaOfInterestGeometry =
+        Prelude.Nothing
+    }
+
+areaOfInterest_areaOfInterestGeometry :: Lens.Lens' AreaOfInterest (Prelude.Maybe AreaOfInterestGeometry)
+areaOfInterest_areaOfInterestGeometry = Lens.lens (\AreaOfInterest' {areaOfInterestGeometry} -> areaOfInterestGeometry) (\s@AreaOfInterest' {} a -> s {areaOfInterestGeometry = a} :: AreaOfInterest)
+
+instance Data.FromJSON AreaOfInterest where
+  parseJSON =
+    Data.withObject
+      "AreaOfInterest"
+      ( \x ->
+          AreaOfInterest'
+            Prelude.<$> (x Data..:? "AreaOfInterestGeometry")
+      )
+
+instance Prelude.Hashable AreaOfInterest where
+  hashWithSalt _salt AreaOfInterest' {..} =
+    _salt `Prelude.hashWithSalt` areaOfInterestGeometry
+
+instance Prelude.NFData AreaOfInterest where
+  rnf AreaOfInterest' {..} =
+    Prelude.rnf areaOfInterestGeometry
+
+instance Data.ToJSON AreaOfInterest where
+  toJSON AreaOfInterest' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AreaOfInterestGeometry" Data..=)
+              Prelude.<$> areaOfInterestGeometry
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/AreaOfInterestGeometry.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/AreaOfInterestGeometry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/AreaOfInterestGeometry.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.SageMakerGeoSpatial.Types.AreaOfInterestGeometry
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.AreaOfInterestGeometry where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.MultiPolygonGeometryInput
+import Amazonka.SageMakerGeoSpatial.Types.PolygonGeometryInput
+
+-- |
+--
+-- /See:/ 'newAreaOfInterestGeometry' smart constructor.
+data AreaOfInterestGeometry = AreaOfInterestGeometry'
+  { multiPolygonGeometry :: Prelude.Maybe MultiPolygonGeometryInput,
+    polygonGeometry :: Prelude.Maybe PolygonGeometryInput
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AreaOfInterestGeometry' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'multiPolygonGeometry', 'areaOfInterestGeometry_multiPolygonGeometry' -
+--
+-- 'polygonGeometry', 'areaOfInterestGeometry_polygonGeometry' -
+newAreaOfInterestGeometry ::
+  AreaOfInterestGeometry
+newAreaOfInterestGeometry =
+  AreaOfInterestGeometry'
+    { multiPolygonGeometry =
+        Prelude.Nothing,
+      polygonGeometry = Prelude.Nothing
+    }
+
+areaOfInterestGeometry_multiPolygonGeometry :: Lens.Lens' AreaOfInterestGeometry (Prelude.Maybe MultiPolygonGeometryInput)
+areaOfInterestGeometry_multiPolygonGeometry = Lens.lens (\AreaOfInterestGeometry' {multiPolygonGeometry} -> multiPolygonGeometry) (\s@AreaOfInterestGeometry' {} a -> s {multiPolygonGeometry = a} :: AreaOfInterestGeometry)
+
+areaOfInterestGeometry_polygonGeometry :: Lens.Lens' AreaOfInterestGeometry (Prelude.Maybe PolygonGeometryInput)
+areaOfInterestGeometry_polygonGeometry = Lens.lens (\AreaOfInterestGeometry' {polygonGeometry} -> polygonGeometry) (\s@AreaOfInterestGeometry' {} a -> s {polygonGeometry = a} :: AreaOfInterestGeometry)
+
+instance Data.FromJSON AreaOfInterestGeometry where
+  parseJSON =
+    Data.withObject
+      "AreaOfInterestGeometry"
+      ( \x ->
+          AreaOfInterestGeometry'
+            Prelude.<$> (x Data..:? "MultiPolygonGeometry")
+            Prelude.<*> (x Data..:? "PolygonGeometry")
+      )
+
+instance Prelude.Hashable AreaOfInterestGeometry where
+  hashWithSalt _salt AreaOfInterestGeometry' {..} =
+    _salt
+      `Prelude.hashWithSalt` multiPolygonGeometry
+      `Prelude.hashWithSalt` polygonGeometry
+
+instance Prelude.NFData AreaOfInterestGeometry where
+  rnf AreaOfInterestGeometry' {..} =
+    Prelude.rnf multiPolygonGeometry
+      `Prelude.seq` Prelude.rnf polygonGeometry
+
+instance Data.ToJSON AreaOfInterestGeometry where
+  toJSON AreaOfInterestGeometry' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MultiPolygonGeometry" Data..=)
+              Prelude.<$> multiPolygonGeometry,
+            ("PolygonGeometry" Data..=)
+              Prelude.<$> polygonGeometry
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/AssetValue.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/AssetValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/AssetValue.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMakerGeoSpatial.Types.AssetValue
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.AssetValue where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newAssetValue' smart constructor.
+data AssetValue = AssetValue'
+  { href :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssetValue' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'href', 'assetValue_href' -
+newAssetValue ::
+  AssetValue
+newAssetValue = AssetValue' {href = Prelude.Nothing}
+
+assetValue_href :: Lens.Lens' AssetValue (Prelude.Maybe Prelude.Text)
+assetValue_href = Lens.lens (\AssetValue' {href} -> href) (\s@AssetValue' {} a -> s {href = a} :: AssetValue)
+
+instance Data.FromJSON AssetValue where
+  parseJSON =
+    Data.withObject
+      "AssetValue"
+      (\x -> AssetValue' Prelude.<$> (x Data..:? "Href"))
+
+instance Prelude.Hashable AssetValue where
+  hashWithSalt _salt AssetValue' {..} =
+    _salt `Prelude.hashWithSalt` href
+
+instance Prelude.NFData AssetValue where
+  rnf AssetValue' {..} = Prelude.rnf href
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/BandMathConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/BandMathConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/BandMathConfigInput.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.SageMakerGeoSpatial.Types.BandMathConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.BandMathConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.CustomIndicesInput
+
+-- |
+--
+-- /See:/ 'newBandMathConfigInput' smart constructor.
+data BandMathConfigInput = BandMathConfigInput'
+  { customIndices :: Prelude.Maybe CustomIndicesInput,
+    predefinedIndices :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BandMathConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customIndices', 'bandMathConfigInput_customIndices' -
+--
+-- 'predefinedIndices', 'bandMathConfigInput_predefinedIndices' -
+newBandMathConfigInput ::
+  BandMathConfigInput
+newBandMathConfigInput =
+  BandMathConfigInput'
+    { customIndices =
+        Prelude.Nothing,
+      predefinedIndices = Prelude.Nothing
+    }
+
+bandMathConfigInput_customIndices :: Lens.Lens' BandMathConfigInput (Prelude.Maybe CustomIndicesInput)
+bandMathConfigInput_customIndices = Lens.lens (\BandMathConfigInput' {customIndices} -> customIndices) (\s@BandMathConfigInput' {} a -> s {customIndices = a} :: BandMathConfigInput)
+
+bandMathConfigInput_predefinedIndices :: Lens.Lens' BandMathConfigInput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+bandMathConfigInput_predefinedIndices = Lens.lens (\BandMathConfigInput' {predefinedIndices} -> predefinedIndices) (\s@BandMathConfigInput' {} a -> s {predefinedIndices = a} :: BandMathConfigInput) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON BandMathConfigInput where
+  parseJSON =
+    Data.withObject
+      "BandMathConfigInput"
+      ( \x ->
+          BandMathConfigInput'
+            Prelude.<$> (x Data..:? "CustomIndices")
+            Prelude.<*> (x Data..:? "PredefinedIndices")
+      )
+
+instance Prelude.Hashable BandMathConfigInput where
+  hashWithSalt _salt BandMathConfigInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` customIndices
+      `Prelude.hashWithSalt` predefinedIndices
+
+instance Prelude.NFData BandMathConfigInput where
+  rnf BandMathConfigInput' {..} =
+    Prelude.rnf customIndices
+      `Prelude.seq` Prelude.rnf predefinedIndices
+
+instance Data.ToJSON BandMathConfigInput where
+  toJSON BandMathConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CustomIndices" Data..=) Prelude.<$> customIndices,
+            ("PredefinedIndices" Data..=)
+              Prelude.<$> predefinedIndices
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/CloudMaskingConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/CloudMaskingConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/CloudMaskingConfigInput.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SageMakerGeoSpatial.Types.CloudMaskingConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.CloudMaskingConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newCloudMaskingConfigInput' smart constructor.
+data CloudMaskingConfigInput = CloudMaskingConfigInput'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloudMaskingConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newCloudMaskingConfigInput ::
+  CloudMaskingConfigInput
+newCloudMaskingConfigInput = CloudMaskingConfigInput'
+
+instance Data.FromJSON CloudMaskingConfigInput where
+  parseJSON =
+    Data.withObject
+      "CloudMaskingConfigInput"
+      (\x -> Prelude.pure CloudMaskingConfigInput')
+
+instance Prelude.Hashable CloudMaskingConfigInput where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData CloudMaskingConfigInput where
+  rnf _ = ()
+
+instance Data.ToJSON CloudMaskingConfigInput where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/CloudRemovalConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/CloudRemovalConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/CloudRemovalConfigInput.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.SageMakerGeoSpatial.Types.CloudRemovalConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.CloudRemovalConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameCloudRemoval
+
+-- |
+--
+-- /See:/ 'newCloudRemovalConfigInput' smart constructor.
+data CloudRemovalConfigInput = CloudRemovalConfigInput'
+  { -- | The name of the algorithm used for cloud removal.
+    algorithmName :: Prelude.Maybe AlgorithmNameCloudRemoval,
+    -- | The interpolation value you provide for cloud removal.
+    interpolationValue :: Prelude.Maybe Prelude.Text,
+    targetBands :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloudRemovalConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'cloudRemovalConfigInput_algorithmName' - The name of the algorithm used for cloud removal.
+--
+-- 'interpolationValue', 'cloudRemovalConfigInput_interpolationValue' - The interpolation value you provide for cloud removal.
+--
+-- 'targetBands', 'cloudRemovalConfigInput_targetBands' -
+newCloudRemovalConfigInput ::
+  CloudRemovalConfigInput
+newCloudRemovalConfigInput =
+  CloudRemovalConfigInput'
+    { algorithmName =
+        Prelude.Nothing,
+      interpolationValue = Prelude.Nothing,
+      targetBands = Prelude.Nothing
+    }
+
+-- | The name of the algorithm used for cloud removal.
+cloudRemovalConfigInput_algorithmName :: Lens.Lens' CloudRemovalConfigInput (Prelude.Maybe AlgorithmNameCloudRemoval)
+cloudRemovalConfigInput_algorithmName = Lens.lens (\CloudRemovalConfigInput' {algorithmName} -> algorithmName) (\s@CloudRemovalConfigInput' {} a -> s {algorithmName = a} :: CloudRemovalConfigInput)
+
+-- | The interpolation value you provide for cloud removal.
+cloudRemovalConfigInput_interpolationValue :: Lens.Lens' CloudRemovalConfigInput (Prelude.Maybe Prelude.Text)
+cloudRemovalConfigInput_interpolationValue = Lens.lens (\CloudRemovalConfigInput' {interpolationValue} -> interpolationValue) (\s@CloudRemovalConfigInput' {} a -> s {interpolationValue = a} :: CloudRemovalConfigInput)
+
+cloudRemovalConfigInput_targetBands :: Lens.Lens' CloudRemovalConfigInput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+cloudRemovalConfigInput_targetBands = Lens.lens (\CloudRemovalConfigInput' {targetBands} -> targetBands) (\s@CloudRemovalConfigInput' {} a -> s {targetBands = a} :: CloudRemovalConfigInput) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CloudRemovalConfigInput where
+  parseJSON =
+    Data.withObject
+      "CloudRemovalConfigInput"
+      ( \x ->
+          CloudRemovalConfigInput'
+            Prelude.<$> (x Data..:? "AlgorithmName")
+            Prelude.<*> (x Data..:? "InterpolationValue")
+            Prelude.<*> (x Data..:? "TargetBands")
+      )
+
+instance Prelude.Hashable CloudRemovalConfigInput where
+  hashWithSalt _salt CloudRemovalConfigInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` algorithmName
+      `Prelude.hashWithSalt` interpolationValue
+      `Prelude.hashWithSalt` targetBands
+
+instance Prelude.NFData CloudRemovalConfigInput where
+  rnf CloudRemovalConfigInput' {..} =
+    Prelude.rnf algorithmName
+      `Prelude.seq` Prelude.rnf interpolationValue
+      `Prelude.seq` Prelude.rnf targetBands
+
+instance Data.ToJSON CloudRemovalConfigInput where
+  toJSON CloudRemovalConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AlgorithmName" Data..=) Prelude.<$> algorithmName,
+            ("InterpolationValue" Data..=)
+              Prelude.<$> interpolationValue,
+            ("TargetBands" Data..=) Prelude.<$> targetBands
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ComparisonOperator.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ComparisonOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ComparisonOperator.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.SageMakerGeoSpatial.Types.ComparisonOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ComparisonOperator
+  ( ComparisonOperator
+      ( ..,
+        ComparisonOperator_EQUALS,
+        ComparisonOperator_NOT_EQUALS,
+        ComparisonOperator_STARTS_WITH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ComparisonOperator = ComparisonOperator'
+  { fromComparisonOperator ::
+      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 ComparisonOperator_EQUALS :: ComparisonOperator
+pattern ComparisonOperator_EQUALS = ComparisonOperator' "EQUALS"
+
+pattern ComparisonOperator_NOT_EQUALS :: ComparisonOperator
+pattern ComparisonOperator_NOT_EQUALS = ComparisonOperator' "NOT_EQUALS"
+
+pattern ComparisonOperator_STARTS_WITH :: ComparisonOperator
+pattern ComparisonOperator_STARTS_WITH = ComparisonOperator' "STARTS_WITH"
+
+{-# COMPLETE
+  ComparisonOperator_EQUALS,
+  ComparisonOperator_NOT_EQUALS,
+  ComparisonOperator_STARTS_WITH,
+  ComparisonOperator'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/CustomIndicesInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/CustomIndicesInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/CustomIndicesInput.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.SageMakerGeoSpatial.Types.CustomIndicesInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.CustomIndicesInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.Operation
+
+-- |
+--
+-- /See:/ 'newCustomIndicesInput' smart constructor.
+data CustomIndicesInput = CustomIndicesInput'
+  { operations :: Prelude.Maybe (Prelude.NonEmpty Operation)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomIndicesInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'operations', 'customIndicesInput_operations' -
+newCustomIndicesInput ::
+  CustomIndicesInput
+newCustomIndicesInput =
+  CustomIndicesInput' {operations = Prelude.Nothing}
+
+customIndicesInput_operations :: Lens.Lens' CustomIndicesInput (Prelude.Maybe (Prelude.NonEmpty Operation))
+customIndicesInput_operations = Lens.lens (\CustomIndicesInput' {operations} -> operations) (\s@CustomIndicesInput' {} a -> s {operations = a} :: CustomIndicesInput) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON CustomIndicesInput where
+  parseJSON =
+    Data.withObject
+      "CustomIndicesInput"
+      ( \x ->
+          CustomIndicesInput'
+            Prelude.<$> (x Data..:? "Operations")
+      )
+
+instance Prelude.Hashable CustomIndicesInput where
+  hashWithSalt _salt CustomIndicesInput' {..} =
+    _salt `Prelude.hashWithSalt` operations
+
+instance Prelude.NFData CustomIndicesInput where
+  rnf CustomIndicesInput' {..} = Prelude.rnf operations
+
+instance Data.ToJSON CustomIndicesInput where
+  toJSON CustomIndicesInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Operations" Data..=) Prelude.<$> operations]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/DataCollectionType.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/DataCollectionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/DataCollectionType.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.SageMakerGeoSpatial.Types.DataCollectionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.DataCollectionType
+  ( DataCollectionType
+      ( ..,
+        DataCollectionType_PREMIUM,
+        DataCollectionType_PUBLIC,
+        DataCollectionType_USER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataCollectionType = DataCollectionType'
+  { fromDataCollectionType ::
+      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 DataCollectionType_PREMIUM :: DataCollectionType
+pattern DataCollectionType_PREMIUM = DataCollectionType' "PREMIUM"
+
+pattern DataCollectionType_PUBLIC :: DataCollectionType
+pattern DataCollectionType_PUBLIC = DataCollectionType' "PUBLIC"
+
+pattern DataCollectionType_USER :: DataCollectionType
+pattern DataCollectionType_USER = DataCollectionType' "USER"
+
+{-# COMPLETE
+  DataCollectionType_PREMIUM,
+  DataCollectionType_PUBLIC,
+  DataCollectionType_USER,
+  DataCollectionType'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobErrorDetails.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobErrorDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobErrorDetails.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.SageMakerGeoSpatial.Types.EarthObservationJobErrorDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobErrorDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobErrorType
+
+-- | The structure representing the errors in an EarthObservationJob.
+--
+-- /See:/ 'newEarthObservationJobErrorDetails' smart constructor.
+data EarthObservationJobErrorDetails = EarthObservationJobErrorDetails'
+  { message :: Prelude.Maybe Prelude.Text,
+    type' :: Prelude.Maybe EarthObservationJobErrorType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EarthObservationJobErrorDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'earthObservationJobErrorDetails_message' -
+--
+-- 'type'', 'earthObservationJobErrorDetails_type' -
+newEarthObservationJobErrorDetails ::
+  EarthObservationJobErrorDetails
+newEarthObservationJobErrorDetails =
+  EarthObservationJobErrorDetails'
+    { message =
+        Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+earthObservationJobErrorDetails_message :: Lens.Lens' EarthObservationJobErrorDetails (Prelude.Maybe Prelude.Text)
+earthObservationJobErrorDetails_message = Lens.lens (\EarthObservationJobErrorDetails' {message} -> message) (\s@EarthObservationJobErrorDetails' {} a -> s {message = a} :: EarthObservationJobErrorDetails)
+
+earthObservationJobErrorDetails_type :: Lens.Lens' EarthObservationJobErrorDetails (Prelude.Maybe EarthObservationJobErrorType)
+earthObservationJobErrorDetails_type = Lens.lens (\EarthObservationJobErrorDetails' {type'} -> type') (\s@EarthObservationJobErrorDetails' {} a -> s {type' = a} :: EarthObservationJobErrorDetails)
+
+instance
+  Data.FromJSON
+    EarthObservationJobErrorDetails
+  where
+  parseJSON =
+    Data.withObject
+      "EarthObservationJobErrorDetails"
+      ( \x ->
+          EarthObservationJobErrorDetails'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance
+  Prelude.Hashable
+    EarthObservationJobErrorDetails
+  where
+  hashWithSalt
+    _salt
+    EarthObservationJobErrorDetails' {..} =
+      _salt
+        `Prelude.hashWithSalt` message
+        `Prelude.hashWithSalt` type'
+
+instance
+  Prelude.NFData
+    EarthObservationJobErrorDetails
+  where
+  rnf EarthObservationJobErrorDetails' {..} =
+    Prelude.rnf message `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobErrorType.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobErrorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobErrorType.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.SageMakerGeoSpatial.Types.EarthObservationJobErrorType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobErrorType
+  ( EarthObservationJobErrorType
+      ( ..,
+        EarthObservationJobErrorType_CLIENT_ERROR,
+        EarthObservationJobErrorType_SERVER_ERROR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EarthObservationJobErrorType = EarthObservationJobErrorType'
+  { fromEarthObservationJobErrorType ::
+      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 EarthObservationJobErrorType_CLIENT_ERROR :: EarthObservationJobErrorType
+pattern EarthObservationJobErrorType_CLIENT_ERROR = EarthObservationJobErrorType' "CLIENT_ERROR"
+
+pattern EarthObservationJobErrorType_SERVER_ERROR :: EarthObservationJobErrorType
+pattern EarthObservationJobErrorType_SERVER_ERROR = EarthObservationJobErrorType' "SERVER_ERROR"
+
+{-# COMPLETE
+  EarthObservationJobErrorType_CLIENT_ERROR,
+  EarthObservationJobErrorType_SERVER_ERROR,
+  EarthObservationJobErrorType'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobExportStatus.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobExportStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobExportStatus.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.SageMakerGeoSpatial.Types.EarthObservationJobExportStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobExportStatus
+  ( EarthObservationJobExportStatus
+      ( ..,
+        EarthObservationJobExportStatus_FAILED,
+        EarthObservationJobExportStatus_IN_PROGRESS,
+        EarthObservationJobExportStatus_SUCCEEDED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EarthObservationJobExportStatus = EarthObservationJobExportStatus'
+  { fromEarthObservationJobExportStatus ::
+      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 EarthObservationJobExportStatus_FAILED :: EarthObservationJobExportStatus
+pattern EarthObservationJobExportStatus_FAILED = EarthObservationJobExportStatus' "FAILED"
+
+pattern EarthObservationJobExportStatus_IN_PROGRESS :: EarthObservationJobExportStatus
+pattern EarthObservationJobExportStatus_IN_PROGRESS = EarthObservationJobExportStatus' "IN_PROGRESS"
+
+pattern EarthObservationJobExportStatus_SUCCEEDED :: EarthObservationJobExportStatus
+pattern EarthObservationJobExportStatus_SUCCEEDED = EarthObservationJobExportStatus' "SUCCEEDED"
+
+{-# COMPLETE
+  EarthObservationJobExportStatus_FAILED,
+  EarthObservationJobExportStatus_IN_PROGRESS,
+  EarthObservationJobExportStatus_SUCCEEDED,
+  EarthObservationJobExportStatus'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobStatus.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/EarthObservationJobStatus.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.SageMakerGeoSpatial.Types.EarthObservationJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobStatus
+  ( EarthObservationJobStatus
+      ( ..,
+        EarthObservationJobStatus_COMPLETED,
+        EarthObservationJobStatus_DELETED,
+        EarthObservationJobStatus_DELETING,
+        EarthObservationJobStatus_FAILED,
+        EarthObservationJobStatus_INITIALIZING,
+        EarthObservationJobStatus_IN_PROGRESS,
+        EarthObservationJobStatus_STOPPED,
+        EarthObservationJobStatus_STOPPING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EarthObservationJobStatus = EarthObservationJobStatus'
+  { fromEarthObservationJobStatus ::
+      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 EarthObservationJobStatus_COMPLETED :: EarthObservationJobStatus
+pattern EarthObservationJobStatus_COMPLETED = EarthObservationJobStatus' "COMPLETED"
+
+pattern EarthObservationJobStatus_DELETED :: EarthObservationJobStatus
+pattern EarthObservationJobStatus_DELETED = EarthObservationJobStatus' "DELETED"
+
+pattern EarthObservationJobStatus_DELETING :: EarthObservationJobStatus
+pattern EarthObservationJobStatus_DELETING = EarthObservationJobStatus' "DELETING"
+
+pattern EarthObservationJobStatus_FAILED :: EarthObservationJobStatus
+pattern EarthObservationJobStatus_FAILED = EarthObservationJobStatus' "FAILED"
+
+pattern EarthObservationJobStatus_INITIALIZING :: EarthObservationJobStatus
+pattern EarthObservationJobStatus_INITIALIZING = EarthObservationJobStatus' "INITIALIZING"
+
+pattern EarthObservationJobStatus_IN_PROGRESS :: EarthObservationJobStatus
+pattern EarthObservationJobStatus_IN_PROGRESS = EarthObservationJobStatus' "IN_PROGRESS"
+
+pattern EarthObservationJobStatus_STOPPED :: EarthObservationJobStatus
+pattern EarthObservationJobStatus_STOPPED = EarthObservationJobStatus' "STOPPED"
+
+pattern EarthObservationJobStatus_STOPPING :: EarthObservationJobStatus
+pattern EarthObservationJobStatus_STOPPING = EarthObservationJobStatus' "STOPPING"
+
+{-# COMPLETE
+  EarthObservationJobStatus_COMPLETED,
+  EarthObservationJobStatus_DELETED,
+  EarthObservationJobStatus_DELETING,
+  EarthObservationJobStatus_FAILED,
+  EarthObservationJobStatus_INITIALIZING,
+  EarthObservationJobStatus_IN_PROGRESS,
+  EarthObservationJobStatus_STOPPED,
+  EarthObservationJobStatus_STOPPING,
+  EarthObservationJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/EoCloudCoverInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/EoCloudCoverInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/EoCloudCoverInput.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.SageMakerGeoSpatial.Types.EoCloudCoverInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.EoCloudCoverInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newEoCloudCoverInput' smart constructor.
+data EoCloudCoverInput = EoCloudCoverInput'
+  { lowerBound :: Prelude.Double,
+    upperBound :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EoCloudCoverInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lowerBound', 'eoCloudCoverInput_lowerBound' -
+--
+-- 'upperBound', 'eoCloudCoverInput_upperBound' -
+newEoCloudCoverInput ::
+  -- | 'lowerBound'
+  Prelude.Double ->
+  -- | 'upperBound'
+  Prelude.Double ->
+  EoCloudCoverInput
+newEoCloudCoverInput pLowerBound_ pUpperBound_ =
+  EoCloudCoverInput'
+    { lowerBound = pLowerBound_,
+      upperBound = pUpperBound_
+    }
+
+eoCloudCoverInput_lowerBound :: Lens.Lens' EoCloudCoverInput Prelude.Double
+eoCloudCoverInput_lowerBound = Lens.lens (\EoCloudCoverInput' {lowerBound} -> lowerBound) (\s@EoCloudCoverInput' {} a -> s {lowerBound = a} :: EoCloudCoverInput)
+
+eoCloudCoverInput_upperBound :: Lens.Lens' EoCloudCoverInput Prelude.Double
+eoCloudCoverInput_upperBound = Lens.lens (\EoCloudCoverInput' {upperBound} -> upperBound) (\s@EoCloudCoverInput' {} a -> s {upperBound = a} :: EoCloudCoverInput)
+
+instance Data.FromJSON EoCloudCoverInput where
+  parseJSON =
+    Data.withObject
+      "EoCloudCoverInput"
+      ( \x ->
+          EoCloudCoverInput'
+            Prelude.<$> (x Data..: "LowerBound")
+            Prelude.<*> (x Data..: "UpperBound")
+      )
+
+instance Prelude.Hashable EoCloudCoverInput where
+  hashWithSalt _salt EoCloudCoverInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` lowerBound
+      `Prelude.hashWithSalt` upperBound
+
+instance Prelude.NFData EoCloudCoverInput where
+  rnf EoCloudCoverInput' {..} =
+    Prelude.rnf lowerBound
+      `Prelude.seq` Prelude.rnf upperBound
+
+instance Data.ToJSON EoCloudCoverInput where
+  toJSON EoCloudCoverInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("LowerBound" Data..= lowerBound),
+            Prelude.Just ("UpperBound" Data..= upperBound)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/EojDataSourceConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/EojDataSourceConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/EojDataSourceConfigInput.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.SageMakerGeoSpatial.Types.EojDataSourceConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.EojDataSourceConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.S3DataInput
+
+-- |
+--
+-- /See:/ 'newEojDataSourceConfigInput' smart constructor.
+data EojDataSourceConfigInput = EojDataSourceConfigInput'
+  { s3Data :: Prelude.Maybe S3DataInput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EojDataSourceConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 's3Data', 'eojDataSourceConfigInput_s3Data' -
+newEojDataSourceConfigInput ::
+  EojDataSourceConfigInput
+newEojDataSourceConfigInput =
+  EojDataSourceConfigInput' {s3Data = Prelude.Nothing}
+
+eojDataSourceConfigInput_s3Data :: Lens.Lens' EojDataSourceConfigInput (Prelude.Maybe S3DataInput)
+eojDataSourceConfigInput_s3Data = Lens.lens (\EojDataSourceConfigInput' {s3Data} -> s3Data) (\s@EojDataSourceConfigInput' {} a -> s {s3Data = a} :: EojDataSourceConfigInput)
+
+instance Data.FromJSON EojDataSourceConfigInput where
+  parseJSON =
+    Data.withObject
+      "EojDataSourceConfigInput"
+      ( \x ->
+          EojDataSourceConfigInput'
+            Prelude.<$> (x Data..:? "S3Data")
+      )
+
+instance Prelude.Hashable EojDataSourceConfigInput where
+  hashWithSalt _salt EojDataSourceConfigInput' {..} =
+    _salt `Prelude.hashWithSalt` s3Data
+
+instance Prelude.NFData EojDataSourceConfigInput where
+  rnf EojDataSourceConfigInput' {..} =
+    Prelude.rnf s3Data
+
+instance Data.ToJSON EojDataSourceConfigInput where
+  toJSON EojDataSourceConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("S3Data" Data..=) Prelude.<$> s3Data]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ExportErrorDetails.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ExportErrorDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ExportErrorDetails.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.SageMakerGeoSpatial.Types.ExportErrorDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ExportErrorDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.ExportErrorDetailsOutput
+
+-- | The structure for returning the export error details in a
+-- GetEarthObservationJob.
+--
+-- /See:/ 'newExportErrorDetails' smart constructor.
+data ExportErrorDetails = ExportErrorDetails'
+  { exportResults :: Prelude.Maybe ExportErrorDetailsOutput,
+    exportSourceImages :: Prelude.Maybe ExportErrorDetailsOutput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportErrorDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'exportResults', 'exportErrorDetails_exportResults' -
+--
+-- 'exportSourceImages', 'exportErrorDetails_exportSourceImages' -
+newExportErrorDetails ::
+  ExportErrorDetails
+newExportErrorDetails =
+  ExportErrorDetails'
+    { exportResults =
+        Prelude.Nothing,
+      exportSourceImages = Prelude.Nothing
+    }
+
+exportErrorDetails_exportResults :: Lens.Lens' ExportErrorDetails (Prelude.Maybe ExportErrorDetailsOutput)
+exportErrorDetails_exportResults = Lens.lens (\ExportErrorDetails' {exportResults} -> exportResults) (\s@ExportErrorDetails' {} a -> s {exportResults = a} :: ExportErrorDetails)
+
+exportErrorDetails_exportSourceImages :: Lens.Lens' ExportErrorDetails (Prelude.Maybe ExportErrorDetailsOutput)
+exportErrorDetails_exportSourceImages = Lens.lens (\ExportErrorDetails' {exportSourceImages} -> exportSourceImages) (\s@ExportErrorDetails' {} a -> s {exportSourceImages = a} :: ExportErrorDetails)
+
+instance Data.FromJSON ExportErrorDetails where
+  parseJSON =
+    Data.withObject
+      "ExportErrorDetails"
+      ( \x ->
+          ExportErrorDetails'
+            Prelude.<$> (x Data..:? "ExportResults")
+            Prelude.<*> (x Data..:? "ExportSourceImages")
+      )
+
+instance Prelude.Hashable ExportErrorDetails where
+  hashWithSalt _salt ExportErrorDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` exportResults
+      `Prelude.hashWithSalt` exportSourceImages
+
+instance Prelude.NFData ExportErrorDetails where
+  rnf ExportErrorDetails' {..} =
+    Prelude.rnf exportResults
+      `Prelude.seq` Prelude.rnf exportSourceImages
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ExportErrorDetailsOutput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ExportErrorDetailsOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ExportErrorDetailsOutput.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.SageMakerGeoSpatial.Types.ExportErrorDetailsOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ExportErrorDetailsOutput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.ExportErrorType
+
+-- |
+--
+-- /See:/ 'newExportErrorDetailsOutput' smart constructor.
+data ExportErrorDetailsOutput = ExportErrorDetailsOutput'
+  { message :: Prelude.Maybe Prelude.Text,
+    type' :: Prelude.Maybe ExportErrorType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportErrorDetailsOutput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'exportErrorDetailsOutput_message' -
+--
+-- 'type'', 'exportErrorDetailsOutput_type' -
+newExportErrorDetailsOutput ::
+  ExportErrorDetailsOutput
+newExportErrorDetailsOutput =
+  ExportErrorDetailsOutput'
+    { message =
+        Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+exportErrorDetailsOutput_message :: Lens.Lens' ExportErrorDetailsOutput (Prelude.Maybe Prelude.Text)
+exportErrorDetailsOutput_message = Lens.lens (\ExportErrorDetailsOutput' {message} -> message) (\s@ExportErrorDetailsOutput' {} a -> s {message = a} :: ExportErrorDetailsOutput)
+
+exportErrorDetailsOutput_type :: Lens.Lens' ExportErrorDetailsOutput (Prelude.Maybe ExportErrorType)
+exportErrorDetailsOutput_type = Lens.lens (\ExportErrorDetailsOutput' {type'} -> type') (\s@ExportErrorDetailsOutput' {} a -> s {type' = a} :: ExportErrorDetailsOutput)
+
+instance Data.FromJSON ExportErrorDetailsOutput where
+  parseJSON =
+    Data.withObject
+      "ExportErrorDetailsOutput"
+      ( \x ->
+          ExportErrorDetailsOutput'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable ExportErrorDetailsOutput where
+  hashWithSalt _salt ExportErrorDetailsOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ExportErrorDetailsOutput where
+  rnf ExportErrorDetailsOutput' {..} =
+    Prelude.rnf message `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ExportErrorType.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ExportErrorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ExportErrorType.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.SageMakerGeoSpatial.Types.ExportErrorType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ExportErrorType
+  ( ExportErrorType
+      ( ..,
+        ExportErrorType_CLIENT_ERROR,
+        ExportErrorType_SERVER_ERROR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ExportErrorType = ExportErrorType'
+  { fromExportErrorType ::
+      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 ExportErrorType_CLIENT_ERROR :: ExportErrorType
+pattern ExportErrorType_CLIENT_ERROR = ExportErrorType' "CLIENT_ERROR"
+
+pattern ExportErrorType_SERVER_ERROR :: ExportErrorType
+pattern ExportErrorType_SERVER_ERROR = ExportErrorType' "SERVER_ERROR"
+
+{-# COMPLETE
+  ExportErrorType_CLIENT_ERROR,
+  ExportErrorType_SERVER_ERROR,
+  ExportErrorType'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ExportS3DataInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ExportS3DataInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ExportS3DataInput.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.SageMakerGeoSpatial.Types.ExportS3DataInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ExportS3DataInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newExportS3DataInput' smart constructor.
+data ExportS3DataInput = ExportS3DataInput'
+  { -- | The Amazon Key Management Service (KMS) key ID for server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The URL to the Amazon S3 data input.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportS3DataInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'exportS3DataInput_kmsKeyId' - The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+--
+-- 's3Uri', 'exportS3DataInput_s3Uri' - The URL to the Amazon S3 data input.
+newExportS3DataInput ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  ExportS3DataInput
+newExportS3DataInput pS3Uri_ =
+  ExportS3DataInput'
+    { kmsKeyId = Prelude.Nothing,
+      s3Uri = pS3Uri_
+    }
+
+-- | The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+exportS3DataInput_kmsKeyId :: Lens.Lens' ExportS3DataInput (Prelude.Maybe Prelude.Text)
+exportS3DataInput_kmsKeyId = Lens.lens (\ExportS3DataInput' {kmsKeyId} -> kmsKeyId) (\s@ExportS3DataInput' {} a -> s {kmsKeyId = a} :: ExportS3DataInput)
+
+-- | The URL to the Amazon S3 data input.
+exportS3DataInput_s3Uri :: Lens.Lens' ExportS3DataInput Prelude.Text
+exportS3DataInput_s3Uri = Lens.lens (\ExportS3DataInput' {s3Uri} -> s3Uri) (\s@ExportS3DataInput' {} a -> s {s3Uri = a} :: ExportS3DataInput)
+
+instance Data.FromJSON ExportS3DataInput where
+  parseJSON =
+    Data.withObject
+      "ExportS3DataInput"
+      ( \x ->
+          ExportS3DataInput'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "S3Uri")
+      )
+
+instance Prelude.Hashable ExportS3DataInput where
+  hashWithSalt _salt ExportS3DataInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData ExportS3DataInput where
+  rnf ExportS3DataInput' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON ExportS3DataInput where
+  toJSON ExportS3DataInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just ("S3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ExportVectorEnrichmentJobOutputConfig.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ExportVectorEnrichmentJobOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ExportVectorEnrichmentJobOutputConfig.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.SageMakerGeoSpatial.Types.ExportVectorEnrichmentJobOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ExportVectorEnrichmentJobOutputConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobS3Data
+
+-- | An object containing information about the output file.
+--
+-- /See:/ 'newExportVectorEnrichmentJobOutputConfig' smart constructor.
+data ExportVectorEnrichmentJobOutputConfig = ExportVectorEnrichmentJobOutputConfig'
+  { s3Data :: VectorEnrichmentJobS3Data
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportVectorEnrichmentJobOutputConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 's3Data', 'exportVectorEnrichmentJobOutputConfig_s3Data' -
+newExportVectorEnrichmentJobOutputConfig ::
+  -- | 's3Data'
+  VectorEnrichmentJobS3Data ->
+  ExportVectorEnrichmentJobOutputConfig
+newExportVectorEnrichmentJobOutputConfig pS3Data_ =
+  ExportVectorEnrichmentJobOutputConfig'
+    { s3Data =
+        pS3Data_
+    }
+
+exportVectorEnrichmentJobOutputConfig_s3Data :: Lens.Lens' ExportVectorEnrichmentJobOutputConfig VectorEnrichmentJobS3Data
+exportVectorEnrichmentJobOutputConfig_s3Data = Lens.lens (\ExportVectorEnrichmentJobOutputConfig' {s3Data} -> s3Data) (\s@ExportVectorEnrichmentJobOutputConfig' {} a -> s {s3Data = a} :: ExportVectorEnrichmentJobOutputConfig)
+
+instance
+  Data.FromJSON
+    ExportVectorEnrichmentJobOutputConfig
+  where
+  parseJSON =
+    Data.withObject
+      "ExportVectorEnrichmentJobOutputConfig"
+      ( \x ->
+          ExportVectorEnrichmentJobOutputConfig'
+            Prelude.<$> (x Data..: "S3Data")
+      )
+
+instance
+  Prelude.Hashable
+    ExportVectorEnrichmentJobOutputConfig
+  where
+  hashWithSalt
+    _salt
+    ExportVectorEnrichmentJobOutputConfig' {..} =
+      _salt `Prelude.hashWithSalt` s3Data
+
+instance
+  Prelude.NFData
+    ExportVectorEnrichmentJobOutputConfig
+  where
+  rnf ExportVectorEnrichmentJobOutputConfig' {..} =
+    Prelude.rnf s3Data
+
+instance
+  Data.ToJSON
+    ExportVectorEnrichmentJobOutputConfig
+  where
+  toJSON ExportVectorEnrichmentJobOutputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("S3Data" Data..= s3Data)]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/Filter.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/Filter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/Filter.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.SageMakerGeoSpatial.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.SageMakerGeoSpatial.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
+
+-- | The structure representing the filters supported by a
+-- RasterDataCollection.
+--
+-- /See:/ 'newFilter' smart constructor.
+data Filter = Filter'
+  { -- | The maximum value of the filter.
+    maximum :: Prelude.Maybe Prelude.Double,
+    -- | The minimum value of the filter.
+    minimum :: Prelude.Maybe Prelude.Double,
+    -- | The name of the filter.
+    name :: Prelude.Text,
+    -- | The type of the filter being used.
+    type' :: 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:
+--
+-- 'maximum', 'filter_maximum' - The maximum value of the filter.
+--
+-- 'minimum', 'filter_minimum' - The minimum value of the filter.
+--
+-- 'name', 'filter_name' - The name of the filter.
+--
+-- 'type'', 'filter_type' - The type of the filter being used.
+newFilter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'type''
+  Prelude.Text ->
+  Filter
+newFilter pName_ pType_ =
+  Filter'
+    { maximum = Prelude.Nothing,
+      minimum = Prelude.Nothing,
+      name = pName_,
+      type' = pType_
+    }
+
+-- | The maximum value of the filter.
+filter_maximum :: Lens.Lens' Filter (Prelude.Maybe Prelude.Double)
+filter_maximum = Lens.lens (\Filter' {maximum} -> maximum) (\s@Filter' {} a -> s {maximum = a} :: Filter)
+
+-- | The minimum value of the filter.
+filter_minimum :: Lens.Lens' Filter (Prelude.Maybe Prelude.Double)
+filter_minimum = Lens.lens (\Filter' {minimum} -> minimum) (\s@Filter' {} a -> s {minimum = a} :: Filter)
+
+-- | The name of the filter.
+filter_name :: Lens.Lens' Filter Prelude.Text
+filter_name = Lens.lens (\Filter' {name} -> name) (\s@Filter' {} a -> s {name = a} :: Filter)
+
+-- | The type of the filter being used.
+filter_type :: Lens.Lens' Filter Prelude.Text
+filter_type = Lens.lens (\Filter' {type'} -> type') (\s@Filter' {} a -> s {type' = a} :: Filter)
+
+instance Data.FromJSON Filter where
+  parseJSON =
+    Data.withObject
+      "Filter"
+      ( \x ->
+          Filter'
+            Prelude.<$> (x Data..:? "Maximum")
+            Prelude.<*> (x Data..:? "Minimum")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance Prelude.Hashable Filter where
+  hashWithSalt _salt Filter' {..} =
+    _salt
+      `Prelude.hashWithSalt` maximum
+      `Prelude.hashWithSalt` minimum
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData Filter where
+  rnf Filter' {..} =
+    Prelude.rnf maximum
+      `Prelude.seq` Prelude.rnf minimum
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/GeoMosaicConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/GeoMosaicConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/GeoMosaicConfigInput.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.SageMakerGeoSpatial.Types.GeoMosaicConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.GeoMosaicConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameGeoMosaic
+
+-- | Input configuration information for the geomosaic.
+--
+-- /See:/ 'newGeoMosaicConfigInput' smart constructor.
+data GeoMosaicConfigInput = GeoMosaicConfigInput'
+  { -- | The name of the algorithm being used for geomosaic.
+    algorithmName :: Prelude.Maybe AlgorithmNameGeoMosaic,
+    -- | The target bands for geomosaic.
+    targetBands :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GeoMosaicConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'geoMosaicConfigInput_algorithmName' - The name of the algorithm being used for geomosaic.
+--
+-- 'targetBands', 'geoMosaicConfigInput_targetBands' - The target bands for geomosaic.
+newGeoMosaicConfigInput ::
+  GeoMosaicConfigInput
+newGeoMosaicConfigInput =
+  GeoMosaicConfigInput'
+    { algorithmName =
+        Prelude.Nothing,
+      targetBands = Prelude.Nothing
+    }
+
+-- | The name of the algorithm being used for geomosaic.
+geoMosaicConfigInput_algorithmName :: Lens.Lens' GeoMosaicConfigInput (Prelude.Maybe AlgorithmNameGeoMosaic)
+geoMosaicConfigInput_algorithmName = Lens.lens (\GeoMosaicConfigInput' {algorithmName} -> algorithmName) (\s@GeoMosaicConfigInput' {} a -> s {algorithmName = a} :: GeoMosaicConfigInput)
+
+-- | The target bands for geomosaic.
+geoMosaicConfigInput_targetBands :: Lens.Lens' GeoMosaicConfigInput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+geoMosaicConfigInput_targetBands = Lens.lens (\GeoMosaicConfigInput' {targetBands} -> targetBands) (\s@GeoMosaicConfigInput' {} a -> s {targetBands = a} :: GeoMosaicConfigInput) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON GeoMosaicConfigInput where
+  parseJSON =
+    Data.withObject
+      "GeoMosaicConfigInput"
+      ( \x ->
+          GeoMosaicConfigInput'
+            Prelude.<$> (x Data..:? "AlgorithmName")
+            Prelude.<*> (x Data..:? "TargetBands")
+      )
+
+instance Prelude.Hashable GeoMosaicConfigInput where
+  hashWithSalt _salt GeoMosaicConfigInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` algorithmName
+      `Prelude.hashWithSalt` targetBands
+
+instance Prelude.NFData GeoMosaicConfigInput where
+  rnf GeoMosaicConfigInput' {..} =
+    Prelude.rnf algorithmName
+      `Prelude.seq` Prelude.rnf targetBands
+
+instance Data.ToJSON GeoMosaicConfigInput where
+  toJSON GeoMosaicConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AlgorithmName" Data..=) Prelude.<$> algorithmName,
+            ("TargetBands" Data..=) Prelude.<$> targetBands
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/Geometry.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/Geometry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/Geometry.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.SageMakerGeoSpatial.Types.Geometry
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.Geometry where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newGeometry' smart constructor.
+data Geometry = Geometry'
+  { coordinates :: Prelude.NonEmpty (Prelude.NonEmpty (Data.Sensitive (Prelude.NonEmpty Prelude.Double))),
+    type' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Geometry' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coordinates', 'geometry_coordinates' -
+--
+-- 'type'', 'geometry_type' -
+newGeometry ::
+  -- | 'coordinates'
+  Prelude.NonEmpty (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double)) ->
+  -- | 'type''
+  Prelude.Text ->
+  Geometry
+newGeometry pCoordinates_ pType_ =
+  Geometry'
+    { coordinates =
+        Lens.coerced Lens.# pCoordinates_,
+      type' = pType_
+    }
+
+geometry_coordinates :: Lens.Lens' Geometry (Prelude.NonEmpty (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double)))
+geometry_coordinates = Lens.lens (\Geometry' {coordinates} -> coordinates) (\s@Geometry' {} a -> s {coordinates = a} :: Geometry) Prelude.. Lens.coerced
+
+geometry_type :: Lens.Lens' Geometry Prelude.Text
+geometry_type = Lens.lens (\Geometry' {type'} -> type') (\s@Geometry' {} a -> s {type' = a} :: Geometry)
+
+instance Data.FromJSON Geometry where
+  parseJSON =
+    Data.withObject
+      "Geometry"
+      ( \x ->
+          Geometry'
+            Prelude.<$> (x Data..: "Coordinates")
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance Prelude.Hashable Geometry where
+  hashWithSalt _salt Geometry' {..} =
+    _salt
+      `Prelude.hashWithSalt` coordinates
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData Geometry where
+  rnf Geometry' {..} =
+    Prelude.rnf coordinates
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/GroupBy.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/GroupBy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/GroupBy.hs
@@ -0,0 +1,68 @@
+{-# 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.SageMakerGeoSpatial.Types.GroupBy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.GroupBy
+  ( GroupBy
+      ( ..,
+        GroupBy_ALL,
+        GroupBy_YEARLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GroupBy = GroupBy' {fromGroupBy :: 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 GroupBy_ALL :: GroupBy
+pattern GroupBy_ALL = GroupBy' "ALL"
+
+pattern GroupBy_YEARLY :: GroupBy
+pattern GroupBy_YEARLY = GroupBy' "YEARLY"
+
+{-# COMPLETE
+  GroupBy_ALL,
+  GroupBy_YEARLY,
+  GroupBy'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/InputConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/InputConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/InputConfigInput.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.SageMakerGeoSpatial.Types.InputConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.InputConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.EojDataSourceConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryInput
+
+-- | Input configuration information.
+--
+-- /See:/ 'newInputConfigInput' smart constructor.
+data InputConfigInput = InputConfigInput'
+  { -- | The location of the input data.>
+    dataSourceConfig :: Prelude.Maybe EojDataSourceConfigInput,
+    -- | The Amazon Resource Name (ARN) of the previous Earth Observation job.
+    previousEarthObservationJobArn :: Prelude.Maybe Prelude.Text,
+    rasterDataCollectionQuery :: Prelude.Maybe RasterDataCollectionQueryInput
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSourceConfig', 'inputConfigInput_dataSourceConfig' - The location of the input data.>
+--
+-- 'previousEarthObservationJobArn', 'inputConfigInput_previousEarthObservationJobArn' - The Amazon Resource Name (ARN) of the previous Earth Observation job.
+--
+-- 'rasterDataCollectionQuery', 'inputConfigInput_rasterDataCollectionQuery' -
+newInputConfigInput ::
+  InputConfigInput
+newInputConfigInput =
+  InputConfigInput'
+    { dataSourceConfig =
+        Prelude.Nothing,
+      previousEarthObservationJobArn = Prelude.Nothing,
+      rasterDataCollectionQuery = Prelude.Nothing
+    }
+
+-- | The location of the input data.>
+inputConfigInput_dataSourceConfig :: Lens.Lens' InputConfigInput (Prelude.Maybe EojDataSourceConfigInput)
+inputConfigInput_dataSourceConfig = Lens.lens (\InputConfigInput' {dataSourceConfig} -> dataSourceConfig) (\s@InputConfigInput' {} a -> s {dataSourceConfig = a} :: InputConfigInput)
+
+-- | The Amazon Resource Name (ARN) of the previous Earth Observation job.
+inputConfigInput_previousEarthObservationJobArn :: Lens.Lens' InputConfigInput (Prelude.Maybe Prelude.Text)
+inputConfigInput_previousEarthObservationJobArn = Lens.lens (\InputConfigInput' {previousEarthObservationJobArn} -> previousEarthObservationJobArn) (\s@InputConfigInput' {} a -> s {previousEarthObservationJobArn = a} :: InputConfigInput)
+
+inputConfigInput_rasterDataCollectionQuery :: Lens.Lens' InputConfigInput (Prelude.Maybe RasterDataCollectionQueryInput)
+inputConfigInput_rasterDataCollectionQuery = Lens.lens (\InputConfigInput' {rasterDataCollectionQuery} -> rasterDataCollectionQuery) (\s@InputConfigInput' {} a -> s {rasterDataCollectionQuery = a} :: InputConfigInput)
+
+instance Prelude.Hashable InputConfigInput where
+  hashWithSalt _salt InputConfigInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataSourceConfig
+      `Prelude.hashWithSalt` previousEarthObservationJobArn
+      `Prelude.hashWithSalt` rasterDataCollectionQuery
+
+instance Prelude.NFData InputConfigInput where
+  rnf InputConfigInput' {..} =
+    Prelude.rnf dataSourceConfig
+      `Prelude.seq` Prelude.rnf previousEarthObservationJobArn
+      `Prelude.seq` Prelude.rnf rasterDataCollectionQuery
+
+instance Data.ToJSON InputConfigInput where
+  toJSON InputConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataSourceConfig" Data..=)
+              Prelude.<$> dataSourceConfig,
+            ("PreviousEarthObservationJobArn" Data..=)
+              Prelude.<$> previousEarthObservationJobArn,
+            ("RasterDataCollectionQuery" Data..=)
+              Prelude.<$> rasterDataCollectionQuery
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/InputConfigOutput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/InputConfigOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/InputConfigOutput.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.SageMakerGeoSpatial.Types.InputConfigOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.InputConfigOutput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.EojDataSourceConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryOutput
+
+-- | The InputConfig for an EarthObservationJob response.
+--
+-- /See:/ 'newInputConfigOutput' smart constructor.
+data InputConfigOutput = InputConfigOutput'
+  { -- | The location of the input data.
+    dataSourceConfig :: Prelude.Maybe EojDataSourceConfigInput,
+    -- | The Amazon Resource Name (ARN) of the previous Earth Observation job.
+    previousEarthObservationJobArn :: Prelude.Maybe Prelude.Text,
+    rasterDataCollectionQuery :: Prelude.Maybe RasterDataCollectionQueryOutput
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputConfigOutput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSourceConfig', 'inputConfigOutput_dataSourceConfig' - The location of the input data.
+--
+-- 'previousEarthObservationJobArn', 'inputConfigOutput_previousEarthObservationJobArn' - The Amazon Resource Name (ARN) of the previous Earth Observation job.
+--
+-- 'rasterDataCollectionQuery', 'inputConfigOutput_rasterDataCollectionQuery' -
+newInputConfigOutput ::
+  InputConfigOutput
+newInputConfigOutput =
+  InputConfigOutput'
+    { dataSourceConfig =
+        Prelude.Nothing,
+      previousEarthObservationJobArn = Prelude.Nothing,
+      rasterDataCollectionQuery = Prelude.Nothing
+    }
+
+-- | The location of the input data.
+inputConfigOutput_dataSourceConfig :: Lens.Lens' InputConfigOutput (Prelude.Maybe EojDataSourceConfigInput)
+inputConfigOutput_dataSourceConfig = Lens.lens (\InputConfigOutput' {dataSourceConfig} -> dataSourceConfig) (\s@InputConfigOutput' {} a -> s {dataSourceConfig = a} :: InputConfigOutput)
+
+-- | The Amazon Resource Name (ARN) of the previous Earth Observation job.
+inputConfigOutput_previousEarthObservationJobArn :: Lens.Lens' InputConfigOutput (Prelude.Maybe Prelude.Text)
+inputConfigOutput_previousEarthObservationJobArn = Lens.lens (\InputConfigOutput' {previousEarthObservationJobArn} -> previousEarthObservationJobArn) (\s@InputConfigOutput' {} a -> s {previousEarthObservationJobArn = a} :: InputConfigOutput)
+
+inputConfigOutput_rasterDataCollectionQuery :: Lens.Lens' InputConfigOutput (Prelude.Maybe RasterDataCollectionQueryOutput)
+inputConfigOutput_rasterDataCollectionQuery = Lens.lens (\InputConfigOutput' {rasterDataCollectionQuery} -> rasterDataCollectionQuery) (\s@InputConfigOutput' {} a -> s {rasterDataCollectionQuery = a} :: InputConfigOutput)
+
+instance Data.FromJSON InputConfigOutput where
+  parseJSON =
+    Data.withObject
+      "InputConfigOutput"
+      ( \x ->
+          InputConfigOutput'
+            Prelude.<$> (x Data..:? "DataSourceConfig")
+            Prelude.<*> (x Data..:? "PreviousEarthObservationJobArn")
+            Prelude.<*> (x Data..:? "RasterDataCollectionQuery")
+      )
+
+instance Prelude.Hashable InputConfigOutput where
+  hashWithSalt _salt InputConfigOutput' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataSourceConfig
+      `Prelude.hashWithSalt` previousEarthObservationJobArn
+      `Prelude.hashWithSalt` rasterDataCollectionQuery
+
+instance Prelude.NFData InputConfigOutput where
+  rnf InputConfigOutput' {..} =
+    Prelude.rnf dataSourceConfig
+      `Prelude.seq` Prelude.rnf previousEarthObservationJobArn
+      `Prelude.seq` Prelude.rnf rasterDataCollectionQuery
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ItemSource.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ItemSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ItemSource.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.SageMakerGeoSpatial.Types.ItemSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ItemSource where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.AssetValue
+import Amazonka.SageMakerGeoSpatial.Types.Geometry
+import Amazonka.SageMakerGeoSpatial.Types.Properties
+
+-- | Structure representing the items in the response for
+-- SearchRasterDataCollection.
+--
+-- /See:/ 'newItemSource' smart constructor.
+data ItemSource = ItemSource'
+  { assets :: Prelude.Maybe (Prelude.HashMap Prelude.Text AssetValue),
+    properties :: Prelude.Maybe Properties,
+    dateTime :: Data.POSIX,
+    geometry :: Geometry,
+    -- | A unique Id for the source item.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ItemSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assets', 'itemSource_assets' -
+--
+-- 'properties', 'itemSource_properties' -
+--
+-- 'dateTime', 'itemSource_dateTime' -
+--
+-- 'geometry', 'itemSource_geometry' -
+--
+-- 'id', 'itemSource_id' - A unique Id for the source item.
+newItemSource ::
+  -- | 'dateTime'
+  Prelude.UTCTime ->
+  -- | 'geometry'
+  Geometry ->
+  -- | 'id'
+  Prelude.Text ->
+  ItemSource
+newItemSource pDateTime_ pGeometry_ pId_ =
+  ItemSource'
+    { assets = Prelude.Nothing,
+      properties = Prelude.Nothing,
+      dateTime = Data._Time Lens.# pDateTime_,
+      geometry = pGeometry_,
+      id = pId_
+    }
+
+itemSource_assets :: Lens.Lens' ItemSource (Prelude.Maybe (Prelude.HashMap Prelude.Text AssetValue))
+itemSource_assets = Lens.lens (\ItemSource' {assets} -> assets) (\s@ItemSource' {} a -> s {assets = a} :: ItemSource) Prelude.. Lens.mapping Lens.coerced
+
+itemSource_properties :: Lens.Lens' ItemSource (Prelude.Maybe Properties)
+itemSource_properties = Lens.lens (\ItemSource' {properties} -> properties) (\s@ItemSource' {} a -> s {properties = a} :: ItemSource)
+
+itemSource_dateTime :: Lens.Lens' ItemSource Prelude.UTCTime
+itemSource_dateTime = Lens.lens (\ItemSource' {dateTime} -> dateTime) (\s@ItemSource' {} a -> s {dateTime = a} :: ItemSource) Prelude.. Data._Time
+
+itemSource_geometry :: Lens.Lens' ItemSource Geometry
+itemSource_geometry = Lens.lens (\ItemSource' {geometry} -> geometry) (\s@ItemSource' {} a -> s {geometry = a} :: ItemSource)
+
+-- | A unique Id for the source item.
+itemSource_id :: Lens.Lens' ItemSource Prelude.Text
+itemSource_id = Lens.lens (\ItemSource' {id} -> id) (\s@ItemSource' {} a -> s {id = a} :: ItemSource)
+
+instance Data.FromJSON ItemSource where
+  parseJSON =
+    Data.withObject
+      "ItemSource"
+      ( \x ->
+          ItemSource'
+            Prelude.<$> (x Data..:? "Assets" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Properties")
+            Prelude.<*> (x Data..: "DateTime")
+            Prelude.<*> (x Data..: "Geometry")
+            Prelude.<*> (x Data..: "Id")
+      )
+
+instance Prelude.Hashable ItemSource where
+  hashWithSalt _salt ItemSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` assets
+      `Prelude.hashWithSalt` properties
+      `Prelude.hashWithSalt` dateTime
+      `Prelude.hashWithSalt` geometry
+      `Prelude.hashWithSalt` id
+
+instance Prelude.NFData ItemSource where
+  rnf ItemSource' {..} =
+    Prelude.rnf assets
+      `Prelude.seq` Prelude.rnf properties
+      `Prelude.seq` Prelude.rnf dateTime
+      `Prelude.seq` Prelude.rnf geometry
+      `Prelude.seq` Prelude.rnf id
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/JobConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/JobConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/JobConfigInput.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.SageMakerGeoSpatial.Types.JobConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.JobConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.BandMathConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.CloudMaskingConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.CloudRemovalConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.GeoMosaicConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.LandCoverSegmentationConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.ResamplingConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.StackConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.TemporalStatisticsConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.ZonalStatisticsConfigInput
+
+-- | The input structure for the JobConfig in an EarthObservationJob.
+--
+-- /See:/ 'newJobConfigInput' smart constructor.
+data JobConfigInput = JobConfigInput'
+  { bandMathConfig :: Prelude.Maybe BandMathConfigInput,
+    -- | An object containing information about the job configuration for cloud
+    -- masking.
+    cloudMaskingConfig :: Prelude.Maybe CloudMaskingConfigInput,
+    -- | An object containing information about the job configuration for cloud
+    -- removal.
+    cloudRemovalConfig :: Prelude.Maybe CloudRemovalConfigInput,
+    -- | An object containing information about the job configuration for
+    -- geomosaic.
+    geoMosaicConfig :: Prelude.Maybe GeoMosaicConfigInput,
+    -- | An object containing information about the job configuration for land
+    -- cover segmentation.
+    landCoverSegmentationConfig :: Prelude.Maybe LandCoverSegmentationConfigInput,
+    -- | An object containing information about the job configuration for
+    -- resampling.
+    resamplingConfig :: Prelude.Maybe ResamplingConfigInput,
+    stackConfig :: Prelude.Maybe StackConfigInput,
+    -- | An object containing information about the job configuration for
+    -- temporal statistics.
+    temporalStatisticsConfig :: Prelude.Maybe TemporalStatisticsConfigInput,
+    -- | An object containing information about the job configuration for zonal
+    -- statistics.
+    zonalStatisticsConfig :: Prelude.Maybe ZonalStatisticsConfigInput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JobConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bandMathConfig', 'jobConfigInput_bandMathConfig' -
+--
+-- 'cloudMaskingConfig', 'jobConfigInput_cloudMaskingConfig' - An object containing information about the job configuration for cloud
+-- masking.
+--
+-- 'cloudRemovalConfig', 'jobConfigInput_cloudRemovalConfig' - An object containing information about the job configuration for cloud
+-- removal.
+--
+-- 'geoMosaicConfig', 'jobConfigInput_geoMosaicConfig' - An object containing information about the job configuration for
+-- geomosaic.
+--
+-- 'landCoverSegmentationConfig', 'jobConfigInput_landCoverSegmentationConfig' - An object containing information about the job configuration for land
+-- cover segmentation.
+--
+-- 'resamplingConfig', 'jobConfigInput_resamplingConfig' - An object containing information about the job configuration for
+-- resampling.
+--
+-- 'stackConfig', 'jobConfigInput_stackConfig' -
+--
+-- 'temporalStatisticsConfig', 'jobConfigInput_temporalStatisticsConfig' - An object containing information about the job configuration for
+-- temporal statistics.
+--
+-- 'zonalStatisticsConfig', 'jobConfigInput_zonalStatisticsConfig' - An object containing information about the job configuration for zonal
+-- statistics.
+newJobConfigInput ::
+  JobConfigInput
+newJobConfigInput =
+  JobConfigInput'
+    { bandMathConfig = Prelude.Nothing,
+      cloudMaskingConfig = Prelude.Nothing,
+      cloudRemovalConfig = Prelude.Nothing,
+      geoMosaicConfig = Prelude.Nothing,
+      landCoverSegmentationConfig = Prelude.Nothing,
+      resamplingConfig = Prelude.Nothing,
+      stackConfig = Prelude.Nothing,
+      temporalStatisticsConfig = Prelude.Nothing,
+      zonalStatisticsConfig = Prelude.Nothing
+    }
+
+jobConfigInput_bandMathConfig :: Lens.Lens' JobConfigInput (Prelude.Maybe BandMathConfigInput)
+jobConfigInput_bandMathConfig = Lens.lens (\JobConfigInput' {bandMathConfig} -> bandMathConfig) (\s@JobConfigInput' {} a -> s {bandMathConfig = a} :: JobConfigInput)
+
+-- | An object containing information about the job configuration for cloud
+-- masking.
+jobConfigInput_cloudMaskingConfig :: Lens.Lens' JobConfigInput (Prelude.Maybe CloudMaskingConfigInput)
+jobConfigInput_cloudMaskingConfig = Lens.lens (\JobConfigInput' {cloudMaskingConfig} -> cloudMaskingConfig) (\s@JobConfigInput' {} a -> s {cloudMaskingConfig = a} :: JobConfigInput)
+
+-- | An object containing information about the job configuration for cloud
+-- removal.
+jobConfigInput_cloudRemovalConfig :: Lens.Lens' JobConfigInput (Prelude.Maybe CloudRemovalConfigInput)
+jobConfigInput_cloudRemovalConfig = Lens.lens (\JobConfigInput' {cloudRemovalConfig} -> cloudRemovalConfig) (\s@JobConfigInput' {} a -> s {cloudRemovalConfig = a} :: JobConfigInput)
+
+-- | An object containing information about the job configuration for
+-- geomosaic.
+jobConfigInput_geoMosaicConfig :: Lens.Lens' JobConfigInput (Prelude.Maybe GeoMosaicConfigInput)
+jobConfigInput_geoMosaicConfig = Lens.lens (\JobConfigInput' {geoMosaicConfig} -> geoMosaicConfig) (\s@JobConfigInput' {} a -> s {geoMosaicConfig = a} :: JobConfigInput)
+
+-- | An object containing information about the job configuration for land
+-- cover segmentation.
+jobConfigInput_landCoverSegmentationConfig :: Lens.Lens' JobConfigInput (Prelude.Maybe LandCoverSegmentationConfigInput)
+jobConfigInput_landCoverSegmentationConfig = Lens.lens (\JobConfigInput' {landCoverSegmentationConfig} -> landCoverSegmentationConfig) (\s@JobConfigInput' {} a -> s {landCoverSegmentationConfig = a} :: JobConfigInput)
+
+-- | An object containing information about the job configuration for
+-- resampling.
+jobConfigInput_resamplingConfig :: Lens.Lens' JobConfigInput (Prelude.Maybe ResamplingConfigInput)
+jobConfigInput_resamplingConfig = Lens.lens (\JobConfigInput' {resamplingConfig} -> resamplingConfig) (\s@JobConfigInput' {} a -> s {resamplingConfig = a} :: JobConfigInput)
+
+jobConfigInput_stackConfig :: Lens.Lens' JobConfigInput (Prelude.Maybe StackConfigInput)
+jobConfigInput_stackConfig = Lens.lens (\JobConfigInput' {stackConfig} -> stackConfig) (\s@JobConfigInput' {} a -> s {stackConfig = a} :: JobConfigInput)
+
+-- | An object containing information about the job configuration for
+-- temporal statistics.
+jobConfigInput_temporalStatisticsConfig :: Lens.Lens' JobConfigInput (Prelude.Maybe TemporalStatisticsConfigInput)
+jobConfigInput_temporalStatisticsConfig = Lens.lens (\JobConfigInput' {temporalStatisticsConfig} -> temporalStatisticsConfig) (\s@JobConfigInput' {} a -> s {temporalStatisticsConfig = a} :: JobConfigInput)
+
+-- | An object containing information about the job configuration for zonal
+-- statistics.
+jobConfigInput_zonalStatisticsConfig :: Lens.Lens' JobConfigInput (Prelude.Maybe ZonalStatisticsConfigInput)
+jobConfigInput_zonalStatisticsConfig = Lens.lens (\JobConfigInput' {zonalStatisticsConfig} -> zonalStatisticsConfig) (\s@JobConfigInput' {} a -> s {zonalStatisticsConfig = a} :: JobConfigInput)
+
+instance Data.FromJSON JobConfigInput where
+  parseJSON =
+    Data.withObject
+      "JobConfigInput"
+      ( \x ->
+          JobConfigInput'
+            Prelude.<$> (x Data..:? "BandMathConfig")
+            Prelude.<*> (x Data..:? "CloudMaskingConfig")
+            Prelude.<*> (x Data..:? "CloudRemovalConfig")
+            Prelude.<*> (x Data..:? "GeoMosaicConfig")
+            Prelude.<*> (x Data..:? "LandCoverSegmentationConfig")
+            Prelude.<*> (x Data..:? "ResamplingConfig")
+            Prelude.<*> (x Data..:? "StackConfig")
+            Prelude.<*> (x Data..:? "TemporalStatisticsConfig")
+            Prelude.<*> (x Data..:? "ZonalStatisticsConfig")
+      )
+
+instance Prelude.Hashable JobConfigInput where
+  hashWithSalt _salt JobConfigInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` bandMathConfig
+      `Prelude.hashWithSalt` cloudMaskingConfig
+      `Prelude.hashWithSalt` cloudRemovalConfig
+      `Prelude.hashWithSalt` geoMosaicConfig
+      `Prelude.hashWithSalt` landCoverSegmentationConfig
+      `Prelude.hashWithSalt` resamplingConfig
+      `Prelude.hashWithSalt` stackConfig
+      `Prelude.hashWithSalt` temporalStatisticsConfig
+      `Prelude.hashWithSalt` zonalStatisticsConfig
+
+instance Prelude.NFData JobConfigInput where
+  rnf JobConfigInput' {..} =
+    Prelude.rnf bandMathConfig
+      `Prelude.seq` Prelude.rnf cloudMaskingConfig
+      `Prelude.seq` Prelude.rnf cloudRemovalConfig
+      `Prelude.seq` Prelude.rnf geoMosaicConfig
+      `Prelude.seq` Prelude.rnf landCoverSegmentationConfig
+      `Prelude.seq` Prelude.rnf resamplingConfig
+      `Prelude.seq` Prelude.rnf stackConfig
+      `Prelude.seq` Prelude.rnf temporalStatisticsConfig
+      `Prelude.seq` Prelude.rnf zonalStatisticsConfig
+
+instance Data.ToJSON JobConfigInput where
+  toJSON JobConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BandMathConfig" Data..=)
+              Prelude.<$> bandMathConfig,
+            ("CloudMaskingConfig" Data..=)
+              Prelude.<$> cloudMaskingConfig,
+            ("CloudRemovalConfig" Data..=)
+              Prelude.<$> cloudRemovalConfig,
+            ("GeoMosaicConfig" Data..=)
+              Prelude.<$> geoMosaicConfig,
+            ("LandCoverSegmentationConfig" Data..=)
+              Prelude.<$> landCoverSegmentationConfig,
+            ("ResamplingConfig" Data..=)
+              Prelude.<$> resamplingConfig,
+            ("StackConfig" Data..=) Prelude.<$> stackConfig,
+            ("TemporalStatisticsConfig" Data..=)
+              Prelude.<$> temporalStatisticsConfig,
+            ("ZonalStatisticsConfig" Data..=)
+              Prelude.<$> zonalStatisticsConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/LandCoverSegmentationConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/LandCoverSegmentationConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/LandCoverSegmentationConfigInput.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.SageMakerGeoSpatial.Types.LandCoverSegmentationConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.LandCoverSegmentationConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newLandCoverSegmentationConfigInput' smart constructor.
+data LandCoverSegmentationConfigInput = LandCoverSegmentationConfigInput'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LandCoverSegmentationConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newLandCoverSegmentationConfigInput ::
+  LandCoverSegmentationConfigInput
+newLandCoverSegmentationConfigInput =
+  LandCoverSegmentationConfigInput'
+
+instance
+  Data.FromJSON
+    LandCoverSegmentationConfigInput
+  where
+  parseJSON =
+    Data.withObject
+      "LandCoverSegmentationConfigInput"
+      ( \x ->
+          Prelude.pure LandCoverSegmentationConfigInput'
+      )
+
+instance
+  Prelude.Hashable
+    LandCoverSegmentationConfigInput
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    LandCoverSegmentationConfigInput
+  where
+  rnf _ = ()
+
+instance Data.ToJSON LandCoverSegmentationConfigInput where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/LandsatCloudCoverLandInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/LandsatCloudCoverLandInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/LandsatCloudCoverLandInput.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.SageMakerGeoSpatial.Types.LandsatCloudCoverLandInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.LandsatCloudCoverLandInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newLandsatCloudCoverLandInput' smart constructor.
+data LandsatCloudCoverLandInput = LandsatCloudCoverLandInput'
+  { lowerBound :: Prelude.Double,
+    upperBound :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LandsatCloudCoverLandInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lowerBound', 'landsatCloudCoverLandInput_lowerBound' -
+--
+-- 'upperBound', 'landsatCloudCoverLandInput_upperBound' -
+newLandsatCloudCoverLandInput ::
+  -- | 'lowerBound'
+  Prelude.Double ->
+  -- | 'upperBound'
+  Prelude.Double ->
+  LandsatCloudCoverLandInput
+newLandsatCloudCoverLandInput
+  pLowerBound_
+  pUpperBound_ =
+    LandsatCloudCoverLandInput'
+      { lowerBound =
+          pLowerBound_,
+        upperBound = pUpperBound_
+      }
+
+landsatCloudCoverLandInput_lowerBound :: Lens.Lens' LandsatCloudCoverLandInput Prelude.Double
+landsatCloudCoverLandInput_lowerBound = Lens.lens (\LandsatCloudCoverLandInput' {lowerBound} -> lowerBound) (\s@LandsatCloudCoverLandInput' {} a -> s {lowerBound = a} :: LandsatCloudCoverLandInput)
+
+landsatCloudCoverLandInput_upperBound :: Lens.Lens' LandsatCloudCoverLandInput Prelude.Double
+landsatCloudCoverLandInput_upperBound = Lens.lens (\LandsatCloudCoverLandInput' {upperBound} -> upperBound) (\s@LandsatCloudCoverLandInput' {} a -> s {upperBound = a} :: LandsatCloudCoverLandInput)
+
+instance Data.FromJSON LandsatCloudCoverLandInput where
+  parseJSON =
+    Data.withObject
+      "LandsatCloudCoverLandInput"
+      ( \x ->
+          LandsatCloudCoverLandInput'
+            Prelude.<$> (x Data..: "LowerBound")
+            Prelude.<*> (x Data..: "UpperBound")
+      )
+
+instance Prelude.Hashable LandsatCloudCoverLandInput where
+  hashWithSalt _salt LandsatCloudCoverLandInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` lowerBound
+      `Prelude.hashWithSalt` upperBound
+
+instance Prelude.NFData LandsatCloudCoverLandInput where
+  rnf LandsatCloudCoverLandInput' {..} =
+    Prelude.rnf lowerBound
+      `Prelude.seq` Prelude.rnf upperBound
+
+instance Data.ToJSON LandsatCloudCoverLandInput where
+  toJSON LandsatCloudCoverLandInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("LowerBound" Data..= lowerBound),
+            Prelude.Just ("UpperBound" Data..= upperBound)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ListEarthObservationJobOutputConfig.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ListEarthObservationJobOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ListEarthObservationJobOutputConfig.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.SageMakerGeoSpatial.Types.ListEarthObservationJobOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ListEarthObservationJobOutputConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.EarthObservationJobStatus
+
+-- | An object containing information about the output file.
+--
+-- /See:/ 'newListEarthObservationJobOutputConfig' smart constructor.
+data ListEarthObservationJobOutputConfig = ListEarthObservationJobOutputConfig'
+  { -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the list of the Earth Observation
+    -- jobs.
+    arn :: Prelude.Text,
+    -- | The creation time.
+    creationTime :: Data.POSIX,
+    -- | The duration of the session, in seconds.
+    durationInSeconds :: Prelude.Int,
+    -- | The names of the Earth Observation jobs in the list.
+    name :: Prelude.Text,
+    operationType :: Prelude.Text,
+    -- | The status of the list of the Earth Observation jobs.
+    status :: EarthObservationJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListEarthObservationJobOutputConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listEarthObservationJobOutputConfig_tags' - Each tag consists of a key and a value.
+--
+-- 'arn', 'listEarthObservationJobOutputConfig_arn' - The Amazon Resource Name (ARN) of the list of the Earth Observation
+-- jobs.
+--
+-- 'creationTime', 'listEarthObservationJobOutputConfig_creationTime' - The creation time.
+--
+-- 'durationInSeconds', 'listEarthObservationJobOutputConfig_durationInSeconds' - The duration of the session, in seconds.
+--
+-- 'name', 'listEarthObservationJobOutputConfig_name' - The names of the Earth Observation jobs in the list.
+--
+-- 'operationType', 'listEarthObservationJobOutputConfig_operationType' -
+--
+-- 'status', 'listEarthObservationJobOutputConfig_status' - The status of the list of the Earth Observation jobs.
+newListEarthObservationJobOutputConfig ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'durationInSeconds'
+  Prelude.Int ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'operationType'
+  Prelude.Text ->
+  -- | 'status'
+  EarthObservationJobStatus ->
+  ListEarthObservationJobOutputConfig
+newListEarthObservationJobOutputConfig
+  pArn_
+  pCreationTime_
+  pDurationInSeconds_
+  pName_
+  pOperationType_
+  pStatus_ =
+    ListEarthObservationJobOutputConfig'
+      { tags =
+          Prelude.Nothing,
+        arn = pArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        durationInSeconds =
+          pDurationInSeconds_,
+        name = pName_,
+        operationType = pOperationType_,
+        status = pStatus_
+      }
+
+-- | Each tag consists of a key and a value.
+listEarthObservationJobOutputConfig_tags :: Lens.Lens' ListEarthObservationJobOutputConfig (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listEarthObservationJobOutputConfig_tags = Lens.lens (\ListEarthObservationJobOutputConfig' {tags} -> tags) (\s@ListEarthObservationJobOutputConfig' {} a -> s {tags = a} :: ListEarthObservationJobOutputConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the list of the Earth Observation
+-- jobs.
+listEarthObservationJobOutputConfig_arn :: Lens.Lens' ListEarthObservationJobOutputConfig Prelude.Text
+listEarthObservationJobOutputConfig_arn = Lens.lens (\ListEarthObservationJobOutputConfig' {arn} -> arn) (\s@ListEarthObservationJobOutputConfig' {} a -> s {arn = a} :: ListEarthObservationJobOutputConfig)
+
+-- | The creation time.
+listEarthObservationJobOutputConfig_creationTime :: Lens.Lens' ListEarthObservationJobOutputConfig Prelude.UTCTime
+listEarthObservationJobOutputConfig_creationTime = Lens.lens (\ListEarthObservationJobOutputConfig' {creationTime} -> creationTime) (\s@ListEarthObservationJobOutputConfig' {} a -> s {creationTime = a} :: ListEarthObservationJobOutputConfig) Prelude.. Data._Time
+
+-- | The duration of the session, in seconds.
+listEarthObservationJobOutputConfig_durationInSeconds :: Lens.Lens' ListEarthObservationJobOutputConfig Prelude.Int
+listEarthObservationJobOutputConfig_durationInSeconds = Lens.lens (\ListEarthObservationJobOutputConfig' {durationInSeconds} -> durationInSeconds) (\s@ListEarthObservationJobOutputConfig' {} a -> s {durationInSeconds = a} :: ListEarthObservationJobOutputConfig)
+
+-- | The names of the Earth Observation jobs in the list.
+listEarthObservationJobOutputConfig_name :: Lens.Lens' ListEarthObservationJobOutputConfig Prelude.Text
+listEarthObservationJobOutputConfig_name = Lens.lens (\ListEarthObservationJobOutputConfig' {name} -> name) (\s@ListEarthObservationJobOutputConfig' {} a -> s {name = a} :: ListEarthObservationJobOutputConfig)
+
+listEarthObservationJobOutputConfig_operationType :: Lens.Lens' ListEarthObservationJobOutputConfig Prelude.Text
+listEarthObservationJobOutputConfig_operationType = Lens.lens (\ListEarthObservationJobOutputConfig' {operationType} -> operationType) (\s@ListEarthObservationJobOutputConfig' {} a -> s {operationType = a} :: ListEarthObservationJobOutputConfig)
+
+-- | The status of the list of the Earth Observation jobs.
+listEarthObservationJobOutputConfig_status :: Lens.Lens' ListEarthObservationJobOutputConfig EarthObservationJobStatus
+listEarthObservationJobOutputConfig_status = Lens.lens (\ListEarthObservationJobOutputConfig' {status} -> status) (\s@ListEarthObservationJobOutputConfig' {} a -> s {status = a} :: ListEarthObservationJobOutputConfig)
+
+instance
+  Data.FromJSON
+    ListEarthObservationJobOutputConfig
+  where
+  parseJSON =
+    Data.withObject
+      "ListEarthObservationJobOutputConfig"
+      ( \x ->
+          ListEarthObservationJobOutputConfig'
+            Prelude.<$> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "Arn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "DurationInSeconds")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "OperationType")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance
+  Prelude.Hashable
+    ListEarthObservationJobOutputConfig
+  where
+  hashWithSalt
+    _salt
+    ListEarthObservationJobOutputConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` arn
+        `Prelude.hashWithSalt` creationTime
+        `Prelude.hashWithSalt` durationInSeconds
+        `Prelude.hashWithSalt` name
+        `Prelude.hashWithSalt` operationType
+        `Prelude.hashWithSalt` status
+
+instance
+  Prelude.NFData
+    ListEarthObservationJobOutputConfig
+  where
+  rnf ListEarthObservationJobOutputConfig' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf durationInSeconds
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf operationType
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ListVectorEnrichmentJobOutputConfig.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ListVectorEnrichmentJobOutputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ListVectorEnrichmentJobOutputConfig.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.SageMakerGeoSpatial.Types.ListVectorEnrichmentJobOutputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ListVectorEnrichmentJobOutputConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobStatus
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobType
+
+-- | An object containing information about the output file.
+--
+-- /See:/ 'newListVectorEnrichmentJobOutputConfig' smart constructor.
+data ListVectorEnrichmentJobOutputConfig = ListVectorEnrichmentJobOutputConfig'
+  { -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the list of the Vector Enrichment
+    -- jobs.
+    arn :: Prelude.Text,
+    -- | The creation time.
+    creationTime :: Data.POSIX,
+    -- | The duration of the session, in seconds.
+    durationInSeconds :: Prelude.Int,
+    -- | The names of the Vector Enrichment jobs in the list.
+    name :: Prelude.Text,
+    -- | The status of the Vector Enrichment jobs list.
+    status :: VectorEnrichmentJobStatus,
+    -- | The type of the list of Vector Enrichment jobs.
+    type' :: VectorEnrichmentJobType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVectorEnrichmentJobOutputConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listVectorEnrichmentJobOutputConfig_tags' - Each tag consists of a key and a value.
+--
+-- 'arn', 'listVectorEnrichmentJobOutputConfig_arn' - The Amazon Resource Name (ARN) of the list of the Vector Enrichment
+-- jobs.
+--
+-- 'creationTime', 'listVectorEnrichmentJobOutputConfig_creationTime' - The creation time.
+--
+-- 'durationInSeconds', 'listVectorEnrichmentJobOutputConfig_durationInSeconds' - The duration of the session, in seconds.
+--
+-- 'name', 'listVectorEnrichmentJobOutputConfig_name' - The names of the Vector Enrichment jobs in the list.
+--
+-- 'status', 'listVectorEnrichmentJobOutputConfig_status' - The status of the Vector Enrichment jobs list.
+--
+-- 'type'', 'listVectorEnrichmentJobOutputConfig_type' - The type of the list of Vector Enrichment jobs.
+newListVectorEnrichmentJobOutputConfig ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'creationTime'
+  Prelude.UTCTime ->
+  -- | 'durationInSeconds'
+  Prelude.Int ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'status'
+  VectorEnrichmentJobStatus ->
+  -- | 'type''
+  VectorEnrichmentJobType ->
+  ListVectorEnrichmentJobOutputConfig
+newListVectorEnrichmentJobOutputConfig
+  pArn_
+  pCreationTime_
+  pDurationInSeconds_
+  pName_
+  pStatus_
+  pType_ =
+    ListVectorEnrichmentJobOutputConfig'
+      { tags =
+          Prelude.Nothing,
+        arn = pArn_,
+        creationTime =
+          Data._Time Lens.# pCreationTime_,
+        durationInSeconds =
+          pDurationInSeconds_,
+        name = pName_,
+        status = pStatus_,
+        type' = pType_
+      }
+
+-- | Each tag consists of a key and a value.
+listVectorEnrichmentJobOutputConfig_tags :: Lens.Lens' ListVectorEnrichmentJobOutputConfig (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listVectorEnrichmentJobOutputConfig_tags = Lens.lens (\ListVectorEnrichmentJobOutputConfig' {tags} -> tags) (\s@ListVectorEnrichmentJobOutputConfig' {} a -> s {tags = a} :: ListVectorEnrichmentJobOutputConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the list of the Vector Enrichment
+-- jobs.
+listVectorEnrichmentJobOutputConfig_arn :: Lens.Lens' ListVectorEnrichmentJobOutputConfig Prelude.Text
+listVectorEnrichmentJobOutputConfig_arn = Lens.lens (\ListVectorEnrichmentJobOutputConfig' {arn} -> arn) (\s@ListVectorEnrichmentJobOutputConfig' {} a -> s {arn = a} :: ListVectorEnrichmentJobOutputConfig)
+
+-- | The creation time.
+listVectorEnrichmentJobOutputConfig_creationTime :: Lens.Lens' ListVectorEnrichmentJobOutputConfig Prelude.UTCTime
+listVectorEnrichmentJobOutputConfig_creationTime = Lens.lens (\ListVectorEnrichmentJobOutputConfig' {creationTime} -> creationTime) (\s@ListVectorEnrichmentJobOutputConfig' {} a -> s {creationTime = a} :: ListVectorEnrichmentJobOutputConfig) Prelude.. Data._Time
+
+-- | The duration of the session, in seconds.
+listVectorEnrichmentJobOutputConfig_durationInSeconds :: Lens.Lens' ListVectorEnrichmentJobOutputConfig Prelude.Int
+listVectorEnrichmentJobOutputConfig_durationInSeconds = Lens.lens (\ListVectorEnrichmentJobOutputConfig' {durationInSeconds} -> durationInSeconds) (\s@ListVectorEnrichmentJobOutputConfig' {} a -> s {durationInSeconds = a} :: ListVectorEnrichmentJobOutputConfig)
+
+-- | The names of the Vector Enrichment jobs in the list.
+listVectorEnrichmentJobOutputConfig_name :: Lens.Lens' ListVectorEnrichmentJobOutputConfig Prelude.Text
+listVectorEnrichmentJobOutputConfig_name = Lens.lens (\ListVectorEnrichmentJobOutputConfig' {name} -> name) (\s@ListVectorEnrichmentJobOutputConfig' {} a -> s {name = a} :: ListVectorEnrichmentJobOutputConfig)
+
+-- | The status of the Vector Enrichment jobs list.
+listVectorEnrichmentJobOutputConfig_status :: Lens.Lens' ListVectorEnrichmentJobOutputConfig VectorEnrichmentJobStatus
+listVectorEnrichmentJobOutputConfig_status = Lens.lens (\ListVectorEnrichmentJobOutputConfig' {status} -> status) (\s@ListVectorEnrichmentJobOutputConfig' {} a -> s {status = a} :: ListVectorEnrichmentJobOutputConfig)
+
+-- | The type of the list of Vector Enrichment jobs.
+listVectorEnrichmentJobOutputConfig_type :: Lens.Lens' ListVectorEnrichmentJobOutputConfig VectorEnrichmentJobType
+listVectorEnrichmentJobOutputConfig_type = Lens.lens (\ListVectorEnrichmentJobOutputConfig' {type'} -> type') (\s@ListVectorEnrichmentJobOutputConfig' {} a -> s {type' = a} :: ListVectorEnrichmentJobOutputConfig)
+
+instance
+  Data.FromJSON
+    ListVectorEnrichmentJobOutputConfig
+  where
+  parseJSON =
+    Data.withObject
+      "ListVectorEnrichmentJobOutputConfig"
+      ( \x ->
+          ListVectorEnrichmentJobOutputConfig'
+            Prelude.<$> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "Arn")
+            Prelude.<*> (x Data..: "CreationTime")
+            Prelude.<*> (x Data..: "DurationInSeconds")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Status")
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance
+  Prelude.Hashable
+    ListVectorEnrichmentJobOutputConfig
+  where
+  hashWithSalt
+    _salt
+    ListVectorEnrichmentJobOutputConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` arn
+        `Prelude.hashWithSalt` creationTime
+        `Prelude.hashWithSalt` durationInSeconds
+        `Prelude.hashWithSalt` name
+        `Prelude.hashWithSalt` status
+        `Prelude.hashWithSalt` type'
+
+instance
+  Prelude.NFData
+    ListVectorEnrichmentJobOutputConfig
+  where
+  rnf ListVectorEnrichmentJobOutputConfig' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf durationInSeconds
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/LogicalOperator.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/LogicalOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/LogicalOperator.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.SageMakerGeoSpatial.Types.LogicalOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.LogicalOperator
+  ( LogicalOperator
+      ( ..,
+        LogicalOperator_AND
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LogicalOperator = LogicalOperator'
+  { fromLogicalOperator ::
+      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 LogicalOperator_AND :: LogicalOperator
+pattern LogicalOperator_AND = LogicalOperator' "AND"
+
+{-# COMPLETE
+  LogicalOperator_AND,
+  LogicalOperator'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/MapMatchingConfig.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/MapMatchingConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/MapMatchingConfig.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.SageMakerGeoSpatial.Types.MapMatchingConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.MapMatchingConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newMapMatchingConfig' smart constructor.
+data MapMatchingConfig = MapMatchingConfig'
+  { idAttributeName :: Prelude.Text,
+    -- | The name of the timestamp attribute.
+    timestampAttributeName :: Prelude.Text,
+    -- | The name of the X-attribute
+    xAttributeName :: Prelude.Text,
+    -- | The name of the Y-attribute
+    yAttributeName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MapMatchingConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'idAttributeName', 'mapMatchingConfig_idAttributeName' -
+--
+-- 'timestampAttributeName', 'mapMatchingConfig_timestampAttributeName' - The name of the timestamp attribute.
+--
+-- 'xAttributeName', 'mapMatchingConfig_xAttributeName' - The name of the X-attribute
+--
+-- 'yAttributeName', 'mapMatchingConfig_yAttributeName' - The name of the Y-attribute
+newMapMatchingConfig ::
+  -- | 'idAttributeName'
+  Prelude.Text ->
+  -- | 'timestampAttributeName'
+  Prelude.Text ->
+  -- | 'xAttributeName'
+  Prelude.Text ->
+  -- | 'yAttributeName'
+  Prelude.Text ->
+  MapMatchingConfig
+newMapMatchingConfig
+  pIdAttributeName_
+  pTimestampAttributeName_
+  pXAttributeName_
+  pYAttributeName_ =
+    MapMatchingConfig'
+      { idAttributeName =
+          pIdAttributeName_,
+        timestampAttributeName = pTimestampAttributeName_,
+        xAttributeName = pXAttributeName_,
+        yAttributeName = pYAttributeName_
+      }
+
+mapMatchingConfig_idAttributeName :: Lens.Lens' MapMatchingConfig Prelude.Text
+mapMatchingConfig_idAttributeName = Lens.lens (\MapMatchingConfig' {idAttributeName} -> idAttributeName) (\s@MapMatchingConfig' {} a -> s {idAttributeName = a} :: MapMatchingConfig)
+
+-- | The name of the timestamp attribute.
+mapMatchingConfig_timestampAttributeName :: Lens.Lens' MapMatchingConfig Prelude.Text
+mapMatchingConfig_timestampAttributeName = Lens.lens (\MapMatchingConfig' {timestampAttributeName} -> timestampAttributeName) (\s@MapMatchingConfig' {} a -> s {timestampAttributeName = a} :: MapMatchingConfig)
+
+-- | The name of the X-attribute
+mapMatchingConfig_xAttributeName :: Lens.Lens' MapMatchingConfig Prelude.Text
+mapMatchingConfig_xAttributeName = Lens.lens (\MapMatchingConfig' {xAttributeName} -> xAttributeName) (\s@MapMatchingConfig' {} a -> s {xAttributeName = a} :: MapMatchingConfig)
+
+-- | The name of the Y-attribute
+mapMatchingConfig_yAttributeName :: Lens.Lens' MapMatchingConfig Prelude.Text
+mapMatchingConfig_yAttributeName = Lens.lens (\MapMatchingConfig' {yAttributeName} -> yAttributeName) (\s@MapMatchingConfig' {} a -> s {yAttributeName = a} :: MapMatchingConfig)
+
+instance Data.FromJSON MapMatchingConfig where
+  parseJSON =
+    Data.withObject
+      "MapMatchingConfig"
+      ( \x ->
+          MapMatchingConfig'
+            Prelude.<$> (x Data..: "IdAttributeName")
+            Prelude.<*> (x Data..: "TimestampAttributeName")
+            Prelude.<*> (x Data..: "XAttributeName")
+            Prelude.<*> (x Data..: "YAttributeName")
+      )
+
+instance Prelude.Hashable MapMatchingConfig where
+  hashWithSalt _salt MapMatchingConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` idAttributeName
+      `Prelude.hashWithSalt` timestampAttributeName
+      `Prelude.hashWithSalt` xAttributeName
+      `Prelude.hashWithSalt` yAttributeName
+
+instance Prelude.NFData MapMatchingConfig where
+  rnf MapMatchingConfig' {..} =
+    Prelude.rnf idAttributeName
+      `Prelude.seq` Prelude.rnf timestampAttributeName
+      `Prelude.seq` Prelude.rnf xAttributeName
+      `Prelude.seq` Prelude.rnf yAttributeName
+
+instance Data.ToJSON MapMatchingConfig where
+  toJSON MapMatchingConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("IdAttributeName" Data..= idAttributeName),
+            Prelude.Just
+              ( "TimestampAttributeName"
+                  Data..= timestampAttributeName
+              ),
+            Prelude.Just
+              ("XAttributeName" Data..= xAttributeName),
+            Prelude.Just
+              ("YAttributeName" Data..= yAttributeName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/MetadataProvider.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/MetadataProvider.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/MetadataProvider.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.SageMakerGeoSpatial.Types.MetadataProvider
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.MetadataProvider
+  ( MetadataProvider
+      ( ..,
+        MetadataProvider_PLANET_ORDER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MetadataProvider = MetadataProvider'
+  { fromMetadataProvider ::
+      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 MetadataProvider_PLANET_ORDER :: MetadataProvider
+pattern MetadataProvider_PLANET_ORDER = MetadataProvider' "PLANET_ORDER"
+
+{-# COMPLETE
+  MetadataProvider_PLANET_ORDER,
+  MetadataProvider'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/MultiPolygonGeometryInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/MultiPolygonGeometryInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/MultiPolygonGeometryInput.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.SageMakerGeoSpatial.Types.MultiPolygonGeometryInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.MultiPolygonGeometryInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newMultiPolygonGeometryInput' smart constructor.
+data MultiPolygonGeometryInput = MultiPolygonGeometryInput'
+  { -- | The coordinates of the multipolygon geometry.
+    coordinates :: [Prelude.NonEmpty (Prelude.NonEmpty (Data.Sensitive (Prelude.NonEmpty Prelude.Double)))]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MultiPolygonGeometryInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coordinates', 'multiPolygonGeometryInput_coordinates' - The coordinates of the multipolygon geometry.
+newMultiPolygonGeometryInput ::
+  MultiPolygonGeometryInput
+newMultiPolygonGeometryInput =
+  MultiPolygonGeometryInput'
+    { coordinates =
+        Prelude.mempty
+    }
+
+-- | The coordinates of the multipolygon geometry.
+multiPolygonGeometryInput_coordinates :: Lens.Lens' MultiPolygonGeometryInput [Prelude.NonEmpty (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double))]
+multiPolygonGeometryInput_coordinates = Lens.lens (\MultiPolygonGeometryInput' {coordinates} -> coordinates) (\s@MultiPolygonGeometryInput' {} a -> s {coordinates = a} :: MultiPolygonGeometryInput) Prelude.. Lens.coerced
+
+instance Data.FromJSON MultiPolygonGeometryInput where
+  parseJSON =
+    Data.withObject
+      "MultiPolygonGeometryInput"
+      ( \x ->
+          MultiPolygonGeometryInput'
+            Prelude.<$> (x Data..:? "Coordinates" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable MultiPolygonGeometryInput where
+  hashWithSalt _salt MultiPolygonGeometryInput' {..} =
+    _salt `Prelude.hashWithSalt` coordinates
+
+instance Prelude.NFData MultiPolygonGeometryInput where
+  rnf MultiPolygonGeometryInput' {..} =
+    Prelude.rnf coordinates
+
+instance Data.ToJSON MultiPolygonGeometryInput where
+  toJSON MultiPolygonGeometryInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Coordinates" Data..= coordinates)]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/Operation.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/Operation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/Operation.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.SageMakerGeoSpatial.Types.Operation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.Operation where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.OutputType
+
+-- |
+--
+-- /See:/ 'newOperation' smart constructor.
+data Operation = Operation'
+  { -- | The type of the operation.
+    outputType :: Prelude.Maybe OutputType,
+    equation :: Prelude.Text,
+    -- | The name of the operation.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Operation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'outputType', 'operation_outputType' - The type of the operation.
+--
+-- 'equation', 'operation_equation' -
+--
+-- 'name', 'operation_name' - The name of the operation.
+newOperation ::
+  -- | 'equation'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  Operation
+newOperation pEquation_ pName_ =
+  Operation'
+    { outputType = Prelude.Nothing,
+      equation = pEquation_,
+      name = pName_
+    }
+
+-- | The type of the operation.
+operation_outputType :: Lens.Lens' Operation (Prelude.Maybe OutputType)
+operation_outputType = Lens.lens (\Operation' {outputType} -> outputType) (\s@Operation' {} a -> s {outputType = a} :: Operation)
+
+operation_equation :: Lens.Lens' Operation Prelude.Text
+operation_equation = Lens.lens (\Operation' {equation} -> equation) (\s@Operation' {} a -> s {equation = a} :: Operation)
+
+-- | The name of the operation.
+operation_name :: Lens.Lens' Operation Prelude.Text
+operation_name = Lens.lens (\Operation' {name} -> name) (\s@Operation' {} a -> s {name = a} :: Operation)
+
+instance Data.FromJSON Operation where
+  parseJSON =
+    Data.withObject
+      "Operation"
+      ( \x ->
+          Operation'
+            Prelude.<$> (x Data..:? "OutputType")
+            Prelude.<*> (x Data..: "Equation")
+            Prelude.<*> (x Data..: "Name")
+      )
+
+instance Prelude.Hashable Operation where
+  hashWithSalt _salt Operation' {..} =
+    _salt
+      `Prelude.hashWithSalt` outputType
+      `Prelude.hashWithSalt` equation
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData Operation where
+  rnf Operation' {..} =
+    Prelude.rnf outputType
+      `Prelude.seq` Prelude.rnf equation
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON Operation where
+  toJSON Operation' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("OutputType" Data..=) Prelude.<$> outputType,
+            Prelude.Just ("Equation" Data..= equation),
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/OutputBand.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/OutputBand.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/OutputBand.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.SageMakerGeoSpatial.Types.OutputBand
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.OutputBand where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.OutputType
+
+-- | A single EarthObservationJob output band.
+--
+-- /See:/ 'newOutputBand' smart constructor.
+data OutputBand = OutputBand'
+  { -- | The name of the band.
+    bandName :: Prelude.Text,
+    -- | The datatype of the output band.
+    outputDataType :: OutputType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputBand' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bandName', 'outputBand_bandName' - The name of the band.
+--
+-- 'outputDataType', 'outputBand_outputDataType' - The datatype of the output band.
+newOutputBand ::
+  -- | 'bandName'
+  Prelude.Text ->
+  -- | 'outputDataType'
+  OutputType ->
+  OutputBand
+newOutputBand pBandName_ pOutputDataType_ =
+  OutputBand'
+    { bandName = pBandName_,
+      outputDataType = pOutputDataType_
+    }
+
+-- | The name of the band.
+outputBand_bandName :: Lens.Lens' OutputBand Prelude.Text
+outputBand_bandName = Lens.lens (\OutputBand' {bandName} -> bandName) (\s@OutputBand' {} a -> s {bandName = a} :: OutputBand)
+
+-- | The datatype of the output band.
+outputBand_outputDataType :: Lens.Lens' OutputBand OutputType
+outputBand_outputDataType = Lens.lens (\OutputBand' {outputDataType} -> outputDataType) (\s@OutputBand' {} a -> s {outputDataType = a} :: OutputBand)
+
+instance Data.FromJSON OutputBand where
+  parseJSON =
+    Data.withObject
+      "OutputBand"
+      ( \x ->
+          OutputBand'
+            Prelude.<$> (x Data..: "BandName")
+            Prelude.<*> (x Data..: "OutputDataType")
+      )
+
+instance Prelude.Hashable OutputBand where
+  hashWithSalt _salt OutputBand' {..} =
+    _salt
+      `Prelude.hashWithSalt` bandName
+      `Prelude.hashWithSalt` outputDataType
+
+instance Prelude.NFData OutputBand where
+  rnf OutputBand' {..} =
+    Prelude.rnf bandName
+      `Prelude.seq` Prelude.rnf outputDataType
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/OutputConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/OutputConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/OutputConfigInput.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.SageMakerGeoSpatial.Types.OutputConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.OutputConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.ExportS3DataInput
+
+-- | The response structure for an OutputConfig returned by an
+-- ExportEarthObservationJob.
+--
+-- /See:/ 'newOutputConfigInput' smart constructor.
+data OutputConfigInput = OutputConfigInput'
+  { -- | Path to Amazon S3 storage location for the output configuration file.
+    s3Data :: ExportS3DataInput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 's3Data', 'outputConfigInput_s3Data' - Path to Amazon S3 storage location for the output configuration file.
+newOutputConfigInput ::
+  -- | 's3Data'
+  ExportS3DataInput ->
+  OutputConfigInput
+newOutputConfigInput pS3Data_ =
+  OutputConfigInput' {s3Data = pS3Data_}
+
+-- | Path to Amazon S3 storage location for the output configuration file.
+outputConfigInput_s3Data :: Lens.Lens' OutputConfigInput ExportS3DataInput
+outputConfigInput_s3Data = Lens.lens (\OutputConfigInput' {s3Data} -> s3Data) (\s@OutputConfigInput' {} a -> s {s3Data = a} :: OutputConfigInput)
+
+instance Data.FromJSON OutputConfigInput where
+  parseJSON =
+    Data.withObject
+      "OutputConfigInput"
+      ( \x ->
+          OutputConfigInput' Prelude.<$> (x Data..: "S3Data")
+      )
+
+instance Prelude.Hashable OutputConfigInput where
+  hashWithSalt _salt OutputConfigInput' {..} =
+    _salt `Prelude.hashWithSalt` s3Data
+
+instance Prelude.NFData OutputConfigInput where
+  rnf OutputConfigInput' {..} = Prelude.rnf s3Data
+
+instance Data.ToJSON OutputConfigInput where
+  toJSON OutputConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("S3Data" Data..= s3Data)]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/OutputResolutionResamplingInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/OutputResolutionResamplingInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/OutputResolutionResamplingInput.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.SageMakerGeoSpatial.Types.OutputResolutionResamplingInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.OutputResolutionResamplingInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.UserDefined
+
+-- |
+--
+-- /See:/ 'newOutputResolutionResamplingInput' smart constructor.
+data OutputResolutionResamplingInput = OutputResolutionResamplingInput'
+  { userDefined :: UserDefined
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputResolutionResamplingInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'userDefined', 'outputResolutionResamplingInput_userDefined' -
+newOutputResolutionResamplingInput ::
+  -- | 'userDefined'
+  UserDefined ->
+  OutputResolutionResamplingInput
+newOutputResolutionResamplingInput pUserDefined_ =
+  OutputResolutionResamplingInput'
+    { userDefined =
+        pUserDefined_
+    }
+
+outputResolutionResamplingInput_userDefined :: Lens.Lens' OutputResolutionResamplingInput UserDefined
+outputResolutionResamplingInput_userDefined = Lens.lens (\OutputResolutionResamplingInput' {userDefined} -> userDefined) (\s@OutputResolutionResamplingInput' {} a -> s {userDefined = a} :: OutputResolutionResamplingInput)
+
+instance
+  Data.FromJSON
+    OutputResolutionResamplingInput
+  where
+  parseJSON =
+    Data.withObject
+      "OutputResolutionResamplingInput"
+      ( \x ->
+          OutputResolutionResamplingInput'
+            Prelude.<$> (x Data..: "UserDefined")
+      )
+
+instance
+  Prelude.Hashable
+    OutputResolutionResamplingInput
+  where
+  hashWithSalt
+    _salt
+    OutputResolutionResamplingInput' {..} =
+      _salt `Prelude.hashWithSalt` userDefined
+
+instance
+  Prelude.NFData
+    OutputResolutionResamplingInput
+  where
+  rnf OutputResolutionResamplingInput' {..} =
+    Prelude.rnf userDefined
+
+instance Data.ToJSON OutputResolutionResamplingInput where
+  toJSON OutputResolutionResamplingInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("UserDefined" Data..= userDefined)]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/OutputResolutionStackInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/OutputResolutionStackInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/OutputResolutionStackInput.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.SageMakerGeoSpatial.Types.OutputResolutionStackInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.OutputResolutionStackInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.PredefinedResolution
+import Amazonka.SageMakerGeoSpatial.Types.UserDefined
+
+-- |
+--
+-- /See:/ 'newOutputResolutionStackInput' smart constructor.
+data OutputResolutionStackInput = OutputResolutionStackInput'
+  { predefined :: Prelude.Maybe PredefinedResolution,
+    userDefined :: Prelude.Maybe UserDefined
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputResolutionStackInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'predefined', 'outputResolutionStackInput_predefined' -
+--
+-- 'userDefined', 'outputResolutionStackInput_userDefined' -
+newOutputResolutionStackInput ::
+  OutputResolutionStackInput
+newOutputResolutionStackInput =
+  OutputResolutionStackInput'
+    { predefined =
+        Prelude.Nothing,
+      userDefined = Prelude.Nothing
+    }
+
+outputResolutionStackInput_predefined :: Lens.Lens' OutputResolutionStackInput (Prelude.Maybe PredefinedResolution)
+outputResolutionStackInput_predefined = Lens.lens (\OutputResolutionStackInput' {predefined} -> predefined) (\s@OutputResolutionStackInput' {} a -> s {predefined = a} :: OutputResolutionStackInput)
+
+outputResolutionStackInput_userDefined :: Lens.Lens' OutputResolutionStackInput (Prelude.Maybe UserDefined)
+outputResolutionStackInput_userDefined = Lens.lens (\OutputResolutionStackInput' {userDefined} -> userDefined) (\s@OutputResolutionStackInput' {} a -> s {userDefined = a} :: OutputResolutionStackInput)
+
+instance Data.FromJSON OutputResolutionStackInput where
+  parseJSON =
+    Data.withObject
+      "OutputResolutionStackInput"
+      ( \x ->
+          OutputResolutionStackInput'
+            Prelude.<$> (x Data..:? "Predefined")
+            Prelude.<*> (x Data..:? "UserDefined")
+      )
+
+instance Prelude.Hashable OutputResolutionStackInput where
+  hashWithSalt _salt OutputResolutionStackInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` predefined
+      `Prelude.hashWithSalt` userDefined
+
+instance Prelude.NFData OutputResolutionStackInput where
+  rnf OutputResolutionStackInput' {..} =
+    Prelude.rnf predefined
+      `Prelude.seq` Prelude.rnf userDefined
+
+instance Data.ToJSON OutputResolutionStackInput where
+  toJSON OutputResolutionStackInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Predefined" Data..=) Prelude.<$> predefined,
+            ("UserDefined" Data..=) Prelude.<$> userDefined
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/OutputType.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/OutputType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/OutputType.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.SageMakerGeoSpatial.Types.OutputType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.OutputType
+  ( OutputType
+      ( ..,
+        OutputType_FLOAT32,
+        OutputType_FLOAT64,
+        OutputType_INT16,
+        OutputType_INT32,
+        OutputType_UINT16
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OutputType = OutputType'
+  { fromOutputType ::
+      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 OutputType_FLOAT32 :: OutputType
+pattern OutputType_FLOAT32 = OutputType' "FLOAT32"
+
+pattern OutputType_FLOAT64 :: OutputType
+pattern OutputType_FLOAT64 = OutputType' "FLOAT64"
+
+pattern OutputType_INT16 :: OutputType
+pattern OutputType_INT16 = OutputType' "INT16"
+
+pattern OutputType_INT32 :: OutputType
+pattern OutputType_INT32 = OutputType' "INT32"
+
+pattern OutputType_UINT16 :: OutputType
+pattern OutputType_UINT16 = OutputType' "UINT16"
+
+{-# COMPLETE
+  OutputType_FLOAT32,
+  OutputType_FLOAT64,
+  OutputType_INT16,
+  OutputType_INT32,
+  OutputType_UINT16,
+  OutputType'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/PlatformInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/PlatformInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/PlatformInput.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.SageMakerGeoSpatial.Types.PlatformInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.PlatformInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.ComparisonOperator
+
+-- |
+--
+-- /See:/ 'newPlatformInput' smart constructor.
+data PlatformInput = PlatformInput'
+  { comparisonOperator :: Prelude.Maybe ComparisonOperator,
+    -- | The value of the platform.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PlatformInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'comparisonOperator', 'platformInput_comparisonOperator' -
+--
+-- 'value', 'platformInput_value' - The value of the platform.
+newPlatformInput ::
+  -- | 'value'
+  Prelude.Text ->
+  PlatformInput
+newPlatformInput pValue_ =
+  PlatformInput'
+    { comparisonOperator =
+        Prelude.Nothing,
+      value = pValue_
+    }
+
+platformInput_comparisonOperator :: Lens.Lens' PlatformInput (Prelude.Maybe ComparisonOperator)
+platformInput_comparisonOperator = Lens.lens (\PlatformInput' {comparisonOperator} -> comparisonOperator) (\s@PlatformInput' {} a -> s {comparisonOperator = a} :: PlatformInput)
+
+-- | The value of the platform.
+platformInput_value :: Lens.Lens' PlatformInput Prelude.Text
+platformInput_value = Lens.lens (\PlatformInput' {value} -> value) (\s@PlatformInput' {} a -> s {value = a} :: PlatformInput)
+
+instance Data.FromJSON PlatformInput where
+  parseJSON =
+    Data.withObject
+      "PlatformInput"
+      ( \x ->
+          PlatformInput'
+            Prelude.<$> (x Data..:? "ComparisonOperator")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable PlatformInput where
+  hashWithSalt _salt PlatformInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` comparisonOperator
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData PlatformInput where
+  rnf PlatformInput' {..} =
+    Prelude.rnf comparisonOperator
+      `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON PlatformInput where
+  toJSON PlatformInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ComparisonOperator" Data..=)
+              Prelude.<$> comparisonOperator,
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/PolygonGeometryInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/PolygonGeometryInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/PolygonGeometryInput.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.SageMakerGeoSpatial.Types.PolygonGeometryInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.PolygonGeometryInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newPolygonGeometryInput' smart constructor.
+data PolygonGeometryInput = PolygonGeometryInput'
+  { coordinates :: Prelude.NonEmpty (Prelude.NonEmpty (Data.Sensitive (Prelude.NonEmpty Prelude.Double)))
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PolygonGeometryInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'coordinates', 'polygonGeometryInput_coordinates' -
+newPolygonGeometryInput ::
+  -- | 'coordinates'
+  Prelude.NonEmpty (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double)) ->
+  PolygonGeometryInput
+newPolygonGeometryInput pCoordinates_ =
+  PolygonGeometryInput'
+    { coordinates =
+        Lens.coerced Lens.# pCoordinates_
+    }
+
+polygonGeometryInput_coordinates :: Lens.Lens' PolygonGeometryInput (Prelude.NonEmpty (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double)))
+polygonGeometryInput_coordinates = Lens.lens (\PolygonGeometryInput' {coordinates} -> coordinates) (\s@PolygonGeometryInput' {} a -> s {coordinates = a} :: PolygonGeometryInput) Prelude.. Lens.coerced
+
+instance Data.FromJSON PolygonGeometryInput where
+  parseJSON =
+    Data.withObject
+      "PolygonGeometryInput"
+      ( \x ->
+          PolygonGeometryInput'
+            Prelude.<$> (x Data..: "Coordinates")
+      )
+
+instance Prelude.Hashable PolygonGeometryInput where
+  hashWithSalt _salt PolygonGeometryInput' {..} =
+    _salt `Prelude.hashWithSalt` coordinates
+
+instance Prelude.NFData PolygonGeometryInput where
+  rnf PolygonGeometryInput' {..} =
+    Prelude.rnf coordinates
+
+instance Data.ToJSON PolygonGeometryInput where
+  toJSON PolygonGeometryInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Coordinates" Data..= coordinates)]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/PredefinedResolution.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/PredefinedResolution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/PredefinedResolution.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.SageMakerGeoSpatial.Types.PredefinedResolution
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.PredefinedResolution
+  ( PredefinedResolution
+      ( ..,
+        PredefinedResolution_AVERAGE,
+        PredefinedResolution_HIGHEST,
+        PredefinedResolution_LOWEST
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PredefinedResolution = PredefinedResolution'
+  { fromPredefinedResolution ::
+      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 PredefinedResolution_AVERAGE :: PredefinedResolution
+pattern PredefinedResolution_AVERAGE = PredefinedResolution' "AVERAGE"
+
+pattern PredefinedResolution_HIGHEST :: PredefinedResolution
+pattern PredefinedResolution_HIGHEST = PredefinedResolution' "HIGHEST"
+
+pattern PredefinedResolution_LOWEST :: PredefinedResolution
+pattern PredefinedResolution_LOWEST = PredefinedResolution' "LOWEST"
+
+{-# COMPLETE
+  PredefinedResolution_AVERAGE,
+  PredefinedResolution_HIGHEST,
+  PredefinedResolution_LOWEST,
+  PredefinedResolution'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/Properties.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/Properties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/Properties.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.SageMakerGeoSpatial.Types.Properties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.Properties where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newProperties' smart constructor.
+data Properties = Properties'
+  { eoCloudCover :: Prelude.Maybe Prelude.Double,
+    landsatCloudCoverLand :: Prelude.Maybe Prelude.Double,
+    platform :: Prelude.Maybe Prelude.Text,
+    viewOffNadir :: Prelude.Maybe Prelude.Double,
+    viewSunAzimuth :: Prelude.Maybe Prelude.Double,
+    viewSunElevation :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Properties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eoCloudCover', 'properties_eoCloudCover' -
+--
+-- 'landsatCloudCoverLand', 'properties_landsatCloudCoverLand' -
+--
+-- 'platform', 'properties_platform' -
+--
+-- 'viewOffNadir', 'properties_viewOffNadir' -
+--
+-- 'viewSunAzimuth', 'properties_viewSunAzimuth' -
+--
+-- 'viewSunElevation', 'properties_viewSunElevation' -
+newProperties ::
+  Properties
+newProperties =
+  Properties'
+    { eoCloudCover = Prelude.Nothing,
+      landsatCloudCoverLand = Prelude.Nothing,
+      platform = Prelude.Nothing,
+      viewOffNadir = Prelude.Nothing,
+      viewSunAzimuth = Prelude.Nothing,
+      viewSunElevation = Prelude.Nothing
+    }
+
+properties_eoCloudCover :: Lens.Lens' Properties (Prelude.Maybe Prelude.Double)
+properties_eoCloudCover = Lens.lens (\Properties' {eoCloudCover} -> eoCloudCover) (\s@Properties' {} a -> s {eoCloudCover = a} :: Properties)
+
+properties_landsatCloudCoverLand :: Lens.Lens' Properties (Prelude.Maybe Prelude.Double)
+properties_landsatCloudCoverLand = Lens.lens (\Properties' {landsatCloudCoverLand} -> landsatCloudCoverLand) (\s@Properties' {} a -> s {landsatCloudCoverLand = a} :: Properties)
+
+properties_platform :: Lens.Lens' Properties (Prelude.Maybe Prelude.Text)
+properties_platform = Lens.lens (\Properties' {platform} -> platform) (\s@Properties' {} a -> s {platform = a} :: Properties)
+
+properties_viewOffNadir :: Lens.Lens' Properties (Prelude.Maybe Prelude.Double)
+properties_viewOffNadir = Lens.lens (\Properties' {viewOffNadir} -> viewOffNadir) (\s@Properties' {} a -> s {viewOffNadir = a} :: Properties)
+
+properties_viewSunAzimuth :: Lens.Lens' Properties (Prelude.Maybe Prelude.Double)
+properties_viewSunAzimuth = Lens.lens (\Properties' {viewSunAzimuth} -> viewSunAzimuth) (\s@Properties' {} a -> s {viewSunAzimuth = a} :: Properties)
+
+properties_viewSunElevation :: Lens.Lens' Properties (Prelude.Maybe Prelude.Double)
+properties_viewSunElevation = Lens.lens (\Properties' {viewSunElevation} -> viewSunElevation) (\s@Properties' {} a -> s {viewSunElevation = a} :: Properties)
+
+instance Data.FromJSON Properties where
+  parseJSON =
+    Data.withObject
+      "Properties"
+      ( \x ->
+          Properties'
+            Prelude.<$> (x Data..:? "EoCloudCover")
+            Prelude.<*> (x Data..:? "LandsatCloudCoverLand")
+            Prelude.<*> (x Data..:? "Platform")
+            Prelude.<*> (x Data..:? "ViewOffNadir")
+            Prelude.<*> (x Data..:? "ViewSunAzimuth")
+            Prelude.<*> (x Data..:? "ViewSunElevation")
+      )
+
+instance Prelude.Hashable Properties where
+  hashWithSalt _salt Properties' {..} =
+    _salt
+      `Prelude.hashWithSalt` eoCloudCover
+      `Prelude.hashWithSalt` landsatCloudCoverLand
+      `Prelude.hashWithSalt` platform
+      `Prelude.hashWithSalt` viewOffNadir
+      `Prelude.hashWithSalt` viewSunAzimuth
+      `Prelude.hashWithSalt` viewSunElevation
+
+instance Prelude.NFData Properties where
+  rnf Properties' {..} =
+    Prelude.rnf eoCloudCover
+      `Prelude.seq` Prelude.rnf landsatCloudCoverLand
+      `Prelude.seq` Prelude.rnf platform
+      `Prelude.seq` Prelude.rnf viewOffNadir
+      `Prelude.seq` Prelude.rnf viewSunAzimuth
+      `Prelude.seq` Prelude.rnf viewSunElevation
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/Property.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/Property.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/Property.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.SageMakerGeoSpatial.Types.Property
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.Property where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.EoCloudCoverInput
+import Amazonka.SageMakerGeoSpatial.Types.LandsatCloudCoverLandInput
+import Amazonka.SageMakerGeoSpatial.Types.PlatformInput
+import Amazonka.SageMakerGeoSpatial.Types.ViewOffNadirInput
+import Amazonka.SageMakerGeoSpatial.Types.ViewSunAzimuthInput
+import Amazonka.SageMakerGeoSpatial.Types.ViewSunElevationInput
+
+-- |
+--
+-- /See:/ 'newProperty' smart constructor.
+data Property = Property'
+  { eoCloudCover :: Prelude.Maybe EoCloudCoverInput,
+    landsatCloudCoverLand :: Prelude.Maybe LandsatCloudCoverLandInput,
+    platform :: Prelude.Maybe PlatformInput,
+    viewOffNadir :: Prelude.Maybe ViewOffNadirInput,
+    viewSunAzimuth :: Prelude.Maybe ViewSunAzimuthInput,
+    viewSunElevation :: Prelude.Maybe ViewSunElevationInput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Property' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eoCloudCover', 'property_eoCloudCover' -
+--
+-- 'landsatCloudCoverLand', 'property_landsatCloudCoverLand' -
+--
+-- 'platform', 'property_platform' -
+--
+-- 'viewOffNadir', 'property_viewOffNadir' -
+--
+-- 'viewSunAzimuth', 'property_viewSunAzimuth' -
+--
+-- 'viewSunElevation', 'property_viewSunElevation' -
+newProperty ::
+  Property
+newProperty =
+  Property'
+    { eoCloudCover = Prelude.Nothing,
+      landsatCloudCoverLand = Prelude.Nothing,
+      platform = Prelude.Nothing,
+      viewOffNadir = Prelude.Nothing,
+      viewSunAzimuth = Prelude.Nothing,
+      viewSunElevation = Prelude.Nothing
+    }
+
+property_eoCloudCover :: Lens.Lens' Property (Prelude.Maybe EoCloudCoverInput)
+property_eoCloudCover = Lens.lens (\Property' {eoCloudCover} -> eoCloudCover) (\s@Property' {} a -> s {eoCloudCover = a} :: Property)
+
+property_landsatCloudCoverLand :: Lens.Lens' Property (Prelude.Maybe LandsatCloudCoverLandInput)
+property_landsatCloudCoverLand = Lens.lens (\Property' {landsatCloudCoverLand} -> landsatCloudCoverLand) (\s@Property' {} a -> s {landsatCloudCoverLand = a} :: Property)
+
+property_platform :: Lens.Lens' Property (Prelude.Maybe PlatformInput)
+property_platform = Lens.lens (\Property' {platform} -> platform) (\s@Property' {} a -> s {platform = a} :: Property)
+
+property_viewOffNadir :: Lens.Lens' Property (Prelude.Maybe ViewOffNadirInput)
+property_viewOffNadir = Lens.lens (\Property' {viewOffNadir} -> viewOffNadir) (\s@Property' {} a -> s {viewOffNadir = a} :: Property)
+
+property_viewSunAzimuth :: Lens.Lens' Property (Prelude.Maybe ViewSunAzimuthInput)
+property_viewSunAzimuth = Lens.lens (\Property' {viewSunAzimuth} -> viewSunAzimuth) (\s@Property' {} a -> s {viewSunAzimuth = a} :: Property)
+
+property_viewSunElevation :: Lens.Lens' Property (Prelude.Maybe ViewSunElevationInput)
+property_viewSunElevation = Lens.lens (\Property' {viewSunElevation} -> viewSunElevation) (\s@Property' {} a -> s {viewSunElevation = a} :: Property)
+
+instance Data.FromJSON Property where
+  parseJSON =
+    Data.withObject
+      "Property"
+      ( \x ->
+          Property'
+            Prelude.<$> (x Data..:? "EoCloudCover")
+            Prelude.<*> (x Data..:? "LandsatCloudCoverLand")
+            Prelude.<*> (x Data..:? "Platform")
+            Prelude.<*> (x Data..:? "ViewOffNadir")
+            Prelude.<*> (x Data..:? "ViewSunAzimuth")
+            Prelude.<*> (x Data..:? "ViewSunElevation")
+      )
+
+instance Prelude.Hashable Property where
+  hashWithSalt _salt Property' {..} =
+    _salt
+      `Prelude.hashWithSalt` eoCloudCover
+      `Prelude.hashWithSalt` landsatCloudCoverLand
+      `Prelude.hashWithSalt` platform
+      `Prelude.hashWithSalt` viewOffNadir
+      `Prelude.hashWithSalt` viewSunAzimuth
+      `Prelude.hashWithSalt` viewSunElevation
+
+instance Prelude.NFData Property where
+  rnf Property' {..} =
+    Prelude.rnf eoCloudCover
+      `Prelude.seq` Prelude.rnf landsatCloudCoverLand
+      `Prelude.seq` Prelude.rnf platform
+      `Prelude.seq` Prelude.rnf viewOffNadir
+      `Prelude.seq` Prelude.rnf viewSunAzimuth
+      `Prelude.seq` Prelude.rnf viewSunElevation
+
+instance Data.ToJSON Property where
+  toJSON Property' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EoCloudCover" Data..=) Prelude.<$> eoCloudCover,
+            ("LandsatCloudCoverLand" Data..=)
+              Prelude.<$> landsatCloudCoverLand,
+            ("Platform" Data..=) Prelude.<$> platform,
+            ("ViewOffNadir" Data..=) Prelude.<$> viewOffNadir,
+            ("ViewSunAzimuth" Data..=)
+              Prelude.<$> viewSunAzimuth,
+            ("ViewSunElevation" Data..=)
+              Prelude.<$> viewSunElevation
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/PropertyFilter.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/PropertyFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/PropertyFilter.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.SageMakerGeoSpatial.Types.PropertyFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.PropertyFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.Property
+
+-- |
+--
+-- /See:/ 'newPropertyFilter' smart constructor.
+data PropertyFilter = PropertyFilter'
+  { property :: Property
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PropertyFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'property', 'propertyFilter_property' -
+newPropertyFilter ::
+  -- | 'property'
+  Property ->
+  PropertyFilter
+newPropertyFilter pProperty_ =
+  PropertyFilter' {property = pProperty_}
+
+propertyFilter_property :: Lens.Lens' PropertyFilter Property
+propertyFilter_property = Lens.lens (\PropertyFilter' {property} -> property) (\s@PropertyFilter' {} a -> s {property = a} :: PropertyFilter)
+
+instance Data.FromJSON PropertyFilter where
+  parseJSON =
+    Data.withObject
+      "PropertyFilter"
+      ( \x ->
+          PropertyFilter' Prelude.<$> (x Data..: "Property")
+      )
+
+instance Prelude.Hashable PropertyFilter where
+  hashWithSalt _salt PropertyFilter' {..} =
+    _salt `Prelude.hashWithSalt` property
+
+instance Prelude.NFData PropertyFilter where
+  rnf PropertyFilter' {..} = Prelude.rnf property
+
+instance Data.ToJSON PropertyFilter where
+  toJSON PropertyFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Property" Data..= property)]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/PropertyFilters.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/PropertyFilters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/PropertyFilters.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.SageMakerGeoSpatial.Types.PropertyFilters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.PropertyFilters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.LogicalOperator
+import Amazonka.SageMakerGeoSpatial.Types.PropertyFilter
+
+-- |
+--
+-- /See:/ 'newPropertyFilters' smart constructor.
+data PropertyFilters = PropertyFilters'
+  { logicalOperator :: Prelude.Maybe LogicalOperator,
+    properties :: Prelude.Maybe [PropertyFilter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PropertyFilters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logicalOperator', 'propertyFilters_logicalOperator' -
+--
+-- 'properties', 'propertyFilters_properties' -
+newPropertyFilters ::
+  PropertyFilters
+newPropertyFilters =
+  PropertyFilters'
+    { logicalOperator = Prelude.Nothing,
+      properties = Prelude.Nothing
+    }
+
+propertyFilters_logicalOperator :: Lens.Lens' PropertyFilters (Prelude.Maybe LogicalOperator)
+propertyFilters_logicalOperator = Lens.lens (\PropertyFilters' {logicalOperator} -> logicalOperator) (\s@PropertyFilters' {} a -> s {logicalOperator = a} :: PropertyFilters)
+
+propertyFilters_properties :: Lens.Lens' PropertyFilters (Prelude.Maybe [PropertyFilter])
+propertyFilters_properties = Lens.lens (\PropertyFilters' {properties} -> properties) (\s@PropertyFilters' {} a -> s {properties = a} :: PropertyFilters) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PropertyFilters where
+  parseJSON =
+    Data.withObject
+      "PropertyFilters"
+      ( \x ->
+          PropertyFilters'
+            Prelude.<$> (x Data..:? "LogicalOperator")
+            Prelude.<*> (x Data..:? "Properties" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable PropertyFilters where
+  hashWithSalt _salt PropertyFilters' {..} =
+    _salt
+      `Prelude.hashWithSalt` logicalOperator
+      `Prelude.hashWithSalt` properties
+
+instance Prelude.NFData PropertyFilters where
+  rnf PropertyFilters' {..} =
+    Prelude.rnf logicalOperator
+      `Prelude.seq` Prelude.rnf properties
+
+instance Data.ToJSON PropertyFilters where
+  toJSON PropertyFilters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LogicalOperator" Data..=)
+              Prelude.<$> logicalOperator,
+            ("Properties" Data..=) Prelude.<$> properties
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionMetadata.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionMetadata.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.SageMakerGeoSpatial.Types.RasterDataCollectionMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionMetadata where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.DataCollectionType
+import Amazonka.SageMakerGeoSpatial.Types.Filter
+
+-- | Response object containing details for a specific RasterDataCollection.
+--
+-- /See:/ 'newRasterDataCollectionMetadata' smart constructor.
+data RasterDataCollectionMetadata = RasterDataCollectionMetadata'
+  { -- | The description URL of the raster data collection.
+    descriptionPageUrl :: Prelude.Maybe Prelude.Text,
+    -- | Each tag consists of a key and a value.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the raster data collection.
+    arn :: Prelude.Text,
+    -- | A description of the raster data collection.
+    description :: Prelude.Text,
+    -- | The name of the raster data collection.
+    name :: Prelude.Text,
+    supportedFilters :: [Filter],
+    -- | The type of raster data collection.
+    type' :: DataCollectionType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RasterDataCollectionMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'descriptionPageUrl', 'rasterDataCollectionMetadata_descriptionPageUrl' - The description URL of the raster data collection.
+--
+-- 'tags', 'rasterDataCollectionMetadata_tags' - Each tag consists of a key and a value.
+--
+-- 'arn', 'rasterDataCollectionMetadata_arn' - The Amazon Resource Name (ARN) of the raster data collection.
+--
+-- 'description', 'rasterDataCollectionMetadata_description' - A description of the raster data collection.
+--
+-- 'name', 'rasterDataCollectionMetadata_name' - The name of the raster data collection.
+--
+-- 'supportedFilters', 'rasterDataCollectionMetadata_supportedFilters' -
+--
+-- 'type'', 'rasterDataCollectionMetadata_type' - The type of raster data collection.
+newRasterDataCollectionMetadata ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'description'
+  Prelude.Text ->
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'type''
+  DataCollectionType ->
+  RasterDataCollectionMetadata
+newRasterDataCollectionMetadata
+  pArn_
+  pDescription_
+  pName_
+  pType_ =
+    RasterDataCollectionMetadata'
+      { descriptionPageUrl =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        arn = pArn_,
+        description = pDescription_,
+        name = pName_,
+        supportedFilters = Prelude.mempty,
+        type' = pType_
+      }
+
+-- | The description URL of the raster data collection.
+rasterDataCollectionMetadata_descriptionPageUrl :: Lens.Lens' RasterDataCollectionMetadata (Prelude.Maybe Prelude.Text)
+rasterDataCollectionMetadata_descriptionPageUrl = Lens.lens (\RasterDataCollectionMetadata' {descriptionPageUrl} -> descriptionPageUrl) (\s@RasterDataCollectionMetadata' {} a -> s {descriptionPageUrl = a} :: RasterDataCollectionMetadata)
+
+-- | Each tag consists of a key and a value.
+rasterDataCollectionMetadata_tags :: Lens.Lens' RasterDataCollectionMetadata (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+rasterDataCollectionMetadata_tags = Lens.lens (\RasterDataCollectionMetadata' {tags} -> tags) (\s@RasterDataCollectionMetadata' {} a -> s {tags = a} :: RasterDataCollectionMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the raster data collection.
+rasterDataCollectionMetadata_arn :: Lens.Lens' RasterDataCollectionMetadata Prelude.Text
+rasterDataCollectionMetadata_arn = Lens.lens (\RasterDataCollectionMetadata' {arn} -> arn) (\s@RasterDataCollectionMetadata' {} a -> s {arn = a} :: RasterDataCollectionMetadata)
+
+-- | A description of the raster data collection.
+rasterDataCollectionMetadata_description :: Lens.Lens' RasterDataCollectionMetadata Prelude.Text
+rasterDataCollectionMetadata_description = Lens.lens (\RasterDataCollectionMetadata' {description} -> description) (\s@RasterDataCollectionMetadata' {} a -> s {description = a} :: RasterDataCollectionMetadata)
+
+-- | The name of the raster data collection.
+rasterDataCollectionMetadata_name :: Lens.Lens' RasterDataCollectionMetadata Prelude.Text
+rasterDataCollectionMetadata_name = Lens.lens (\RasterDataCollectionMetadata' {name} -> name) (\s@RasterDataCollectionMetadata' {} a -> s {name = a} :: RasterDataCollectionMetadata)
+
+rasterDataCollectionMetadata_supportedFilters :: Lens.Lens' RasterDataCollectionMetadata [Filter]
+rasterDataCollectionMetadata_supportedFilters = Lens.lens (\RasterDataCollectionMetadata' {supportedFilters} -> supportedFilters) (\s@RasterDataCollectionMetadata' {} a -> s {supportedFilters = a} :: RasterDataCollectionMetadata) Prelude.. Lens.coerced
+
+-- | The type of raster data collection.
+rasterDataCollectionMetadata_type :: Lens.Lens' RasterDataCollectionMetadata DataCollectionType
+rasterDataCollectionMetadata_type = Lens.lens (\RasterDataCollectionMetadata' {type'} -> type') (\s@RasterDataCollectionMetadata' {} a -> s {type' = a} :: RasterDataCollectionMetadata)
+
+instance Data.FromJSON RasterDataCollectionMetadata where
+  parseJSON =
+    Data.withObject
+      "RasterDataCollectionMetadata"
+      ( \x ->
+          RasterDataCollectionMetadata'
+            Prelude.<$> (x Data..:? "DescriptionPageUrl")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "Arn")
+            Prelude.<*> (x Data..: "Description")
+            Prelude.<*> (x Data..: "Name")
+            Prelude.<*> ( x
+                            Data..:? "SupportedFilters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance
+  Prelude.Hashable
+    RasterDataCollectionMetadata
+  where
+  hashWithSalt _salt RasterDataCollectionMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` descriptionPageUrl
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` supportedFilters
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData RasterDataCollectionMetadata where
+  rnf RasterDataCollectionMetadata' {..} =
+    Prelude.rnf descriptionPageUrl
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf supportedFilters
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionQueryInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionQueryInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionQueryInput.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.SageMakerGeoSpatial.Types.RasterDataCollectionQueryInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.AreaOfInterest
+import Amazonka.SageMakerGeoSpatial.Types.PropertyFilters
+import Amazonka.SageMakerGeoSpatial.Types.TimeRangeFilterInput
+
+-- |
+--
+-- /See:/ 'newRasterDataCollectionQueryInput' smart constructor.
+data RasterDataCollectionQueryInput = RasterDataCollectionQueryInput'
+  { -- | The area of interest being queried for the raster data collection.
+    areaOfInterest :: Prelude.Maybe AreaOfInterest,
+    propertyFilters :: Prelude.Maybe PropertyFilters,
+    -- | The Amazon Resource Name (ARN) of the raster data collection.
+    rasterDataCollectionArn :: Prelude.Text,
+    timeRangeFilter :: Data.Sensitive TimeRangeFilterInput
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RasterDataCollectionQueryInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'areaOfInterest', 'rasterDataCollectionQueryInput_areaOfInterest' - The area of interest being queried for the raster data collection.
+--
+-- 'propertyFilters', 'rasterDataCollectionQueryInput_propertyFilters' -
+--
+-- 'rasterDataCollectionArn', 'rasterDataCollectionQueryInput_rasterDataCollectionArn' - The Amazon Resource Name (ARN) of the raster data collection.
+--
+-- 'timeRangeFilter', 'rasterDataCollectionQueryInput_timeRangeFilter' -
+newRasterDataCollectionQueryInput ::
+  -- | 'rasterDataCollectionArn'
+  Prelude.Text ->
+  -- | 'timeRangeFilter'
+  TimeRangeFilterInput ->
+  RasterDataCollectionQueryInput
+newRasterDataCollectionQueryInput
+  pRasterDataCollectionArn_
+  pTimeRangeFilter_ =
+    RasterDataCollectionQueryInput'
+      { areaOfInterest =
+          Prelude.Nothing,
+        propertyFilters = Prelude.Nothing,
+        rasterDataCollectionArn =
+          pRasterDataCollectionArn_,
+        timeRangeFilter =
+          Data._Sensitive Lens.# pTimeRangeFilter_
+      }
+
+-- | The area of interest being queried for the raster data collection.
+rasterDataCollectionQueryInput_areaOfInterest :: Lens.Lens' RasterDataCollectionQueryInput (Prelude.Maybe AreaOfInterest)
+rasterDataCollectionQueryInput_areaOfInterest = Lens.lens (\RasterDataCollectionQueryInput' {areaOfInterest} -> areaOfInterest) (\s@RasterDataCollectionQueryInput' {} a -> s {areaOfInterest = a} :: RasterDataCollectionQueryInput)
+
+rasterDataCollectionQueryInput_propertyFilters :: Lens.Lens' RasterDataCollectionQueryInput (Prelude.Maybe PropertyFilters)
+rasterDataCollectionQueryInput_propertyFilters = Lens.lens (\RasterDataCollectionQueryInput' {propertyFilters} -> propertyFilters) (\s@RasterDataCollectionQueryInput' {} a -> s {propertyFilters = a} :: RasterDataCollectionQueryInput)
+
+-- | The Amazon Resource Name (ARN) of the raster data collection.
+rasterDataCollectionQueryInput_rasterDataCollectionArn :: Lens.Lens' RasterDataCollectionQueryInput Prelude.Text
+rasterDataCollectionQueryInput_rasterDataCollectionArn = Lens.lens (\RasterDataCollectionQueryInput' {rasterDataCollectionArn} -> rasterDataCollectionArn) (\s@RasterDataCollectionQueryInput' {} a -> s {rasterDataCollectionArn = a} :: RasterDataCollectionQueryInput)
+
+rasterDataCollectionQueryInput_timeRangeFilter :: Lens.Lens' RasterDataCollectionQueryInput TimeRangeFilterInput
+rasterDataCollectionQueryInput_timeRangeFilter = Lens.lens (\RasterDataCollectionQueryInput' {timeRangeFilter} -> timeRangeFilter) (\s@RasterDataCollectionQueryInput' {} a -> s {timeRangeFilter = a} :: RasterDataCollectionQueryInput) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    RasterDataCollectionQueryInput
+  where
+  hashWithSalt
+    _salt
+    RasterDataCollectionQueryInput' {..} =
+      _salt
+        `Prelude.hashWithSalt` areaOfInterest
+        `Prelude.hashWithSalt` propertyFilters
+        `Prelude.hashWithSalt` rasterDataCollectionArn
+        `Prelude.hashWithSalt` timeRangeFilter
+
+instance
+  Prelude.NFData
+    RasterDataCollectionQueryInput
+  where
+  rnf RasterDataCollectionQueryInput' {..} =
+    Prelude.rnf areaOfInterest
+      `Prelude.seq` Prelude.rnf propertyFilters
+      `Prelude.seq` Prelude.rnf rasterDataCollectionArn
+      `Prelude.seq` Prelude.rnf timeRangeFilter
+
+instance Data.ToJSON RasterDataCollectionQueryInput where
+  toJSON RasterDataCollectionQueryInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AreaOfInterest" Data..=)
+              Prelude.<$> areaOfInterest,
+            ("PropertyFilters" Data..=)
+              Prelude.<$> propertyFilters,
+            Prelude.Just
+              ( "RasterDataCollectionArn"
+                  Data..= rasterDataCollectionArn
+              ),
+            Prelude.Just
+              ("TimeRangeFilter" Data..= timeRangeFilter)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionQueryOutput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionQueryOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionQueryOutput.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.SageMakerGeoSpatial.Types.RasterDataCollectionQueryOutput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryOutput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.AreaOfInterest
+import Amazonka.SageMakerGeoSpatial.Types.PropertyFilters
+import Amazonka.SageMakerGeoSpatial.Types.TimeRangeFilterInput
+
+-- |
+--
+-- /See:/ 'newRasterDataCollectionQueryOutput' smart constructor.
+data RasterDataCollectionQueryOutput = RasterDataCollectionQueryOutput'
+  { areaOfInterest :: Prelude.Maybe AreaOfInterest,
+    propertyFilters :: Prelude.Maybe PropertyFilters,
+    rasterDataCollectionArn :: Prelude.Text,
+    -- | The name of the raster data collection.
+    rasterDataCollectionName :: Prelude.Text,
+    timeRangeFilter :: Data.Sensitive TimeRangeFilterInput
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RasterDataCollectionQueryOutput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'areaOfInterest', 'rasterDataCollectionQueryOutput_areaOfInterest' -
+--
+-- 'propertyFilters', 'rasterDataCollectionQueryOutput_propertyFilters' -
+--
+-- 'rasterDataCollectionArn', 'rasterDataCollectionQueryOutput_rasterDataCollectionArn' -
+--
+-- 'rasterDataCollectionName', 'rasterDataCollectionQueryOutput_rasterDataCollectionName' - The name of the raster data collection.
+--
+-- 'timeRangeFilter', 'rasterDataCollectionQueryOutput_timeRangeFilter' -
+newRasterDataCollectionQueryOutput ::
+  -- | 'rasterDataCollectionArn'
+  Prelude.Text ->
+  -- | 'rasterDataCollectionName'
+  Prelude.Text ->
+  -- | 'timeRangeFilter'
+  TimeRangeFilterInput ->
+  RasterDataCollectionQueryOutput
+newRasterDataCollectionQueryOutput
+  pRasterDataCollectionArn_
+  pRasterDataCollectionName_
+  pTimeRangeFilter_ =
+    RasterDataCollectionQueryOutput'
+      { areaOfInterest =
+          Prelude.Nothing,
+        propertyFilters = Prelude.Nothing,
+        rasterDataCollectionArn =
+          pRasterDataCollectionArn_,
+        rasterDataCollectionName =
+          pRasterDataCollectionName_,
+        timeRangeFilter =
+          Data._Sensitive Lens.# pTimeRangeFilter_
+      }
+
+rasterDataCollectionQueryOutput_areaOfInterest :: Lens.Lens' RasterDataCollectionQueryOutput (Prelude.Maybe AreaOfInterest)
+rasterDataCollectionQueryOutput_areaOfInterest = Lens.lens (\RasterDataCollectionQueryOutput' {areaOfInterest} -> areaOfInterest) (\s@RasterDataCollectionQueryOutput' {} a -> s {areaOfInterest = a} :: RasterDataCollectionQueryOutput)
+
+rasterDataCollectionQueryOutput_propertyFilters :: Lens.Lens' RasterDataCollectionQueryOutput (Prelude.Maybe PropertyFilters)
+rasterDataCollectionQueryOutput_propertyFilters = Lens.lens (\RasterDataCollectionQueryOutput' {propertyFilters} -> propertyFilters) (\s@RasterDataCollectionQueryOutput' {} a -> s {propertyFilters = a} :: RasterDataCollectionQueryOutput)
+
+rasterDataCollectionQueryOutput_rasterDataCollectionArn :: Lens.Lens' RasterDataCollectionQueryOutput Prelude.Text
+rasterDataCollectionQueryOutput_rasterDataCollectionArn = Lens.lens (\RasterDataCollectionQueryOutput' {rasterDataCollectionArn} -> rasterDataCollectionArn) (\s@RasterDataCollectionQueryOutput' {} a -> s {rasterDataCollectionArn = a} :: RasterDataCollectionQueryOutput)
+
+-- | The name of the raster data collection.
+rasterDataCollectionQueryOutput_rasterDataCollectionName :: Lens.Lens' RasterDataCollectionQueryOutput Prelude.Text
+rasterDataCollectionQueryOutput_rasterDataCollectionName = Lens.lens (\RasterDataCollectionQueryOutput' {rasterDataCollectionName} -> rasterDataCollectionName) (\s@RasterDataCollectionQueryOutput' {} a -> s {rasterDataCollectionName = a} :: RasterDataCollectionQueryOutput)
+
+rasterDataCollectionQueryOutput_timeRangeFilter :: Lens.Lens' RasterDataCollectionQueryOutput TimeRangeFilterInput
+rasterDataCollectionQueryOutput_timeRangeFilter = Lens.lens (\RasterDataCollectionQueryOutput' {timeRangeFilter} -> timeRangeFilter) (\s@RasterDataCollectionQueryOutput' {} a -> s {timeRangeFilter = a} :: RasterDataCollectionQueryOutput) Prelude.. Data._Sensitive
+
+instance
+  Data.FromJSON
+    RasterDataCollectionQueryOutput
+  where
+  parseJSON =
+    Data.withObject
+      "RasterDataCollectionQueryOutput"
+      ( \x ->
+          RasterDataCollectionQueryOutput'
+            Prelude.<$> (x Data..:? "AreaOfInterest")
+            Prelude.<*> (x Data..:? "PropertyFilters")
+            Prelude.<*> (x Data..: "RasterDataCollectionArn")
+            Prelude.<*> (x Data..: "RasterDataCollectionName")
+            Prelude.<*> (x Data..: "TimeRangeFilter")
+      )
+
+instance
+  Prelude.Hashable
+    RasterDataCollectionQueryOutput
+  where
+  hashWithSalt
+    _salt
+    RasterDataCollectionQueryOutput' {..} =
+      _salt
+        `Prelude.hashWithSalt` areaOfInterest
+        `Prelude.hashWithSalt` propertyFilters
+        `Prelude.hashWithSalt` rasterDataCollectionArn
+        `Prelude.hashWithSalt` rasterDataCollectionName
+        `Prelude.hashWithSalt` timeRangeFilter
+
+instance
+  Prelude.NFData
+    RasterDataCollectionQueryOutput
+  where
+  rnf RasterDataCollectionQueryOutput' {..} =
+    Prelude.rnf areaOfInterest
+      `Prelude.seq` Prelude.rnf propertyFilters
+      `Prelude.seq` Prelude.rnf rasterDataCollectionArn
+      `Prelude.seq` Prelude.rnf rasterDataCollectionName
+      `Prelude.seq` Prelude.rnf timeRangeFilter
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionQueryWithBandFilterInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionQueryWithBandFilterInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/RasterDataCollectionQueryWithBandFilterInput.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.SageMakerGeoSpatial.Types.RasterDataCollectionQueryWithBandFilterInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.RasterDataCollectionQueryWithBandFilterInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.AreaOfInterest
+import Amazonka.SageMakerGeoSpatial.Types.PropertyFilters
+import Amazonka.SageMakerGeoSpatial.Types.TimeRangeFilterInput
+
+-- | This is a RasterDataCollectionQueryInput containing AreaOfInterest, Time
+-- Range filter and Property filters.
+--
+-- /See:/ 'newRasterDataCollectionQueryWithBandFilterInput' smart constructor.
+data RasterDataCollectionQueryWithBandFilterInput = RasterDataCollectionQueryWithBandFilterInput'
+  { areaOfInterest :: Prelude.Maybe AreaOfInterest,
+    bandFilter :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    propertyFilters :: Prelude.Maybe PropertyFilters,
+    timeRangeFilter :: Data.Sensitive TimeRangeFilterInput
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RasterDataCollectionQueryWithBandFilterInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'areaOfInterest', 'rasterDataCollectionQueryWithBandFilterInput_areaOfInterest' -
+--
+-- 'bandFilter', 'rasterDataCollectionQueryWithBandFilterInput_bandFilter' -
+--
+-- 'propertyFilters', 'rasterDataCollectionQueryWithBandFilterInput_propertyFilters' -
+--
+-- 'timeRangeFilter', 'rasterDataCollectionQueryWithBandFilterInput_timeRangeFilter' -
+newRasterDataCollectionQueryWithBandFilterInput ::
+  -- | 'timeRangeFilter'
+  TimeRangeFilterInput ->
+  RasterDataCollectionQueryWithBandFilterInput
+newRasterDataCollectionQueryWithBandFilterInput
+  pTimeRangeFilter_ =
+    RasterDataCollectionQueryWithBandFilterInput'
+      { areaOfInterest =
+          Prelude.Nothing,
+        bandFilter = Prelude.Nothing,
+        propertyFilters =
+          Prelude.Nothing,
+        timeRangeFilter =
+          Data._Sensitive
+            Lens.# pTimeRangeFilter_
+      }
+
+rasterDataCollectionQueryWithBandFilterInput_areaOfInterest :: Lens.Lens' RasterDataCollectionQueryWithBandFilterInput (Prelude.Maybe AreaOfInterest)
+rasterDataCollectionQueryWithBandFilterInput_areaOfInterest = Lens.lens (\RasterDataCollectionQueryWithBandFilterInput' {areaOfInterest} -> areaOfInterest) (\s@RasterDataCollectionQueryWithBandFilterInput' {} a -> s {areaOfInterest = a} :: RasterDataCollectionQueryWithBandFilterInput)
+
+rasterDataCollectionQueryWithBandFilterInput_bandFilter :: Lens.Lens' RasterDataCollectionQueryWithBandFilterInput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+rasterDataCollectionQueryWithBandFilterInput_bandFilter = Lens.lens (\RasterDataCollectionQueryWithBandFilterInput' {bandFilter} -> bandFilter) (\s@RasterDataCollectionQueryWithBandFilterInput' {} a -> s {bandFilter = a} :: RasterDataCollectionQueryWithBandFilterInput) Prelude.. Lens.mapping Lens.coerced
+
+rasterDataCollectionQueryWithBandFilterInput_propertyFilters :: Lens.Lens' RasterDataCollectionQueryWithBandFilterInput (Prelude.Maybe PropertyFilters)
+rasterDataCollectionQueryWithBandFilterInput_propertyFilters = Lens.lens (\RasterDataCollectionQueryWithBandFilterInput' {propertyFilters} -> propertyFilters) (\s@RasterDataCollectionQueryWithBandFilterInput' {} a -> s {propertyFilters = a} :: RasterDataCollectionQueryWithBandFilterInput)
+
+rasterDataCollectionQueryWithBandFilterInput_timeRangeFilter :: Lens.Lens' RasterDataCollectionQueryWithBandFilterInput TimeRangeFilterInput
+rasterDataCollectionQueryWithBandFilterInput_timeRangeFilter = Lens.lens (\RasterDataCollectionQueryWithBandFilterInput' {timeRangeFilter} -> timeRangeFilter) (\s@RasterDataCollectionQueryWithBandFilterInput' {} a -> s {timeRangeFilter = a} :: RasterDataCollectionQueryWithBandFilterInput) Prelude.. Data._Sensitive
+
+instance
+  Prelude.Hashable
+    RasterDataCollectionQueryWithBandFilterInput
+  where
+  hashWithSalt
+    _salt
+    RasterDataCollectionQueryWithBandFilterInput' {..} =
+      _salt
+        `Prelude.hashWithSalt` areaOfInterest
+        `Prelude.hashWithSalt` bandFilter
+        `Prelude.hashWithSalt` propertyFilters
+        `Prelude.hashWithSalt` timeRangeFilter
+
+instance
+  Prelude.NFData
+    RasterDataCollectionQueryWithBandFilterInput
+  where
+  rnf RasterDataCollectionQueryWithBandFilterInput' {..} =
+    Prelude.rnf areaOfInterest
+      `Prelude.seq` Prelude.rnf bandFilter
+      `Prelude.seq` Prelude.rnf propertyFilters
+      `Prelude.seq` Prelude.rnf timeRangeFilter
+
+instance
+  Data.ToJSON
+    RasterDataCollectionQueryWithBandFilterInput
+  where
+  toJSON
+    RasterDataCollectionQueryWithBandFilterInput' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("AreaOfInterest" Data..=)
+                Prelude.<$> areaOfInterest,
+              ("BandFilter" Data..=) Prelude.<$> bandFilter,
+              ("PropertyFilters" Data..=)
+                Prelude.<$> propertyFilters,
+              Prelude.Just
+                ("TimeRangeFilter" Data..= timeRangeFilter)
+            ]
+        )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ResamplingConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ResamplingConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ResamplingConfigInput.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.SageMakerGeoSpatial.Types.ResamplingConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ResamplingConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.AlgorithmNameResampling
+import Amazonka.SageMakerGeoSpatial.Types.OutputResolutionResamplingInput
+
+-- |
+--
+-- /See:/ 'newResamplingConfigInput' smart constructor.
+data ResamplingConfigInput = ResamplingConfigInput'
+  { -- | The name of the algorithm used for resampling.
+    algorithmName :: Prelude.Maybe AlgorithmNameResampling,
+    targetBands :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    outputResolution :: OutputResolutionResamplingInput
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResamplingConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'resamplingConfigInput_algorithmName' - The name of the algorithm used for resampling.
+--
+-- 'targetBands', 'resamplingConfigInput_targetBands' -
+--
+-- 'outputResolution', 'resamplingConfigInput_outputResolution' -
+newResamplingConfigInput ::
+  -- | 'outputResolution'
+  OutputResolutionResamplingInput ->
+  ResamplingConfigInput
+newResamplingConfigInput pOutputResolution_ =
+  ResamplingConfigInput'
+    { algorithmName =
+        Prelude.Nothing,
+      targetBands = Prelude.Nothing,
+      outputResolution = pOutputResolution_
+    }
+
+-- | The name of the algorithm used for resampling.
+resamplingConfigInput_algorithmName :: Lens.Lens' ResamplingConfigInput (Prelude.Maybe AlgorithmNameResampling)
+resamplingConfigInput_algorithmName = Lens.lens (\ResamplingConfigInput' {algorithmName} -> algorithmName) (\s@ResamplingConfigInput' {} a -> s {algorithmName = a} :: ResamplingConfigInput)
+
+resamplingConfigInput_targetBands :: Lens.Lens' ResamplingConfigInput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+resamplingConfigInput_targetBands = Lens.lens (\ResamplingConfigInput' {targetBands} -> targetBands) (\s@ResamplingConfigInput' {} a -> s {targetBands = a} :: ResamplingConfigInput) Prelude.. Lens.mapping Lens.coerced
+
+resamplingConfigInput_outputResolution :: Lens.Lens' ResamplingConfigInput OutputResolutionResamplingInput
+resamplingConfigInput_outputResolution = Lens.lens (\ResamplingConfigInput' {outputResolution} -> outputResolution) (\s@ResamplingConfigInput' {} a -> s {outputResolution = a} :: ResamplingConfigInput)
+
+instance Data.FromJSON ResamplingConfigInput where
+  parseJSON =
+    Data.withObject
+      "ResamplingConfigInput"
+      ( \x ->
+          ResamplingConfigInput'
+            Prelude.<$> (x Data..:? "AlgorithmName")
+            Prelude.<*> (x Data..:? "TargetBands")
+            Prelude.<*> (x Data..: "OutputResolution")
+      )
+
+instance Prelude.Hashable ResamplingConfigInput where
+  hashWithSalt _salt ResamplingConfigInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` algorithmName
+      `Prelude.hashWithSalt` targetBands
+      `Prelude.hashWithSalt` outputResolution
+
+instance Prelude.NFData ResamplingConfigInput where
+  rnf ResamplingConfigInput' {..} =
+    Prelude.rnf algorithmName
+      `Prelude.seq` Prelude.rnf targetBands
+      `Prelude.seq` Prelude.rnf outputResolution
+
+instance Data.ToJSON ResamplingConfigInput where
+  toJSON ResamplingConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AlgorithmName" Data..=) Prelude.<$> algorithmName,
+            ("TargetBands" Data..=) Prelude.<$> targetBands,
+            Prelude.Just
+              ("OutputResolution" Data..= outputResolution)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ReverseGeocodingConfig.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ReverseGeocodingConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ReverseGeocodingConfig.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.SageMakerGeoSpatial.Types.ReverseGeocodingConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ReverseGeocodingConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newReverseGeocodingConfig' smart constructor.
+data ReverseGeocodingConfig = ReverseGeocodingConfig'
+  { xAttributeName :: Prelude.Text,
+    yAttributeName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReverseGeocodingConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'xAttributeName', 'reverseGeocodingConfig_xAttributeName' -
+--
+-- 'yAttributeName', 'reverseGeocodingConfig_yAttributeName' -
+newReverseGeocodingConfig ::
+  -- | 'xAttributeName'
+  Prelude.Text ->
+  -- | 'yAttributeName'
+  Prelude.Text ->
+  ReverseGeocodingConfig
+newReverseGeocodingConfig
+  pXAttributeName_
+  pYAttributeName_ =
+    ReverseGeocodingConfig'
+      { xAttributeName =
+          pXAttributeName_,
+        yAttributeName = pYAttributeName_
+      }
+
+reverseGeocodingConfig_xAttributeName :: Lens.Lens' ReverseGeocodingConfig Prelude.Text
+reverseGeocodingConfig_xAttributeName = Lens.lens (\ReverseGeocodingConfig' {xAttributeName} -> xAttributeName) (\s@ReverseGeocodingConfig' {} a -> s {xAttributeName = a} :: ReverseGeocodingConfig)
+
+reverseGeocodingConfig_yAttributeName :: Lens.Lens' ReverseGeocodingConfig Prelude.Text
+reverseGeocodingConfig_yAttributeName = Lens.lens (\ReverseGeocodingConfig' {yAttributeName} -> yAttributeName) (\s@ReverseGeocodingConfig' {} a -> s {yAttributeName = a} :: ReverseGeocodingConfig)
+
+instance Data.FromJSON ReverseGeocodingConfig where
+  parseJSON =
+    Data.withObject
+      "ReverseGeocodingConfig"
+      ( \x ->
+          ReverseGeocodingConfig'
+            Prelude.<$> (x Data..: "XAttributeName")
+            Prelude.<*> (x Data..: "YAttributeName")
+      )
+
+instance Prelude.Hashable ReverseGeocodingConfig where
+  hashWithSalt _salt ReverseGeocodingConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` xAttributeName
+      `Prelude.hashWithSalt` yAttributeName
+
+instance Prelude.NFData ReverseGeocodingConfig where
+  rnf ReverseGeocodingConfig' {..} =
+    Prelude.rnf xAttributeName
+      `Prelude.seq` Prelude.rnf yAttributeName
+
+instance Data.ToJSON ReverseGeocodingConfig where
+  toJSON ReverseGeocodingConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("XAttributeName" Data..= xAttributeName),
+            Prelude.Just
+              ("YAttributeName" Data..= yAttributeName)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/S3DataInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/S3DataInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/S3DataInput.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.SageMakerGeoSpatial.Types.S3DataInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.S3DataInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.MetadataProvider
+
+-- | Path to Amazon S3 storage location for input data.
+--
+-- /See:/ 'newS3DataInput' smart constructor.
+data S3DataInput = S3DataInput'
+  { -- | The Amazon Key Management Service (KMS) key ID for server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    metadataProvider :: MetadataProvider,
+    -- | The URL to the Amazon S3 input.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3DataInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 's3DataInput_kmsKeyId' - The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+--
+-- 'metadataProvider', 's3DataInput_metadataProvider' -
+--
+-- 's3Uri', 's3DataInput_s3Uri' - The URL to the Amazon S3 input.
+newS3DataInput ::
+  -- | 'metadataProvider'
+  MetadataProvider ->
+  -- | 's3Uri'
+  Prelude.Text ->
+  S3DataInput
+newS3DataInput pMetadataProvider_ pS3Uri_ =
+  S3DataInput'
+    { kmsKeyId = Prelude.Nothing,
+      metadataProvider = pMetadataProvider_,
+      s3Uri = pS3Uri_
+    }
+
+-- | The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+s3DataInput_kmsKeyId :: Lens.Lens' S3DataInput (Prelude.Maybe Prelude.Text)
+s3DataInput_kmsKeyId = Lens.lens (\S3DataInput' {kmsKeyId} -> kmsKeyId) (\s@S3DataInput' {} a -> s {kmsKeyId = a} :: S3DataInput)
+
+s3DataInput_metadataProvider :: Lens.Lens' S3DataInput MetadataProvider
+s3DataInput_metadataProvider = Lens.lens (\S3DataInput' {metadataProvider} -> metadataProvider) (\s@S3DataInput' {} a -> s {metadataProvider = a} :: S3DataInput)
+
+-- | The URL to the Amazon S3 input.
+s3DataInput_s3Uri :: Lens.Lens' S3DataInput Prelude.Text
+s3DataInput_s3Uri = Lens.lens (\S3DataInput' {s3Uri} -> s3Uri) (\s@S3DataInput' {} a -> s {s3Uri = a} :: S3DataInput)
+
+instance Data.FromJSON S3DataInput where
+  parseJSON =
+    Data.withObject
+      "S3DataInput"
+      ( \x ->
+          S3DataInput'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "MetadataProvider")
+            Prelude.<*> (x Data..: "S3Uri")
+      )
+
+instance Prelude.Hashable S3DataInput where
+  hashWithSalt _salt S3DataInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` metadataProvider
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData S3DataInput where
+  rnf S3DataInput' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf metadataProvider
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON S3DataInput where
+  toJSON S3DataInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just
+              ("MetadataProvider" Data..= metadataProvider),
+            Prelude.Just ("S3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/SortOrder.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/SortOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/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.SageMakerGeoSpatial.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.SageMakerGeoSpatial.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/SageMakerGeoSpatial/Types/StackConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/StackConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/StackConfigInput.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.SageMakerGeoSpatial.Types.StackConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.StackConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.OutputResolutionStackInput
+
+-- |
+--
+-- /See:/ 'newStackConfigInput' smart constructor.
+data StackConfigInput = StackConfigInput'
+  { outputResolution :: Prelude.Maybe OutputResolutionStackInput,
+    targetBands :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StackConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'outputResolution', 'stackConfigInput_outputResolution' -
+--
+-- 'targetBands', 'stackConfigInput_targetBands' -
+newStackConfigInput ::
+  StackConfigInput
+newStackConfigInput =
+  StackConfigInput'
+    { outputResolution =
+        Prelude.Nothing,
+      targetBands = Prelude.Nothing
+    }
+
+stackConfigInput_outputResolution :: Lens.Lens' StackConfigInput (Prelude.Maybe OutputResolutionStackInput)
+stackConfigInput_outputResolution = Lens.lens (\StackConfigInput' {outputResolution} -> outputResolution) (\s@StackConfigInput' {} a -> s {outputResolution = a} :: StackConfigInput)
+
+stackConfigInput_targetBands :: Lens.Lens' StackConfigInput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+stackConfigInput_targetBands = Lens.lens (\StackConfigInput' {targetBands} -> targetBands) (\s@StackConfigInput' {} a -> s {targetBands = a} :: StackConfigInput) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON StackConfigInput where
+  parseJSON =
+    Data.withObject
+      "StackConfigInput"
+      ( \x ->
+          StackConfigInput'
+            Prelude.<$> (x Data..:? "OutputResolution")
+            Prelude.<*> (x Data..:? "TargetBands")
+      )
+
+instance Prelude.Hashable StackConfigInput where
+  hashWithSalt _salt StackConfigInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` outputResolution
+      `Prelude.hashWithSalt` targetBands
+
+instance Prelude.NFData StackConfigInput where
+  rnf StackConfigInput' {..} =
+    Prelude.rnf outputResolution
+      `Prelude.seq` Prelude.rnf targetBands
+
+instance Data.ToJSON StackConfigInput where
+  toJSON StackConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("OutputResolution" Data..=)
+              Prelude.<$> outputResolution,
+            ("TargetBands" Data..=) Prelude.<$> targetBands
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/TargetOptions.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/TargetOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/TargetOptions.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.SageMakerGeoSpatial.Types.TargetOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.TargetOptions
+  ( TargetOptions
+      ( ..,
+        TargetOptions_INPUT,
+        TargetOptions_OUTPUT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TargetOptions = TargetOptions'
+  { fromTargetOptions ::
+      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 TargetOptions_INPUT :: TargetOptions
+pattern TargetOptions_INPUT = TargetOptions' "INPUT"
+
+pattern TargetOptions_OUTPUT :: TargetOptions
+pattern TargetOptions_OUTPUT = TargetOptions' "OUTPUT"
+
+{-# COMPLETE
+  TargetOptions_INPUT,
+  TargetOptions_OUTPUT,
+  TargetOptions'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/TemporalStatistics.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/TemporalStatistics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/TemporalStatistics.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.SageMakerGeoSpatial.Types.TemporalStatistics
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.TemporalStatistics
+  ( TemporalStatistics
+      ( ..,
+        TemporalStatistics_MEAN,
+        TemporalStatistics_MEDIAN,
+        TemporalStatistics_STANDARD_DEVIATION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TemporalStatistics = TemporalStatistics'
+  { fromTemporalStatistics ::
+      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 TemporalStatistics_MEAN :: TemporalStatistics
+pattern TemporalStatistics_MEAN = TemporalStatistics' "MEAN"
+
+pattern TemporalStatistics_MEDIAN :: TemporalStatistics
+pattern TemporalStatistics_MEDIAN = TemporalStatistics' "MEDIAN"
+
+pattern TemporalStatistics_STANDARD_DEVIATION :: TemporalStatistics
+pattern TemporalStatistics_STANDARD_DEVIATION = TemporalStatistics' "STANDARD_DEVIATION"
+
+{-# COMPLETE
+  TemporalStatistics_MEAN,
+  TemporalStatistics_MEDIAN,
+  TemporalStatistics_STANDARD_DEVIATION,
+  TemporalStatistics'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/TemporalStatisticsConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/TemporalStatisticsConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/TemporalStatisticsConfigInput.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.SageMakerGeoSpatial.Types.TemporalStatisticsConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.TemporalStatisticsConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.GroupBy
+import Amazonka.SageMakerGeoSpatial.Types.TemporalStatistics
+
+-- |
+--
+-- /See:/ 'newTemporalStatisticsConfigInput' smart constructor.
+data TemporalStatisticsConfigInput = TemporalStatisticsConfigInput'
+  { groupBy :: Prelude.Maybe GroupBy,
+    targetBands :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    statistics :: Prelude.NonEmpty TemporalStatistics
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemporalStatisticsConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'groupBy', 'temporalStatisticsConfigInput_groupBy' -
+--
+-- 'targetBands', 'temporalStatisticsConfigInput_targetBands' -
+--
+-- 'statistics', 'temporalStatisticsConfigInput_statistics' -
+newTemporalStatisticsConfigInput ::
+  -- | 'statistics'
+  Prelude.NonEmpty TemporalStatistics ->
+  TemporalStatisticsConfigInput
+newTemporalStatisticsConfigInput pStatistics_ =
+  TemporalStatisticsConfigInput'
+    { groupBy =
+        Prelude.Nothing,
+      targetBands = Prelude.Nothing,
+      statistics =
+        Lens.coerced Lens.# pStatistics_
+    }
+
+temporalStatisticsConfigInput_groupBy :: Lens.Lens' TemporalStatisticsConfigInput (Prelude.Maybe GroupBy)
+temporalStatisticsConfigInput_groupBy = Lens.lens (\TemporalStatisticsConfigInput' {groupBy} -> groupBy) (\s@TemporalStatisticsConfigInput' {} a -> s {groupBy = a} :: TemporalStatisticsConfigInput)
+
+temporalStatisticsConfigInput_targetBands :: Lens.Lens' TemporalStatisticsConfigInput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+temporalStatisticsConfigInput_targetBands = Lens.lens (\TemporalStatisticsConfigInput' {targetBands} -> targetBands) (\s@TemporalStatisticsConfigInput' {} a -> s {targetBands = a} :: TemporalStatisticsConfigInput) Prelude.. Lens.mapping Lens.coerced
+
+temporalStatisticsConfigInput_statistics :: Lens.Lens' TemporalStatisticsConfigInput (Prelude.NonEmpty TemporalStatistics)
+temporalStatisticsConfigInput_statistics = Lens.lens (\TemporalStatisticsConfigInput' {statistics} -> statistics) (\s@TemporalStatisticsConfigInput' {} a -> s {statistics = a} :: TemporalStatisticsConfigInput) Prelude.. Lens.coerced
+
+instance Data.FromJSON TemporalStatisticsConfigInput where
+  parseJSON =
+    Data.withObject
+      "TemporalStatisticsConfigInput"
+      ( \x ->
+          TemporalStatisticsConfigInput'
+            Prelude.<$> (x Data..:? "GroupBy")
+            Prelude.<*> (x Data..:? "TargetBands")
+            Prelude.<*> (x Data..: "Statistics")
+      )
+
+instance
+  Prelude.Hashable
+    TemporalStatisticsConfigInput
+  where
+  hashWithSalt _salt TemporalStatisticsConfigInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` groupBy
+      `Prelude.hashWithSalt` targetBands
+      `Prelude.hashWithSalt` statistics
+
+instance Prelude.NFData TemporalStatisticsConfigInput where
+  rnf TemporalStatisticsConfigInput' {..} =
+    Prelude.rnf groupBy
+      `Prelude.seq` Prelude.rnf targetBands
+      `Prelude.seq` Prelude.rnf statistics
+
+instance Data.ToJSON TemporalStatisticsConfigInput where
+  toJSON TemporalStatisticsConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GroupBy" Data..=) Prelude.<$> groupBy,
+            ("TargetBands" Data..=) Prelude.<$> targetBands,
+            Prelude.Just ("Statistics" Data..= statistics)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/TimeRangeFilterInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/TimeRangeFilterInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/TimeRangeFilterInput.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.SageMakerGeoSpatial.Types.TimeRangeFilterInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.TimeRangeFilterInput where
+
+import qualified 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 input for the time-range filter.
+--
+-- /See:/ 'newTimeRangeFilterInput' smart constructor.
+data TimeRangeFilterInput = TimeRangeFilterInput'
+  { -- | The end time for the time-range filter.
+    endTime :: Data.POSIX,
+    -- | The start time for the time-range filter.
+    startTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TimeRangeFilterInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'timeRangeFilterInput_endTime' - The end time for the time-range filter.
+--
+-- 'startTime', 'timeRangeFilterInput_startTime' - The start time for the time-range filter.
+newTimeRangeFilterInput ::
+  -- | 'endTime'
+  Prelude.UTCTime ->
+  -- | 'startTime'
+  Prelude.UTCTime ->
+  TimeRangeFilterInput
+newTimeRangeFilterInput pEndTime_ pStartTime_ =
+  TimeRangeFilterInput'
+    { endTime =
+        Data._Time Lens.# pEndTime_,
+      startTime = Data._Time Lens.# pStartTime_
+    }
+
+-- | The end time for the time-range filter.
+timeRangeFilterInput_endTime :: Lens.Lens' TimeRangeFilterInput Prelude.UTCTime
+timeRangeFilterInput_endTime = Lens.lens (\TimeRangeFilterInput' {endTime} -> endTime) (\s@TimeRangeFilterInput' {} a -> s {endTime = a} :: TimeRangeFilterInput) Prelude.. Data._Time
+
+-- | The start time for the time-range filter.
+timeRangeFilterInput_startTime :: Lens.Lens' TimeRangeFilterInput Prelude.UTCTime
+timeRangeFilterInput_startTime = Lens.lens (\TimeRangeFilterInput' {startTime} -> startTime) (\s@TimeRangeFilterInput' {} a -> s {startTime = a} :: TimeRangeFilterInput) Prelude.. Data._Time
+
+instance Data.FromJSON TimeRangeFilterInput where
+  parseJSON =
+    Data.withObject
+      "TimeRangeFilterInput"
+      ( \x ->
+          TimeRangeFilterInput'
+            Prelude.<$> (x Data..: "EndTime")
+            Prelude.<*> (x Data..: "StartTime")
+      )
+
+instance Prelude.Hashable TimeRangeFilterInput where
+  hashWithSalt _salt TimeRangeFilterInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` startTime
+
+instance Prelude.NFData TimeRangeFilterInput where
+  rnf TimeRangeFilterInput' {..} =
+    Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf startTime
+
+instance Data.ToJSON TimeRangeFilterInput where
+  toJSON TimeRangeFilterInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("EndTime" Data..= endTime),
+            Prelude.Just ("StartTime" Data..= startTime)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/Unit.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/Unit.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/Unit.hs
@@ -0,0 +1,63 @@
+{-# 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.SageMakerGeoSpatial.Types.Unit
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.Unit
+  ( Unit
+      ( ..,
+        Unit_METERS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Unit = Unit' {fromUnit :: 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 Unit_METERS :: Unit
+pattern Unit_METERS = Unit' "METERS"
+
+{-# COMPLETE
+  Unit_METERS,
+  Unit'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/UserDefined.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/UserDefined.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/UserDefined.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.SageMakerGeoSpatial.Types.UserDefined
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.UserDefined where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.Unit
+
+-- |
+--
+-- /See:/ 'newUserDefined' smart constructor.
+data UserDefined = UserDefined'
+  { unit :: Unit,
+    value :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UserDefined' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'unit', 'userDefined_unit' -
+--
+-- 'value', 'userDefined_value' -
+newUserDefined ::
+  -- | 'unit'
+  Unit ->
+  -- | 'value'
+  Prelude.Double ->
+  UserDefined
+newUserDefined pUnit_ pValue_ =
+  UserDefined' {unit = pUnit_, value = pValue_}
+
+userDefined_unit :: Lens.Lens' UserDefined Unit
+userDefined_unit = Lens.lens (\UserDefined' {unit} -> unit) (\s@UserDefined' {} a -> s {unit = a} :: UserDefined)
+
+userDefined_value :: Lens.Lens' UserDefined Prelude.Double
+userDefined_value = Lens.lens (\UserDefined' {value} -> value) (\s@UserDefined' {} a -> s {value = a} :: UserDefined)
+
+instance Data.FromJSON UserDefined where
+  parseJSON =
+    Data.withObject
+      "UserDefined"
+      ( \x ->
+          UserDefined'
+            Prelude.<$> (x Data..: "Unit")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable UserDefined where
+  hashWithSalt _salt UserDefined' {..} =
+    _salt
+      `Prelude.hashWithSalt` unit
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData UserDefined where
+  rnf UserDefined' {..} =
+    Prelude.rnf unit `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON UserDefined where
+  toJSON UserDefined' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Unit" Data..= unit),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobConfig.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobConfig.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.MapMatchingConfig
+import Amazonka.SageMakerGeoSpatial.Types.ReverseGeocodingConfig
+
+-- | It contains configs such as ReverseGeocodingConfig and
+-- MapMatchingConfig.
+--
+-- /See:/ 'newVectorEnrichmentJobConfig' smart constructor.
+data VectorEnrichmentJobConfig = VectorEnrichmentJobConfig'
+  { mapMatchingConfig :: Prelude.Maybe MapMatchingConfig,
+    reverseGeocodingConfig :: Prelude.Maybe ReverseGeocodingConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VectorEnrichmentJobConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mapMatchingConfig', 'vectorEnrichmentJobConfig_mapMatchingConfig' -
+--
+-- 'reverseGeocodingConfig', 'vectorEnrichmentJobConfig_reverseGeocodingConfig' -
+newVectorEnrichmentJobConfig ::
+  VectorEnrichmentJobConfig
+newVectorEnrichmentJobConfig =
+  VectorEnrichmentJobConfig'
+    { mapMatchingConfig =
+        Prelude.Nothing,
+      reverseGeocodingConfig = Prelude.Nothing
+    }
+
+vectorEnrichmentJobConfig_mapMatchingConfig :: Lens.Lens' VectorEnrichmentJobConfig (Prelude.Maybe MapMatchingConfig)
+vectorEnrichmentJobConfig_mapMatchingConfig = Lens.lens (\VectorEnrichmentJobConfig' {mapMatchingConfig} -> mapMatchingConfig) (\s@VectorEnrichmentJobConfig' {} a -> s {mapMatchingConfig = a} :: VectorEnrichmentJobConfig)
+
+vectorEnrichmentJobConfig_reverseGeocodingConfig :: Lens.Lens' VectorEnrichmentJobConfig (Prelude.Maybe ReverseGeocodingConfig)
+vectorEnrichmentJobConfig_reverseGeocodingConfig = Lens.lens (\VectorEnrichmentJobConfig' {reverseGeocodingConfig} -> reverseGeocodingConfig) (\s@VectorEnrichmentJobConfig' {} a -> s {reverseGeocodingConfig = a} :: VectorEnrichmentJobConfig)
+
+instance Data.FromJSON VectorEnrichmentJobConfig where
+  parseJSON =
+    Data.withObject
+      "VectorEnrichmentJobConfig"
+      ( \x ->
+          VectorEnrichmentJobConfig'
+            Prelude.<$> (x Data..:? "MapMatchingConfig")
+            Prelude.<*> (x Data..:? "ReverseGeocodingConfig")
+      )
+
+instance Prelude.Hashable VectorEnrichmentJobConfig where
+  hashWithSalt _salt VectorEnrichmentJobConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` mapMatchingConfig
+      `Prelude.hashWithSalt` reverseGeocodingConfig
+
+instance Prelude.NFData VectorEnrichmentJobConfig where
+  rnf VectorEnrichmentJobConfig' {..} =
+    Prelude.rnf mapMatchingConfig
+      `Prelude.seq` Prelude.rnf reverseGeocodingConfig
+
+instance Data.ToJSON VectorEnrichmentJobConfig where
+  toJSON VectorEnrichmentJobConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MapMatchingConfig" Data..=)
+              Prelude.<$> mapMatchingConfig,
+            ("ReverseGeocodingConfig" Data..=)
+              Prelude.<$> reverseGeocodingConfig
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobDataSourceConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobDataSourceConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobDataSourceConfigInput.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobDataSourceConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobDataSourceConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobS3Data
+
+-- |
+--
+-- /See:/ 'newVectorEnrichmentJobDataSourceConfigInput' smart constructor.
+data VectorEnrichmentJobDataSourceConfigInput = VectorEnrichmentJobDataSourceConfigInput'
+  { s3Data :: Prelude.Maybe VectorEnrichmentJobS3Data
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VectorEnrichmentJobDataSourceConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 's3Data', 'vectorEnrichmentJobDataSourceConfigInput_s3Data' -
+newVectorEnrichmentJobDataSourceConfigInput ::
+  VectorEnrichmentJobDataSourceConfigInput
+newVectorEnrichmentJobDataSourceConfigInput =
+  VectorEnrichmentJobDataSourceConfigInput'
+    { s3Data =
+        Prelude.Nothing
+    }
+
+vectorEnrichmentJobDataSourceConfigInput_s3Data :: Lens.Lens' VectorEnrichmentJobDataSourceConfigInput (Prelude.Maybe VectorEnrichmentJobS3Data)
+vectorEnrichmentJobDataSourceConfigInput_s3Data = Lens.lens (\VectorEnrichmentJobDataSourceConfigInput' {s3Data} -> s3Data) (\s@VectorEnrichmentJobDataSourceConfigInput' {} a -> s {s3Data = a} :: VectorEnrichmentJobDataSourceConfigInput)
+
+instance
+  Data.FromJSON
+    VectorEnrichmentJobDataSourceConfigInput
+  where
+  parseJSON =
+    Data.withObject
+      "VectorEnrichmentJobDataSourceConfigInput"
+      ( \x ->
+          VectorEnrichmentJobDataSourceConfigInput'
+            Prelude.<$> (x Data..:? "S3Data")
+      )
+
+instance
+  Prelude.Hashable
+    VectorEnrichmentJobDataSourceConfigInput
+  where
+  hashWithSalt
+    _salt
+    VectorEnrichmentJobDataSourceConfigInput' {..} =
+      _salt `Prelude.hashWithSalt` s3Data
+
+instance
+  Prelude.NFData
+    VectorEnrichmentJobDataSourceConfigInput
+  where
+  rnf VectorEnrichmentJobDataSourceConfigInput' {..} =
+    Prelude.rnf s3Data
+
+instance
+  Data.ToJSON
+    VectorEnrichmentJobDataSourceConfigInput
+  where
+  toJSON VectorEnrichmentJobDataSourceConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("S3Data" Data..=) Prelude.<$> s3Data]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobDocumentType.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobDocumentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobDocumentType.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobDocumentType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobDocumentType
+  ( VectorEnrichmentJobDocumentType
+      ( ..,
+        VectorEnrichmentJobDocumentType_CSV
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VectorEnrichmentJobDocumentType = VectorEnrichmentJobDocumentType'
+  { fromVectorEnrichmentJobDocumentType ::
+      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 VectorEnrichmentJobDocumentType_CSV :: VectorEnrichmentJobDocumentType
+pattern VectorEnrichmentJobDocumentType_CSV = VectorEnrichmentJobDocumentType' "CSV"
+
+{-# COMPLETE
+  VectorEnrichmentJobDocumentType_CSV,
+  VectorEnrichmentJobDocumentType'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobErrorDetails.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobErrorDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobErrorDetails.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobErrorDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobErrorDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobErrorType
+
+-- | VectorEnrichmentJob error details in response from
+-- GetVectorEnrichmentJob.
+--
+-- /See:/ 'newVectorEnrichmentJobErrorDetails' smart constructor.
+data VectorEnrichmentJobErrorDetails = VectorEnrichmentJobErrorDetails'
+  { -- | A message that you define and then is processed and rendered by the
+    -- Vector Enrichment job when the error occurs.
+    errorMessage :: Prelude.Maybe Prelude.Text,
+    -- | The type of error generated during the Vector Enrichment job.
+    errorType :: Prelude.Maybe VectorEnrichmentJobErrorType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VectorEnrichmentJobErrorDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'vectorEnrichmentJobErrorDetails_errorMessage' - A message that you define and then is processed and rendered by the
+-- Vector Enrichment job when the error occurs.
+--
+-- 'errorType', 'vectorEnrichmentJobErrorDetails_errorType' - The type of error generated during the Vector Enrichment job.
+newVectorEnrichmentJobErrorDetails ::
+  VectorEnrichmentJobErrorDetails
+newVectorEnrichmentJobErrorDetails =
+  VectorEnrichmentJobErrorDetails'
+    { errorMessage =
+        Prelude.Nothing,
+      errorType = Prelude.Nothing
+    }
+
+-- | A message that you define and then is processed and rendered by the
+-- Vector Enrichment job when the error occurs.
+vectorEnrichmentJobErrorDetails_errorMessage :: Lens.Lens' VectorEnrichmentJobErrorDetails (Prelude.Maybe Prelude.Text)
+vectorEnrichmentJobErrorDetails_errorMessage = Lens.lens (\VectorEnrichmentJobErrorDetails' {errorMessage} -> errorMessage) (\s@VectorEnrichmentJobErrorDetails' {} a -> s {errorMessage = a} :: VectorEnrichmentJobErrorDetails)
+
+-- | The type of error generated during the Vector Enrichment job.
+vectorEnrichmentJobErrorDetails_errorType :: Lens.Lens' VectorEnrichmentJobErrorDetails (Prelude.Maybe VectorEnrichmentJobErrorType)
+vectorEnrichmentJobErrorDetails_errorType = Lens.lens (\VectorEnrichmentJobErrorDetails' {errorType} -> errorType) (\s@VectorEnrichmentJobErrorDetails' {} a -> s {errorType = a} :: VectorEnrichmentJobErrorDetails)
+
+instance
+  Data.FromJSON
+    VectorEnrichmentJobErrorDetails
+  where
+  parseJSON =
+    Data.withObject
+      "VectorEnrichmentJobErrorDetails"
+      ( \x ->
+          VectorEnrichmentJobErrorDetails'
+            Prelude.<$> (x Data..:? "ErrorMessage")
+            Prelude.<*> (x Data..:? "ErrorType")
+      )
+
+instance
+  Prelude.Hashable
+    VectorEnrichmentJobErrorDetails
+  where
+  hashWithSalt
+    _salt
+    VectorEnrichmentJobErrorDetails' {..} =
+      _salt
+        `Prelude.hashWithSalt` errorMessage
+        `Prelude.hashWithSalt` errorType
+
+instance
+  Prelude.NFData
+    VectorEnrichmentJobErrorDetails
+  where
+  rnf VectorEnrichmentJobErrorDetails' {..} =
+    Prelude.rnf errorMessage
+      `Prelude.seq` Prelude.rnf errorType
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobErrorType.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobErrorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobErrorType.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobErrorType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobErrorType
+  ( VectorEnrichmentJobErrorType
+      ( ..,
+        VectorEnrichmentJobErrorType_CLIENT_ERROR,
+        VectorEnrichmentJobErrorType_SERVER_ERROR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VectorEnrichmentJobErrorType = VectorEnrichmentJobErrorType'
+  { fromVectorEnrichmentJobErrorType ::
+      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 VectorEnrichmentJobErrorType_CLIENT_ERROR :: VectorEnrichmentJobErrorType
+pattern VectorEnrichmentJobErrorType_CLIENT_ERROR = VectorEnrichmentJobErrorType' "CLIENT_ERROR"
+
+pattern VectorEnrichmentJobErrorType_SERVER_ERROR :: VectorEnrichmentJobErrorType
+pattern VectorEnrichmentJobErrorType_SERVER_ERROR = VectorEnrichmentJobErrorType' "SERVER_ERROR"
+
+{-# COMPLETE
+  VectorEnrichmentJobErrorType_CLIENT_ERROR,
+  VectorEnrichmentJobErrorType_SERVER_ERROR,
+  VectorEnrichmentJobErrorType'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobExportErrorDetails.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobExportErrorDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobExportErrorDetails.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportErrorDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportErrorDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportErrorType
+
+-- | VectorEnrichmentJob export error details in response from
+-- GetVectorEnrichmentJob.
+--
+-- /See:/ 'newVectorEnrichmentJobExportErrorDetails' smart constructor.
+data VectorEnrichmentJobExportErrorDetails = VectorEnrichmentJobExportErrorDetails'
+  { -- | The message providing details about the errors generated during the
+    -- Vector Enrichment job.
+    message :: Prelude.Maybe Prelude.Text,
+    type' :: Prelude.Maybe VectorEnrichmentJobExportErrorType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VectorEnrichmentJobExportErrorDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'vectorEnrichmentJobExportErrorDetails_message' - The message providing details about the errors generated during the
+-- Vector Enrichment job.
+--
+-- 'type'', 'vectorEnrichmentJobExportErrorDetails_type' -
+newVectorEnrichmentJobExportErrorDetails ::
+  VectorEnrichmentJobExportErrorDetails
+newVectorEnrichmentJobExportErrorDetails =
+  VectorEnrichmentJobExportErrorDetails'
+    { message =
+        Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The message providing details about the errors generated during the
+-- Vector Enrichment job.
+vectorEnrichmentJobExportErrorDetails_message :: Lens.Lens' VectorEnrichmentJobExportErrorDetails (Prelude.Maybe Prelude.Text)
+vectorEnrichmentJobExportErrorDetails_message = Lens.lens (\VectorEnrichmentJobExportErrorDetails' {message} -> message) (\s@VectorEnrichmentJobExportErrorDetails' {} a -> s {message = a} :: VectorEnrichmentJobExportErrorDetails)
+
+vectorEnrichmentJobExportErrorDetails_type :: Lens.Lens' VectorEnrichmentJobExportErrorDetails (Prelude.Maybe VectorEnrichmentJobExportErrorType)
+vectorEnrichmentJobExportErrorDetails_type = Lens.lens (\VectorEnrichmentJobExportErrorDetails' {type'} -> type') (\s@VectorEnrichmentJobExportErrorDetails' {} a -> s {type' = a} :: VectorEnrichmentJobExportErrorDetails)
+
+instance
+  Data.FromJSON
+    VectorEnrichmentJobExportErrorDetails
+  where
+  parseJSON =
+    Data.withObject
+      "VectorEnrichmentJobExportErrorDetails"
+      ( \x ->
+          VectorEnrichmentJobExportErrorDetails'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance
+  Prelude.Hashable
+    VectorEnrichmentJobExportErrorDetails
+  where
+  hashWithSalt
+    _salt
+    VectorEnrichmentJobExportErrorDetails' {..} =
+      _salt
+        `Prelude.hashWithSalt` message
+        `Prelude.hashWithSalt` type'
+
+instance
+  Prelude.NFData
+    VectorEnrichmentJobExportErrorDetails
+  where
+  rnf VectorEnrichmentJobExportErrorDetails' {..} =
+    Prelude.rnf message `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobExportErrorType.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobExportErrorType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobExportErrorType.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportErrorType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportErrorType
+  ( VectorEnrichmentJobExportErrorType
+      ( ..,
+        VectorEnrichmentJobExportErrorType_CLIENT_ERROR,
+        VectorEnrichmentJobExportErrorType_SERVER_ERROR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VectorEnrichmentJobExportErrorType = VectorEnrichmentJobExportErrorType'
+  { fromVectorEnrichmentJobExportErrorType ::
+      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 VectorEnrichmentJobExportErrorType_CLIENT_ERROR :: VectorEnrichmentJobExportErrorType
+pattern VectorEnrichmentJobExportErrorType_CLIENT_ERROR = VectorEnrichmentJobExportErrorType' "CLIENT_ERROR"
+
+pattern VectorEnrichmentJobExportErrorType_SERVER_ERROR :: VectorEnrichmentJobExportErrorType
+pattern VectorEnrichmentJobExportErrorType_SERVER_ERROR = VectorEnrichmentJobExportErrorType' "SERVER_ERROR"
+
+{-# COMPLETE
+  VectorEnrichmentJobExportErrorType_CLIENT_ERROR,
+  VectorEnrichmentJobExportErrorType_SERVER_ERROR,
+  VectorEnrichmentJobExportErrorType'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobExportStatus.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobExportStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobExportStatus.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobExportStatus
+  ( VectorEnrichmentJobExportStatus
+      ( ..,
+        VectorEnrichmentJobExportStatus_FAILED,
+        VectorEnrichmentJobExportStatus_IN_PROGRESS,
+        VectorEnrichmentJobExportStatus_SUCCEEDED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VectorEnrichmentJobExportStatus = VectorEnrichmentJobExportStatus'
+  { fromVectorEnrichmentJobExportStatus ::
+      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 VectorEnrichmentJobExportStatus_FAILED :: VectorEnrichmentJobExportStatus
+pattern VectorEnrichmentJobExportStatus_FAILED = VectorEnrichmentJobExportStatus' "FAILED"
+
+pattern VectorEnrichmentJobExportStatus_IN_PROGRESS :: VectorEnrichmentJobExportStatus
+pattern VectorEnrichmentJobExportStatus_IN_PROGRESS = VectorEnrichmentJobExportStatus' "IN_PROGRESS"
+
+pattern VectorEnrichmentJobExportStatus_SUCCEEDED :: VectorEnrichmentJobExportStatus
+pattern VectorEnrichmentJobExportStatus_SUCCEEDED = VectorEnrichmentJobExportStatus' "SUCCEEDED"
+
+{-# COMPLETE
+  VectorEnrichmentJobExportStatus_FAILED,
+  VectorEnrichmentJobExportStatus_IN_PROGRESS,
+  VectorEnrichmentJobExportStatus_SUCCEEDED,
+  VectorEnrichmentJobExportStatus'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobInputConfig.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobInputConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobInputConfig.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobInputConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobInputConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobDataSourceConfigInput
+import Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobDocumentType
+
+-- | The input structure for the InputConfig in a VectorEnrichmentJob.
+--
+-- /See:/ 'newVectorEnrichmentJobInputConfig' smart constructor.
+data VectorEnrichmentJobInputConfig = VectorEnrichmentJobInputConfig'
+  { dataSourceConfig :: VectorEnrichmentJobDataSourceConfigInput,
+    documentType :: VectorEnrichmentJobDocumentType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VectorEnrichmentJobInputConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSourceConfig', 'vectorEnrichmentJobInputConfig_dataSourceConfig' -
+--
+-- 'documentType', 'vectorEnrichmentJobInputConfig_documentType' -
+newVectorEnrichmentJobInputConfig ::
+  -- | 'dataSourceConfig'
+  VectorEnrichmentJobDataSourceConfigInput ->
+  -- | 'documentType'
+  VectorEnrichmentJobDocumentType ->
+  VectorEnrichmentJobInputConfig
+newVectorEnrichmentJobInputConfig
+  pDataSourceConfig_
+  pDocumentType_ =
+    VectorEnrichmentJobInputConfig'
+      { dataSourceConfig =
+          pDataSourceConfig_,
+        documentType = pDocumentType_
+      }
+
+vectorEnrichmentJobInputConfig_dataSourceConfig :: Lens.Lens' VectorEnrichmentJobInputConfig VectorEnrichmentJobDataSourceConfigInput
+vectorEnrichmentJobInputConfig_dataSourceConfig = Lens.lens (\VectorEnrichmentJobInputConfig' {dataSourceConfig} -> dataSourceConfig) (\s@VectorEnrichmentJobInputConfig' {} a -> s {dataSourceConfig = a} :: VectorEnrichmentJobInputConfig)
+
+vectorEnrichmentJobInputConfig_documentType :: Lens.Lens' VectorEnrichmentJobInputConfig VectorEnrichmentJobDocumentType
+vectorEnrichmentJobInputConfig_documentType = Lens.lens (\VectorEnrichmentJobInputConfig' {documentType} -> documentType) (\s@VectorEnrichmentJobInputConfig' {} a -> s {documentType = a} :: VectorEnrichmentJobInputConfig)
+
+instance Data.FromJSON VectorEnrichmentJobInputConfig where
+  parseJSON =
+    Data.withObject
+      "VectorEnrichmentJobInputConfig"
+      ( \x ->
+          VectorEnrichmentJobInputConfig'
+            Prelude.<$> (x Data..: "DataSourceConfig")
+            Prelude.<*> (x Data..: "DocumentType")
+      )
+
+instance
+  Prelude.Hashable
+    VectorEnrichmentJobInputConfig
+  where
+  hashWithSalt
+    _salt
+    VectorEnrichmentJobInputConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` dataSourceConfig
+        `Prelude.hashWithSalt` documentType
+
+instance
+  Prelude.NFData
+    VectorEnrichmentJobInputConfig
+  where
+  rnf VectorEnrichmentJobInputConfig' {..} =
+    Prelude.rnf dataSourceConfig
+      `Prelude.seq` Prelude.rnf documentType
+
+instance Data.ToJSON VectorEnrichmentJobInputConfig where
+  toJSON VectorEnrichmentJobInputConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("DataSourceConfig" Data..= dataSourceConfig),
+            Prelude.Just ("DocumentType" Data..= documentType)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobS3Data.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobS3Data.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobS3Data.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobS3Data
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobS3Data where
+
+import qualified 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 data for the Vector Enrichment job.
+--
+-- /See:/ 'newVectorEnrichmentJobS3Data' smart constructor.
+data VectorEnrichmentJobS3Data = VectorEnrichmentJobS3Data'
+  { -- | The Amazon Key Management Service (KMS) key ID for server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The URL to the Amazon S3 data for the Vector Enrichment job.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VectorEnrichmentJobS3Data' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'vectorEnrichmentJobS3Data_kmsKeyId' - The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+--
+-- 's3Uri', 'vectorEnrichmentJobS3Data_s3Uri' - The URL to the Amazon S3 data for the Vector Enrichment job.
+newVectorEnrichmentJobS3Data ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  VectorEnrichmentJobS3Data
+newVectorEnrichmentJobS3Data pS3Uri_ =
+  VectorEnrichmentJobS3Data'
+    { kmsKeyId =
+        Prelude.Nothing,
+      s3Uri = pS3Uri_
+    }
+
+-- | The Amazon Key Management Service (KMS) key ID for server-side
+-- encryption.
+vectorEnrichmentJobS3Data_kmsKeyId :: Lens.Lens' VectorEnrichmentJobS3Data (Prelude.Maybe Prelude.Text)
+vectorEnrichmentJobS3Data_kmsKeyId = Lens.lens (\VectorEnrichmentJobS3Data' {kmsKeyId} -> kmsKeyId) (\s@VectorEnrichmentJobS3Data' {} a -> s {kmsKeyId = a} :: VectorEnrichmentJobS3Data)
+
+-- | The URL to the Amazon S3 data for the Vector Enrichment job.
+vectorEnrichmentJobS3Data_s3Uri :: Lens.Lens' VectorEnrichmentJobS3Data Prelude.Text
+vectorEnrichmentJobS3Data_s3Uri = Lens.lens (\VectorEnrichmentJobS3Data' {s3Uri} -> s3Uri) (\s@VectorEnrichmentJobS3Data' {} a -> s {s3Uri = a} :: VectorEnrichmentJobS3Data)
+
+instance Data.FromJSON VectorEnrichmentJobS3Data where
+  parseJSON =
+    Data.withObject
+      "VectorEnrichmentJobS3Data"
+      ( \x ->
+          VectorEnrichmentJobS3Data'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "S3Uri")
+      )
+
+instance Prelude.Hashable VectorEnrichmentJobS3Data where
+  hashWithSalt _salt VectorEnrichmentJobS3Data' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData VectorEnrichmentJobS3Data where
+  rnf VectorEnrichmentJobS3Data' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON VectorEnrichmentJobS3Data where
+  toJSON VectorEnrichmentJobS3Data' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just ("S3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobStatus.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobStatus.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobStatus
+  ( VectorEnrichmentJobStatus
+      ( ..,
+        VectorEnrichmentJobStatus_COMPLETED,
+        VectorEnrichmentJobStatus_DELETED,
+        VectorEnrichmentJobStatus_DELETING,
+        VectorEnrichmentJobStatus_FAILED,
+        VectorEnrichmentJobStatus_INITIALIZING,
+        VectorEnrichmentJobStatus_IN_PROGRESS,
+        VectorEnrichmentJobStatus_STOPPED,
+        VectorEnrichmentJobStatus_STOPPING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VectorEnrichmentJobStatus = VectorEnrichmentJobStatus'
+  { fromVectorEnrichmentJobStatus ::
+      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 VectorEnrichmentJobStatus_COMPLETED :: VectorEnrichmentJobStatus
+pattern VectorEnrichmentJobStatus_COMPLETED = VectorEnrichmentJobStatus' "COMPLETED"
+
+pattern VectorEnrichmentJobStatus_DELETED :: VectorEnrichmentJobStatus
+pattern VectorEnrichmentJobStatus_DELETED = VectorEnrichmentJobStatus' "DELETED"
+
+pattern VectorEnrichmentJobStatus_DELETING :: VectorEnrichmentJobStatus
+pattern VectorEnrichmentJobStatus_DELETING = VectorEnrichmentJobStatus' "DELETING"
+
+pattern VectorEnrichmentJobStatus_FAILED :: VectorEnrichmentJobStatus
+pattern VectorEnrichmentJobStatus_FAILED = VectorEnrichmentJobStatus' "FAILED"
+
+pattern VectorEnrichmentJobStatus_INITIALIZING :: VectorEnrichmentJobStatus
+pattern VectorEnrichmentJobStatus_INITIALIZING = VectorEnrichmentJobStatus' "INITIALIZING"
+
+pattern VectorEnrichmentJobStatus_IN_PROGRESS :: VectorEnrichmentJobStatus
+pattern VectorEnrichmentJobStatus_IN_PROGRESS = VectorEnrichmentJobStatus' "IN_PROGRESS"
+
+pattern VectorEnrichmentJobStatus_STOPPED :: VectorEnrichmentJobStatus
+pattern VectorEnrichmentJobStatus_STOPPED = VectorEnrichmentJobStatus' "STOPPED"
+
+pattern VectorEnrichmentJobStatus_STOPPING :: VectorEnrichmentJobStatus
+pattern VectorEnrichmentJobStatus_STOPPING = VectorEnrichmentJobStatus' "STOPPING"
+
+{-# COMPLETE
+  VectorEnrichmentJobStatus_COMPLETED,
+  VectorEnrichmentJobStatus_DELETED,
+  VectorEnrichmentJobStatus_DELETING,
+  VectorEnrichmentJobStatus_FAILED,
+  VectorEnrichmentJobStatus_INITIALIZING,
+  VectorEnrichmentJobStatus_IN_PROGRESS,
+  VectorEnrichmentJobStatus_STOPPED,
+  VectorEnrichmentJobStatus_STOPPING,
+  VectorEnrichmentJobStatus'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobType.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/VectorEnrichmentJobType.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.SageMakerGeoSpatial.Types.VectorEnrichmentJobType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.VectorEnrichmentJobType
+  ( VectorEnrichmentJobType
+      ( ..,
+        VectorEnrichmentJobType_MAP_MATCHING,
+        VectorEnrichmentJobType_REVERSE_GEOCODING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VectorEnrichmentJobType = VectorEnrichmentJobType'
+  { fromVectorEnrichmentJobType ::
+      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 VectorEnrichmentJobType_MAP_MATCHING :: VectorEnrichmentJobType
+pattern VectorEnrichmentJobType_MAP_MATCHING = VectorEnrichmentJobType' "MAP_MATCHING"
+
+pattern VectorEnrichmentJobType_REVERSE_GEOCODING :: VectorEnrichmentJobType
+pattern VectorEnrichmentJobType_REVERSE_GEOCODING = VectorEnrichmentJobType' "REVERSE_GEOCODING"
+
+{-# COMPLETE
+  VectorEnrichmentJobType_MAP_MATCHING,
+  VectorEnrichmentJobType_REVERSE_GEOCODING,
+  VectorEnrichmentJobType'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ViewOffNadirInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ViewOffNadirInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ViewOffNadirInput.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.SageMakerGeoSpatial.Types.ViewOffNadirInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ViewOffNadirInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newViewOffNadirInput' smart constructor.
+data ViewOffNadirInput = ViewOffNadirInput'
+  { lowerBound :: Prelude.Double,
+    upperBound :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ViewOffNadirInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lowerBound', 'viewOffNadirInput_lowerBound' -
+--
+-- 'upperBound', 'viewOffNadirInput_upperBound' -
+newViewOffNadirInput ::
+  -- | 'lowerBound'
+  Prelude.Double ->
+  -- | 'upperBound'
+  Prelude.Double ->
+  ViewOffNadirInput
+newViewOffNadirInput pLowerBound_ pUpperBound_ =
+  ViewOffNadirInput'
+    { lowerBound = pLowerBound_,
+      upperBound = pUpperBound_
+    }
+
+viewOffNadirInput_lowerBound :: Lens.Lens' ViewOffNadirInput Prelude.Double
+viewOffNadirInput_lowerBound = Lens.lens (\ViewOffNadirInput' {lowerBound} -> lowerBound) (\s@ViewOffNadirInput' {} a -> s {lowerBound = a} :: ViewOffNadirInput)
+
+viewOffNadirInput_upperBound :: Lens.Lens' ViewOffNadirInput Prelude.Double
+viewOffNadirInput_upperBound = Lens.lens (\ViewOffNadirInput' {upperBound} -> upperBound) (\s@ViewOffNadirInput' {} a -> s {upperBound = a} :: ViewOffNadirInput)
+
+instance Data.FromJSON ViewOffNadirInput where
+  parseJSON =
+    Data.withObject
+      "ViewOffNadirInput"
+      ( \x ->
+          ViewOffNadirInput'
+            Prelude.<$> (x Data..: "LowerBound")
+            Prelude.<*> (x Data..: "UpperBound")
+      )
+
+instance Prelude.Hashable ViewOffNadirInput where
+  hashWithSalt _salt ViewOffNadirInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` lowerBound
+      `Prelude.hashWithSalt` upperBound
+
+instance Prelude.NFData ViewOffNadirInput where
+  rnf ViewOffNadirInput' {..} =
+    Prelude.rnf lowerBound
+      `Prelude.seq` Prelude.rnf upperBound
+
+instance Data.ToJSON ViewOffNadirInput where
+  toJSON ViewOffNadirInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("LowerBound" Data..= lowerBound),
+            Prelude.Just ("UpperBound" Data..= upperBound)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ViewSunAzimuthInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ViewSunAzimuthInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ViewSunAzimuthInput.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.SageMakerGeoSpatial.Types.ViewSunAzimuthInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ViewSunAzimuthInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newViewSunAzimuthInput' smart constructor.
+data ViewSunAzimuthInput = ViewSunAzimuthInput'
+  { lowerBound :: Prelude.Double,
+    upperBound :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ViewSunAzimuthInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lowerBound', 'viewSunAzimuthInput_lowerBound' -
+--
+-- 'upperBound', 'viewSunAzimuthInput_upperBound' -
+newViewSunAzimuthInput ::
+  -- | 'lowerBound'
+  Prelude.Double ->
+  -- | 'upperBound'
+  Prelude.Double ->
+  ViewSunAzimuthInput
+newViewSunAzimuthInput pLowerBound_ pUpperBound_ =
+  ViewSunAzimuthInput'
+    { lowerBound = pLowerBound_,
+      upperBound = pUpperBound_
+    }
+
+viewSunAzimuthInput_lowerBound :: Lens.Lens' ViewSunAzimuthInput Prelude.Double
+viewSunAzimuthInput_lowerBound = Lens.lens (\ViewSunAzimuthInput' {lowerBound} -> lowerBound) (\s@ViewSunAzimuthInput' {} a -> s {lowerBound = a} :: ViewSunAzimuthInput)
+
+viewSunAzimuthInput_upperBound :: Lens.Lens' ViewSunAzimuthInput Prelude.Double
+viewSunAzimuthInput_upperBound = Lens.lens (\ViewSunAzimuthInput' {upperBound} -> upperBound) (\s@ViewSunAzimuthInput' {} a -> s {upperBound = a} :: ViewSunAzimuthInput)
+
+instance Data.FromJSON ViewSunAzimuthInput where
+  parseJSON =
+    Data.withObject
+      "ViewSunAzimuthInput"
+      ( \x ->
+          ViewSunAzimuthInput'
+            Prelude.<$> (x Data..: "LowerBound")
+            Prelude.<*> (x Data..: "UpperBound")
+      )
+
+instance Prelude.Hashable ViewSunAzimuthInput where
+  hashWithSalt _salt ViewSunAzimuthInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` lowerBound
+      `Prelude.hashWithSalt` upperBound
+
+instance Prelude.NFData ViewSunAzimuthInput where
+  rnf ViewSunAzimuthInput' {..} =
+    Prelude.rnf lowerBound
+      `Prelude.seq` Prelude.rnf upperBound
+
+instance Data.ToJSON ViewSunAzimuthInput where
+  toJSON ViewSunAzimuthInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("LowerBound" Data..= lowerBound),
+            Prelude.Just ("UpperBound" Data..= upperBound)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ViewSunElevationInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ViewSunElevationInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ViewSunElevationInput.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.SageMakerGeoSpatial.Types.ViewSunElevationInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ViewSunElevationInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- |
+--
+-- /See:/ 'newViewSunElevationInput' smart constructor.
+data ViewSunElevationInput = ViewSunElevationInput'
+  { -- | The lower bound to view the sun elevation.
+    lowerBound :: Prelude.Double,
+    -- | The upper bound to view the sun elevation.
+    upperBound :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ViewSunElevationInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lowerBound', 'viewSunElevationInput_lowerBound' - The lower bound to view the sun elevation.
+--
+-- 'upperBound', 'viewSunElevationInput_upperBound' - The upper bound to view the sun elevation.
+newViewSunElevationInput ::
+  -- | 'lowerBound'
+  Prelude.Double ->
+  -- | 'upperBound'
+  Prelude.Double ->
+  ViewSunElevationInput
+newViewSunElevationInput pLowerBound_ pUpperBound_ =
+  ViewSunElevationInput'
+    { lowerBound = pLowerBound_,
+      upperBound = pUpperBound_
+    }
+
+-- | The lower bound to view the sun elevation.
+viewSunElevationInput_lowerBound :: Lens.Lens' ViewSunElevationInput Prelude.Double
+viewSunElevationInput_lowerBound = Lens.lens (\ViewSunElevationInput' {lowerBound} -> lowerBound) (\s@ViewSunElevationInput' {} a -> s {lowerBound = a} :: ViewSunElevationInput)
+
+-- | The upper bound to view the sun elevation.
+viewSunElevationInput_upperBound :: Lens.Lens' ViewSunElevationInput Prelude.Double
+viewSunElevationInput_upperBound = Lens.lens (\ViewSunElevationInput' {upperBound} -> upperBound) (\s@ViewSunElevationInput' {} a -> s {upperBound = a} :: ViewSunElevationInput)
+
+instance Data.FromJSON ViewSunElevationInput where
+  parseJSON =
+    Data.withObject
+      "ViewSunElevationInput"
+      ( \x ->
+          ViewSunElevationInput'
+            Prelude.<$> (x Data..: "LowerBound")
+            Prelude.<*> (x Data..: "UpperBound")
+      )
+
+instance Prelude.Hashable ViewSunElevationInput where
+  hashWithSalt _salt ViewSunElevationInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` lowerBound
+      `Prelude.hashWithSalt` upperBound
+
+instance Prelude.NFData ViewSunElevationInput where
+  rnf ViewSunElevationInput' {..} =
+    Prelude.rnf lowerBound
+      `Prelude.seq` Prelude.rnf upperBound
+
+instance Data.ToJSON ViewSunElevationInput where
+  toJSON ViewSunElevationInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("LowerBound" Data..= lowerBound),
+            Prelude.Just ("UpperBound" Data..= upperBound)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ZonalStatistics.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ZonalStatistics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ZonalStatistics.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.SageMakerGeoSpatial.Types.ZonalStatistics
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ZonalStatistics
+  ( ZonalStatistics
+      ( ..,
+        ZonalStatistics_MAX,
+        ZonalStatistics_MEAN,
+        ZonalStatistics_MEDIAN,
+        ZonalStatistics_MIN,
+        ZonalStatistics_STANDARD_DEVIATION,
+        ZonalStatistics_SUM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ZonalStatistics = ZonalStatistics'
+  { fromZonalStatistics ::
+      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 ZonalStatistics_MAX :: ZonalStatistics
+pattern ZonalStatistics_MAX = ZonalStatistics' "MAX"
+
+pattern ZonalStatistics_MEAN :: ZonalStatistics
+pattern ZonalStatistics_MEAN = ZonalStatistics' "MEAN"
+
+pattern ZonalStatistics_MEDIAN :: ZonalStatistics
+pattern ZonalStatistics_MEDIAN = ZonalStatistics' "MEDIAN"
+
+pattern ZonalStatistics_MIN :: ZonalStatistics
+pattern ZonalStatistics_MIN = ZonalStatistics' "MIN"
+
+pattern ZonalStatistics_STANDARD_DEVIATION :: ZonalStatistics
+pattern ZonalStatistics_STANDARD_DEVIATION = ZonalStatistics' "STANDARD_DEVIATION"
+
+pattern ZonalStatistics_SUM :: ZonalStatistics
+pattern ZonalStatistics_SUM = ZonalStatistics' "SUM"
+
+{-# COMPLETE
+  ZonalStatistics_MAX,
+  ZonalStatistics_MEAN,
+  ZonalStatistics_MEDIAN,
+  ZonalStatistics_MIN,
+  ZonalStatistics_STANDARD_DEVIATION,
+  ZonalStatistics_SUM,
+  ZonalStatistics'
+  #-}
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Types/ZonalStatisticsConfigInput.hs b/gen/Amazonka/SageMakerGeoSpatial/Types/ZonalStatisticsConfigInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Types/ZonalStatisticsConfigInput.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.SageMakerGeoSpatial.Types.ZonalStatisticsConfigInput
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SageMakerGeoSpatial.Types.ZonalStatisticsConfigInput where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SageMakerGeoSpatial.Types.ZonalStatistics
+
+-- |
+--
+-- /See:/ 'newZonalStatisticsConfigInput' smart constructor.
+data ZonalStatisticsConfigInput = ZonalStatisticsConfigInput'
+  { targetBands :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    statistics :: Prelude.NonEmpty ZonalStatistics,
+    zoneS3Path :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ZonalStatisticsConfigInput' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'targetBands', 'zonalStatisticsConfigInput_targetBands' -
+--
+-- 'statistics', 'zonalStatisticsConfigInput_statistics' -
+--
+-- 'zoneS3Path', 'zonalStatisticsConfigInput_zoneS3Path' -
+newZonalStatisticsConfigInput ::
+  -- | 'statistics'
+  Prelude.NonEmpty ZonalStatistics ->
+  -- | 'zoneS3Path'
+  Prelude.Text ->
+  ZonalStatisticsConfigInput
+newZonalStatisticsConfigInput
+  pStatistics_
+  pZoneS3Path_ =
+    ZonalStatisticsConfigInput'
+      { targetBands =
+          Prelude.Nothing,
+        statistics = Lens.coerced Lens.# pStatistics_,
+        zoneS3Path = pZoneS3Path_
+      }
+
+zonalStatisticsConfigInput_targetBands :: Lens.Lens' ZonalStatisticsConfigInput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+zonalStatisticsConfigInput_targetBands = Lens.lens (\ZonalStatisticsConfigInput' {targetBands} -> targetBands) (\s@ZonalStatisticsConfigInput' {} a -> s {targetBands = a} :: ZonalStatisticsConfigInput) Prelude.. Lens.mapping Lens.coerced
+
+zonalStatisticsConfigInput_statistics :: Lens.Lens' ZonalStatisticsConfigInput (Prelude.NonEmpty ZonalStatistics)
+zonalStatisticsConfigInput_statistics = Lens.lens (\ZonalStatisticsConfigInput' {statistics} -> statistics) (\s@ZonalStatisticsConfigInput' {} a -> s {statistics = a} :: ZonalStatisticsConfigInput) Prelude.. Lens.coerced
+
+zonalStatisticsConfigInput_zoneS3Path :: Lens.Lens' ZonalStatisticsConfigInput Prelude.Text
+zonalStatisticsConfigInput_zoneS3Path = Lens.lens (\ZonalStatisticsConfigInput' {zoneS3Path} -> zoneS3Path) (\s@ZonalStatisticsConfigInput' {} a -> s {zoneS3Path = a} :: ZonalStatisticsConfigInput)
+
+instance Data.FromJSON ZonalStatisticsConfigInput where
+  parseJSON =
+    Data.withObject
+      "ZonalStatisticsConfigInput"
+      ( \x ->
+          ZonalStatisticsConfigInput'
+            Prelude.<$> (x Data..:? "TargetBands")
+            Prelude.<*> (x Data..: "Statistics")
+            Prelude.<*> (x Data..: "ZoneS3Path")
+      )
+
+instance Prelude.Hashable ZonalStatisticsConfigInput where
+  hashWithSalt _salt ZonalStatisticsConfigInput' {..} =
+    _salt
+      `Prelude.hashWithSalt` targetBands
+      `Prelude.hashWithSalt` statistics
+      `Prelude.hashWithSalt` zoneS3Path
+
+instance Prelude.NFData ZonalStatisticsConfigInput where
+  rnf ZonalStatisticsConfigInput' {..} =
+    Prelude.rnf targetBands
+      `Prelude.seq` Prelude.rnf statistics
+      `Prelude.seq` Prelude.rnf zoneS3Path
+
+instance Data.ToJSON ZonalStatisticsConfigInput where
+  toJSON ZonalStatisticsConfigInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TargetBands" Data..=) Prelude.<$> targetBands,
+            Prelude.Just ("Statistics" Data..= statistics),
+            Prelude.Just ("ZoneS3Path" Data..= zoneS3Path)
+          ]
+      )
diff --git a/gen/Amazonka/SageMakerGeoSpatial/UntagResource.hs b/gen/Amazonka/SageMakerGeoSpatial/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/UntagResource.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.SageMakerGeoSpatial.UntagResource
+-- 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 you want to untag.
+module Amazonka.SageMakerGeoSpatial.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_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.SageMakerGeoSpatial.Types
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource you want to untag.
+    resourceArn :: Prelude.Text,
+    -- | Keys of the tags you want to remove.
+    tagKeys :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource you want to untag.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - Keys of the tags you want to remove.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ pTagKeys_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource you want to untag.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | Keys of the tags you want to remove.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SageMakerGeoSpatial/Waiters.hs b/gen/Amazonka/SageMakerGeoSpatial/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SageMakerGeoSpatial/Waiters.hs
@@ -0,0 +1,24 @@
+{-# 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.SageMakerGeoSpatial.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.SageMakerGeoSpatial.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.SageMakerGeoSpatial.Lens
+import Amazonka.SageMakerGeoSpatial.Types
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.SageMakerGeoSpatial
+import Test.Amazonka.SageMakerGeoSpatial.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "SageMakerGeoSpatial"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/SageMakerGeoSpatial.hs b/test/Test/Amazonka/Gen/SageMakerGeoSpatial.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/SageMakerGeoSpatial.hs
@@ -0,0 +1,410 @@
+{-# 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.SageMakerGeoSpatial
+-- Copyright   : (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.SageMakerGeoSpatial where
+
+import Amazonka.SageMakerGeoSpatial
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.SageMakerGeoSpatial.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"
+--         [ requestDeleteEarthObservationJob $
+--             newDeleteEarthObservationJob
+--
+--         , requestDeleteVectorEnrichmentJob $
+--             newDeleteVectorEnrichmentJob
+--
+--         , requestExportEarthObservationJob $
+--             newExportEarthObservationJob
+--
+--         , requestExportVectorEnrichmentJob $
+--             newExportVectorEnrichmentJob
+--
+--         , requestGetEarthObservationJob $
+--             newGetEarthObservationJob
+--
+--         , requestGetRasterDataCollection $
+--             newGetRasterDataCollection
+--
+--         , requestGetTile $
+--             newGetTile
+--
+--         , requestGetVectorEnrichmentJob $
+--             newGetVectorEnrichmentJob
+--
+--         , requestListEarthObservationJobs $
+--             newListEarthObservationJobs
+--
+--         , requestListRasterDataCollections $
+--             newListRasterDataCollections
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestListVectorEnrichmentJobs $
+--             newListVectorEnrichmentJobs
+--
+--         , requestSearchRasterDataCollection $
+--             newSearchRasterDataCollection
+--
+--         , requestStartEarthObservationJob $
+--             newStartEarthObservationJob
+--
+--         , requestStartVectorEnrichmentJob $
+--             newStartVectorEnrichmentJob
+--
+--         , requestStopEarthObservationJob $
+--             newStopEarthObservationJob
+--
+--         , requestStopVectorEnrichmentJob $
+--             newStopVectorEnrichmentJob
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseDeleteEarthObservationJob $
+--             newDeleteEarthObservationJobResponse
+--
+--         , responseDeleteVectorEnrichmentJob $
+--             newDeleteVectorEnrichmentJobResponse
+--
+--         , responseExportEarthObservationJob $
+--             newExportEarthObservationJobResponse
+--
+--         , responseExportVectorEnrichmentJob $
+--             newExportVectorEnrichmentJobResponse
+--
+--         , responseGetEarthObservationJob $
+--             newGetEarthObservationJobResponse
+--
+--         , responseGetRasterDataCollection $
+--             newGetRasterDataCollectionResponse
+--
+--         , responseGetTile $
+--             newGetTileResponse
+--
+--         , responseGetVectorEnrichmentJob $
+--             newGetVectorEnrichmentJobResponse
+--
+--         , responseListEarthObservationJobs $
+--             newListEarthObservationJobsResponse
+--
+--         , responseListRasterDataCollections $
+--             newListRasterDataCollectionsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseListVectorEnrichmentJobs $
+--             newListVectorEnrichmentJobsResponse
+--
+--         , responseSearchRasterDataCollection $
+--             newSearchRasterDataCollectionResponse
+--
+--         , responseStartEarthObservationJob $
+--             newStartEarthObservationJobResponse
+--
+--         , responseStartVectorEnrichmentJob $
+--             newStartVectorEnrichmentJobResponse
+--
+--         , responseStopEarthObservationJob $
+--             newStopEarthObservationJobResponse
+--
+--         , responseStopVectorEnrichmentJob $
+--             newStopVectorEnrichmentJobResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestDeleteEarthObservationJob :: DeleteEarthObservationJob -> TestTree
+requestDeleteEarthObservationJob =
+  req
+    "DeleteEarthObservationJob"
+    "fixture/DeleteEarthObservationJob.yaml"
+
+requestDeleteVectorEnrichmentJob :: DeleteVectorEnrichmentJob -> TestTree
+requestDeleteVectorEnrichmentJob =
+  req
+    "DeleteVectorEnrichmentJob"
+    "fixture/DeleteVectorEnrichmentJob.yaml"
+
+requestExportEarthObservationJob :: ExportEarthObservationJob -> TestTree
+requestExportEarthObservationJob =
+  req
+    "ExportEarthObservationJob"
+    "fixture/ExportEarthObservationJob.yaml"
+
+requestExportVectorEnrichmentJob :: ExportVectorEnrichmentJob -> TestTree
+requestExportVectorEnrichmentJob =
+  req
+    "ExportVectorEnrichmentJob"
+    "fixture/ExportVectorEnrichmentJob.yaml"
+
+requestGetEarthObservationJob :: GetEarthObservationJob -> TestTree
+requestGetEarthObservationJob =
+  req
+    "GetEarthObservationJob"
+    "fixture/GetEarthObservationJob.yaml"
+
+requestGetRasterDataCollection :: GetRasterDataCollection -> TestTree
+requestGetRasterDataCollection =
+  req
+    "GetRasterDataCollection"
+    "fixture/GetRasterDataCollection.yaml"
+
+requestGetTile :: GetTile -> TestTree
+requestGetTile =
+  req
+    "GetTile"
+    "fixture/GetTile.yaml"
+
+requestGetVectorEnrichmentJob :: GetVectorEnrichmentJob -> TestTree
+requestGetVectorEnrichmentJob =
+  req
+    "GetVectorEnrichmentJob"
+    "fixture/GetVectorEnrichmentJob.yaml"
+
+requestListEarthObservationJobs :: ListEarthObservationJobs -> TestTree
+requestListEarthObservationJobs =
+  req
+    "ListEarthObservationJobs"
+    "fixture/ListEarthObservationJobs.yaml"
+
+requestListRasterDataCollections :: ListRasterDataCollections -> TestTree
+requestListRasterDataCollections =
+  req
+    "ListRasterDataCollections"
+    "fixture/ListRasterDataCollections.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestListVectorEnrichmentJobs :: ListVectorEnrichmentJobs -> TestTree
+requestListVectorEnrichmentJobs =
+  req
+    "ListVectorEnrichmentJobs"
+    "fixture/ListVectorEnrichmentJobs.yaml"
+
+requestSearchRasterDataCollection :: SearchRasterDataCollection -> TestTree
+requestSearchRasterDataCollection =
+  req
+    "SearchRasterDataCollection"
+    "fixture/SearchRasterDataCollection.yaml"
+
+requestStartEarthObservationJob :: StartEarthObservationJob -> TestTree
+requestStartEarthObservationJob =
+  req
+    "StartEarthObservationJob"
+    "fixture/StartEarthObservationJob.yaml"
+
+requestStartVectorEnrichmentJob :: StartVectorEnrichmentJob -> TestTree
+requestStartVectorEnrichmentJob =
+  req
+    "StartVectorEnrichmentJob"
+    "fixture/StartVectorEnrichmentJob.yaml"
+
+requestStopEarthObservationJob :: StopEarthObservationJob -> TestTree
+requestStopEarthObservationJob =
+  req
+    "StopEarthObservationJob"
+    "fixture/StopEarthObservationJob.yaml"
+
+requestStopVectorEnrichmentJob :: StopVectorEnrichmentJob -> TestTree
+requestStopVectorEnrichmentJob =
+  req
+    "StopVectorEnrichmentJob"
+    "fixture/StopVectorEnrichmentJob.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+-- Responses
+
+responseDeleteEarthObservationJob :: DeleteEarthObservationJobResponse -> TestTree
+responseDeleteEarthObservationJob =
+  res
+    "DeleteEarthObservationJobResponse"
+    "fixture/DeleteEarthObservationJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteEarthObservationJob)
+
+responseDeleteVectorEnrichmentJob :: DeleteVectorEnrichmentJobResponse -> TestTree
+responseDeleteVectorEnrichmentJob =
+  res
+    "DeleteVectorEnrichmentJobResponse"
+    "fixture/DeleteVectorEnrichmentJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVectorEnrichmentJob)
+
+responseExportEarthObservationJob :: ExportEarthObservationJobResponse -> TestTree
+responseExportEarthObservationJob =
+  res
+    "ExportEarthObservationJobResponse"
+    "fixture/ExportEarthObservationJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ExportEarthObservationJob)
+
+responseExportVectorEnrichmentJob :: ExportVectorEnrichmentJobResponse -> TestTree
+responseExportVectorEnrichmentJob =
+  res
+    "ExportVectorEnrichmentJobResponse"
+    "fixture/ExportVectorEnrichmentJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ExportVectorEnrichmentJob)
+
+responseGetEarthObservationJob :: GetEarthObservationJobResponse -> TestTree
+responseGetEarthObservationJob =
+  res
+    "GetEarthObservationJobResponse"
+    "fixture/GetEarthObservationJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetEarthObservationJob)
+
+responseGetRasterDataCollection :: GetRasterDataCollectionResponse -> TestTree
+responseGetRasterDataCollection =
+  res
+    "GetRasterDataCollectionResponse"
+    "fixture/GetRasterDataCollectionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetRasterDataCollection)
+
+responseGetVectorEnrichmentJob :: GetVectorEnrichmentJobResponse -> TestTree
+responseGetVectorEnrichmentJob =
+  res
+    "GetVectorEnrichmentJobResponse"
+    "fixture/GetVectorEnrichmentJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetVectorEnrichmentJob)
+
+responseListEarthObservationJobs :: ListEarthObservationJobsResponse -> TestTree
+responseListEarthObservationJobs =
+  res
+    "ListEarthObservationJobsResponse"
+    "fixture/ListEarthObservationJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListEarthObservationJobs)
+
+responseListRasterDataCollections :: ListRasterDataCollectionsResponse -> TestTree
+responseListRasterDataCollections =
+  res
+    "ListRasterDataCollectionsResponse"
+    "fixture/ListRasterDataCollectionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRasterDataCollections)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseListVectorEnrichmentJobs :: ListVectorEnrichmentJobsResponse -> TestTree
+responseListVectorEnrichmentJobs =
+  res
+    "ListVectorEnrichmentJobsResponse"
+    "fixture/ListVectorEnrichmentJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListVectorEnrichmentJobs)
+
+responseSearchRasterDataCollection :: SearchRasterDataCollectionResponse -> TestTree
+responseSearchRasterDataCollection =
+  res
+    "SearchRasterDataCollectionResponse"
+    "fixture/SearchRasterDataCollectionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchRasterDataCollection)
+
+responseStartEarthObservationJob :: StartEarthObservationJobResponse -> TestTree
+responseStartEarthObservationJob =
+  res
+    "StartEarthObservationJobResponse"
+    "fixture/StartEarthObservationJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartEarthObservationJob)
+
+responseStartVectorEnrichmentJob :: StartVectorEnrichmentJobResponse -> TestTree
+responseStartVectorEnrichmentJob =
+  res
+    "StartVectorEnrichmentJobResponse"
+    "fixture/StartVectorEnrichmentJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartVectorEnrichmentJob)
+
+responseStopEarthObservationJob :: StopEarthObservationJobResponse -> TestTree
+responseStopEarthObservationJob =
+  res
+    "StopEarthObservationJobResponse"
+    "fixture/StopEarthObservationJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopEarthObservationJob)
+
+responseStopVectorEnrichmentJob :: StopVectorEnrichmentJobResponse -> TestTree
+responseStopVectorEnrichmentJob =
+  res
+    "StopVectorEnrichmentJobResponse"
+    "fixture/StopVectorEnrichmentJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopVectorEnrichmentJob)
+
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource =
+  res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagResource)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource =
+  res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagResource)
diff --git a/test/Test/Amazonka/SageMakerGeoSpatial.hs b/test/Test/Amazonka/SageMakerGeoSpatial.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/SageMakerGeoSpatial.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.SageMakerGeoSpatial
+-- Copyright   : (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.SageMakerGeoSpatial
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/SageMakerGeoSpatial/Internal.hs b/test/Test/Amazonka/SageMakerGeoSpatial/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/SageMakerGeoSpatial/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.SageMakerGeoSpatial.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.SageMakerGeoSpatial.Internal where
