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 Lookout for Equipment SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2020-12-15@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-lookoutequipment)
+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.LookoutEquipment](http://hackage.haskell.org/package/amazonka-lookoutequipment/docs/Amazonka-LookoutEquipment.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-lookoutequipment` 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-lookoutequipment.cabal b/amazonka-lookoutequipment.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-lookoutequipment.cabal
@@ -0,0 +1,163 @@
+cabal-version:      2.2
+name:               amazonka-lookoutequipment
+version:            2.0
+synopsis:           Amazon Lookout for Equipment 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-12-15@ 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.LookoutEquipment.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.LookoutEquipment" 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-lookoutequipment
+
+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.LookoutEquipment
+    Amazonka.LookoutEquipment.CreateDataset
+    Amazonka.LookoutEquipment.CreateInferenceScheduler
+    Amazonka.LookoutEquipment.CreateLabel
+    Amazonka.LookoutEquipment.CreateLabelGroup
+    Amazonka.LookoutEquipment.CreateModel
+    Amazonka.LookoutEquipment.DeleteDataset
+    Amazonka.LookoutEquipment.DeleteInferenceScheduler
+    Amazonka.LookoutEquipment.DeleteLabel
+    Amazonka.LookoutEquipment.DeleteLabelGroup
+    Amazonka.LookoutEquipment.DeleteModel
+    Amazonka.LookoutEquipment.DescribeDataIngestionJob
+    Amazonka.LookoutEquipment.DescribeDataset
+    Amazonka.LookoutEquipment.DescribeInferenceScheduler
+    Amazonka.LookoutEquipment.DescribeLabel
+    Amazonka.LookoutEquipment.DescribeLabelGroup
+    Amazonka.LookoutEquipment.DescribeModel
+    Amazonka.LookoutEquipment.Lens
+    Amazonka.LookoutEquipment.ListDataIngestionJobs
+    Amazonka.LookoutEquipment.ListDatasets
+    Amazonka.LookoutEquipment.ListInferenceEvents
+    Amazonka.LookoutEquipment.ListInferenceExecutions
+    Amazonka.LookoutEquipment.ListInferenceSchedulers
+    Amazonka.LookoutEquipment.ListLabelGroups
+    Amazonka.LookoutEquipment.ListLabels
+    Amazonka.LookoutEquipment.ListModels
+    Amazonka.LookoutEquipment.ListSensorStatistics
+    Amazonka.LookoutEquipment.ListTagsForResource
+    Amazonka.LookoutEquipment.StartDataIngestionJob
+    Amazonka.LookoutEquipment.StartInferenceScheduler
+    Amazonka.LookoutEquipment.StopInferenceScheduler
+    Amazonka.LookoutEquipment.TagResource
+    Amazonka.LookoutEquipment.Types
+    Amazonka.LookoutEquipment.Types.CategoricalValues
+    Amazonka.LookoutEquipment.Types.CountPercent
+    Amazonka.LookoutEquipment.Types.DataIngestionJobSummary
+    Amazonka.LookoutEquipment.Types.DataPreProcessingConfiguration
+    Amazonka.LookoutEquipment.Types.DataQualitySummary
+    Amazonka.LookoutEquipment.Types.DatasetSchema
+    Amazonka.LookoutEquipment.Types.DatasetStatus
+    Amazonka.LookoutEquipment.Types.DatasetSummary
+    Amazonka.LookoutEquipment.Types.DataUploadFrequency
+    Amazonka.LookoutEquipment.Types.DuplicateTimestamps
+    Amazonka.LookoutEquipment.Types.InferenceEventSummary
+    Amazonka.LookoutEquipment.Types.InferenceExecutionStatus
+    Amazonka.LookoutEquipment.Types.InferenceExecutionSummary
+    Amazonka.LookoutEquipment.Types.InferenceInputConfiguration
+    Amazonka.LookoutEquipment.Types.InferenceInputNameConfiguration
+    Amazonka.LookoutEquipment.Types.InferenceOutputConfiguration
+    Amazonka.LookoutEquipment.Types.InferenceS3InputConfiguration
+    Amazonka.LookoutEquipment.Types.InferenceS3OutputConfiguration
+    Amazonka.LookoutEquipment.Types.InferenceSchedulerStatus
+    Amazonka.LookoutEquipment.Types.InferenceSchedulerSummary
+    Amazonka.LookoutEquipment.Types.IngestedFilesSummary
+    Amazonka.LookoutEquipment.Types.IngestionInputConfiguration
+    Amazonka.LookoutEquipment.Types.IngestionJobStatus
+    Amazonka.LookoutEquipment.Types.IngestionS3InputConfiguration
+    Amazonka.LookoutEquipment.Types.InsufficientSensorData
+    Amazonka.LookoutEquipment.Types.InvalidSensorData
+    Amazonka.LookoutEquipment.Types.LabelGroupSummary
+    Amazonka.LookoutEquipment.Types.LabelRating
+    Amazonka.LookoutEquipment.Types.LabelsInputConfiguration
+    Amazonka.LookoutEquipment.Types.LabelsS3InputConfiguration
+    Amazonka.LookoutEquipment.Types.LabelSummary
+    Amazonka.LookoutEquipment.Types.LargeTimestampGaps
+    Amazonka.LookoutEquipment.Types.LatestInferenceResult
+    Amazonka.LookoutEquipment.Types.MissingCompleteSensorData
+    Amazonka.LookoutEquipment.Types.MissingSensorData
+    Amazonka.LookoutEquipment.Types.ModelStatus
+    Amazonka.LookoutEquipment.Types.ModelSummary
+    Amazonka.LookoutEquipment.Types.Monotonicity
+    Amazonka.LookoutEquipment.Types.MonotonicValues
+    Amazonka.LookoutEquipment.Types.MultipleOperatingModes
+    Amazonka.LookoutEquipment.Types.S3Object
+    Amazonka.LookoutEquipment.Types.SensorStatisticsSummary
+    Amazonka.LookoutEquipment.Types.SensorsWithShortDateRange
+    Amazonka.LookoutEquipment.Types.StatisticalIssueStatus
+    Amazonka.LookoutEquipment.Types.Tag
+    Amazonka.LookoutEquipment.Types.TargetSamplingRate
+    Amazonka.LookoutEquipment.Types.UnsupportedTimestamps
+    Amazonka.LookoutEquipment.UntagResource
+    Amazonka.LookoutEquipment.UpdateInferenceScheduler
+    Amazonka.LookoutEquipment.UpdateLabelGroup
+    Amazonka.LookoutEquipment.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-lookoutequipment-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.LookoutEquipment
+    Test.Amazonka.LookoutEquipment
+    Test.Amazonka.LookoutEquipment.Internal
+
+  build-depends:
+    , amazonka-core              >=2.0 && <2.1
+    , amazonka-lookoutequipment
+    , amazonka-test              >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CreateDataset.yaml b/fixture/CreateDataset.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDataset.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateDatasetResponse.proto b/fixture/CreateDatasetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDatasetResponse.proto
diff --git a/fixture/CreateInferenceScheduler.yaml b/fixture/CreateInferenceScheduler.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateInferenceScheduler.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateInferenceSchedulerResponse.proto b/fixture/CreateInferenceSchedulerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateInferenceSchedulerResponse.proto
diff --git a/fixture/CreateLabel.yaml b/fixture/CreateLabel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLabel.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateLabelGroup.yaml b/fixture/CreateLabelGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLabelGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateLabelGroupResponse.proto b/fixture/CreateLabelGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLabelGroupResponse.proto
diff --git a/fixture/CreateLabelResponse.proto b/fixture/CreateLabelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateLabelResponse.proto
diff --git a/fixture/CreateModel.yaml b/fixture/CreateModel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModel.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateModelResponse.proto b/fixture/CreateModelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelResponse.proto
diff --git a/fixture/DeleteDataset.yaml b/fixture/DeleteDataset.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDataset.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteDatasetResponse.proto b/fixture/DeleteDatasetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDatasetResponse.proto
diff --git a/fixture/DeleteInferenceScheduler.yaml b/fixture/DeleteInferenceScheduler.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteInferenceScheduler.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteInferenceSchedulerResponse.proto b/fixture/DeleteInferenceSchedulerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteInferenceSchedulerResponse.proto
diff --git a/fixture/DeleteLabel.yaml b/fixture/DeleteLabel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLabel.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteLabelGroup.yaml b/fixture/DeleteLabelGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLabelGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteLabelGroupResponse.proto b/fixture/DeleteLabelGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLabelGroupResponse.proto
diff --git a/fixture/DeleteLabelResponse.proto b/fixture/DeleteLabelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteLabelResponse.proto
diff --git a/fixture/DeleteModel.yaml b/fixture/DeleteModel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModel.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteModelResponse.proto b/fixture/DeleteModelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelResponse.proto
diff --git a/fixture/DescribeDataIngestionJob.yaml b/fixture/DescribeDataIngestionJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataIngestionJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeDataIngestionJobResponse.proto b/fixture/DescribeDataIngestionJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataIngestionJobResponse.proto
diff --git a/fixture/DescribeDataset.yaml b/fixture/DescribeDataset.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDataset.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeDatasetResponse.proto b/fixture/DescribeDatasetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDatasetResponse.proto
diff --git a/fixture/DescribeInferenceScheduler.yaml b/fixture/DescribeInferenceScheduler.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInferenceScheduler.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeInferenceSchedulerResponse.proto b/fixture/DescribeInferenceSchedulerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInferenceSchedulerResponse.proto
diff --git a/fixture/DescribeLabel.yaml b/fixture/DescribeLabel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeLabel.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeLabelGroup.yaml b/fixture/DescribeLabelGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeLabelGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeLabelGroupResponse.proto b/fixture/DescribeLabelGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeLabelGroupResponse.proto
diff --git a/fixture/DescribeLabelResponse.proto b/fixture/DescribeLabelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeLabelResponse.proto
diff --git a/fixture/DescribeModel.yaml b/fixture/DescribeModel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModel.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeModelResponse.proto b/fixture/DescribeModelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeModelResponse.proto
diff --git a/fixture/ListDataIngestionJobs.yaml b/fixture/ListDataIngestionJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDataIngestionJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListDataIngestionJobsResponse.proto b/fixture/ListDataIngestionJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDataIngestionJobsResponse.proto
diff --git a/fixture/ListDatasets.yaml b/fixture/ListDatasets.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDatasets.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListDatasetsResponse.proto b/fixture/ListDatasetsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDatasetsResponse.proto
diff --git a/fixture/ListInferenceEvents.yaml b/fixture/ListInferenceEvents.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceEvents.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListInferenceEventsResponse.proto b/fixture/ListInferenceEventsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceEventsResponse.proto
diff --git a/fixture/ListInferenceExecutions.yaml b/fixture/ListInferenceExecutions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceExecutions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListInferenceExecutionsResponse.proto b/fixture/ListInferenceExecutionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceExecutionsResponse.proto
diff --git a/fixture/ListInferenceSchedulers.yaml b/fixture/ListInferenceSchedulers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceSchedulers.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListInferenceSchedulersResponse.proto b/fixture/ListInferenceSchedulersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListInferenceSchedulersResponse.proto
diff --git a/fixture/ListLabelGroups.yaml b/fixture/ListLabelGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLabelGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListLabelGroupsResponse.proto b/fixture/ListLabelGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLabelGroupsResponse.proto
diff --git a/fixture/ListLabels.yaml b/fixture/ListLabels.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListLabels.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListLabelsResponse.proto b/fixture/ListLabelsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListLabelsResponse.proto
diff --git a/fixture/ListModels.yaml b/fixture/ListModels.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListModels.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListModelsResponse.proto b/fixture/ListModelsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListModelsResponse.proto
diff --git a/fixture/ListSensorStatistics.yaml b/fixture/ListSensorStatistics.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSensorStatistics.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListSensorStatisticsResponse.proto b/fixture/ListSensorStatisticsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSensorStatisticsResponse.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: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  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/StartDataIngestionJob.yaml b/fixture/StartDataIngestionJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartDataIngestionJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartDataIngestionJobResponse.proto b/fixture/StartDataIngestionJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartDataIngestionJobResponse.proto
diff --git a/fixture/StartInferenceScheduler.yaml b/fixture/StartInferenceScheduler.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartInferenceScheduler.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartInferenceSchedulerResponse.proto b/fixture/StartInferenceSchedulerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartInferenceSchedulerResponse.proto
diff --git a/fixture/StopInferenceScheduler.yaml b/fixture/StopInferenceScheduler.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopInferenceScheduler.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopInferenceSchedulerResponse.proto b/fixture/StopInferenceSchedulerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopInferenceSchedulerResponse.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: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  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: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  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/fixture/UpdateInferenceScheduler.yaml b/fixture/UpdateInferenceScheduler.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateInferenceScheduler.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateInferenceSchedulerResponse.proto b/fixture/UpdateInferenceSchedulerResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateInferenceSchedulerResponse.proto
diff --git a/fixture/UpdateLabelGroup.yaml b/fixture/UpdateLabelGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateLabelGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lookoutequipment/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lookoutequipment.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateLabelGroupResponse.proto b/fixture/UpdateLabelGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateLabelGroupResponse.proto
diff --git a/gen/Amazonka/LookoutEquipment.hs b/gen/Amazonka/LookoutEquipment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment.hs
@@ -0,0 +1,492 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.LookoutEquipment
+-- 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-12-15@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Lookout for Equipment is a machine learning service that uses
+-- advanced analytics to identify anomalies in machines from sensor data
+-- for use in predictive maintenance.
+module Amazonka.LookoutEquipment
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CreateDataset
+    CreateDataset (CreateDataset'),
+    newCreateDataset,
+    CreateDatasetResponse (CreateDatasetResponse'),
+    newCreateDatasetResponse,
+
+    -- ** CreateInferenceScheduler
+    CreateInferenceScheduler (CreateInferenceScheduler'),
+    newCreateInferenceScheduler,
+    CreateInferenceSchedulerResponse (CreateInferenceSchedulerResponse'),
+    newCreateInferenceSchedulerResponse,
+
+    -- ** CreateLabel
+    CreateLabel (CreateLabel'),
+    newCreateLabel,
+    CreateLabelResponse (CreateLabelResponse'),
+    newCreateLabelResponse,
+
+    -- ** CreateLabelGroup
+    CreateLabelGroup (CreateLabelGroup'),
+    newCreateLabelGroup,
+    CreateLabelGroupResponse (CreateLabelGroupResponse'),
+    newCreateLabelGroupResponse,
+
+    -- ** CreateModel
+    CreateModel (CreateModel'),
+    newCreateModel,
+    CreateModelResponse (CreateModelResponse'),
+    newCreateModelResponse,
+
+    -- ** DeleteDataset
+    DeleteDataset (DeleteDataset'),
+    newDeleteDataset,
+    DeleteDatasetResponse (DeleteDatasetResponse'),
+    newDeleteDatasetResponse,
+
+    -- ** DeleteInferenceScheduler
+    DeleteInferenceScheduler (DeleteInferenceScheduler'),
+    newDeleteInferenceScheduler,
+    DeleteInferenceSchedulerResponse (DeleteInferenceSchedulerResponse'),
+    newDeleteInferenceSchedulerResponse,
+
+    -- ** DeleteLabel
+    DeleteLabel (DeleteLabel'),
+    newDeleteLabel,
+    DeleteLabelResponse (DeleteLabelResponse'),
+    newDeleteLabelResponse,
+
+    -- ** DeleteLabelGroup
+    DeleteLabelGroup (DeleteLabelGroup'),
+    newDeleteLabelGroup,
+    DeleteLabelGroupResponse (DeleteLabelGroupResponse'),
+    newDeleteLabelGroupResponse,
+
+    -- ** DeleteModel
+    DeleteModel (DeleteModel'),
+    newDeleteModel,
+    DeleteModelResponse (DeleteModelResponse'),
+    newDeleteModelResponse,
+
+    -- ** DescribeDataIngestionJob
+    DescribeDataIngestionJob (DescribeDataIngestionJob'),
+    newDescribeDataIngestionJob,
+    DescribeDataIngestionJobResponse (DescribeDataIngestionJobResponse'),
+    newDescribeDataIngestionJobResponse,
+
+    -- ** DescribeDataset
+    DescribeDataset (DescribeDataset'),
+    newDescribeDataset,
+    DescribeDatasetResponse (DescribeDatasetResponse'),
+    newDescribeDatasetResponse,
+
+    -- ** DescribeInferenceScheduler
+    DescribeInferenceScheduler (DescribeInferenceScheduler'),
+    newDescribeInferenceScheduler,
+    DescribeInferenceSchedulerResponse (DescribeInferenceSchedulerResponse'),
+    newDescribeInferenceSchedulerResponse,
+
+    -- ** DescribeLabel
+    DescribeLabel (DescribeLabel'),
+    newDescribeLabel,
+    DescribeLabelResponse (DescribeLabelResponse'),
+    newDescribeLabelResponse,
+
+    -- ** DescribeLabelGroup
+    DescribeLabelGroup (DescribeLabelGroup'),
+    newDescribeLabelGroup,
+    DescribeLabelGroupResponse (DescribeLabelGroupResponse'),
+    newDescribeLabelGroupResponse,
+
+    -- ** DescribeModel
+    DescribeModel (DescribeModel'),
+    newDescribeModel,
+    DescribeModelResponse (DescribeModelResponse'),
+    newDescribeModelResponse,
+
+    -- ** ListDataIngestionJobs
+    ListDataIngestionJobs (ListDataIngestionJobs'),
+    newListDataIngestionJobs,
+    ListDataIngestionJobsResponse (ListDataIngestionJobsResponse'),
+    newListDataIngestionJobsResponse,
+
+    -- ** ListDatasets
+    ListDatasets (ListDatasets'),
+    newListDatasets,
+    ListDatasetsResponse (ListDatasetsResponse'),
+    newListDatasetsResponse,
+
+    -- ** ListInferenceEvents
+    ListInferenceEvents (ListInferenceEvents'),
+    newListInferenceEvents,
+    ListInferenceEventsResponse (ListInferenceEventsResponse'),
+    newListInferenceEventsResponse,
+
+    -- ** ListInferenceExecutions
+    ListInferenceExecutions (ListInferenceExecutions'),
+    newListInferenceExecutions,
+    ListInferenceExecutionsResponse (ListInferenceExecutionsResponse'),
+    newListInferenceExecutionsResponse,
+
+    -- ** ListInferenceSchedulers
+    ListInferenceSchedulers (ListInferenceSchedulers'),
+    newListInferenceSchedulers,
+    ListInferenceSchedulersResponse (ListInferenceSchedulersResponse'),
+    newListInferenceSchedulersResponse,
+
+    -- ** ListLabelGroups
+    ListLabelGroups (ListLabelGroups'),
+    newListLabelGroups,
+    ListLabelGroupsResponse (ListLabelGroupsResponse'),
+    newListLabelGroupsResponse,
+
+    -- ** ListLabels
+    ListLabels (ListLabels'),
+    newListLabels,
+    ListLabelsResponse (ListLabelsResponse'),
+    newListLabelsResponse,
+
+    -- ** ListModels
+    ListModels (ListModels'),
+    newListModels,
+    ListModelsResponse (ListModelsResponse'),
+    newListModelsResponse,
+
+    -- ** ListSensorStatistics
+    ListSensorStatistics (ListSensorStatistics'),
+    newListSensorStatistics,
+    ListSensorStatisticsResponse (ListSensorStatisticsResponse'),
+    newListSensorStatisticsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** StartDataIngestionJob
+    StartDataIngestionJob (StartDataIngestionJob'),
+    newStartDataIngestionJob,
+    StartDataIngestionJobResponse (StartDataIngestionJobResponse'),
+    newStartDataIngestionJobResponse,
+
+    -- ** StartInferenceScheduler
+    StartInferenceScheduler (StartInferenceScheduler'),
+    newStartInferenceScheduler,
+    StartInferenceSchedulerResponse (StartInferenceSchedulerResponse'),
+    newStartInferenceSchedulerResponse,
+
+    -- ** StopInferenceScheduler
+    StopInferenceScheduler (StopInferenceScheduler'),
+    newStopInferenceScheduler,
+    StopInferenceSchedulerResponse (StopInferenceSchedulerResponse'),
+    newStopInferenceSchedulerResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateInferenceScheduler
+    UpdateInferenceScheduler (UpdateInferenceScheduler'),
+    newUpdateInferenceScheduler,
+    UpdateInferenceSchedulerResponse (UpdateInferenceSchedulerResponse'),
+    newUpdateInferenceSchedulerResponse,
+
+    -- ** UpdateLabelGroup
+    UpdateLabelGroup (UpdateLabelGroup'),
+    newUpdateLabelGroup,
+    UpdateLabelGroupResponse (UpdateLabelGroupResponse'),
+    newUpdateLabelGroupResponse,
+
+    -- * Types
+
+    -- ** DataUploadFrequency
+    DataUploadFrequency (..),
+
+    -- ** DatasetStatus
+    DatasetStatus (..),
+
+    -- ** InferenceExecutionStatus
+    InferenceExecutionStatus (..),
+
+    -- ** InferenceSchedulerStatus
+    InferenceSchedulerStatus (..),
+
+    -- ** IngestionJobStatus
+    IngestionJobStatus (..),
+
+    -- ** LabelRating
+    LabelRating (..),
+
+    -- ** LatestInferenceResult
+    LatestInferenceResult (..),
+
+    -- ** ModelStatus
+    ModelStatus (..),
+
+    -- ** Monotonicity
+    Monotonicity (..),
+
+    -- ** StatisticalIssueStatus
+    StatisticalIssueStatus (..),
+
+    -- ** TargetSamplingRate
+    TargetSamplingRate (..),
+
+    -- ** CategoricalValues
+    CategoricalValues (CategoricalValues'),
+    newCategoricalValues,
+
+    -- ** CountPercent
+    CountPercent (CountPercent'),
+    newCountPercent,
+
+    -- ** DataIngestionJobSummary
+    DataIngestionJobSummary (DataIngestionJobSummary'),
+    newDataIngestionJobSummary,
+
+    -- ** DataPreProcessingConfiguration
+    DataPreProcessingConfiguration (DataPreProcessingConfiguration'),
+    newDataPreProcessingConfiguration,
+
+    -- ** DataQualitySummary
+    DataQualitySummary (DataQualitySummary'),
+    newDataQualitySummary,
+
+    -- ** DatasetSchema
+    DatasetSchema (DatasetSchema'),
+    newDatasetSchema,
+
+    -- ** DatasetSummary
+    DatasetSummary (DatasetSummary'),
+    newDatasetSummary,
+
+    -- ** DuplicateTimestamps
+    DuplicateTimestamps (DuplicateTimestamps'),
+    newDuplicateTimestamps,
+
+    -- ** InferenceEventSummary
+    InferenceEventSummary (InferenceEventSummary'),
+    newInferenceEventSummary,
+
+    -- ** InferenceExecutionSummary
+    InferenceExecutionSummary (InferenceExecutionSummary'),
+    newInferenceExecutionSummary,
+
+    -- ** InferenceInputConfiguration
+    InferenceInputConfiguration (InferenceInputConfiguration'),
+    newInferenceInputConfiguration,
+
+    -- ** InferenceInputNameConfiguration
+    InferenceInputNameConfiguration (InferenceInputNameConfiguration'),
+    newInferenceInputNameConfiguration,
+
+    -- ** InferenceOutputConfiguration
+    InferenceOutputConfiguration (InferenceOutputConfiguration'),
+    newInferenceOutputConfiguration,
+
+    -- ** InferenceS3InputConfiguration
+    InferenceS3InputConfiguration (InferenceS3InputConfiguration'),
+    newInferenceS3InputConfiguration,
+
+    -- ** InferenceS3OutputConfiguration
+    InferenceS3OutputConfiguration (InferenceS3OutputConfiguration'),
+    newInferenceS3OutputConfiguration,
+
+    -- ** InferenceSchedulerSummary
+    InferenceSchedulerSummary (InferenceSchedulerSummary'),
+    newInferenceSchedulerSummary,
+
+    -- ** IngestedFilesSummary
+    IngestedFilesSummary (IngestedFilesSummary'),
+    newIngestedFilesSummary,
+
+    -- ** IngestionInputConfiguration
+    IngestionInputConfiguration (IngestionInputConfiguration'),
+    newIngestionInputConfiguration,
+
+    -- ** IngestionS3InputConfiguration
+    IngestionS3InputConfiguration (IngestionS3InputConfiguration'),
+    newIngestionS3InputConfiguration,
+
+    -- ** InsufficientSensorData
+    InsufficientSensorData (InsufficientSensorData'),
+    newInsufficientSensorData,
+
+    -- ** InvalidSensorData
+    InvalidSensorData (InvalidSensorData'),
+    newInvalidSensorData,
+
+    -- ** LabelGroupSummary
+    LabelGroupSummary (LabelGroupSummary'),
+    newLabelGroupSummary,
+
+    -- ** LabelSummary
+    LabelSummary (LabelSummary'),
+    newLabelSummary,
+
+    -- ** LabelsInputConfiguration
+    LabelsInputConfiguration (LabelsInputConfiguration'),
+    newLabelsInputConfiguration,
+
+    -- ** LabelsS3InputConfiguration
+    LabelsS3InputConfiguration (LabelsS3InputConfiguration'),
+    newLabelsS3InputConfiguration,
+
+    -- ** LargeTimestampGaps
+    LargeTimestampGaps (LargeTimestampGaps'),
+    newLargeTimestampGaps,
+
+    -- ** MissingCompleteSensorData
+    MissingCompleteSensorData (MissingCompleteSensorData'),
+    newMissingCompleteSensorData,
+
+    -- ** MissingSensorData
+    MissingSensorData (MissingSensorData'),
+    newMissingSensorData,
+
+    -- ** ModelSummary
+    ModelSummary (ModelSummary'),
+    newModelSummary,
+
+    -- ** MonotonicValues
+    MonotonicValues (MonotonicValues'),
+    newMonotonicValues,
+
+    -- ** MultipleOperatingModes
+    MultipleOperatingModes (MultipleOperatingModes'),
+    newMultipleOperatingModes,
+
+    -- ** S3Object
+    S3Object (S3Object'),
+    newS3Object,
+
+    -- ** SensorStatisticsSummary
+    SensorStatisticsSummary (SensorStatisticsSummary'),
+    newSensorStatisticsSummary,
+
+    -- ** SensorsWithShortDateRange
+    SensorsWithShortDateRange (SensorsWithShortDateRange'),
+    newSensorsWithShortDateRange,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+
+    -- ** UnsupportedTimestamps
+    UnsupportedTimestamps (UnsupportedTimestamps'),
+    newUnsupportedTimestamps,
+  )
+where
+
+import Amazonka.LookoutEquipment.CreateDataset
+import Amazonka.LookoutEquipment.CreateInferenceScheduler
+import Amazonka.LookoutEquipment.CreateLabel
+import Amazonka.LookoutEquipment.CreateLabelGroup
+import Amazonka.LookoutEquipment.CreateModel
+import Amazonka.LookoutEquipment.DeleteDataset
+import Amazonka.LookoutEquipment.DeleteInferenceScheduler
+import Amazonka.LookoutEquipment.DeleteLabel
+import Amazonka.LookoutEquipment.DeleteLabelGroup
+import Amazonka.LookoutEquipment.DeleteModel
+import Amazonka.LookoutEquipment.DescribeDataIngestionJob
+import Amazonka.LookoutEquipment.DescribeDataset
+import Amazonka.LookoutEquipment.DescribeInferenceScheduler
+import Amazonka.LookoutEquipment.DescribeLabel
+import Amazonka.LookoutEquipment.DescribeLabelGroup
+import Amazonka.LookoutEquipment.DescribeModel
+import Amazonka.LookoutEquipment.Lens
+import Amazonka.LookoutEquipment.ListDataIngestionJobs
+import Amazonka.LookoutEquipment.ListDatasets
+import Amazonka.LookoutEquipment.ListInferenceEvents
+import Amazonka.LookoutEquipment.ListInferenceExecutions
+import Amazonka.LookoutEquipment.ListInferenceSchedulers
+import Amazonka.LookoutEquipment.ListLabelGroups
+import Amazonka.LookoutEquipment.ListLabels
+import Amazonka.LookoutEquipment.ListModels
+import Amazonka.LookoutEquipment.ListSensorStatistics
+import Amazonka.LookoutEquipment.ListTagsForResource
+import Amazonka.LookoutEquipment.StartDataIngestionJob
+import Amazonka.LookoutEquipment.StartInferenceScheduler
+import Amazonka.LookoutEquipment.StopInferenceScheduler
+import Amazonka.LookoutEquipment.TagResource
+import Amazonka.LookoutEquipment.Types
+import Amazonka.LookoutEquipment.UntagResource
+import Amazonka.LookoutEquipment.UpdateInferenceScheduler
+import Amazonka.LookoutEquipment.UpdateLabelGroup
+import Amazonka.LookoutEquipment.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 'LookoutEquipment'.
+
+-- $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/LookoutEquipment/CreateDataset.hs b/gen/Amazonka/LookoutEquipment/CreateDataset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/CreateDataset.hs
@@ -0,0 +1,265 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.CreateDataset
+-- 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 container for a collection of data being ingested for
+-- analysis. The dataset contains the metadata describing where the data is
+-- and what the data actually looks like. In other words, it contains the
+-- location of the data source, the data schema, and other information. A
+-- dataset also contains any tags associated with the ingested data.
+module Amazonka.LookoutEquipment.CreateDataset
+  ( -- * Creating a Request
+    CreateDataset (..),
+    newCreateDataset,
+
+    -- * Request Lenses
+    createDataset_datasetSchema,
+    createDataset_serverSideKmsKeyId,
+    createDataset_tags,
+    createDataset_datasetName,
+    createDataset_clientToken,
+
+    -- * Destructuring the Response
+    CreateDatasetResponse (..),
+    newCreateDatasetResponse,
+
+    -- * Response Lenses
+    createDatasetResponse_datasetArn,
+    createDatasetResponse_datasetName,
+    createDatasetResponse_status,
+    createDatasetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateDataset' smart constructor.
+data CreateDataset = CreateDataset'
+  { -- | A JSON description of the data that is in each time series dataset,
+    -- including names, column names, and data types.
+    datasetSchema :: Prelude.Maybe DatasetSchema,
+    -- | Provides the identifier of the KMS key used to encrypt dataset data by
+    -- Amazon Lookout for Equipment.
+    serverSideKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Any tags associated with the ingested data described in the dataset.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the dataset being created.
+    datasetName :: Prelude.Text,
+    -- | A unique identifier for the request. If you do not set the client
+    -- request token, Amazon Lookout for Equipment generates one.
+    clientToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDataset' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datasetSchema', 'createDataset_datasetSchema' - A JSON description of the data that is in each time series dataset,
+-- including names, column names, and data types.
+--
+-- 'serverSideKmsKeyId', 'createDataset_serverSideKmsKeyId' - Provides the identifier of the KMS key used to encrypt dataset data by
+-- Amazon Lookout for Equipment.
+--
+-- 'tags', 'createDataset_tags' - Any tags associated with the ingested data described in the dataset.
+--
+-- 'datasetName', 'createDataset_datasetName' - The name of the dataset being created.
+--
+-- 'clientToken', 'createDataset_clientToken' - A unique identifier for the request. If you do not set the client
+-- request token, Amazon Lookout for Equipment generates one.
+newCreateDataset ::
+  -- | 'datasetName'
+  Prelude.Text ->
+  -- | 'clientToken'
+  Prelude.Text ->
+  CreateDataset
+newCreateDataset pDatasetName_ pClientToken_ =
+  CreateDataset'
+    { datasetSchema = Prelude.Nothing,
+      serverSideKmsKeyId = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      datasetName = pDatasetName_,
+      clientToken = pClientToken_
+    }
+
+-- | A JSON description of the data that is in each time series dataset,
+-- including names, column names, and data types.
+createDataset_datasetSchema :: Lens.Lens' CreateDataset (Prelude.Maybe DatasetSchema)
+createDataset_datasetSchema = Lens.lens (\CreateDataset' {datasetSchema} -> datasetSchema) (\s@CreateDataset' {} a -> s {datasetSchema = a} :: CreateDataset)
+
+-- | Provides the identifier of the KMS key used to encrypt dataset data by
+-- Amazon Lookout for Equipment.
+createDataset_serverSideKmsKeyId :: Lens.Lens' CreateDataset (Prelude.Maybe Prelude.Text)
+createDataset_serverSideKmsKeyId = Lens.lens (\CreateDataset' {serverSideKmsKeyId} -> serverSideKmsKeyId) (\s@CreateDataset' {} a -> s {serverSideKmsKeyId = a} :: CreateDataset)
+
+-- | Any tags associated with the ingested data described in the dataset.
+createDataset_tags :: Lens.Lens' CreateDataset (Prelude.Maybe [Tag])
+createDataset_tags = Lens.lens (\CreateDataset' {tags} -> tags) (\s@CreateDataset' {} a -> s {tags = a} :: CreateDataset) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the dataset being created.
+createDataset_datasetName :: Lens.Lens' CreateDataset Prelude.Text
+createDataset_datasetName = Lens.lens (\CreateDataset' {datasetName} -> datasetName) (\s@CreateDataset' {} a -> s {datasetName = a} :: CreateDataset)
+
+-- | A unique identifier for the request. If you do not set the client
+-- request token, Amazon Lookout for Equipment generates one.
+createDataset_clientToken :: Lens.Lens' CreateDataset Prelude.Text
+createDataset_clientToken = Lens.lens (\CreateDataset' {clientToken} -> clientToken) (\s@CreateDataset' {} a -> s {clientToken = a} :: CreateDataset)
+
+instance Core.AWSRequest CreateDataset where
+  type
+    AWSResponse CreateDataset =
+      CreateDatasetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateDatasetResponse'
+            Prelude.<$> (x Data..?> "DatasetArn")
+            Prelude.<*> (x Data..?> "DatasetName")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDataset where
+  hashWithSalt _salt CreateDataset' {..} =
+    _salt
+      `Prelude.hashWithSalt` datasetSchema
+      `Prelude.hashWithSalt` serverSideKmsKeyId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` clientToken
+
+instance Prelude.NFData CreateDataset where
+  rnf CreateDataset' {..} =
+    Prelude.rnf datasetSchema
+      `Prelude.seq` Prelude.rnf serverSideKmsKeyId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf clientToken
+
+instance Data.ToHeaders CreateDataset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.CreateDataset" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDataset where
+  toJSON CreateDataset' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DatasetSchema" Data..=) Prelude.<$> datasetSchema,
+            ("ServerSideKmsKeyId" Data..=)
+              Prelude.<$> serverSideKmsKeyId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("DatasetName" Data..= datasetName),
+            Prelude.Just ("ClientToken" Data..= clientToken)
+          ]
+      )
+
+instance Data.ToPath CreateDataset where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDataset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDatasetResponse' smart constructor.
+data CreateDatasetResponse = CreateDatasetResponse'
+  { -- | The Amazon Resource Name (ARN) of the dataset being created.
+    datasetArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the dataset being created.
+    datasetName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the @CreateDataset@ operation.
+    status :: Prelude.Maybe DatasetStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDatasetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datasetArn', 'createDatasetResponse_datasetArn' - The Amazon Resource Name (ARN) of the dataset being created.
+--
+-- 'datasetName', 'createDatasetResponse_datasetName' - The name of the dataset being created.
+--
+-- 'status', 'createDatasetResponse_status' - Indicates the status of the @CreateDataset@ operation.
+--
+-- 'httpStatus', 'createDatasetResponse_httpStatus' - The response's http status code.
+newCreateDatasetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDatasetResponse
+newCreateDatasetResponse pHttpStatus_ =
+  CreateDatasetResponse'
+    { datasetArn =
+        Prelude.Nothing,
+      datasetName = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the dataset being created.
+createDatasetResponse_datasetArn :: Lens.Lens' CreateDatasetResponse (Prelude.Maybe Prelude.Text)
+createDatasetResponse_datasetArn = Lens.lens (\CreateDatasetResponse' {datasetArn} -> datasetArn) (\s@CreateDatasetResponse' {} a -> s {datasetArn = a} :: CreateDatasetResponse)
+
+-- | The name of the dataset being created.
+createDatasetResponse_datasetName :: Lens.Lens' CreateDatasetResponse (Prelude.Maybe Prelude.Text)
+createDatasetResponse_datasetName = Lens.lens (\CreateDatasetResponse' {datasetName} -> datasetName) (\s@CreateDatasetResponse' {} a -> s {datasetName = a} :: CreateDatasetResponse)
+
+-- | Indicates the status of the @CreateDataset@ operation.
+createDatasetResponse_status :: Lens.Lens' CreateDatasetResponse (Prelude.Maybe DatasetStatus)
+createDatasetResponse_status = Lens.lens (\CreateDatasetResponse' {status} -> status) (\s@CreateDatasetResponse' {} a -> s {status = a} :: CreateDatasetResponse)
+
+-- | The response's http status code.
+createDatasetResponse_httpStatus :: Lens.Lens' CreateDatasetResponse Prelude.Int
+createDatasetResponse_httpStatus = Lens.lens (\CreateDatasetResponse' {httpStatus} -> httpStatus) (\s@CreateDatasetResponse' {} a -> s {httpStatus = a} :: CreateDatasetResponse)
+
+instance Prelude.NFData CreateDatasetResponse where
+  rnf CreateDatasetResponse' {..} =
+    Prelude.rnf datasetArn
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/CreateInferenceScheduler.hs b/gen/Amazonka/LookoutEquipment/CreateInferenceScheduler.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/CreateInferenceScheduler.hs
@@ -0,0 +1,430 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.CreateInferenceScheduler
+-- 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 scheduled inference. Scheduling an inference is setting up a
+-- continuous real-time inference plan to analyze new measurement data.
+-- When setting up the schedule, you provide an S3 bucket location for the
+-- input data, assign it a delimiter between separate entries in the data,
+-- set an offset delay if desired, and set the frequency of inferencing.
+-- You must also provide an S3 bucket location for the output data.
+module Amazonka.LookoutEquipment.CreateInferenceScheduler
+  ( -- * Creating a Request
+    CreateInferenceScheduler (..),
+    newCreateInferenceScheduler,
+
+    -- * Request Lenses
+    createInferenceScheduler_dataDelayOffsetInMinutes,
+    createInferenceScheduler_serverSideKmsKeyId,
+    createInferenceScheduler_tags,
+    createInferenceScheduler_modelName,
+    createInferenceScheduler_inferenceSchedulerName,
+    createInferenceScheduler_dataUploadFrequency,
+    createInferenceScheduler_dataInputConfiguration,
+    createInferenceScheduler_dataOutputConfiguration,
+    createInferenceScheduler_roleArn,
+    createInferenceScheduler_clientToken,
+
+    -- * Destructuring the Response
+    CreateInferenceSchedulerResponse (..),
+    newCreateInferenceSchedulerResponse,
+
+    -- * Response Lenses
+    createInferenceSchedulerResponse_inferenceSchedulerArn,
+    createInferenceSchedulerResponse_inferenceSchedulerName,
+    createInferenceSchedulerResponse_status,
+    createInferenceSchedulerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateInferenceScheduler' smart constructor.
+data CreateInferenceScheduler = CreateInferenceScheduler'
+  { -- | The interval (in minutes) of planned delay at the start of each
+    -- inference segment. For example, if inference is set to run every ten
+    -- minutes, the delay is set to five minutes and the time is 09:08. The
+    -- inference scheduler will wake up at the configured interval (which,
+    -- without a delay configured, would be 09:10) plus the additional five
+    -- minute delay time (so 09:15) to check your Amazon S3 bucket. The delay
+    -- provides a buffer for you to upload data at the same frequency, so that
+    -- you don\'t have to stop and restart the scheduler when uploading new
+    -- data.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/lookout-for-equipment/latest/ug/understanding-inference-process.html Understanding the inference process>.
+    dataDelayOffsetInMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | Provides the identifier of the KMS key used to encrypt inference
+    -- scheduler data by Amazon Lookout for Equipment.
+    serverSideKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Any tags associated with the inference scheduler.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the previously trained ML model being used to create the
+    -- inference scheduler.
+    modelName :: Prelude.Text,
+    -- | The name of the inference scheduler being created.
+    inferenceSchedulerName :: Prelude.Text,
+    -- | How often data is uploaded to the source Amazon S3 bucket for the input
+    -- data. The value chosen is the length of time between data uploads. For
+    -- instance, if you select 5 minutes, Amazon Lookout for Equipment will
+    -- upload the real-time data to the source bucket once every 5 minutes.
+    -- This frequency also determines how often Amazon Lookout for Equipment
+    -- runs inference on your data.
+    --
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/lookout-for-equipment/latest/ug/understanding-inference-process.html Understanding the inference process>.
+    dataUploadFrequency :: DataUploadFrequency,
+    -- | Specifies configuration information for the input data for the inference
+    -- scheduler, including delimiter, format, and dataset location.
+    dataInputConfiguration :: InferenceInputConfiguration,
+    -- | Specifies configuration information for the output results for the
+    -- inference scheduler, including the S3 location for the output.
+    dataOutputConfiguration :: InferenceOutputConfiguration,
+    -- | The Amazon Resource Name (ARN) of a role with permission to access the
+    -- data source being used for the inference.
+    roleArn :: Prelude.Text,
+    -- | A unique identifier for the request. If you do not set the client
+    -- request token, Amazon Lookout for Equipment generates one.
+    clientToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateInferenceScheduler' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataDelayOffsetInMinutes', 'createInferenceScheduler_dataDelayOffsetInMinutes' - The interval (in minutes) of planned delay at the start of each
+-- inference segment. For example, if inference is set to run every ten
+-- minutes, the delay is set to five minutes and the time is 09:08. The
+-- inference scheduler will wake up at the configured interval (which,
+-- without a delay configured, would be 09:10) plus the additional five
+-- minute delay time (so 09:15) to check your Amazon S3 bucket. The delay
+-- provides a buffer for you to upload data at the same frequency, so that
+-- you don\'t have to stop and restart the scheduler when uploading new
+-- data.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/lookout-for-equipment/latest/ug/understanding-inference-process.html Understanding the inference process>.
+--
+-- 'serverSideKmsKeyId', 'createInferenceScheduler_serverSideKmsKeyId' - Provides the identifier of the KMS key used to encrypt inference
+-- scheduler data by Amazon Lookout for Equipment.
+--
+-- 'tags', 'createInferenceScheduler_tags' - Any tags associated with the inference scheduler.
+--
+-- 'modelName', 'createInferenceScheduler_modelName' - The name of the previously trained ML model being used to create the
+-- inference scheduler.
+--
+-- 'inferenceSchedulerName', 'createInferenceScheduler_inferenceSchedulerName' - The name of the inference scheduler being created.
+--
+-- 'dataUploadFrequency', 'createInferenceScheduler_dataUploadFrequency' - How often data is uploaded to the source Amazon S3 bucket for the input
+-- data. The value chosen is the length of time between data uploads. For
+-- instance, if you select 5 minutes, Amazon Lookout for Equipment will
+-- upload the real-time data to the source bucket once every 5 minutes.
+-- This frequency also determines how often Amazon Lookout for Equipment
+-- runs inference on your data.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/lookout-for-equipment/latest/ug/understanding-inference-process.html Understanding the inference process>.
+--
+-- 'dataInputConfiguration', 'createInferenceScheduler_dataInputConfiguration' - Specifies configuration information for the input data for the inference
+-- scheduler, including delimiter, format, and dataset location.
+--
+-- 'dataOutputConfiguration', 'createInferenceScheduler_dataOutputConfiguration' - Specifies configuration information for the output results for the
+-- inference scheduler, including the S3 location for the output.
+--
+-- 'roleArn', 'createInferenceScheduler_roleArn' - The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source being used for the inference.
+--
+-- 'clientToken', 'createInferenceScheduler_clientToken' - A unique identifier for the request. If you do not set the client
+-- request token, Amazon Lookout for Equipment generates one.
+newCreateInferenceScheduler ::
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'inferenceSchedulerName'
+  Prelude.Text ->
+  -- | 'dataUploadFrequency'
+  DataUploadFrequency ->
+  -- | 'dataInputConfiguration'
+  InferenceInputConfiguration ->
+  -- | 'dataOutputConfiguration'
+  InferenceOutputConfiguration ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'clientToken'
+  Prelude.Text ->
+  CreateInferenceScheduler
+newCreateInferenceScheduler
+  pModelName_
+  pInferenceSchedulerName_
+  pDataUploadFrequency_
+  pDataInputConfiguration_
+  pDataOutputConfiguration_
+  pRoleArn_
+  pClientToken_ =
+    CreateInferenceScheduler'
+      { dataDelayOffsetInMinutes =
+          Prelude.Nothing,
+        serverSideKmsKeyId = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        modelName = pModelName_,
+        inferenceSchedulerName = pInferenceSchedulerName_,
+        dataUploadFrequency = pDataUploadFrequency_,
+        dataInputConfiguration = pDataInputConfiguration_,
+        dataOutputConfiguration =
+          pDataOutputConfiguration_,
+        roleArn = pRoleArn_,
+        clientToken = pClientToken_
+      }
+
+-- | The interval (in minutes) of planned delay at the start of each
+-- inference segment. For example, if inference is set to run every ten
+-- minutes, the delay is set to five minutes and the time is 09:08. The
+-- inference scheduler will wake up at the configured interval (which,
+-- without a delay configured, would be 09:10) plus the additional five
+-- minute delay time (so 09:15) to check your Amazon S3 bucket. The delay
+-- provides a buffer for you to upload data at the same frequency, so that
+-- you don\'t have to stop and restart the scheduler when uploading new
+-- data.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/lookout-for-equipment/latest/ug/understanding-inference-process.html Understanding the inference process>.
+createInferenceScheduler_dataDelayOffsetInMinutes :: Lens.Lens' CreateInferenceScheduler (Prelude.Maybe Prelude.Natural)
+createInferenceScheduler_dataDelayOffsetInMinutes = Lens.lens (\CreateInferenceScheduler' {dataDelayOffsetInMinutes} -> dataDelayOffsetInMinutes) (\s@CreateInferenceScheduler' {} a -> s {dataDelayOffsetInMinutes = a} :: CreateInferenceScheduler)
+
+-- | Provides the identifier of the KMS key used to encrypt inference
+-- scheduler data by Amazon Lookout for Equipment.
+createInferenceScheduler_serverSideKmsKeyId :: Lens.Lens' CreateInferenceScheduler (Prelude.Maybe Prelude.Text)
+createInferenceScheduler_serverSideKmsKeyId = Lens.lens (\CreateInferenceScheduler' {serverSideKmsKeyId} -> serverSideKmsKeyId) (\s@CreateInferenceScheduler' {} a -> s {serverSideKmsKeyId = a} :: CreateInferenceScheduler)
+
+-- | Any tags associated with the inference scheduler.
+createInferenceScheduler_tags :: Lens.Lens' CreateInferenceScheduler (Prelude.Maybe [Tag])
+createInferenceScheduler_tags = Lens.lens (\CreateInferenceScheduler' {tags} -> tags) (\s@CreateInferenceScheduler' {} a -> s {tags = a} :: CreateInferenceScheduler) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the previously trained ML model being used to create the
+-- inference scheduler.
+createInferenceScheduler_modelName :: Lens.Lens' CreateInferenceScheduler Prelude.Text
+createInferenceScheduler_modelName = Lens.lens (\CreateInferenceScheduler' {modelName} -> modelName) (\s@CreateInferenceScheduler' {} a -> s {modelName = a} :: CreateInferenceScheduler)
+
+-- | The name of the inference scheduler being created.
+createInferenceScheduler_inferenceSchedulerName :: Lens.Lens' CreateInferenceScheduler Prelude.Text
+createInferenceScheduler_inferenceSchedulerName = Lens.lens (\CreateInferenceScheduler' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@CreateInferenceScheduler' {} a -> s {inferenceSchedulerName = a} :: CreateInferenceScheduler)
+
+-- | How often data is uploaded to the source Amazon S3 bucket for the input
+-- data. The value chosen is the length of time between data uploads. For
+-- instance, if you select 5 minutes, Amazon Lookout for Equipment will
+-- upload the real-time data to the source bucket once every 5 minutes.
+-- This frequency also determines how often Amazon Lookout for Equipment
+-- runs inference on your data.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/lookout-for-equipment/latest/ug/understanding-inference-process.html Understanding the inference process>.
+createInferenceScheduler_dataUploadFrequency :: Lens.Lens' CreateInferenceScheduler DataUploadFrequency
+createInferenceScheduler_dataUploadFrequency = Lens.lens (\CreateInferenceScheduler' {dataUploadFrequency} -> dataUploadFrequency) (\s@CreateInferenceScheduler' {} a -> s {dataUploadFrequency = a} :: CreateInferenceScheduler)
+
+-- | Specifies configuration information for the input data for the inference
+-- scheduler, including delimiter, format, and dataset location.
+createInferenceScheduler_dataInputConfiguration :: Lens.Lens' CreateInferenceScheduler InferenceInputConfiguration
+createInferenceScheduler_dataInputConfiguration = Lens.lens (\CreateInferenceScheduler' {dataInputConfiguration} -> dataInputConfiguration) (\s@CreateInferenceScheduler' {} a -> s {dataInputConfiguration = a} :: CreateInferenceScheduler)
+
+-- | Specifies configuration information for the output results for the
+-- inference scheduler, including the S3 location for the output.
+createInferenceScheduler_dataOutputConfiguration :: Lens.Lens' CreateInferenceScheduler InferenceOutputConfiguration
+createInferenceScheduler_dataOutputConfiguration = Lens.lens (\CreateInferenceScheduler' {dataOutputConfiguration} -> dataOutputConfiguration) (\s@CreateInferenceScheduler' {} a -> s {dataOutputConfiguration = a} :: CreateInferenceScheduler)
+
+-- | The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source being used for the inference.
+createInferenceScheduler_roleArn :: Lens.Lens' CreateInferenceScheduler Prelude.Text
+createInferenceScheduler_roleArn = Lens.lens (\CreateInferenceScheduler' {roleArn} -> roleArn) (\s@CreateInferenceScheduler' {} a -> s {roleArn = a} :: CreateInferenceScheduler)
+
+-- | A unique identifier for the request. If you do not set the client
+-- request token, Amazon Lookout for Equipment generates one.
+createInferenceScheduler_clientToken :: Lens.Lens' CreateInferenceScheduler Prelude.Text
+createInferenceScheduler_clientToken = Lens.lens (\CreateInferenceScheduler' {clientToken} -> clientToken) (\s@CreateInferenceScheduler' {} a -> s {clientToken = a} :: CreateInferenceScheduler)
+
+instance Core.AWSRequest CreateInferenceScheduler where
+  type
+    AWSResponse CreateInferenceScheduler =
+      CreateInferenceSchedulerResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateInferenceSchedulerResponse'
+            Prelude.<$> (x Data..?> "InferenceSchedulerArn")
+            Prelude.<*> (x Data..?> "InferenceSchedulerName")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateInferenceScheduler where
+  hashWithSalt _salt CreateInferenceScheduler' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataDelayOffsetInMinutes
+      `Prelude.hashWithSalt` serverSideKmsKeyId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` inferenceSchedulerName
+      `Prelude.hashWithSalt` dataUploadFrequency
+      `Prelude.hashWithSalt` dataInputConfiguration
+      `Prelude.hashWithSalt` dataOutputConfiguration
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` clientToken
+
+instance Prelude.NFData CreateInferenceScheduler where
+  rnf CreateInferenceScheduler' {..} =
+    Prelude.rnf dataDelayOffsetInMinutes
+      `Prelude.seq` Prelude.rnf serverSideKmsKeyId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
+      `Prelude.seq` Prelude.rnf dataUploadFrequency
+      `Prelude.seq` Prelude.rnf dataInputConfiguration
+      `Prelude.seq` Prelude.rnf dataOutputConfiguration
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf clientToken
+
+instance Data.ToHeaders CreateInferenceScheduler where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.CreateInferenceScheduler" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateInferenceScheduler where
+  toJSON CreateInferenceScheduler' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataDelayOffsetInMinutes" Data..=)
+              Prelude.<$> dataDelayOffsetInMinutes,
+            ("ServerSideKmsKeyId" Data..=)
+              Prelude.<$> serverSideKmsKeyId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("ModelName" Data..= modelName),
+            Prelude.Just
+              ( "InferenceSchedulerName"
+                  Data..= inferenceSchedulerName
+              ),
+            Prelude.Just
+              ("DataUploadFrequency" Data..= dataUploadFrequency),
+            Prelude.Just
+              ( "DataInputConfiguration"
+                  Data..= dataInputConfiguration
+              ),
+            Prelude.Just
+              ( "DataOutputConfiguration"
+                  Data..= dataOutputConfiguration
+              ),
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just ("ClientToken" Data..= clientToken)
+          ]
+      )
+
+instance Data.ToPath CreateInferenceScheduler where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateInferenceScheduler where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateInferenceSchedulerResponse' smart constructor.
+data CreateInferenceSchedulerResponse = CreateInferenceSchedulerResponse'
+  { -- | The Amazon Resource Name (ARN) of the inference scheduler being created.
+    inferenceSchedulerArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of inference scheduler being created.
+    inferenceSchedulerName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the @CreateInferenceScheduler@ operation.
+    status :: Prelude.Maybe InferenceSchedulerStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateInferenceSchedulerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceSchedulerArn', 'createInferenceSchedulerResponse_inferenceSchedulerArn' - The Amazon Resource Name (ARN) of the inference scheduler being created.
+--
+-- 'inferenceSchedulerName', 'createInferenceSchedulerResponse_inferenceSchedulerName' - The name of inference scheduler being created.
+--
+-- 'status', 'createInferenceSchedulerResponse_status' - Indicates the status of the @CreateInferenceScheduler@ operation.
+--
+-- 'httpStatus', 'createInferenceSchedulerResponse_httpStatus' - The response's http status code.
+newCreateInferenceSchedulerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateInferenceSchedulerResponse
+newCreateInferenceSchedulerResponse pHttpStatus_ =
+  CreateInferenceSchedulerResponse'
+    { inferenceSchedulerArn =
+        Prelude.Nothing,
+      inferenceSchedulerName = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the inference scheduler being created.
+createInferenceSchedulerResponse_inferenceSchedulerArn :: Lens.Lens' CreateInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+createInferenceSchedulerResponse_inferenceSchedulerArn = Lens.lens (\CreateInferenceSchedulerResponse' {inferenceSchedulerArn} -> inferenceSchedulerArn) (\s@CreateInferenceSchedulerResponse' {} a -> s {inferenceSchedulerArn = a} :: CreateInferenceSchedulerResponse)
+
+-- | The name of inference scheduler being created.
+createInferenceSchedulerResponse_inferenceSchedulerName :: Lens.Lens' CreateInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+createInferenceSchedulerResponse_inferenceSchedulerName = Lens.lens (\CreateInferenceSchedulerResponse' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@CreateInferenceSchedulerResponse' {} a -> s {inferenceSchedulerName = a} :: CreateInferenceSchedulerResponse)
+
+-- | Indicates the status of the @CreateInferenceScheduler@ operation.
+createInferenceSchedulerResponse_status :: Lens.Lens' CreateInferenceSchedulerResponse (Prelude.Maybe InferenceSchedulerStatus)
+createInferenceSchedulerResponse_status = Lens.lens (\CreateInferenceSchedulerResponse' {status} -> status) (\s@CreateInferenceSchedulerResponse' {} a -> s {status = a} :: CreateInferenceSchedulerResponse)
+
+-- | The response's http status code.
+createInferenceSchedulerResponse_httpStatus :: Lens.Lens' CreateInferenceSchedulerResponse Prelude.Int
+createInferenceSchedulerResponse_httpStatus = Lens.lens (\CreateInferenceSchedulerResponse' {httpStatus} -> httpStatus) (\s@CreateInferenceSchedulerResponse' {} a -> s {httpStatus = a} :: CreateInferenceSchedulerResponse)
+
+instance
+  Prelude.NFData
+    CreateInferenceSchedulerResponse
+  where
+  rnf CreateInferenceSchedulerResponse' {..} =
+    Prelude.rnf inferenceSchedulerArn
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/CreateLabel.hs b/gen/Amazonka/LookoutEquipment/CreateLabel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/CreateLabel.hs
@@ -0,0 +1,317 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.CreateLabel
+-- 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 label for an event.
+module Amazonka.LookoutEquipment.CreateLabel
+  ( -- * Creating a Request
+    CreateLabel (..),
+    newCreateLabel,
+
+    -- * Request Lenses
+    createLabel_equipment,
+    createLabel_faultCode,
+    createLabel_notes,
+    createLabel_labelGroupName,
+    createLabel_startTime,
+    createLabel_endTime,
+    createLabel_rating,
+    createLabel_clientToken,
+
+    -- * Destructuring the Response
+    CreateLabelResponse (..),
+    newCreateLabelResponse,
+
+    -- * Response Lenses
+    createLabelResponse_labelId,
+    createLabelResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateLabel' smart constructor.
+data CreateLabel = CreateLabel'
+  { -- | Indicates that a label pertains to a particular piece of equipment.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    equipment :: Prelude.Maybe Prelude.Text,
+    -- | Provides additional information about the label. The fault code must be
+    -- defined in the FaultCodes attribute of the label group.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    faultCode :: Prelude.Maybe Prelude.Text,
+    -- | Metadata providing additional information about the label.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    notes :: Prelude.Maybe Prelude.Text,
+    -- | The name of a group of labels.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    labelGroupName :: Prelude.Text,
+    -- | The start time of the labeled event.
+    startTime :: Data.POSIX,
+    -- | The end time of the labeled event.
+    endTime :: Data.POSIX,
+    -- | Indicates whether a labeled event represents an anomaly.
+    rating :: LabelRating,
+    -- | A unique identifier for the request to create a label. If you do not set
+    -- the client request token, Lookout for Equipment generates one.
+    clientToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLabel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'equipment', 'createLabel_equipment' - Indicates that a label pertains to a particular piece of equipment.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'faultCode', 'createLabel_faultCode' - Provides additional information about the label. The fault code must be
+-- defined in the FaultCodes attribute of the label group.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'notes', 'createLabel_notes' - Metadata providing additional information about the label.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'labelGroupName', 'createLabel_labelGroupName' - The name of a group of labels.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'startTime', 'createLabel_startTime' - The start time of the labeled event.
+--
+-- 'endTime', 'createLabel_endTime' - The end time of the labeled event.
+--
+-- 'rating', 'createLabel_rating' - Indicates whether a labeled event represents an anomaly.
+--
+-- 'clientToken', 'createLabel_clientToken' - A unique identifier for the request to create a label. If you do not set
+-- the client request token, Lookout for Equipment generates one.
+newCreateLabel ::
+  -- | 'labelGroupName'
+  Prelude.Text ->
+  -- | 'startTime'
+  Prelude.UTCTime ->
+  -- | 'endTime'
+  Prelude.UTCTime ->
+  -- | 'rating'
+  LabelRating ->
+  -- | 'clientToken'
+  Prelude.Text ->
+  CreateLabel
+newCreateLabel
+  pLabelGroupName_
+  pStartTime_
+  pEndTime_
+  pRating_
+  pClientToken_ =
+    CreateLabel'
+      { equipment = Prelude.Nothing,
+        faultCode = Prelude.Nothing,
+        notes = Prelude.Nothing,
+        labelGroupName = pLabelGroupName_,
+        startTime = Data._Time Lens.# pStartTime_,
+        endTime = Data._Time Lens.# pEndTime_,
+        rating = pRating_,
+        clientToken = pClientToken_
+      }
+
+-- | Indicates that a label pertains to a particular piece of equipment.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+createLabel_equipment :: Lens.Lens' CreateLabel (Prelude.Maybe Prelude.Text)
+createLabel_equipment = Lens.lens (\CreateLabel' {equipment} -> equipment) (\s@CreateLabel' {} a -> s {equipment = a} :: CreateLabel)
+
+-- | Provides additional information about the label. The fault code must be
+-- defined in the FaultCodes attribute of the label group.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+createLabel_faultCode :: Lens.Lens' CreateLabel (Prelude.Maybe Prelude.Text)
+createLabel_faultCode = Lens.lens (\CreateLabel' {faultCode} -> faultCode) (\s@CreateLabel' {} a -> s {faultCode = a} :: CreateLabel)
+
+-- | Metadata providing additional information about the label.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+createLabel_notes :: Lens.Lens' CreateLabel (Prelude.Maybe Prelude.Text)
+createLabel_notes = Lens.lens (\CreateLabel' {notes} -> notes) (\s@CreateLabel' {} a -> s {notes = a} :: CreateLabel)
+
+-- | The name of a group of labels.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+createLabel_labelGroupName :: Lens.Lens' CreateLabel Prelude.Text
+createLabel_labelGroupName = Lens.lens (\CreateLabel' {labelGroupName} -> labelGroupName) (\s@CreateLabel' {} a -> s {labelGroupName = a} :: CreateLabel)
+
+-- | The start time of the labeled event.
+createLabel_startTime :: Lens.Lens' CreateLabel Prelude.UTCTime
+createLabel_startTime = Lens.lens (\CreateLabel' {startTime} -> startTime) (\s@CreateLabel' {} a -> s {startTime = a} :: CreateLabel) Prelude.. Data._Time
+
+-- | The end time of the labeled event.
+createLabel_endTime :: Lens.Lens' CreateLabel Prelude.UTCTime
+createLabel_endTime = Lens.lens (\CreateLabel' {endTime} -> endTime) (\s@CreateLabel' {} a -> s {endTime = a} :: CreateLabel) Prelude.. Data._Time
+
+-- | Indicates whether a labeled event represents an anomaly.
+createLabel_rating :: Lens.Lens' CreateLabel LabelRating
+createLabel_rating = Lens.lens (\CreateLabel' {rating} -> rating) (\s@CreateLabel' {} a -> s {rating = a} :: CreateLabel)
+
+-- | A unique identifier for the request to create a label. If you do not set
+-- the client request token, Lookout for Equipment generates one.
+createLabel_clientToken :: Lens.Lens' CreateLabel Prelude.Text
+createLabel_clientToken = Lens.lens (\CreateLabel' {clientToken} -> clientToken) (\s@CreateLabel' {} a -> s {clientToken = a} :: CreateLabel)
+
+instance Core.AWSRequest CreateLabel where
+  type AWSResponse CreateLabel = CreateLabelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateLabelResponse'
+            Prelude.<$> (x Data..?> "LabelId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateLabel where
+  hashWithSalt _salt CreateLabel' {..} =
+    _salt
+      `Prelude.hashWithSalt` equipment
+      `Prelude.hashWithSalt` faultCode
+      `Prelude.hashWithSalt` notes
+      `Prelude.hashWithSalt` labelGroupName
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` rating
+      `Prelude.hashWithSalt` clientToken
+
+instance Prelude.NFData CreateLabel where
+  rnf CreateLabel' {..} =
+    Prelude.rnf equipment
+      `Prelude.seq` Prelude.rnf faultCode
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf labelGroupName
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf rating
+      `Prelude.seq` Prelude.rnf clientToken
+
+instance Data.ToHeaders CreateLabel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.CreateLabel" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateLabel where
+  toJSON CreateLabel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Equipment" Data..=) Prelude.<$> equipment,
+            ("FaultCode" Data..=) Prelude.<$> faultCode,
+            ("Notes" Data..=) Prelude.<$> notes,
+            Prelude.Just
+              ("LabelGroupName" Data..= labelGroupName),
+            Prelude.Just ("StartTime" Data..= startTime),
+            Prelude.Just ("EndTime" Data..= endTime),
+            Prelude.Just ("Rating" Data..= rating),
+            Prelude.Just ("ClientToken" Data..= clientToken)
+          ]
+      )
+
+instance Data.ToPath CreateLabel where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateLabel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateLabelResponse' smart constructor.
+data CreateLabelResponse = CreateLabelResponse'
+  { -- | The ID of the label that you have created.
+    labelId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLabelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelId', 'createLabelResponse_labelId' - The ID of the label that you have created.
+--
+-- 'httpStatus', 'createLabelResponse_httpStatus' - The response's http status code.
+newCreateLabelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateLabelResponse
+newCreateLabelResponse pHttpStatus_ =
+  CreateLabelResponse'
+    { labelId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the label that you have created.
+createLabelResponse_labelId :: Lens.Lens' CreateLabelResponse (Prelude.Maybe Prelude.Text)
+createLabelResponse_labelId = Lens.lens (\CreateLabelResponse' {labelId} -> labelId) (\s@CreateLabelResponse' {} a -> s {labelId = a} :: CreateLabelResponse)
+
+-- | The response's http status code.
+createLabelResponse_httpStatus :: Lens.Lens' CreateLabelResponse Prelude.Int
+createLabelResponse_httpStatus = Lens.lens (\CreateLabelResponse' {httpStatus} -> httpStatus) (\s@CreateLabelResponse' {} a -> s {httpStatus = a} :: CreateLabelResponse)
+
+instance Prelude.NFData CreateLabelResponse where
+  rnf CreateLabelResponse' {..} =
+    Prelude.rnf labelId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/CreateLabelGroup.hs b/gen/Amazonka/LookoutEquipment/CreateLabelGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/CreateLabelGroup.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.LookoutEquipment.CreateLabelGroup
+-- 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 group of labels.
+module Amazonka.LookoutEquipment.CreateLabelGroup
+  ( -- * Creating a Request
+    CreateLabelGroup (..),
+    newCreateLabelGroup,
+
+    -- * Request Lenses
+    createLabelGroup_faultCodes,
+    createLabelGroup_tags,
+    createLabelGroup_labelGroupName,
+    createLabelGroup_clientToken,
+
+    -- * Destructuring the Response
+    CreateLabelGroupResponse (..),
+    newCreateLabelGroupResponse,
+
+    -- * Response Lenses
+    createLabelGroupResponse_labelGroupArn,
+    createLabelGroupResponse_labelGroupName,
+    createLabelGroupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateLabelGroup' smart constructor.
+data CreateLabelGroup = CreateLabelGroup'
+  { -- | The acceptable fault codes (indicating the type of anomaly associated
+    -- with the label) that can be used with this label group.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    faultCodes :: Prelude.Maybe [Prelude.Text],
+    -- | Tags that provide metadata about the label group you are creating.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    tags :: Prelude.Maybe [Tag],
+    -- | Names a group of labels.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    labelGroupName :: Prelude.Text,
+    -- | A unique identifier for the request to create a label group. If you do
+    -- not set the client request token, Lookout for Equipment generates one.
+    clientToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLabelGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'faultCodes', 'createLabelGroup_faultCodes' - The acceptable fault codes (indicating the type of anomaly associated
+-- with the label) that can be used with this label group.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'tags', 'createLabelGroup_tags' - Tags that provide metadata about the label group you are creating.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'labelGroupName', 'createLabelGroup_labelGroupName' - Names a group of labels.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'clientToken', 'createLabelGroup_clientToken' - A unique identifier for the request to create a label group. If you do
+-- not set the client request token, Lookout for Equipment generates one.
+newCreateLabelGroup ::
+  -- | 'labelGroupName'
+  Prelude.Text ->
+  -- | 'clientToken'
+  Prelude.Text ->
+  CreateLabelGroup
+newCreateLabelGroup pLabelGroupName_ pClientToken_ =
+  CreateLabelGroup'
+    { faultCodes = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      labelGroupName = pLabelGroupName_,
+      clientToken = pClientToken_
+    }
+
+-- | The acceptable fault codes (indicating the type of anomaly associated
+-- with the label) that can be used with this label group.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+createLabelGroup_faultCodes :: Lens.Lens' CreateLabelGroup (Prelude.Maybe [Prelude.Text])
+createLabelGroup_faultCodes = Lens.lens (\CreateLabelGroup' {faultCodes} -> faultCodes) (\s@CreateLabelGroup' {} a -> s {faultCodes = a} :: CreateLabelGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | Tags that provide metadata about the label group you are creating.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+createLabelGroup_tags :: Lens.Lens' CreateLabelGroup (Prelude.Maybe [Tag])
+createLabelGroup_tags = Lens.lens (\CreateLabelGroup' {tags} -> tags) (\s@CreateLabelGroup' {} a -> s {tags = a} :: CreateLabelGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | Names a group of labels.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+createLabelGroup_labelGroupName :: Lens.Lens' CreateLabelGroup Prelude.Text
+createLabelGroup_labelGroupName = Lens.lens (\CreateLabelGroup' {labelGroupName} -> labelGroupName) (\s@CreateLabelGroup' {} a -> s {labelGroupName = a} :: CreateLabelGroup)
+
+-- | A unique identifier for the request to create a label group. If you do
+-- not set the client request token, Lookout for Equipment generates one.
+createLabelGroup_clientToken :: Lens.Lens' CreateLabelGroup Prelude.Text
+createLabelGroup_clientToken = Lens.lens (\CreateLabelGroup' {clientToken} -> clientToken) (\s@CreateLabelGroup' {} a -> s {clientToken = a} :: CreateLabelGroup)
+
+instance Core.AWSRequest CreateLabelGroup where
+  type
+    AWSResponse CreateLabelGroup =
+      CreateLabelGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateLabelGroupResponse'
+            Prelude.<$> (x Data..?> "LabelGroupArn")
+            Prelude.<*> (x Data..?> "LabelGroupName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateLabelGroup where
+  hashWithSalt _salt CreateLabelGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` faultCodes
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` labelGroupName
+      `Prelude.hashWithSalt` clientToken
+
+instance Prelude.NFData CreateLabelGroup where
+  rnf CreateLabelGroup' {..} =
+    Prelude.rnf faultCodes
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf labelGroupName
+      `Prelude.seq` Prelude.rnf clientToken
+
+instance Data.ToHeaders CreateLabelGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.CreateLabelGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateLabelGroup where
+  toJSON CreateLabelGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FaultCodes" Data..=) Prelude.<$> faultCodes,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("LabelGroupName" Data..= labelGroupName),
+            Prelude.Just ("ClientToken" Data..= clientToken)
+          ]
+      )
+
+instance Data.ToPath CreateLabelGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateLabelGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateLabelGroupResponse' smart constructor.
+data CreateLabelGroupResponse = CreateLabelGroupResponse'
+  { -- | The ARN of the label group that you have created.
+    labelGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the label group that you have created. Data in this field
+    -- will be retained for service usage. Follow best practices for the
+    -- security of your data.
+    labelGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLabelGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelGroupArn', 'createLabelGroupResponse_labelGroupArn' - The ARN of the label group that you have created.
+--
+-- 'labelGroupName', 'createLabelGroupResponse_labelGroupName' - The name of the label group that you have created. Data in this field
+-- will be retained for service usage. Follow best practices for the
+-- security of your data.
+--
+-- 'httpStatus', 'createLabelGroupResponse_httpStatus' - The response's http status code.
+newCreateLabelGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateLabelGroupResponse
+newCreateLabelGroupResponse pHttpStatus_ =
+  CreateLabelGroupResponse'
+    { labelGroupArn =
+        Prelude.Nothing,
+      labelGroupName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the label group that you have created.
+createLabelGroupResponse_labelGroupArn :: Lens.Lens' CreateLabelGroupResponse (Prelude.Maybe Prelude.Text)
+createLabelGroupResponse_labelGroupArn = Lens.lens (\CreateLabelGroupResponse' {labelGroupArn} -> labelGroupArn) (\s@CreateLabelGroupResponse' {} a -> s {labelGroupArn = a} :: CreateLabelGroupResponse)
+
+-- | The name of the label group that you have created. Data in this field
+-- will be retained for service usage. Follow best practices for the
+-- security of your data.
+createLabelGroupResponse_labelGroupName :: Lens.Lens' CreateLabelGroupResponse (Prelude.Maybe Prelude.Text)
+createLabelGroupResponse_labelGroupName = Lens.lens (\CreateLabelGroupResponse' {labelGroupName} -> labelGroupName) (\s@CreateLabelGroupResponse' {} a -> s {labelGroupName = a} :: CreateLabelGroupResponse)
+
+-- | The response's http status code.
+createLabelGroupResponse_httpStatus :: Lens.Lens' CreateLabelGroupResponse Prelude.Int
+createLabelGroupResponse_httpStatus = Lens.lens (\CreateLabelGroupResponse' {httpStatus} -> httpStatus) (\s@CreateLabelGroupResponse' {} a -> s {httpStatus = a} :: CreateLabelGroupResponse)
+
+instance Prelude.NFData CreateLabelGroupResponse where
+  rnf CreateLabelGroupResponse' {..} =
+    Prelude.rnf labelGroupArn
+      `Prelude.seq` Prelude.rnf labelGroupName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/CreateModel.hs b/gen/Amazonka/LookoutEquipment/CreateModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/CreateModel.hs
@@ -0,0 +1,435 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.CreateModel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an ML model for data inference.
+--
+-- A machine-learning (ML) model is a mathematical model that finds
+-- patterns in your data. In Amazon Lookout for Equipment, the model learns
+-- the patterns of normal behavior and detects abnormal behavior that could
+-- be potential equipment failure (or maintenance events). The models are
+-- made by analyzing normal data and abnormalities in machine behavior that
+-- have already occurred.
+--
+-- Your model is trained using a portion of the data from your dataset and
+-- uses that data to learn patterns of normal behavior and abnormal
+-- patterns that lead to equipment failure. Another portion of the data is
+-- used to evaluate the model\'s accuracy.
+module Amazonka.LookoutEquipment.CreateModel
+  ( -- * Creating a Request
+    CreateModel (..),
+    newCreateModel,
+
+    -- * Request Lenses
+    createModel_dataPreProcessingConfiguration,
+    createModel_datasetSchema,
+    createModel_evaluationDataEndTime,
+    createModel_evaluationDataStartTime,
+    createModel_labelsInputConfiguration,
+    createModel_offCondition,
+    createModel_roleArn,
+    createModel_serverSideKmsKeyId,
+    createModel_tags,
+    createModel_trainingDataEndTime,
+    createModel_trainingDataStartTime,
+    createModel_modelName,
+    createModel_datasetName,
+    createModel_clientToken,
+
+    -- * Destructuring the Response
+    CreateModelResponse (..),
+    newCreateModelResponse,
+
+    -- * Response Lenses
+    createModelResponse_modelArn,
+    createModelResponse_status,
+    createModelResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateModel' smart constructor.
+data CreateModel = CreateModel'
+  { -- | The configuration is the @TargetSamplingRate@, which is the sampling
+    -- rate of the data after post processing by Amazon Lookout for Equipment.
+    -- For example, if you provide data that has been collected at a 1 second
+    -- level and you want the system to resample the data at a 1 minute rate
+    -- before training, the @TargetSamplingRate@ is 1 minute.
+    --
+    -- When providing a value for the @TargetSamplingRate@, you must attach the
+    -- prefix \"PT\" to the rate you want. The value for a 1 second rate is
+    -- therefore /PT1S/, the value for a 15 minute rate is /PT15M/, and the
+    -- value for a 1 hour rate is /PT1H/
+    dataPreProcessingConfiguration :: Prelude.Maybe DataPreProcessingConfiguration,
+    -- | The data schema for the ML model being created.
+    datasetSchema :: Prelude.Maybe DatasetSchema,
+    -- | Indicates the time reference in the dataset that should be used to end
+    -- the subset of evaluation data for the ML model.
+    evaluationDataEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the time reference in the dataset that should be used to begin
+    -- the subset of evaluation data for the ML model.
+    evaluationDataStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The input configuration for the labels being used for the ML model
+    -- that\'s being created.
+    labelsInputConfiguration :: Prelude.Maybe LabelsInputConfiguration,
+    -- | Indicates that the asset associated with this sensor has been shut off.
+    -- As long as this condition is met, Lookout for Equipment will not use
+    -- data from this asset for training, evaluation, or inference.
+    offCondition :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of a role with permission to access the
+    -- data source being used to create the ML model.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | Provides the identifier of the KMS key used to encrypt model data by
+    -- Amazon Lookout for Equipment.
+    serverSideKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Any tags associated with the ML model being created.
+    tags :: Prelude.Maybe [Tag],
+    -- | Indicates the time reference in the dataset that should be used to end
+    -- the subset of training data for the ML model.
+    trainingDataEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the time reference in the dataset that should be used to begin
+    -- the subset of training data for the ML model.
+    trainingDataStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The name for the ML model to be created.
+    modelName :: Prelude.Text,
+    -- | The name of the dataset for the ML model being created.
+    datasetName :: Prelude.Text,
+    -- | A unique identifier for the request. If you do not set the client
+    -- request token, Amazon Lookout for Equipment generates one.
+    clientToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataPreProcessingConfiguration', 'createModel_dataPreProcessingConfiguration' - The configuration is the @TargetSamplingRate@, which is the sampling
+-- rate of the data after post processing by Amazon Lookout for Equipment.
+-- For example, if you provide data that has been collected at a 1 second
+-- level and you want the system to resample the data at a 1 minute rate
+-- before training, the @TargetSamplingRate@ is 1 minute.
+--
+-- When providing a value for the @TargetSamplingRate@, you must attach the
+-- prefix \"PT\" to the rate you want. The value for a 1 second rate is
+-- therefore /PT1S/, the value for a 15 minute rate is /PT15M/, and the
+-- value for a 1 hour rate is /PT1H/
+--
+-- 'datasetSchema', 'createModel_datasetSchema' - The data schema for the ML model being created.
+--
+-- 'evaluationDataEndTime', 'createModel_evaluationDataEndTime' - Indicates the time reference in the dataset that should be used to end
+-- the subset of evaluation data for the ML model.
+--
+-- 'evaluationDataStartTime', 'createModel_evaluationDataStartTime' - Indicates the time reference in the dataset that should be used to begin
+-- the subset of evaluation data for the ML model.
+--
+-- 'labelsInputConfiguration', 'createModel_labelsInputConfiguration' - The input configuration for the labels being used for the ML model
+-- that\'s being created.
+--
+-- 'offCondition', 'createModel_offCondition' - Indicates that the asset associated with this sensor has been shut off.
+-- As long as this condition is met, Lookout for Equipment will not use
+-- data from this asset for training, evaluation, or inference.
+--
+-- 'roleArn', 'createModel_roleArn' - The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source being used to create the ML model.
+--
+-- 'serverSideKmsKeyId', 'createModel_serverSideKmsKeyId' - Provides the identifier of the KMS key used to encrypt model data by
+-- Amazon Lookout for Equipment.
+--
+-- 'tags', 'createModel_tags' - Any tags associated with the ML model being created.
+--
+-- 'trainingDataEndTime', 'createModel_trainingDataEndTime' - Indicates the time reference in the dataset that should be used to end
+-- the subset of training data for the ML model.
+--
+-- 'trainingDataStartTime', 'createModel_trainingDataStartTime' - Indicates the time reference in the dataset that should be used to begin
+-- the subset of training data for the ML model.
+--
+-- 'modelName', 'createModel_modelName' - The name for the ML model to be created.
+--
+-- 'datasetName', 'createModel_datasetName' - The name of the dataset for the ML model being created.
+--
+-- 'clientToken', 'createModel_clientToken' - A unique identifier for the request. If you do not set the client
+-- request token, Amazon Lookout for Equipment generates one.
+newCreateModel ::
+  -- | 'modelName'
+  Prelude.Text ->
+  -- | 'datasetName'
+  Prelude.Text ->
+  -- | 'clientToken'
+  Prelude.Text ->
+  CreateModel
+newCreateModel
+  pModelName_
+  pDatasetName_
+  pClientToken_ =
+    CreateModel'
+      { dataPreProcessingConfiguration =
+          Prelude.Nothing,
+        datasetSchema = Prelude.Nothing,
+        evaluationDataEndTime = Prelude.Nothing,
+        evaluationDataStartTime = Prelude.Nothing,
+        labelsInputConfiguration = Prelude.Nothing,
+        offCondition = Prelude.Nothing,
+        roleArn = Prelude.Nothing,
+        serverSideKmsKeyId = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        trainingDataEndTime = Prelude.Nothing,
+        trainingDataStartTime = Prelude.Nothing,
+        modelName = pModelName_,
+        datasetName = pDatasetName_,
+        clientToken = pClientToken_
+      }
+
+-- | The configuration is the @TargetSamplingRate@, which is the sampling
+-- rate of the data after post processing by Amazon Lookout for Equipment.
+-- For example, if you provide data that has been collected at a 1 second
+-- level and you want the system to resample the data at a 1 minute rate
+-- before training, the @TargetSamplingRate@ is 1 minute.
+--
+-- When providing a value for the @TargetSamplingRate@, you must attach the
+-- prefix \"PT\" to the rate you want. The value for a 1 second rate is
+-- therefore /PT1S/, the value for a 15 minute rate is /PT15M/, and the
+-- value for a 1 hour rate is /PT1H/
+createModel_dataPreProcessingConfiguration :: Lens.Lens' CreateModel (Prelude.Maybe DataPreProcessingConfiguration)
+createModel_dataPreProcessingConfiguration = Lens.lens (\CreateModel' {dataPreProcessingConfiguration} -> dataPreProcessingConfiguration) (\s@CreateModel' {} a -> s {dataPreProcessingConfiguration = a} :: CreateModel)
+
+-- | The data schema for the ML model being created.
+createModel_datasetSchema :: Lens.Lens' CreateModel (Prelude.Maybe DatasetSchema)
+createModel_datasetSchema = Lens.lens (\CreateModel' {datasetSchema} -> datasetSchema) (\s@CreateModel' {} a -> s {datasetSchema = a} :: CreateModel)
+
+-- | Indicates the time reference in the dataset that should be used to end
+-- the subset of evaluation data for the ML model.
+createModel_evaluationDataEndTime :: Lens.Lens' CreateModel (Prelude.Maybe Prelude.UTCTime)
+createModel_evaluationDataEndTime = Lens.lens (\CreateModel' {evaluationDataEndTime} -> evaluationDataEndTime) (\s@CreateModel' {} a -> s {evaluationDataEndTime = a} :: CreateModel) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the time reference in the dataset that should be used to begin
+-- the subset of evaluation data for the ML model.
+createModel_evaluationDataStartTime :: Lens.Lens' CreateModel (Prelude.Maybe Prelude.UTCTime)
+createModel_evaluationDataStartTime = Lens.lens (\CreateModel' {evaluationDataStartTime} -> evaluationDataStartTime) (\s@CreateModel' {} a -> s {evaluationDataStartTime = a} :: CreateModel) Prelude.. Lens.mapping Data._Time
+
+-- | The input configuration for the labels being used for the ML model
+-- that\'s being created.
+createModel_labelsInputConfiguration :: Lens.Lens' CreateModel (Prelude.Maybe LabelsInputConfiguration)
+createModel_labelsInputConfiguration = Lens.lens (\CreateModel' {labelsInputConfiguration} -> labelsInputConfiguration) (\s@CreateModel' {} a -> s {labelsInputConfiguration = a} :: CreateModel)
+
+-- | Indicates that the asset associated with this sensor has been shut off.
+-- As long as this condition is met, Lookout for Equipment will not use
+-- data from this asset for training, evaluation, or inference.
+createModel_offCondition :: Lens.Lens' CreateModel (Prelude.Maybe Prelude.Text)
+createModel_offCondition = Lens.lens (\CreateModel' {offCondition} -> offCondition) (\s@CreateModel' {} a -> s {offCondition = a} :: CreateModel)
+
+-- | The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source being used to create the ML model.
+createModel_roleArn :: Lens.Lens' CreateModel (Prelude.Maybe Prelude.Text)
+createModel_roleArn = Lens.lens (\CreateModel' {roleArn} -> roleArn) (\s@CreateModel' {} a -> s {roleArn = a} :: CreateModel)
+
+-- | Provides the identifier of the KMS key used to encrypt model data by
+-- Amazon Lookout for Equipment.
+createModel_serverSideKmsKeyId :: Lens.Lens' CreateModel (Prelude.Maybe Prelude.Text)
+createModel_serverSideKmsKeyId = Lens.lens (\CreateModel' {serverSideKmsKeyId} -> serverSideKmsKeyId) (\s@CreateModel' {} a -> s {serverSideKmsKeyId = a} :: CreateModel)
+
+-- | Any tags associated with the ML model being created.
+createModel_tags :: Lens.Lens' CreateModel (Prelude.Maybe [Tag])
+createModel_tags = Lens.lens (\CreateModel' {tags} -> tags) (\s@CreateModel' {} a -> s {tags = a} :: CreateModel) Prelude.. Lens.mapping Lens.coerced
+
+-- | Indicates the time reference in the dataset that should be used to end
+-- the subset of training data for the ML model.
+createModel_trainingDataEndTime :: Lens.Lens' CreateModel (Prelude.Maybe Prelude.UTCTime)
+createModel_trainingDataEndTime = Lens.lens (\CreateModel' {trainingDataEndTime} -> trainingDataEndTime) (\s@CreateModel' {} a -> s {trainingDataEndTime = a} :: CreateModel) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the time reference in the dataset that should be used to begin
+-- the subset of training data for the ML model.
+createModel_trainingDataStartTime :: Lens.Lens' CreateModel (Prelude.Maybe Prelude.UTCTime)
+createModel_trainingDataStartTime = Lens.lens (\CreateModel' {trainingDataStartTime} -> trainingDataStartTime) (\s@CreateModel' {} a -> s {trainingDataStartTime = a} :: CreateModel) Prelude.. Lens.mapping Data._Time
+
+-- | The name for the ML model to be created.
+createModel_modelName :: Lens.Lens' CreateModel Prelude.Text
+createModel_modelName = Lens.lens (\CreateModel' {modelName} -> modelName) (\s@CreateModel' {} a -> s {modelName = a} :: CreateModel)
+
+-- | The name of the dataset for the ML model being created.
+createModel_datasetName :: Lens.Lens' CreateModel Prelude.Text
+createModel_datasetName = Lens.lens (\CreateModel' {datasetName} -> datasetName) (\s@CreateModel' {} a -> s {datasetName = a} :: CreateModel)
+
+-- | A unique identifier for the request. If you do not set the client
+-- request token, Amazon Lookout for Equipment generates one.
+createModel_clientToken :: Lens.Lens' CreateModel Prelude.Text
+createModel_clientToken = Lens.lens (\CreateModel' {clientToken} -> clientToken) (\s@CreateModel' {} a -> s {clientToken = a} :: CreateModel)
+
+instance Core.AWSRequest CreateModel where
+  type AWSResponse CreateModel = CreateModelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateModelResponse'
+            Prelude.<$> (x Data..?> "ModelArn")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateModel where
+  hashWithSalt _salt CreateModel' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataPreProcessingConfiguration
+      `Prelude.hashWithSalt` datasetSchema
+      `Prelude.hashWithSalt` evaluationDataEndTime
+      `Prelude.hashWithSalt` evaluationDataStartTime
+      `Prelude.hashWithSalt` labelsInputConfiguration
+      `Prelude.hashWithSalt` offCondition
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` serverSideKmsKeyId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` trainingDataEndTime
+      `Prelude.hashWithSalt` trainingDataStartTime
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` clientToken
+
+instance Prelude.NFData CreateModel where
+  rnf CreateModel' {..} =
+    Prelude.rnf dataPreProcessingConfiguration
+      `Prelude.seq` Prelude.rnf datasetSchema
+      `Prelude.seq` Prelude.rnf evaluationDataEndTime
+      `Prelude.seq` Prelude.rnf evaluationDataStartTime
+      `Prelude.seq` Prelude.rnf labelsInputConfiguration
+      `Prelude.seq` Prelude.rnf offCondition
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf serverSideKmsKeyId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf trainingDataEndTime
+      `Prelude.seq` Prelude.rnf trainingDataStartTime
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf clientToken
+
+instance Data.ToHeaders CreateModel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.CreateModel" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateModel where
+  toJSON CreateModel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataPreProcessingConfiguration" Data..=)
+              Prelude.<$> dataPreProcessingConfiguration,
+            ("DatasetSchema" Data..=) Prelude.<$> datasetSchema,
+            ("EvaluationDataEndTime" Data..=)
+              Prelude.<$> evaluationDataEndTime,
+            ("EvaluationDataStartTime" Data..=)
+              Prelude.<$> evaluationDataStartTime,
+            ("LabelsInputConfiguration" Data..=)
+              Prelude.<$> labelsInputConfiguration,
+            ("OffCondition" Data..=) Prelude.<$> offCondition,
+            ("RoleArn" Data..=) Prelude.<$> roleArn,
+            ("ServerSideKmsKeyId" Data..=)
+              Prelude.<$> serverSideKmsKeyId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("TrainingDataEndTime" Data..=)
+              Prelude.<$> trainingDataEndTime,
+            ("TrainingDataStartTime" Data..=)
+              Prelude.<$> trainingDataStartTime,
+            Prelude.Just ("ModelName" Data..= modelName),
+            Prelude.Just ("DatasetName" Data..= datasetName),
+            Prelude.Just ("ClientToken" Data..= clientToken)
+          ]
+      )
+
+instance Data.ToPath CreateModel where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateModel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateModelResponse' smart constructor.
+data CreateModelResponse = CreateModelResponse'
+  { -- | The Amazon Resource Name (ARN) of the model being created.
+    modelArn :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the @CreateModel@ operation.
+    status :: Prelude.Maybe ModelStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateModelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'modelArn', 'createModelResponse_modelArn' - The Amazon Resource Name (ARN) of the model being created.
+--
+-- 'status', 'createModelResponse_status' - Indicates the status of the @CreateModel@ operation.
+--
+-- 'httpStatus', 'createModelResponse_httpStatus' - The response's http status code.
+newCreateModelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateModelResponse
+newCreateModelResponse pHttpStatus_ =
+  CreateModelResponse'
+    { modelArn = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the model being created.
+createModelResponse_modelArn :: Lens.Lens' CreateModelResponse (Prelude.Maybe Prelude.Text)
+createModelResponse_modelArn = Lens.lens (\CreateModelResponse' {modelArn} -> modelArn) (\s@CreateModelResponse' {} a -> s {modelArn = a} :: CreateModelResponse)
+
+-- | Indicates the status of the @CreateModel@ operation.
+createModelResponse_status :: Lens.Lens' CreateModelResponse (Prelude.Maybe ModelStatus)
+createModelResponse_status = Lens.lens (\CreateModelResponse' {status} -> status) (\s@CreateModelResponse' {} a -> s {status = a} :: CreateModelResponse)
+
+-- | The response's http status code.
+createModelResponse_httpStatus :: Lens.Lens' CreateModelResponse Prelude.Int
+createModelResponse_httpStatus = Lens.lens (\CreateModelResponse' {httpStatus} -> httpStatus) (\s@CreateModelResponse' {} a -> s {httpStatus = a} :: CreateModelResponse)
+
+instance Prelude.NFData CreateModelResponse where
+  rnf CreateModelResponse' {..} =
+    Prelude.rnf modelArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/DeleteDataset.hs b/gen/Amazonka/LookoutEquipment/DeleteDataset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DeleteDataset.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DeleteDataset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a dataset and associated artifacts. The operation will check to
+-- see if any inference scheduler or data ingestion job is currently using
+-- the dataset, and if there isn\'t, the dataset, its metadata, and any
+-- associated data stored in S3 will be deleted. This does not affect any
+-- models that used this dataset for training and evaluation, but does
+-- prevent it from being used in the future.
+module Amazonka.LookoutEquipment.DeleteDataset
+  ( -- * Creating a Request
+    DeleteDataset (..),
+    newDeleteDataset,
+
+    -- * Request Lenses
+    deleteDataset_datasetName,
+
+    -- * Destructuring the Response
+    DeleteDatasetResponse (..),
+    newDeleteDatasetResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteDataset' smart constructor.
+data DeleteDataset = DeleteDataset'
+  { -- | The name of the dataset to be deleted.
+    datasetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDataset' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datasetName', 'deleteDataset_datasetName' - The name of the dataset to be deleted.
+newDeleteDataset ::
+  -- | 'datasetName'
+  Prelude.Text ->
+  DeleteDataset
+newDeleteDataset pDatasetName_ =
+  DeleteDataset' {datasetName = pDatasetName_}
+
+-- | The name of the dataset to be deleted.
+deleteDataset_datasetName :: Lens.Lens' DeleteDataset Prelude.Text
+deleteDataset_datasetName = Lens.lens (\DeleteDataset' {datasetName} -> datasetName) (\s@DeleteDataset' {} a -> s {datasetName = a} :: DeleteDataset)
+
+instance Core.AWSRequest DeleteDataset where
+  type
+    AWSResponse DeleteDataset =
+      DeleteDatasetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteDatasetResponse'
+
+instance Prelude.Hashable DeleteDataset where
+  hashWithSalt _salt DeleteDataset' {..} =
+    _salt `Prelude.hashWithSalt` datasetName
+
+instance Prelude.NFData DeleteDataset where
+  rnf DeleteDataset' {..} = Prelude.rnf datasetName
+
+instance Data.ToHeaders DeleteDataset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DeleteDataset" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteDataset where
+  toJSON DeleteDataset' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("DatasetName" Data..= datasetName)]
+      )
+
+instance Data.ToPath DeleteDataset where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteDataset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteDatasetResponse' smart constructor.
+data DeleteDatasetResponse = DeleteDatasetResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDatasetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteDatasetResponse ::
+  DeleteDatasetResponse
+newDeleteDatasetResponse = DeleteDatasetResponse'
+
+instance Prelude.NFData DeleteDatasetResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/LookoutEquipment/DeleteInferenceScheduler.hs b/gen/Amazonka/LookoutEquipment/DeleteInferenceScheduler.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DeleteInferenceScheduler.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DeleteInferenceScheduler
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an inference scheduler that has been set up. Already processed
+-- output results are not affected.
+module Amazonka.LookoutEquipment.DeleteInferenceScheduler
+  ( -- * Creating a Request
+    DeleteInferenceScheduler (..),
+    newDeleteInferenceScheduler,
+
+    -- * Request Lenses
+    deleteInferenceScheduler_inferenceSchedulerName,
+
+    -- * Destructuring the Response
+    DeleteInferenceSchedulerResponse (..),
+    newDeleteInferenceSchedulerResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteInferenceScheduler' smart constructor.
+data DeleteInferenceScheduler = DeleteInferenceScheduler'
+  { -- | The name of the inference scheduler to be deleted.
+    inferenceSchedulerName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteInferenceScheduler' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceSchedulerName', 'deleteInferenceScheduler_inferenceSchedulerName' - The name of the inference scheduler to be deleted.
+newDeleteInferenceScheduler ::
+  -- | 'inferenceSchedulerName'
+  Prelude.Text ->
+  DeleteInferenceScheduler
+newDeleteInferenceScheduler pInferenceSchedulerName_ =
+  DeleteInferenceScheduler'
+    { inferenceSchedulerName =
+        pInferenceSchedulerName_
+    }
+
+-- | The name of the inference scheduler to be deleted.
+deleteInferenceScheduler_inferenceSchedulerName :: Lens.Lens' DeleteInferenceScheduler Prelude.Text
+deleteInferenceScheduler_inferenceSchedulerName = Lens.lens (\DeleteInferenceScheduler' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@DeleteInferenceScheduler' {} a -> s {inferenceSchedulerName = a} :: DeleteInferenceScheduler)
+
+instance Core.AWSRequest DeleteInferenceScheduler where
+  type
+    AWSResponse DeleteInferenceScheduler =
+      DeleteInferenceSchedulerResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteInferenceSchedulerResponse'
+
+instance Prelude.Hashable DeleteInferenceScheduler where
+  hashWithSalt _salt DeleteInferenceScheduler' {..} =
+    _salt `Prelude.hashWithSalt` inferenceSchedulerName
+
+instance Prelude.NFData DeleteInferenceScheduler where
+  rnf DeleteInferenceScheduler' {..} =
+    Prelude.rnf inferenceSchedulerName
+
+instance Data.ToHeaders DeleteInferenceScheduler where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DeleteInferenceScheduler" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteInferenceScheduler where
+  toJSON DeleteInferenceScheduler' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "InferenceSchedulerName"
+                  Data..= inferenceSchedulerName
+              )
+          ]
+      )
+
+instance Data.ToPath DeleteInferenceScheduler where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteInferenceScheduler where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteInferenceSchedulerResponse' smart constructor.
+data DeleteInferenceSchedulerResponse = DeleteInferenceSchedulerResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteInferenceSchedulerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteInferenceSchedulerResponse ::
+  DeleteInferenceSchedulerResponse
+newDeleteInferenceSchedulerResponse =
+  DeleteInferenceSchedulerResponse'
+
+instance
+  Prelude.NFData
+    DeleteInferenceSchedulerResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/LookoutEquipment/DeleteLabel.hs b/gen/Amazonka/LookoutEquipment/DeleteLabel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DeleteLabel.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DeleteLabel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a label.
+module Amazonka.LookoutEquipment.DeleteLabel
+  ( -- * Creating a Request
+    DeleteLabel (..),
+    newDeleteLabel,
+
+    -- * Request Lenses
+    deleteLabel_labelGroupName,
+    deleteLabel_labelId,
+
+    -- * Destructuring the Response
+    DeleteLabelResponse (..),
+    newDeleteLabelResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteLabel' smart constructor.
+data DeleteLabel = DeleteLabel'
+  { -- | The name of the label group that contains the label that you want to
+    -- delete. Data in this field will be retained for service usage. Follow
+    -- best practices for the security of your data.
+    labelGroupName :: Prelude.Text,
+    -- | The ID of the label that you want to delete.
+    labelId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLabel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelGroupName', 'deleteLabel_labelGroupName' - The name of the label group that contains the label that you want to
+-- delete. Data in this field will be retained for service usage. Follow
+-- best practices for the security of your data.
+--
+-- 'labelId', 'deleteLabel_labelId' - The ID of the label that you want to delete.
+newDeleteLabel ::
+  -- | 'labelGroupName'
+  Prelude.Text ->
+  -- | 'labelId'
+  Prelude.Text ->
+  DeleteLabel
+newDeleteLabel pLabelGroupName_ pLabelId_ =
+  DeleteLabel'
+    { labelGroupName = pLabelGroupName_,
+      labelId = pLabelId_
+    }
+
+-- | The name of the label group that contains the label that you want to
+-- delete. Data in this field will be retained for service usage. Follow
+-- best practices for the security of your data.
+deleteLabel_labelGroupName :: Lens.Lens' DeleteLabel Prelude.Text
+deleteLabel_labelGroupName = Lens.lens (\DeleteLabel' {labelGroupName} -> labelGroupName) (\s@DeleteLabel' {} a -> s {labelGroupName = a} :: DeleteLabel)
+
+-- | The ID of the label that you want to delete.
+deleteLabel_labelId :: Lens.Lens' DeleteLabel Prelude.Text
+deleteLabel_labelId = Lens.lens (\DeleteLabel' {labelId} -> labelId) (\s@DeleteLabel' {} a -> s {labelId = a} :: DeleteLabel)
+
+instance Core.AWSRequest DeleteLabel where
+  type AWSResponse DeleteLabel = DeleteLabelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull DeleteLabelResponse'
+
+instance Prelude.Hashable DeleteLabel where
+  hashWithSalt _salt DeleteLabel' {..} =
+    _salt
+      `Prelude.hashWithSalt` labelGroupName
+      `Prelude.hashWithSalt` labelId
+
+instance Prelude.NFData DeleteLabel where
+  rnf DeleteLabel' {..} =
+    Prelude.rnf labelGroupName
+      `Prelude.seq` Prelude.rnf labelId
+
+instance Data.ToHeaders DeleteLabel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DeleteLabel" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteLabel where
+  toJSON DeleteLabel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("LabelGroupName" Data..= labelGroupName),
+            Prelude.Just ("LabelId" Data..= labelId)
+          ]
+      )
+
+instance Data.ToPath DeleteLabel where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteLabel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteLabelResponse' smart constructor.
+data DeleteLabelResponse = DeleteLabelResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLabelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteLabelResponse ::
+  DeleteLabelResponse
+newDeleteLabelResponse = DeleteLabelResponse'
+
+instance Prelude.NFData DeleteLabelResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/LookoutEquipment/DeleteLabelGroup.hs b/gen/Amazonka/LookoutEquipment/DeleteLabelGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DeleteLabelGroup.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DeleteLabelGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a group of labels.
+module Amazonka.LookoutEquipment.DeleteLabelGroup
+  ( -- * Creating a Request
+    DeleteLabelGroup (..),
+    newDeleteLabelGroup,
+
+    -- * Request Lenses
+    deleteLabelGroup_labelGroupName,
+
+    -- * Destructuring the Response
+    DeleteLabelGroupResponse (..),
+    newDeleteLabelGroupResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteLabelGroup' smart constructor.
+data DeleteLabelGroup = DeleteLabelGroup'
+  { -- | The name of the label group that you want to delete. Data in this field
+    -- will be retained for service usage. Follow best practices for the
+    -- security of your data.
+    labelGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLabelGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelGroupName', 'deleteLabelGroup_labelGroupName' - The name of the label group that you want to delete. Data in this field
+-- will be retained for service usage. Follow best practices for the
+-- security of your data.
+newDeleteLabelGroup ::
+  -- | 'labelGroupName'
+  Prelude.Text ->
+  DeleteLabelGroup
+newDeleteLabelGroup pLabelGroupName_ =
+  DeleteLabelGroup'
+    { labelGroupName =
+        pLabelGroupName_
+    }
+
+-- | The name of the label group that you want to delete. Data in this field
+-- will be retained for service usage. Follow best practices for the
+-- security of your data.
+deleteLabelGroup_labelGroupName :: Lens.Lens' DeleteLabelGroup Prelude.Text
+deleteLabelGroup_labelGroupName = Lens.lens (\DeleteLabelGroup' {labelGroupName} -> labelGroupName) (\s@DeleteLabelGroup' {} a -> s {labelGroupName = a} :: DeleteLabelGroup)
+
+instance Core.AWSRequest DeleteLabelGroup where
+  type
+    AWSResponse DeleteLabelGroup =
+      DeleteLabelGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull DeleteLabelGroupResponse'
+
+instance Prelude.Hashable DeleteLabelGroup where
+  hashWithSalt _salt DeleteLabelGroup' {..} =
+    _salt `Prelude.hashWithSalt` labelGroupName
+
+instance Prelude.NFData DeleteLabelGroup where
+  rnf DeleteLabelGroup' {..} =
+    Prelude.rnf labelGroupName
+
+instance Data.ToHeaders DeleteLabelGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DeleteLabelGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteLabelGroup where
+  toJSON DeleteLabelGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("LabelGroupName" Data..= labelGroupName)
+          ]
+      )
+
+instance Data.ToPath DeleteLabelGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteLabelGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteLabelGroupResponse' smart constructor.
+data DeleteLabelGroupResponse = DeleteLabelGroupResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLabelGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteLabelGroupResponse ::
+  DeleteLabelGroupResponse
+newDeleteLabelGroupResponse =
+  DeleteLabelGroupResponse'
+
+instance Prelude.NFData DeleteLabelGroupResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/LookoutEquipment/DeleteModel.hs b/gen/Amazonka/LookoutEquipment/DeleteModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DeleteModel.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DeleteModel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an ML model currently available for Amazon Lookout for
+-- Equipment. This will prevent it from being used with an inference
+-- scheduler, even one that is already set up.
+module Amazonka.LookoutEquipment.DeleteModel
+  ( -- * Creating a Request
+    DeleteModel (..),
+    newDeleteModel,
+
+    -- * Request Lenses
+    deleteModel_modelName,
+
+    -- * Destructuring the Response
+    DeleteModelResponse (..),
+    newDeleteModelResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteModel' smart constructor.
+data DeleteModel = DeleteModel'
+  { -- | The name of the ML model to be deleted.
+    modelName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'modelName', 'deleteModel_modelName' - The name of the ML model to be deleted.
+newDeleteModel ::
+  -- | 'modelName'
+  Prelude.Text ->
+  DeleteModel
+newDeleteModel pModelName_ =
+  DeleteModel' {modelName = pModelName_}
+
+-- | The name of the ML model to be deleted.
+deleteModel_modelName :: Lens.Lens' DeleteModel Prelude.Text
+deleteModel_modelName = Lens.lens (\DeleteModel' {modelName} -> modelName) (\s@DeleteModel' {} a -> s {modelName = a} :: DeleteModel)
+
+instance Core.AWSRequest DeleteModel where
+  type AWSResponse DeleteModel = DeleteModelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull DeleteModelResponse'
+
+instance Prelude.Hashable DeleteModel where
+  hashWithSalt _salt DeleteModel' {..} =
+    _salt `Prelude.hashWithSalt` modelName
+
+instance Prelude.NFData DeleteModel where
+  rnf DeleteModel' {..} = Prelude.rnf modelName
+
+instance Data.ToHeaders DeleteModel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DeleteModel" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteModel where
+  toJSON DeleteModel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ModelName" Data..= modelName)]
+      )
+
+instance Data.ToPath DeleteModel where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteModel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteModelResponse' smart constructor.
+data DeleteModelResponse = DeleteModelResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteModelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteModelResponse ::
+  DeleteModelResponse
+newDeleteModelResponse = DeleteModelResponse'
+
+instance Prelude.NFData DeleteModelResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/LookoutEquipment/DescribeDataIngestionJob.hs b/gen/Amazonka/LookoutEquipment/DescribeDataIngestionJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DescribeDataIngestionJob.hs
@@ -0,0 +1,343 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DescribeDataIngestionJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides information on a specific data ingestion job such as creation
+-- time, dataset ARN, and status.
+module Amazonka.LookoutEquipment.DescribeDataIngestionJob
+  ( -- * Creating a Request
+    DescribeDataIngestionJob (..),
+    newDescribeDataIngestionJob,
+
+    -- * Request Lenses
+    describeDataIngestionJob_jobId,
+
+    -- * Destructuring the Response
+    DescribeDataIngestionJobResponse (..),
+    newDescribeDataIngestionJobResponse,
+
+    -- * Response Lenses
+    describeDataIngestionJobResponse_createdAt,
+    describeDataIngestionJobResponse_dataEndTime,
+    describeDataIngestionJobResponse_dataQualitySummary,
+    describeDataIngestionJobResponse_dataStartTime,
+    describeDataIngestionJobResponse_datasetArn,
+    describeDataIngestionJobResponse_failedReason,
+    describeDataIngestionJobResponse_ingestedDataSize,
+    describeDataIngestionJobResponse_ingestedFilesSummary,
+    describeDataIngestionJobResponse_ingestionInputConfiguration,
+    describeDataIngestionJobResponse_jobId,
+    describeDataIngestionJobResponse_roleArn,
+    describeDataIngestionJobResponse_status,
+    describeDataIngestionJobResponse_statusDetail,
+    describeDataIngestionJobResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDataIngestionJob' smart constructor.
+data DescribeDataIngestionJob = DescribeDataIngestionJob'
+  { -- | The job ID of the data ingestion job.
+    jobId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataIngestionJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'jobId', 'describeDataIngestionJob_jobId' - The job ID of the data ingestion job.
+newDescribeDataIngestionJob ::
+  -- | 'jobId'
+  Prelude.Text ->
+  DescribeDataIngestionJob
+newDescribeDataIngestionJob pJobId_ =
+  DescribeDataIngestionJob' {jobId = pJobId_}
+
+-- | The job ID of the data ingestion job.
+describeDataIngestionJob_jobId :: Lens.Lens' DescribeDataIngestionJob Prelude.Text
+describeDataIngestionJob_jobId = Lens.lens (\DescribeDataIngestionJob' {jobId} -> jobId) (\s@DescribeDataIngestionJob' {} a -> s {jobId = a} :: DescribeDataIngestionJob)
+
+instance Core.AWSRequest DescribeDataIngestionJob where
+  type
+    AWSResponse DescribeDataIngestionJob =
+      DescribeDataIngestionJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDataIngestionJobResponse'
+            Prelude.<$> (x Data..?> "CreatedAt")
+            Prelude.<*> (x Data..?> "DataEndTime")
+            Prelude.<*> (x Data..?> "DataQualitySummary")
+            Prelude.<*> (x Data..?> "DataStartTime")
+            Prelude.<*> (x Data..?> "DatasetArn")
+            Prelude.<*> (x Data..?> "FailedReason")
+            Prelude.<*> (x Data..?> "IngestedDataSize")
+            Prelude.<*> (x Data..?> "IngestedFilesSummary")
+            Prelude.<*> (x Data..?> "IngestionInputConfiguration")
+            Prelude.<*> (x Data..?> "JobId")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "StatusDetail")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDataIngestionJob where
+  hashWithSalt _salt DescribeDataIngestionJob' {..} =
+    _salt `Prelude.hashWithSalt` jobId
+
+instance Prelude.NFData DescribeDataIngestionJob where
+  rnf DescribeDataIngestionJob' {..} = Prelude.rnf jobId
+
+instance Data.ToHeaders DescribeDataIngestionJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DescribeDataIngestionJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeDataIngestionJob where
+  toJSON DescribeDataIngestionJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("JobId" Data..= jobId)]
+      )
+
+instance Data.ToPath DescribeDataIngestionJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDataIngestionJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDataIngestionJobResponse' smart constructor.
+data DescribeDataIngestionJobResponse = DescribeDataIngestionJobResponse'
+  { -- | The time at which the data ingestion job was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the latest timestamp corresponding to data that was
+    -- successfully ingested during this specific ingestion job.
+    dataEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Gives statistics about a completed ingestion job. These statistics
+    -- primarily relate to quantifying incorrect data such as
+    -- MissingCompleteSensorData, MissingSensorData, UnsupportedDateFormats,
+    -- InsufficientSensorData, and DuplicateTimeStamps.
+    dataQualitySummary :: Prelude.Maybe DataQualitySummary,
+    -- | Indicates the earliest timestamp corresponding to data that was
+    -- successfully ingested during this specific ingestion job.
+    dataStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the dataset being used in the data
+    -- ingestion job.
+    datasetArn :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the reason for failure when a data ingestion job has failed.
+    failedReason :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the size of the ingested dataset.
+    ingestedDataSize :: Prelude.Maybe Prelude.Natural,
+    ingestedFilesSummary :: Prelude.Maybe IngestedFilesSummary,
+    -- | Specifies the S3 location configuration for the data input for the data
+    -- ingestion job.
+    ingestionInputConfiguration :: Prelude.Maybe IngestionInputConfiguration,
+    -- | Indicates the job ID of the data ingestion job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of an IAM role with permission to access
+    -- the data source being ingested.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the @DataIngestionJob@ operation.
+    status :: Prelude.Maybe IngestionJobStatus,
+    -- | Provides details about status of the ingestion job that is currently in
+    -- progress.
+    statusDetail :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataIngestionJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'describeDataIngestionJobResponse_createdAt' - The time at which the data ingestion job was created.
+--
+-- 'dataEndTime', 'describeDataIngestionJobResponse_dataEndTime' - Indicates the latest timestamp corresponding to data that was
+-- successfully ingested during this specific ingestion job.
+--
+-- 'dataQualitySummary', 'describeDataIngestionJobResponse_dataQualitySummary' - Gives statistics about a completed ingestion job. These statistics
+-- primarily relate to quantifying incorrect data such as
+-- MissingCompleteSensorData, MissingSensorData, UnsupportedDateFormats,
+-- InsufficientSensorData, and DuplicateTimeStamps.
+--
+-- 'dataStartTime', 'describeDataIngestionJobResponse_dataStartTime' - Indicates the earliest timestamp corresponding to data that was
+-- successfully ingested during this specific ingestion job.
+--
+-- 'datasetArn', 'describeDataIngestionJobResponse_datasetArn' - The Amazon Resource Name (ARN) of the dataset being used in the data
+-- ingestion job.
+--
+-- 'failedReason', 'describeDataIngestionJobResponse_failedReason' - Specifies the reason for failure when a data ingestion job has failed.
+--
+-- 'ingestedDataSize', 'describeDataIngestionJobResponse_ingestedDataSize' - Indicates the size of the ingested dataset.
+--
+-- 'ingestedFilesSummary', 'describeDataIngestionJobResponse_ingestedFilesSummary' - Undocumented member.
+--
+-- 'ingestionInputConfiguration', 'describeDataIngestionJobResponse_ingestionInputConfiguration' - Specifies the S3 location configuration for the data input for the data
+-- ingestion job.
+--
+-- 'jobId', 'describeDataIngestionJobResponse_jobId' - Indicates the job ID of the data ingestion job.
+--
+-- 'roleArn', 'describeDataIngestionJobResponse_roleArn' - The Amazon Resource Name (ARN) of an IAM role with permission to access
+-- the data source being ingested.
+--
+-- 'status', 'describeDataIngestionJobResponse_status' - Indicates the status of the @DataIngestionJob@ operation.
+--
+-- 'statusDetail', 'describeDataIngestionJobResponse_statusDetail' - Provides details about status of the ingestion job that is currently in
+-- progress.
+--
+-- 'httpStatus', 'describeDataIngestionJobResponse_httpStatus' - The response's http status code.
+newDescribeDataIngestionJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDataIngestionJobResponse
+newDescribeDataIngestionJobResponse pHttpStatus_ =
+  DescribeDataIngestionJobResponse'
+    { createdAt =
+        Prelude.Nothing,
+      dataEndTime = Prelude.Nothing,
+      dataQualitySummary = Prelude.Nothing,
+      dataStartTime = Prelude.Nothing,
+      datasetArn = Prelude.Nothing,
+      failedReason = Prelude.Nothing,
+      ingestedDataSize = Prelude.Nothing,
+      ingestedFilesSummary = Prelude.Nothing,
+      ingestionInputConfiguration =
+        Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusDetail = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The time at which the data ingestion job was created.
+describeDataIngestionJobResponse_createdAt :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeDataIngestionJobResponse_createdAt = Lens.lens (\DescribeDataIngestionJobResponse' {createdAt} -> createdAt) (\s@DescribeDataIngestionJobResponse' {} a -> s {createdAt = a} :: DescribeDataIngestionJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the latest timestamp corresponding to data that was
+-- successfully ingested during this specific ingestion job.
+describeDataIngestionJobResponse_dataEndTime :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeDataIngestionJobResponse_dataEndTime = Lens.lens (\DescribeDataIngestionJobResponse' {dataEndTime} -> dataEndTime) (\s@DescribeDataIngestionJobResponse' {} a -> s {dataEndTime = a} :: DescribeDataIngestionJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Gives statistics about a completed ingestion job. These statistics
+-- primarily relate to quantifying incorrect data such as
+-- MissingCompleteSensorData, MissingSensorData, UnsupportedDateFormats,
+-- InsufficientSensorData, and DuplicateTimeStamps.
+describeDataIngestionJobResponse_dataQualitySummary :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe DataQualitySummary)
+describeDataIngestionJobResponse_dataQualitySummary = Lens.lens (\DescribeDataIngestionJobResponse' {dataQualitySummary} -> dataQualitySummary) (\s@DescribeDataIngestionJobResponse' {} a -> s {dataQualitySummary = a} :: DescribeDataIngestionJobResponse)
+
+-- | Indicates the earliest timestamp corresponding to data that was
+-- successfully ingested during this specific ingestion job.
+describeDataIngestionJobResponse_dataStartTime :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe Prelude.UTCTime)
+describeDataIngestionJobResponse_dataStartTime = Lens.lens (\DescribeDataIngestionJobResponse' {dataStartTime} -> dataStartTime) (\s@DescribeDataIngestionJobResponse' {} a -> s {dataStartTime = a} :: DescribeDataIngestionJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the dataset being used in the data
+-- ingestion job.
+describeDataIngestionJobResponse_datasetArn :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe Prelude.Text)
+describeDataIngestionJobResponse_datasetArn = Lens.lens (\DescribeDataIngestionJobResponse' {datasetArn} -> datasetArn) (\s@DescribeDataIngestionJobResponse' {} a -> s {datasetArn = a} :: DescribeDataIngestionJobResponse)
+
+-- | Specifies the reason for failure when a data ingestion job has failed.
+describeDataIngestionJobResponse_failedReason :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe Prelude.Text)
+describeDataIngestionJobResponse_failedReason = Lens.lens (\DescribeDataIngestionJobResponse' {failedReason} -> failedReason) (\s@DescribeDataIngestionJobResponse' {} a -> s {failedReason = a} :: DescribeDataIngestionJobResponse)
+
+-- | Indicates the size of the ingested dataset.
+describeDataIngestionJobResponse_ingestedDataSize :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe Prelude.Natural)
+describeDataIngestionJobResponse_ingestedDataSize = Lens.lens (\DescribeDataIngestionJobResponse' {ingestedDataSize} -> ingestedDataSize) (\s@DescribeDataIngestionJobResponse' {} a -> s {ingestedDataSize = a} :: DescribeDataIngestionJobResponse)
+
+-- | Undocumented member.
+describeDataIngestionJobResponse_ingestedFilesSummary :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe IngestedFilesSummary)
+describeDataIngestionJobResponse_ingestedFilesSummary = Lens.lens (\DescribeDataIngestionJobResponse' {ingestedFilesSummary} -> ingestedFilesSummary) (\s@DescribeDataIngestionJobResponse' {} a -> s {ingestedFilesSummary = a} :: DescribeDataIngestionJobResponse)
+
+-- | Specifies the S3 location configuration for the data input for the data
+-- ingestion job.
+describeDataIngestionJobResponse_ingestionInputConfiguration :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe IngestionInputConfiguration)
+describeDataIngestionJobResponse_ingestionInputConfiguration = Lens.lens (\DescribeDataIngestionJobResponse' {ingestionInputConfiguration} -> ingestionInputConfiguration) (\s@DescribeDataIngestionJobResponse' {} a -> s {ingestionInputConfiguration = a} :: DescribeDataIngestionJobResponse)
+
+-- | Indicates the job ID of the data ingestion job.
+describeDataIngestionJobResponse_jobId :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe Prelude.Text)
+describeDataIngestionJobResponse_jobId = Lens.lens (\DescribeDataIngestionJobResponse' {jobId} -> jobId) (\s@DescribeDataIngestionJobResponse' {} a -> s {jobId = a} :: DescribeDataIngestionJobResponse)
+
+-- | The Amazon Resource Name (ARN) of an IAM role with permission to access
+-- the data source being ingested.
+describeDataIngestionJobResponse_roleArn :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe Prelude.Text)
+describeDataIngestionJobResponse_roleArn = Lens.lens (\DescribeDataIngestionJobResponse' {roleArn} -> roleArn) (\s@DescribeDataIngestionJobResponse' {} a -> s {roleArn = a} :: DescribeDataIngestionJobResponse)
+
+-- | Indicates the status of the @DataIngestionJob@ operation.
+describeDataIngestionJobResponse_status :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe IngestionJobStatus)
+describeDataIngestionJobResponse_status = Lens.lens (\DescribeDataIngestionJobResponse' {status} -> status) (\s@DescribeDataIngestionJobResponse' {} a -> s {status = a} :: DescribeDataIngestionJobResponse)
+
+-- | Provides details about status of the ingestion job that is currently in
+-- progress.
+describeDataIngestionJobResponse_statusDetail :: Lens.Lens' DescribeDataIngestionJobResponse (Prelude.Maybe Prelude.Text)
+describeDataIngestionJobResponse_statusDetail = Lens.lens (\DescribeDataIngestionJobResponse' {statusDetail} -> statusDetail) (\s@DescribeDataIngestionJobResponse' {} a -> s {statusDetail = a} :: DescribeDataIngestionJobResponse)
+
+-- | The response's http status code.
+describeDataIngestionJobResponse_httpStatus :: Lens.Lens' DescribeDataIngestionJobResponse Prelude.Int
+describeDataIngestionJobResponse_httpStatus = Lens.lens (\DescribeDataIngestionJobResponse' {httpStatus} -> httpStatus) (\s@DescribeDataIngestionJobResponse' {} a -> s {httpStatus = a} :: DescribeDataIngestionJobResponse)
+
+instance
+  Prelude.NFData
+    DescribeDataIngestionJobResponse
+  where
+  rnf DescribeDataIngestionJobResponse' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf dataEndTime
+      `Prelude.seq` Prelude.rnf dataQualitySummary
+      `Prelude.seq` Prelude.rnf dataStartTime
+      `Prelude.seq` Prelude.rnf datasetArn
+      `Prelude.seq` Prelude.rnf failedReason
+      `Prelude.seq` Prelude.rnf ingestedDataSize
+      `Prelude.seq` Prelude.rnf ingestedFilesSummary
+      `Prelude.seq` Prelude.rnf ingestionInputConfiguration
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusDetail
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/DescribeDataset.hs b/gen/Amazonka/LookoutEquipment/DescribeDataset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DescribeDataset.hs
@@ -0,0 +1,352 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DescribeDataset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a JSON description of the data in each time series dataset,
+-- including names, column names, and data types.
+module Amazonka.LookoutEquipment.DescribeDataset
+  ( -- * Creating a Request
+    DescribeDataset (..),
+    newDescribeDataset,
+
+    -- * Request Lenses
+    describeDataset_datasetName,
+
+    -- * Destructuring the Response
+    DescribeDatasetResponse (..),
+    newDescribeDatasetResponse,
+
+    -- * Response Lenses
+    describeDatasetResponse_createdAt,
+    describeDatasetResponse_dataEndTime,
+    describeDatasetResponse_dataQualitySummary,
+    describeDatasetResponse_dataStartTime,
+    describeDatasetResponse_datasetArn,
+    describeDatasetResponse_datasetName,
+    describeDatasetResponse_ingestedFilesSummary,
+    describeDatasetResponse_ingestionInputConfiguration,
+    describeDatasetResponse_lastUpdatedAt,
+    describeDatasetResponse_roleArn,
+    describeDatasetResponse_schema,
+    describeDatasetResponse_serverSideKmsKeyId,
+    describeDatasetResponse_status,
+    describeDatasetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeDataset' smart constructor.
+data DescribeDataset = DescribeDataset'
+  { -- | The name of the dataset to be described.
+    datasetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataset' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datasetName', 'describeDataset_datasetName' - The name of the dataset to be described.
+newDescribeDataset ::
+  -- | 'datasetName'
+  Prelude.Text ->
+  DescribeDataset
+newDescribeDataset pDatasetName_ =
+  DescribeDataset' {datasetName = pDatasetName_}
+
+-- | The name of the dataset to be described.
+describeDataset_datasetName :: Lens.Lens' DescribeDataset Prelude.Text
+describeDataset_datasetName = Lens.lens (\DescribeDataset' {datasetName} -> datasetName) (\s@DescribeDataset' {} a -> s {datasetName = a} :: DescribeDataset)
+
+instance Core.AWSRequest DescribeDataset where
+  type
+    AWSResponse DescribeDataset =
+      DescribeDatasetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDatasetResponse'
+            Prelude.<$> (x Data..?> "CreatedAt")
+            Prelude.<*> (x Data..?> "DataEndTime")
+            Prelude.<*> (x Data..?> "DataQualitySummary")
+            Prelude.<*> (x Data..?> "DataStartTime")
+            Prelude.<*> (x Data..?> "DatasetArn")
+            Prelude.<*> (x Data..?> "DatasetName")
+            Prelude.<*> (x Data..?> "IngestedFilesSummary")
+            Prelude.<*> (x Data..?> "IngestionInputConfiguration")
+            Prelude.<*> (x Data..?> "LastUpdatedAt")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (x Data..?> "Schema")
+            Prelude.<*> (x Data..?> "ServerSideKmsKeyId")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDataset where
+  hashWithSalt _salt DescribeDataset' {..} =
+    _salt `Prelude.hashWithSalt` datasetName
+
+instance Prelude.NFData DescribeDataset where
+  rnf DescribeDataset' {..} = Prelude.rnf datasetName
+
+instance Data.ToHeaders DescribeDataset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DescribeDataset" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeDataset where
+  toJSON DescribeDataset' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("DatasetName" Data..= datasetName)]
+      )
+
+instance Data.ToPath DescribeDataset where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDataset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDatasetResponse' smart constructor.
+data DescribeDatasetResponse = DescribeDatasetResponse'
+  { -- | Specifies the time the dataset was created in Lookout for Equipment.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the latest timestamp corresponding to data that was
+    -- successfully ingested during the most recent ingestion of this
+    -- particular dataset.
+    dataEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Gives statistics associated with the given dataset for the latest
+    -- successful associated ingestion job id. These statistics primarily
+    -- relate to quantifying incorrect data such as MissingCompleteSensorData,
+    -- MissingSensorData, UnsupportedDateFormats, InsufficientSensorData, and
+    -- DuplicateTimeStamps.
+    dataQualitySummary :: Prelude.Maybe DataQualitySummary,
+    -- | Indicates the earliest timestamp corresponding to data that was
+    -- successfully ingested during the most recent ingestion of this
+    -- particular dataset.
+    dataStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the dataset being described.
+    datasetArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the dataset being described.
+    datasetName :: Prelude.Maybe Prelude.Text,
+    -- | IngestedFilesSummary associated with the given dataset for the latest
+    -- successful associated ingestion job id.
+    ingestedFilesSummary :: Prelude.Maybe IngestedFilesSummary,
+    -- | Specifies the S3 location configuration for the data input for the data
+    -- ingestion job.
+    ingestionInputConfiguration :: Prelude.Maybe IngestionInputConfiguration,
+    -- | Specifies the time the dataset was last updated, if it was.
+    lastUpdatedAt :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the IAM role that you are using for
+    -- this the data ingestion job.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | A JSON description of the data that is in each time series dataset,
+    -- including names, column names, and data types.
+    schema :: Prelude.Maybe Prelude.Text,
+    -- | Provides the identifier of the KMS key used to encrypt dataset data by
+    -- Amazon Lookout for Equipment.
+    serverSideKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the dataset.
+    status :: Prelude.Maybe DatasetStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDatasetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'describeDatasetResponse_createdAt' - Specifies the time the dataset was created in Lookout for Equipment.
+--
+-- 'dataEndTime', 'describeDatasetResponse_dataEndTime' - Indicates the latest timestamp corresponding to data that was
+-- successfully ingested during the most recent ingestion of this
+-- particular dataset.
+--
+-- 'dataQualitySummary', 'describeDatasetResponse_dataQualitySummary' - Gives statistics associated with the given dataset for the latest
+-- successful associated ingestion job id. These statistics primarily
+-- relate to quantifying incorrect data such as MissingCompleteSensorData,
+-- MissingSensorData, UnsupportedDateFormats, InsufficientSensorData, and
+-- DuplicateTimeStamps.
+--
+-- 'dataStartTime', 'describeDatasetResponse_dataStartTime' - Indicates the earliest timestamp corresponding to data that was
+-- successfully ingested during the most recent ingestion of this
+-- particular dataset.
+--
+-- 'datasetArn', 'describeDatasetResponse_datasetArn' - The Amazon Resource Name (ARN) of the dataset being described.
+--
+-- 'datasetName', 'describeDatasetResponse_datasetName' - The name of the dataset being described.
+--
+-- 'ingestedFilesSummary', 'describeDatasetResponse_ingestedFilesSummary' - IngestedFilesSummary associated with the given dataset for the latest
+-- successful associated ingestion job id.
+--
+-- 'ingestionInputConfiguration', 'describeDatasetResponse_ingestionInputConfiguration' - Specifies the S3 location configuration for the data input for the data
+-- ingestion job.
+--
+-- 'lastUpdatedAt', 'describeDatasetResponse_lastUpdatedAt' - Specifies the time the dataset was last updated, if it was.
+--
+-- 'roleArn', 'describeDatasetResponse_roleArn' - The Amazon Resource Name (ARN) of the IAM role that you are using for
+-- this the data ingestion job.
+--
+-- 'schema', 'describeDatasetResponse_schema' - A JSON description of the data that is in each time series dataset,
+-- including names, column names, and data types.
+--
+-- 'serverSideKmsKeyId', 'describeDatasetResponse_serverSideKmsKeyId' - Provides the identifier of the KMS key used to encrypt dataset data by
+-- Amazon Lookout for Equipment.
+--
+-- 'status', 'describeDatasetResponse_status' - Indicates the status of the dataset.
+--
+-- 'httpStatus', 'describeDatasetResponse_httpStatus' - The response's http status code.
+newDescribeDatasetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDatasetResponse
+newDescribeDatasetResponse pHttpStatus_ =
+  DescribeDatasetResponse'
+    { createdAt =
+        Prelude.Nothing,
+      dataEndTime = Prelude.Nothing,
+      dataQualitySummary = Prelude.Nothing,
+      dataStartTime = Prelude.Nothing,
+      datasetArn = Prelude.Nothing,
+      datasetName = Prelude.Nothing,
+      ingestedFilesSummary = Prelude.Nothing,
+      ingestionInputConfiguration = Prelude.Nothing,
+      lastUpdatedAt = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      schema = Prelude.Nothing,
+      serverSideKmsKeyId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Specifies the time the dataset was created in Lookout for Equipment.
+describeDatasetResponse_createdAt :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe Prelude.UTCTime)
+describeDatasetResponse_createdAt = Lens.lens (\DescribeDatasetResponse' {createdAt} -> createdAt) (\s@DescribeDatasetResponse' {} a -> s {createdAt = a} :: DescribeDatasetResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the latest timestamp corresponding to data that was
+-- successfully ingested during the most recent ingestion of this
+-- particular dataset.
+describeDatasetResponse_dataEndTime :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe Prelude.UTCTime)
+describeDatasetResponse_dataEndTime = Lens.lens (\DescribeDatasetResponse' {dataEndTime} -> dataEndTime) (\s@DescribeDatasetResponse' {} a -> s {dataEndTime = a} :: DescribeDatasetResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Gives statistics associated with the given dataset for the latest
+-- successful associated ingestion job id. These statistics primarily
+-- relate to quantifying incorrect data such as MissingCompleteSensorData,
+-- MissingSensorData, UnsupportedDateFormats, InsufficientSensorData, and
+-- DuplicateTimeStamps.
+describeDatasetResponse_dataQualitySummary :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe DataQualitySummary)
+describeDatasetResponse_dataQualitySummary = Lens.lens (\DescribeDatasetResponse' {dataQualitySummary} -> dataQualitySummary) (\s@DescribeDatasetResponse' {} a -> s {dataQualitySummary = a} :: DescribeDatasetResponse)
+
+-- | Indicates the earliest timestamp corresponding to data that was
+-- successfully ingested during the most recent ingestion of this
+-- particular dataset.
+describeDatasetResponse_dataStartTime :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe Prelude.UTCTime)
+describeDatasetResponse_dataStartTime = Lens.lens (\DescribeDatasetResponse' {dataStartTime} -> dataStartTime) (\s@DescribeDatasetResponse' {} a -> s {dataStartTime = a} :: DescribeDatasetResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the dataset being described.
+describeDatasetResponse_datasetArn :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe Prelude.Text)
+describeDatasetResponse_datasetArn = Lens.lens (\DescribeDatasetResponse' {datasetArn} -> datasetArn) (\s@DescribeDatasetResponse' {} a -> s {datasetArn = a} :: DescribeDatasetResponse)
+
+-- | The name of the dataset being described.
+describeDatasetResponse_datasetName :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe Prelude.Text)
+describeDatasetResponse_datasetName = Lens.lens (\DescribeDatasetResponse' {datasetName} -> datasetName) (\s@DescribeDatasetResponse' {} a -> s {datasetName = a} :: DescribeDatasetResponse)
+
+-- | IngestedFilesSummary associated with the given dataset for the latest
+-- successful associated ingestion job id.
+describeDatasetResponse_ingestedFilesSummary :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe IngestedFilesSummary)
+describeDatasetResponse_ingestedFilesSummary = Lens.lens (\DescribeDatasetResponse' {ingestedFilesSummary} -> ingestedFilesSummary) (\s@DescribeDatasetResponse' {} a -> s {ingestedFilesSummary = a} :: DescribeDatasetResponse)
+
+-- | Specifies the S3 location configuration for the data input for the data
+-- ingestion job.
+describeDatasetResponse_ingestionInputConfiguration :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe IngestionInputConfiguration)
+describeDatasetResponse_ingestionInputConfiguration = Lens.lens (\DescribeDatasetResponse' {ingestionInputConfiguration} -> ingestionInputConfiguration) (\s@DescribeDatasetResponse' {} a -> s {ingestionInputConfiguration = a} :: DescribeDatasetResponse)
+
+-- | Specifies the time the dataset was last updated, if it was.
+describeDatasetResponse_lastUpdatedAt :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe Prelude.UTCTime)
+describeDatasetResponse_lastUpdatedAt = Lens.lens (\DescribeDatasetResponse' {lastUpdatedAt} -> lastUpdatedAt) (\s@DescribeDatasetResponse' {} a -> s {lastUpdatedAt = a} :: DescribeDatasetResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the IAM role that you are using for
+-- this the data ingestion job.
+describeDatasetResponse_roleArn :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe Prelude.Text)
+describeDatasetResponse_roleArn = Lens.lens (\DescribeDatasetResponse' {roleArn} -> roleArn) (\s@DescribeDatasetResponse' {} a -> s {roleArn = a} :: DescribeDatasetResponse)
+
+-- | A JSON description of the data that is in each time series dataset,
+-- including names, column names, and data types.
+describeDatasetResponse_schema :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe Prelude.Text)
+describeDatasetResponse_schema = Lens.lens (\DescribeDatasetResponse' {schema} -> schema) (\s@DescribeDatasetResponse' {} a -> s {schema = a} :: DescribeDatasetResponse)
+
+-- | Provides the identifier of the KMS key used to encrypt dataset data by
+-- Amazon Lookout for Equipment.
+describeDatasetResponse_serverSideKmsKeyId :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe Prelude.Text)
+describeDatasetResponse_serverSideKmsKeyId = Lens.lens (\DescribeDatasetResponse' {serverSideKmsKeyId} -> serverSideKmsKeyId) (\s@DescribeDatasetResponse' {} a -> s {serverSideKmsKeyId = a} :: DescribeDatasetResponse)
+
+-- | Indicates the status of the dataset.
+describeDatasetResponse_status :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe DatasetStatus)
+describeDatasetResponse_status = Lens.lens (\DescribeDatasetResponse' {status} -> status) (\s@DescribeDatasetResponse' {} a -> s {status = a} :: DescribeDatasetResponse)
+
+-- | The response's http status code.
+describeDatasetResponse_httpStatus :: Lens.Lens' DescribeDatasetResponse Prelude.Int
+describeDatasetResponse_httpStatus = Lens.lens (\DescribeDatasetResponse' {httpStatus} -> httpStatus) (\s@DescribeDatasetResponse' {} a -> s {httpStatus = a} :: DescribeDatasetResponse)
+
+instance Prelude.NFData DescribeDatasetResponse where
+  rnf DescribeDatasetResponse' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf dataEndTime
+      `Prelude.seq` Prelude.rnf dataQualitySummary
+      `Prelude.seq` Prelude.rnf dataStartTime
+      `Prelude.seq` Prelude.rnf datasetArn
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf ingestedFilesSummary
+      `Prelude.seq` Prelude.rnf ingestionInputConfiguration
+      `Prelude.seq` Prelude.rnf lastUpdatedAt
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf schema
+      `Prelude.seq` Prelude.rnf serverSideKmsKeyId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/DescribeInferenceScheduler.hs b/gen/Amazonka/LookoutEquipment/DescribeInferenceScheduler.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DescribeInferenceScheduler.hs
@@ -0,0 +1,410 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DescribeInferenceScheduler
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Specifies information about the inference scheduler being used,
+-- including name, model, status, and associated metadata
+module Amazonka.LookoutEquipment.DescribeInferenceScheduler
+  ( -- * Creating a Request
+    DescribeInferenceScheduler (..),
+    newDescribeInferenceScheduler,
+
+    -- * Request Lenses
+    describeInferenceScheduler_inferenceSchedulerName,
+
+    -- * Destructuring the Response
+    DescribeInferenceSchedulerResponse (..),
+    newDescribeInferenceSchedulerResponse,
+
+    -- * Response Lenses
+    describeInferenceSchedulerResponse_createdAt,
+    describeInferenceSchedulerResponse_dataDelayOffsetInMinutes,
+    describeInferenceSchedulerResponse_dataInputConfiguration,
+    describeInferenceSchedulerResponse_dataOutputConfiguration,
+    describeInferenceSchedulerResponse_dataUploadFrequency,
+    describeInferenceSchedulerResponse_inferenceSchedulerArn,
+    describeInferenceSchedulerResponse_inferenceSchedulerName,
+    describeInferenceSchedulerResponse_latestInferenceResult,
+    describeInferenceSchedulerResponse_modelArn,
+    describeInferenceSchedulerResponse_modelName,
+    describeInferenceSchedulerResponse_roleArn,
+    describeInferenceSchedulerResponse_serverSideKmsKeyId,
+    describeInferenceSchedulerResponse_status,
+    describeInferenceSchedulerResponse_updatedAt,
+    describeInferenceSchedulerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeInferenceScheduler' smart constructor.
+data DescribeInferenceScheduler = DescribeInferenceScheduler'
+  { -- | The name of the inference scheduler being described.
+    inferenceSchedulerName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeInferenceScheduler' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceSchedulerName', 'describeInferenceScheduler_inferenceSchedulerName' - The name of the inference scheduler being described.
+newDescribeInferenceScheduler ::
+  -- | 'inferenceSchedulerName'
+  Prelude.Text ->
+  DescribeInferenceScheduler
+newDescribeInferenceScheduler
+  pInferenceSchedulerName_ =
+    DescribeInferenceScheduler'
+      { inferenceSchedulerName =
+          pInferenceSchedulerName_
+      }
+
+-- | The name of the inference scheduler being described.
+describeInferenceScheduler_inferenceSchedulerName :: Lens.Lens' DescribeInferenceScheduler Prelude.Text
+describeInferenceScheduler_inferenceSchedulerName = Lens.lens (\DescribeInferenceScheduler' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@DescribeInferenceScheduler' {} a -> s {inferenceSchedulerName = a} :: DescribeInferenceScheduler)
+
+instance Core.AWSRequest DescribeInferenceScheduler where
+  type
+    AWSResponse DescribeInferenceScheduler =
+      DescribeInferenceSchedulerResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeInferenceSchedulerResponse'
+            Prelude.<$> (x Data..?> "CreatedAt")
+            Prelude.<*> (x Data..?> "DataDelayOffsetInMinutes")
+            Prelude.<*> (x Data..?> "DataInputConfiguration")
+            Prelude.<*> (x Data..?> "DataOutputConfiguration")
+            Prelude.<*> (x Data..?> "DataUploadFrequency")
+            Prelude.<*> (x Data..?> "InferenceSchedulerArn")
+            Prelude.<*> (x Data..?> "InferenceSchedulerName")
+            Prelude.<*> (x Data..?> "LatestInferenceResult")
+            Prelude.<*> (x Data..?> "ModelArn")
+            Prelude.<*> (x Data..?> "ModelName")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (x Data..?> "ServerSideKmsKeyId")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "UpdatedAt")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeInferenceScheduler where
+  hashWithSalt _salt DescribeInferenceScheduler' {..} =
+    _salt `Prelude.hashWithSalt` inferenceSchedulerName
+
+instance Prelude.NFData DescribeInferenceScheduler where
+  rnf DescribeInferenceScheduler' {..} =
+    Prelude.rnf inferenceSchedulerName
+
+instance Data.ToHeaders DescribeInferenceScheduler where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DescribeInferenceScheduler" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeInferenceScheduler where
+  toJSON DescribeInferenceScheduler' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "InferenceSchedulerName"
+                  Data..= inferenceSchedulerName
+              )
+          ]
+      )
+
+instance Data.ToPath DescribeInferenceScheduler where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeInferenceScheduler where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeInferenceSchedulerResponse' smart constructor.
+data DescribeInferenceSchedulerResponse = DescribeInferenceSchedulerResponse'
+  { -- | Specifies the time at which the inference scheduler was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | A period of time (in minutes) by which inference on the data is delayed
+    -- after the data starts. For instance, if you select an offset delay time
+    -- of five minutes, inference will not begin on the data until the first
+    -- data measurement after the five minute mark. For example, if five
+    -- minutes is selected, the inference scheduler will wake up at the
+    -- configured frequency with the additional five minute delay time to check
+    -- the customer S3 bucket. The customer can upload data at the same
+    -- frequency and they don\'t need to stop and restart the scheduler when
+    -- uploading new data.
+    dataDelayOffsetInMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies configuration information for the input data for the inference
+    -- scheduler, including delimiter, format, and dataset location.
+    dataInputConfiguration :: Prelude.Maybe InferenceInputConfiguration,
+    -- | Specifies information for the output results for the inference
+    -- scheduler, including the output S3 location.
+    dataOutputConfiguration :: Prelude.Maybe InferenceOutputConfiguration,
+    -- | Specifies how often data is uploaded to the source S3 bucket for the
+    -- input data. This value is the length of time between data uploads. For
+    -- instance, if you select 5 minutes, Amazon Lookout for Equipment will
+    -- upload the real-time data to the source bucket once every 5 minutes.
+    -- This frequency also determines how often Amazon Lookout for Equipment
+    -- starts a scheduled inference on your data. In this example, it starts
+    -- once every 5 minutes.
+    dataUploadFrequency :: Prelude.Maybe DataUploadFrequency,
+    -- | The Amazon Resource Name (ARN) of the inference scheduler being
+    -- described.
+    inferenceSchedulerArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the inference scheduler being described.
+    inferenceSchedulerName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether the latest execution for the inference scheduler was
+    -- Anomalous (anomalous events found) or Normal (no anomalous events
+    -- found).
+    latestInferenceResult :: Prelude.Maybe LatestInferenceResult,
+    -- | The Amazon Resource Name (ARN) of the ML model of the inference
+    -- scheduler being described.
+    modelArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the ML model of the inference scheduler being described.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of a role with permission to access the
+    -- data source for the inference scheduler being described.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | Provides the identifier of the KMS key used to encrypt inference
+    -- scheduler data by Amazon Lookout for Equipment.
+    serverSideKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the inference scheduler.
+    status :: Prelude.Maybe InferenceSchedulerStatus,
+    -- | Specifies the time at which the inference scheduler was last updated, if
+    -- it was.
+    updatedAt :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeInferenceSchedulerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'describeInferenceSchedulerResponse_createdAt' - Specifies the time at which the inference scheduler was created.
+--
+-- 'dataDelayOffsetInMinutes', 'describeInferenceSchedulerResponse_dataDelayOffsetInMinutes' - A period of time (in minutes) by which inference on the data is delayed
+-- after the data starts. For instance, if you select an offset delay time
+-- of five minutes, inference will not begin on the data until the first
+-- data measurement after the five minute mark. For example, if five
+-- minutes is selected, the inference scheduler will wake up at the
+-- configured frequency with the additional five minute delay time to check
+-- the customer S3 bucket. The customer can upload data at the same
+-- frequency and they don\'t need to stop and restart the scheduler when
+-- uploading new data.
+--
+-- 'dataInputConfiguration', 'describeInferenceSchedulerResponse_dataInputConfiguration' - Specifies configuration information for the input data for the inference
+-- scheduler, including delimiter, format, and dataset location.
+--
+-- 'dataOutputConfiguration', 'describeInferenceSchedulerResponse_dataOutputConfiguration' - Specifies information for the output results for the inference
+-- scheduler, including the output S3 location.
+--
+-- 'dataUploadFrequency', 'describeInferenceSchedulerResponse_dataUploadFrequency' - Specifies how often data is uploaded to the source S3 bucket for the
+-- input data. This value is the length of time between data uploads. For
+-- instance, if you select 5 minutes, Amazon Lookout for Equipment will
+-- upload the real-time data to the source bucket once every 5 minutes.
+-- This frequency also determines how often Amazon Lookout for Equipment
+-- starts a scheduled inference on your data. In this example, it starts
+-- once every 5 minutes.
+--
+-- 'inferenceSchedulerArn', 'describeInferenceSchedulerResponse_inferenceSchedulerArn' - The Amazon Resource Name (ARN) of the inference scheduler being
+-- described.
+--
+-- 'inferenceSchedulerName', 'describeInferenceSchedulerResponse_inferenceSchedulerName' - The name of the inference scheduler being described.
+--
+-- 'latestInferenceResult', 'describeInferenceSchedulerResponse_latestInferenceResult' - Indicates whether the latest execution for the inference scheduler was
+-- Anomalous (anomalous events found) or Normal (no anomalous events
+-- found).
+--
+-- 'modelArn', 'describeInferenceSchedulerResponse_modelArn' - The Amazon Resource Name (ARN) of the ML model of the inference
+-- scheduler being described.
+--
+-- 'modelName', 'describeInferenceSchedulerResponse_modelName' - The name of the ML model of the inference scheduler being described.
+--
+-- 'roleArn', 'describeInferenceSchedulerResponse_roleArn' - The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source for the inference scheduler being described.
+--
+-- 'serverSideKmsKeyId', 'describeInferenceSchedulerResponse_serverSideKmsKeyId' - Provides the identifier of the KMS key used to encrypt inference
+-- scheduler data by Amazon Lookout for Equipment.
+--
+-- 'status', 'describeInferenceSchedulerResponse_status' - Indicates the status of the inference scheduler.
+--
+-- 'updatedAt', 'describeInferenceSchedulerResponse_updatedAt' - Specifies the time at which the inference scheduler was last updated, if
+-- it was.
+--
+-- 'httpStatus', 'describeInferenceSchedulerResponse_httpStatus' - The response's http status code.
+newDescribeInferenceSchedulerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeInferenceSchedulerResponse
+newDescribeInferenceSchedulerResponse pHttpStatus_ =
+  DescribeInferenceSchedulerResponse'
+    { createdAt =
+        Prelude.Nothing,
+      dataDelayOffsetInMinutes =
+        Prelude.Nothing,
+      dataInputConfiguration =
+        Prelude.Nothing,
+      dataOutputConfiguration =
+        Prelude.Nothing,
+      dataUploadFrequency = Prelude.Nothing,
+      inferenceSchedulerArn = Prelude.Nothing,
+      inferenceSchedulerName =
+        Prelude.Nothing,
+      latestInferenceResult = Prelude.Nothing,
+      modelArn = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      serverSideKmsKeyId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updatedAt = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Specifies the time at which the inference scheduler was created.
+describeInferenceSchedulerResponse_createdAt :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe Prelude.UTCTime)
+describeInferenceSchedulerResponse_createdAt = Lens.lens (\DescribeInferenceSchedulerResponse' {createdAt} -> createdAt) (\s@DescribeInferenceSchedulerResponse' {} a -> s {createdAt = a} :: DescribeInferenceSchedulerResponse) Prelude.. Lens.mapping Data._Time
+
+-- | A period of time (in minutes) by which inference on the data is delayed
+-- after the data starts. For instance, if you select an offset delay time
+-- of five minutes, inference will not begin on the data until the first
+-- data measurement after the five minute mark. For example, if five
+-- minutes is selected, the inference scheduler will wake up at the
+-- configured frequency with the additional five minute delay time to check
+-- the customer S3 bucket. The customer can upload data at the same
+-- frequency and they don\'t need to stop and restart the scheduler when
+-- uploading new data.
+describeInferenceSchedulerResponse_dataDelayOffsetInMinutes :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe Prelude.Natural)
+describeInferenceSchedulerResponse_dataDelayOffsetInMinutes = Lens.lens (\DescribeInferenceSchedulerResponse' {dataDelayOffsetInMinutes} -> dataDelayOffsetInMinutes) (\s@DescribeInferenceSchedulerResponse' {} a -> s {dataDelayOffsetInMinutes = a} :: DescribeInferenceSchedulerResponse)
+
+-- | Specifies configuration information for the input data for the inference
+-- scheduler, including delimiter, format, and dataset location.
+describeInferenceSchedulerResponse_dataInputConfiguration :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe InferenceInputConfiguration)
+describeInferenceSchedulerResponse_dataInputConfiguration = Lens.lens (\DescribeInferenceSchedulerResponse' {dataInputConfiguration} -> dataInputConfiguration) (\s@DescribeInferenceSchedulerResponse' {} a -> s {dataInputConfiguration = a} :: DescribeInferenceSchedulerResponse)
+
+-- | Specifies information for the output results for the inference
+-- scheduler, including the output S3 location.
+describeInferenceSchedulerResponse_dataOutputConfiguration :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe InferenceOutputConfiguration)
+describeInferenceSchedulerResponse_dataOutputConfiguration = Lens.lens (\DescribeInferenceSchedulerResponse' {dataOutputConfiguration} -> dataOutputConfiguration) (\s@DescribeInferenceSchedulerResponse' {} a -> s {dataOutputConfiguration = a} :: DescribeInferenceSchedulerResponse)
+
+-- | Specifies how often data is uploaded to the source S3 bucket for the
+-- input data. This value is the length of time between data uploads. For
+-- instance, if you select 5 minutes, Amazon Lookout for Equipment will
+-- upload the real-time data to the source bucket once every 5 minutes.
+-- This frequency also determines how often Amazon Lookout for Equipment
+-- starts a scheduled inference on your data. In this example, it starts
+-- once every 5 minutes.
+describeInferenceSchedulerResponse_dataUploadFrequency :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe DataUploadFrequency)
+describeInferenceSchedulerResponse_dataUploadFrequency = Lens.lens (\DescribeInferenceSchedulerResponse' {dataUploadFrequency} -> dataUploadFrequency) (\s@DescribeInferenceSchedulerResponse' {} a -> s {dataUploadFrequency = a} :: DescribeInferenceSchedulerResponse)
+
+-- | The Amazon Resource Name (ARN) of the inference scheduler being
+-- described.
+describeInferenceSchedulerResponse_inferenceSchedulerArn :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+describeInferenceSchedulerResponse_inferenceSchedulerArn = Lens.lens (\DescribeInferenceSchedulerResponse' {inferenceSchedulerArn} -> inferenceSchedulerArn) (\s@DescribeInferenceSchedulerResponse' {} a -> s {inferenceSchedulerArn = a} :: DescribeInferenceSchedulerResponse)
+
+-- | The name of the inference scheduler being described.
+describeInferenceSchedulerResponse_inferenceSchedulerName :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+describeInferenceSchedulerResponse_inferenceSchedulerName = Lens.lens (\DescribeInferenceSchedulerResponse' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@DescribeInferenceSchedulerResponse' {} a -> s {inferenceSchedulerName = a} :: DescribeInferenceSchedulerResponse)
+
+-- | Indicates whether the latest execution for the inference scheduler was
+-- Anomalous (anomalous events found) or Normal (no anomalous events
+-- found).
+describeInferenceSchedulerResponse_latestInferenceResult :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe LatestInferenceResult)
+describeInferenceSchedulerResponse_latestInferenceResult = Lens.lens (\DescribeInferenceSchedulerResponse' {latestInferenceResult} -> latestInferenceResult) (\s@DescribeInferenceSchedulerResponse' {} a -> s {latestInferenceResult = a} :: DescribeInferenceSchedulerResponse)
+
+-- | The Amazon Resource Name (ARN) of the ML model of the inference
+-- scheduler being described.
+describeInferenceSchedulerResponse_modelArn :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+describeInferenceSchedulerResponse_modelArn = Lens.lens (\DescribeInferenceSchedulerResponse' {modelArn} -> modelArn) (\s@DescribeInferenceSchedulerResponse' {} a -> s {modelArn = a} :: DescribeInferenceSchedulerResponse)
+
+-- | The name of the ML model of the inference scheduler being described.
+describeInferenceSchedulerResponse_modelName :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+describeInferenceSchedulerResponse_modelName = Lens.lens (\DescribeInferenceSchedulerResponse' {modelName} -> modelName) (\s@DescribeInferenceSchedulerResponse' {} a -> s {modelName = a} :: DescribeInferenceSchedulerResponse)
+
+-- | The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source for the inference scheduler being described.
+describeInferenceSchedulerResponse_roleArn :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+describeInferenceSchedulerResponse_roleArn = Lens.lens (\DescribeInferenceSchedulerResponse' {roleArn} -> roleArn) (\s@DescribeInferenceSchedulerResponse' {} a -> s {roleArn = a} :: DescribeInferenceSchedulerResponse)
+
+-- | Provides the identifier of the KMS key used to encrypt inference
+-- scheduler data by Amazon Lookout for Equipment.
+describeInferenceSchedulerResponse_serverSideKmsKeyId :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+describeInferenceSchedulerResponse_serverSideKmsKeyId = Lens.lens (\DescribeInferenceSchedulerResponse' {serverSideKmsKeyId} -> serverSideKmsKeyId) (\s@DescribeInferenceSchedulerResponse' {} a -> s {serverSideKmsKeyId = a} :: DescribeInferenceSchedulerResponse)
+
+-- | Indicates the status of the inference scheduler.
+describeInferenceSchedulerResponse_status :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe InferenceSchedulerStatus)
+describeInferenceSchedulerResponse_status = Lens.lens (\DescribeInferenceSchedulerResponse' {status} -> status) (\s@DescribeInferenceSchedulerResponse' {} a -> s {status = a} :: DescribeInferenceSchedulerResponse)
+
+-- | Specifies the time at which the inference scheduler was last updated, if
+-- it was.
+describeInferenceSchedulerResponse_updatedAt :: Lens.Lens' DescribeInferenceSchedulerResponse (Prelude.Maybe Prelude.UTCTime)
+describeInferenceSchedulerResponse_updatedAt = Lens.lens (\DescribeInferenceSchedulerResponse' {updatedAt} -> updatedAt) (\s@DescribeInferenceSchedulerResponse' {} a -> s {updatedAt = a} :: DescribeInferenceSchedulerResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+describeInferenceSchedulerResponse_httpStatus :: Lens.Lens' DescribeInferenceSchedulerResponse Prelude.Int
+describeInferenceSchedulerResponse_httpStatus = Lens.lens (\DescribeInferenceSchedulerResponse' {httpStatus} -> httpStatus) (\s@DescribeInferenceSchedulerResponse' {} a -> s {httpStatus = a} :: DescribeInferenceSchedulerResponse)
+
+instance
+  Prelude.NFData
+    DescribeInferenceSchedulerResponse
+  where
+  rnf DescribeInferenceSchedulerResponse' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf dataDelayOffsetInMinutes
+      `Prelude.seq` Prelude.rnf dataInputConfiguration
+      `Prelude.seq` Prelude.rnf dataOutputConfiguration
+      `Prelude.seq` Prelude.rnf dataUploadFrequency
+      `Prelude.seq` Prelude.rnf inferenceSchedulerArn
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
+      `Prelude.seq` Prelude.rnf latestInferenceResult
+      `Prelude.seq` Prelude.rnf modelArn
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf serverSideKmsKeyId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updatedAt
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/DescribeLabel.hs b/gen/Amazonka/LookoutEquipment/DescribeLabel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DescribeLabel.hs
@@ -0,0 +1,314 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DescribeLabel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the name of the label.
+module Amazonka.LookoutEquipment.DescribeLabel
+  ( -- * Creating a Request
+    DescribeLabel (..),
+    newDescribeLabel,
+
+    -- * Request Lenses
+    describeLabel_labelGroupName,
+    describeLabel_labelId,
+
+    -- * Destructuring the Response
+    DescribeLabelResponse (..),
+    newDescribeLabelResponse,
+
+    -- * Response Lenses
+    describeLabelResponse_createdAt,
+    describeLabelResponse_endTime,
+    describeLabelResponse_equipment,
+    describeLabelResponse_faultCode,
+    describeLabelResponse_labelGroupArn,
+    describeLabelResponse_labelGroupName,
+    describeLabelResponse_labelId,
+    describeLabelResponse_notes,
+    describeLabelResponse_rating,
+    describeLabelResponse_startTime,
+    describeLabelResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeLabel' smart constructor.
+data DescribeLabel = DescribeLabel'
+  { -- | Returns the name of the group containing the label.
+    labelGroupName :: Prelude.Text,
+    -- | Returns the ID of the label.
+    labelId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeLabel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelGroupName', 'describeLabel_labelGroupName' - Returns the name of the group containing the label.
+--
+-- 'labelId', 'describeLabel_labelId' - Returns the ID of the label.
+newDescribeLabel ::
+  -- | 'labelGroupName'
+  Prelude.Text ->
+  -- | 'labelId'
+  Prelude.Text ->
+  DescribeLabel
+newDescribeLabel pLabelGroupName_ pLabelId_ =
+  DescribeLabel'
+    { labelGroupName = pLabelGroupName_,
+      labelId = pLabelId_
+    }
+
+-- | Returns the name of the group containing the label.
+describeLabel_labelGroupName :: Lens.Lens' DescribeLabel Prelude.Text
+describeLabel_labelGroupName = Lens.lens (\DescribeLabel' {labelGroupName} -> labelGroupName) (\s@DescribeLabel' {} a -> s {labelGroupName = a} :: DescribeLabel)
+
+-- | Returns the ID of the label.
+describeLabel_labelId :: Lens.Lens' DescribeLabel Prelude.Text
+describeLabel_labelId = Lens.lens (\DescribeLabel' {labelId} -> labelId) (\s@DescribeLabel' {} a -> s {labelId = a} :: DescribeLabel)
+
+instance Core.AWSRequest DescribeLabel where
+  type
+    AWSResponse DescribeLabel =
+      DescribeLabelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeLabelResponse'
+            Prelude.<$> (x Data..?> "CreatedAt")
+            Prelude.<*> (x Data..?> "EndTime")
+            Prelude.<*> (x Data..?> "Equipment")
+            Prelude.<*> (x Data..?> "FaultCode")
+            Prelude.<*> (x Data..?> "LabelGroupArn")
+            Prelude.<*> (x Data..?> "LabelGroupName")
+            Prelude.<*> (x Data..?> "LabelId")
+            Prelude.<*> (x Data..?> "Notes")
+            Prelude.<*> (x Data..?> "Rating")
+            Prelude.<*> (x Data..?> "StartTime")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeLabel where
+  hashWithSalt _salt DescribeLabel' {..} =
+    _salt
+      `Prelude.hashWithSalt` labelGroupName
+      `Prelude.hashWithSalt` labelId
+
+instance Prelude.NFData DescribeLabel where
+  rnf DescribeLabel' {..} =
+    Prelude.rnf labelGroupName
+      `Prelude.seq` Prelude.rnf labelId
+
+instance Data.ToHeaders DescribeLabel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DescribeLabel" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeLabel where
+  toJSON DescribeLabel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("LabelGroupName" Data..= labelGroupName),
+            Prelude.Just ("LabelId" Data..= labelId)
+          ]
+      )
+
+instance Data.ToPath DescribeLabel where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeLabel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeLabelResponse' smart constructor.
+data DescribeLabelResponse = DescribeLabelResponse'
+  { -- | The time at which the label was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The end time of the requested label.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates that a label pertains to a particular piece of equipment.
+    equipment :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the type of anomaly associated with the label.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    faultCode :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the requested label group.
+    labelGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the requested label group.
+    labelGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the requested label.
+    labelId :: Prelude.Maybe Prelude.Text,
+    -- | Metadata providing additional information about the label.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    notes :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether a labeled event represents an anomaly.
+    rating :: Prelude.Maybe LabelRating,
+    -- | The start time of the requested label.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeLabelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'describeLabelResponse_createdAt' - The time at which the label was created.
+--
+-- 'endTime', 'describeLabelResponse_endTime' - The end time of the requested label.
+--
+-- 'equipment', 'describeLabelResponse_equipment' - Indicates that a label pertains to a particular piece of equipment.
+--
+-- 'faultCode', 'describeLabelResponse_faultCode' - Indicates the type of anomaly associated with the label.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'labelGroupArn', 'describeLabelResponse_labelGroupArn' - The ARN of the requested label group.
+--
+-- 'labelGroupName', 'describeLabelResponse_labelGroupName' - The name of the requested label group.
+--
+-- 'labelId', 'describeLabelResponse_labelId' - The ID of the requested label.
+--
+-- 'notes', 'describeLabelResponse_notes' - Metadata providing additional information about the label.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'rating', 'describeLabelResponse_rating' - Indicates whether a labeled event represents an anomaly.
+--
+-- 'startTime', 'describeLabelResponse_startTime' - The start time of the requested label.
+--
+-- 'httpStatus', 'describeLabelResponse_httpStatus' - The response's http status code.
+newDescribeLabelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeLabelResponse
+newDescribeLabelResponse pHttpStatus_ =
+  DescribeLabelResponse'
+    { createdAt = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      equipment = Prelude.Nothing,
+      faultCode = Prelude.Nothing,
+      labelGroupArn = Prelude.Nothing,
+      labelGroupName = Prelude.Nothing,
+      labelId = Prelude.Nothing,
+      notes = Prelude.Nothing,
+      rating = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The time at which the label was created.
+describeLabelResponse_createdAt :: Lens.Lens' DescribeLabelResponse (Prelude.Maybe Prelude.UTCTime)
+describeLabelResponse_createdAt = Lens.lens (\DescribeLabelResponse' {createdAt} -> createdAt) (\s@DescribeLabelResponse' {} a -> s {createdAt = a} :: DescribeLabelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The end time of the requested label.
+describeLabelResponse_endTime :: Lens.Lens' DescribeLabelResponse (Prelude.Maybe Prelude.UTCTime)
+describeLabelResponse_endTime = Lens.lens (\DescribeLabelResponse' {endTime} -> endTime) (\s@DescribeLabelResponse' {} a -> s {endTime = a} :: DescribeLabelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates that a label pertains to a particular piece of equipment.
+describeLabelResponse_equipment :: Lens.Lens' DescribeLabelResponse (Prelude.Maybe Prelude.Text)
+describeLabelResponse_equipment = Lens.lens (\DescribeLabelResponse' {equipment} -> equipment) (\s@DescribeLabelResponse' {} a -> s {equipment = a} :: DescribeLabelResponse)
+
+-- | Indicates the type of anomaly associated with the label.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+describeLabelResponse_faultCode :: Lens.Lens' DescribeLabelResponse (Prelude.Maybe Prelude.Text)
+describeLabelResponse_faultCode = Lens.lens (\DescribeLabelResponse' {faultCode} -> faultCode) (\s@DescribeLabelResponse' {} a -> s {faultCode = a} :: DescribeLabelResponse)
+
+-- | The ARN of the requested label group.
+describeLabelResponse_labelGroupArn :: Lens.Lens' DescribeLabelResponse (Prelude.Maybe Prelude.Text)
+describeLabelResponse_labelGroupArn = Lens.lens (\DescribeLabelResponse' {labelGroupArn} -> labelGroupArn) (\s@DescribeLabelResponse' {} a -> s {labelGroupArn = a} :: DescribeLabelResponse)
+
+-- | The name of the requested label group.
+describeLabelResponse_labelGroupName :: Lens.Lens' DescribeLabelResponse (Prelude.Maybe Prelude.Text)
+describeLabelResponse_labelGroupName = Lens.lens (\DescribeLabelResponse' {labelGroupName} -> labelGroupName) (\s@DescribeLabelResponse' {} a -> s {labelGroupName = a} :: DescribeLabelResponse)
+
+-- | The ID of the requested label.
+describeLabelResponse_labelId :: Lens.Lens' DescribeLabelResponse (Prelude.Maybe Prelude.Text)
+describeLabelResponse_labelId = Lens.lens (\DescribeLabelResponse' {labelId} -> labelId) (\s@DescribeLabelResponse' {} a -> s {labelId = a} :: DescribeLabelResponse)
+
+-- | Metadata providing additional information about the label.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+describeLabelResponse_notes :: Lens.Lens' DescribeLabelResponse (Prelude.Maybe Prelude.Text)
+describeLabelResponse_notes = Lens.lens (\DescribeLabelResponse' {notes} -> notes) (\s@DescribeLabelResponse' {} a -> s {notes = a} :: DescribeLabelResponse)
+
+-- | Indicates whether a labeled event represents an anomaly.
+describeLabelResponse_rating :: Lens.Lens' DescribeLabelResponse (Prelude.Maybe LabelRating)
+describeLabelResponse_rating = Lens.lens (\DescribeLabelResponse' {rating} -> rating) (\s@DescribeLabelResponse' {} a -> s {rating = a} :: DescribeLabelResponse)
+
+-- | The start time of the requested label.
+describeLabelResponse_startTime :: Lens.Lens' DescribeLabelResponse (Prelude.Maybe Prelude.UTCTime)
+describeLabelResponse_startTime = Lens.lens (\DescribeLabelResponse' {startTime} -> startTime) (\s@DescribeLabelResponse' {} a -> s {startTime = a} :: DescribeLabelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+describeLabelResponse_httpStatus :: Lens.Lens' DescribeLabelResponse Prelude.Int
+describeLabelResponse_httpStatus = Lens.lens (\DescribeLabelResponse' {httpStatus} -> httpStatus) (\s@DescribeLabelResponse' {} a -> s {httpStatus = a} :: DescribeLabelResponse)
+
+instance Prelude.NFData DescribeLabelResponse where
+  rnf DescribeLabelResponse' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf equipment
+      `Prelude.seq` Prelude.rnf faultCode
+      `Prelude.seq` Prelude.rnf labelGroupArn
+      `Prelude.seq` Prelude.rnf labelGroupName
+      `Prelude.seq` Prelude.rnf labelId
+      `Prelude.seq` Prelude.rnf notes
+      `Prelude.seq` Prelude.rnf rating
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/DescribeLabelGroup.hs b/gen/Amazonka/LookoutEquipment/DescribeLabelGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DescribeLabelGroup.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DescribeLabelGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about the label group.
+module Amazonka.LookoutEquipment.DescribeLabelGroup
+  ( -- * Creating a Request
+    DescribeLabelGroup (..),
+    newDescribeLabelGroup,
+
+    -- * Request Lenses
+    describeLabelGroup_labelGroupName,
+
+    -- * Destructuring the Response
+    DescribeLabelGroupResponse (..),
+    newDescribeLabelGroupResponse,
+
+    -- * Response Lenses
+    describeLabelGroupResponse_createdAt,
+    describeLabelGroupResponse_faultCodes,
+    describeLabelGroupResponse_labelGroupArn,
+    describeLabelGroupResponse_labelGroupName,
+    describeLabelGroupResponse_updatedAt,
+    describeLabelGroupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeLabelGroup' smart constructor.
+data DescribeLabelGroup = DescribeLabelGroup'
+  { -- | Returns the name of the label group.
+    labelGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeLabelGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelGroupName', 'describeLabelGroup_labelGroupName' - Returns the name of the label group.
+newDescribeLabelGroup ::
+  -- | 'labelGroupName'
+  Prelude.Text ->
+  DescribeLabelGroup
+newDescribeLabelGroup pLabelGroupName_ =
+  DescribeLabelGroup'
+    { labelGroupName =
+        pLabelGroupName_
+    }
+
+-- | Returns the name of the label group.
+describeLabelGroup_labelGroupName :: Lens.Lens' DescribeLabelGroup Prelude.Text
+describeLabelGroup_labelGroupName = Lens.lens (\DescribeLabelGroup' {labelGroupName} -> labelGroupName) (\s@DescribeLabelGroup' {} a -> s {labelGroupName = a} :: DescribeLabelGroup)
+
+instance Core.AWSRequest DescribeLabelGroup where
+  type
+    AWSResponse DescribeLabelGroup =
+      DescribeLabelGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeLabelGroupResponse'
+            Prelude.<$> (x Data..?> "CreatedAt")
+            Prelude.<*> (x Data..?> "FaultCodes" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "LabelGroupArn")
+            Prelude.<*> (x Data..?> "LabelGroupName")
+            Prelude.<*> (x Data..?> "UpdatedAt")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeLabelGroup where
+  hashWithSalt _salt DescribeLabelGroup' {..} =
+    _salt `Prelude.hashWithSalt` labelGroupName
+
+instance Prelude.NFData DescribeLabelGroup where
+  rnf DescribeLabelGroup' {..} =
+    Prelude.rnf labelGroupName
+
+instance Data.ToHeaders DescribeLabelGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DescribeLabelGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeLabelGroup where
+  toJSON DescribeLabelGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("LabelGroupName" Data..= labelGroupName)
+          ]
+      )
+
+instance Data.ToPath DescribeLabelGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeLabelGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeLabelGroupResponse' smart constructor.
+data DescribeLabelGroupResponse = DescribeLabelGroupResponse'
+  { -- | The time at which the label group was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | Codes indicating the type of anomaly associated with the labels in the
+    -- lagbel group.
+    faultCodes :: Prelude.Maybe [Prelude.Text],
+    -- | The ARN of the label group.
+    labelGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the label group.
+    labelGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The time at which the label group was updated.
+    updatedAt :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeLabelGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'describeLabelGroupResponse_createdAt' - The time at which the label group was created.
+--
+-- 'faultCodes', 'describeLabelGroupResponse_faultCodes' - Codes indicating the type of anomaly associated with the labels in the
+-- lagbel group.
+--
+-- 'labelGroupArn', 'describeLabelGroupResponse_labelGroupArn' - The ARN of the label group.
+--
+-- 'labelGroupName', 'describeLabelGroupResponse_labelGroupName' - The name of the label group.
+--
+-- 'updatedAt', 'describeLabelGroupResponse_updatedAt' - The time at which the label group was updated.
+--
+-- 'httpStatus', 'describeLabelGroupResponse_httpStatus' - The response's http status code.
+newDescribeLabelGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeLabelGroupResponse
+newDescribeLabelGroupResponse pHttpStatus_ =
+  DescribeLabelGroupResponse'
+    { createdAt =
+        Prelude.Nothing,
+      faultCodes = Prelude.Nothing,
+      labelGroupArn = Prelude.Nothing,
+      labelGroupName = Prelude.Nothing,
+      updatedAt = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The time at which the label group was created.
+describeLabelGroupResponse_createdAt :: Lens.Lens' DescribeLabelGroupResponse (Prelude.Maybe Prelude.UTCTime)
+describeLabelGroupResponse_createdAt = Lens.lens (\DescribeLabelGroupResponse' {createdAt} -> createdAt) (\s@DescribeLabelGroupResponse' {} a -> s {createdAt = a} :: DescribeLabelGroupResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Codes indicating the type of anomaly associated with the labels in the
+-- lagbel group.
+describeLabelGroupResponse_faultCodes :: Lens.Lens' DescribeLabelGroupResponse (Prelude.Maybe [Prelude.Text])
+describeLabelGroupResponse_faultCodes = Lens.lens (\DescribeLabelGroupResponse' {faultCodes} -> faultCodes) (\s@DescribeLabelGroupResponse' {} a -> s {faultCodes = a} :: DescribeLabelGroupResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the label group.
+describeLabelGroupResponse_labelGroupArn :: Lens.Lens' DescribeLabelGroupResponse (Prelude.Maybe Prelude.Text)
+describeLabelGroupResponse_labelGroupArn = Lens.lens (\DescribeLabelGroupResponse' {labelGroupArn} -> labelGroupArn) (\s@DescribeLabelGroupResponse' {} a -> s {labelGroupArn = a} :: DescribeLabelGroupResponse)
+
+-- | The name of the label group.
+describeLabelGroupResponse_labelGroupName :: Lens.Lens' DescribeLabelGroupResponse (Prelude.Maybe Prelude.Text)
+describeLabelGroupResponse_labelGroupName = Lens.lens (\DescribeLabelGroupResponse' {labelGroupName} -> labelGroupName) (\s@DescribeLabelGroupResponse' {} a -> s {labelGroupName = a} :: DescribeLabelGroupResponse)
+
+-- | The time at which the label group was updated.
+describeLabelGroupResponse_updatedAt :: Lens.Lens' DescribeLabelGroupResponse (Prelude.Maybe Prelude.UTCTime)
+describeLabelGroupResponse_updatedAt = Lens.lens (\DescribeLabelGroupResponse' {updatedAt} -> updatedAt) (\s@DescribeLabelGroupResponse' {} a -> s {updatedAt = a} :: DescribeLabelGroupResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+describeLabelGroupResponse_httpStatus :: Lens.Lens' DescribeLabelGroupResponse Prelude.Int
+describeLabelGroupResponse_httpStatus = Lens.lens (\DescribeLabelGroupResponse' {httpStatus} -> httpStatus) (\s@DescribeLabelGroupResponse' {} a -> s {httpStatus = a} :: DescribeLabelGroupResponse)
+
+instance Prelude.NFData DescribeLabelGroupResponse where
+  rnf DescribeLabelGroupResponse' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf faultCodes
+      `Prelude.seq` Prelude.rnf labelGroupArn
+      `Prelude.seq` Prelude.rnf labelGroupName
+      `Prelude.seq` Prelude.rnf updatedAt
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/DescribeModel.hs b/gen/Amazonka/LookoutEquipment/DescribeModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/DescribeModel.hs
@@ -0,0 +1,487 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.DescribeModel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a JSON containing the overall information about a specific ML
+-- model, including model name and ARN, dataset, training and evaluation
+-- information, status, and so on.
+module Amazonka.LookoutEquipment.DescribeModel
+  ( -- * Creating a Request
+    DescribeModel (..),
+    newDescribeModel,
+
+    -- * Request Lenses
+    describeModel_modelName,
+
+    -- * Destructuring the Response
+    DescribeModelResponse (..),
+    newDescribeModelResponse,
+
+    -- * Response Lenses
+    describeModelResponse_createdAt,
+    describeModelResponse_dataPreProcessingConfiguration,
+    describeModelResponse_datasetArn,
+    describeModelResponse_datasetName,
+    describeModelResponse_evaluationDataEndTime,
+    describeModelResponse_evaluationDataStartTime,
+    describeModelResponse_failedReason,
+    describeModelResponse_labelsInputConfiguration,
+    describeModelResponse_lastUpdatedTime,
+    describeModelResponse_modelArn,
+    describeModelResponse_modelMetrics,
+    describeModelResponse_modelName,
+    describeModelResponse_offCondition,
+    describeModelResponse_roleArn,
+    describeModelResponse_schema,
+    describeModelResponse_serverSideKmsKeyId,
+    describeModelResponse_status,
+    describeModelResponse_trainingDataEndTime,
+    describeModelResponse_trainingDataStartTime,
+    describeModelResponse_trainingExecutionEndTime,
+    describeModelResponse_trainingExecutionStartTime,
+    describeModelResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeModel' smart constructor.
+data DescribeModel = DescribeModel'
+  { -- | The name of the ML model to be described.
+    modelName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'modelName', 'describeModel_modelName' - The name of the ML model to be described.
+newDescribeModel ::
+  -- | 'modelName'
+  Prelude.Text ->
+  DescribeModel
+newDescribeModel pModelName_ =
+  DescribeModel' {modelName = pModelName_}
+
+-- | The name of the ML model to be described.
+describeModel_modelName :: Lens.Lens' DescribeModel Prelude.Text
+describeModel_modelName = Lens.lens (\DescribeModel' {modelName} -> modelName) (\s@DescribeModel' {} a -> s {modelName = a} :: DescribeModel)
+
+instance Core.AWSRequest DescribeModel where
+  type
+    AWSResponse DescribeModel =
+      DescribeModelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeModelResponse'
+            Prelude.<$> (x Data..?> "CreatedAt")
+            Prelude.<*> (x Data..?> "DataPreProcessingConfiguration")
+            Prelude.<*> (x Data..?> "DatasetArn")
+            Prelude.<*> (x Data..?> "DatasetName")
+            Prelude.<*> (x Data..?> "EvaluationDataEndTime")
+            Prelude.<*> (x Data..?> "EvaluationDataStartTime")
+            Prelude.<*> (x Data..?> "FailedReason")
+            Prelude.<*> (x Data..?> "LabelsInputConfiguration")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (x Data..?> "ModelArn")
+            Prelude.<*> (x Data..?> "ModelMetrics")
+            Prelude.<*> (x Data..?> "ModelName")
+            Prelude.<*> (x Data..?> "OffCondition")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (x Data..?> "Schema")
+            Prelude.<*> (x Data..?> "ServerSideKmsKeyId")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "TrainingDataEndTime")
+            Prelude.<*> (x Data..?> "TrainingDataStartTime")
+            Prelude.<*> (x Data..?> "TrainingExecutionEndTime")
+            Prelude.<*> (x Data..?> "TrainingExecutionStartTime")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeModel where
+  hashWithSalt _salt DescribeModel' {..} =
+    _salt `Prelude.hashWithSalt` modelName
+
+instance Prelude.NFData DescribeModel where
+  rnf DescribeModel' {..} = Prelude.rnf modelName
+
+instance Data.ToHeaders DescribeModel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.DescribeModel" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeModel where
+  toJSON DescribeModel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ModelName" Data..= modelName)]
+      )
+
+instance Data.ToPath DescribeModel where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeModel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeModelResponse' smart constructor.
+data DescribeModelResponse = DescribeModelResponse'
+  { -- | Indicates the time and date at which the ML model was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The configuration is the @TargetSamplingRate@, which is the sampling
+    -- rate of the data after post processing by Amazon Lookout for Equipment.
+    -- For example, if you provide data that has been collected at a 1 second
+    -- level and you want the system to resample the data at a 1 minute rate
+    -- before training, the @TargetSamplingRate@ is 1 minute.
+    --
+    -- When providing a value for the @TargetSamplingRate@, you must attach the
+    -- prefix \"PT\" to the rate you want. The value for a 1 second rate is
+    -- therefore /PT1S/, the value for a 15 minute rate is /PT15M/, and the
+    -- value for a 1 hour rate is /PT1H/
+    dataPreProcessingConfiguration :: Prelude.Maybe DataPreProcessingConfiguration,
+    -- | The Amazon Resouce Name (ARN) of the dataset used to create the ML model
+    -- being described.
+    datasetArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the dataset being used by the ML being described.
+    datasetName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the time reference in the dataset that was used to end the
+    -- subset of evaluation data for the ML model.
+    evaluationDataEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the time reference in the dataset that was used to begin the
+    -- subset of evaluation data for the ML model.
+    evaluationDataStartTime :: Prelude.Maybe Data.POSIX,
+    -- | If the training of the ML model failed, this indicates the reason for
+    -- that failure.
+    failedReason :: Prelude.Maybe Prelude.Text,
+    -- | Specifies configuration information about the labels input, including
+    -- its S3 location.
+    labelsInputConfiguration :: Prelude.Maybe LabelsInputConfiguration,
+    -- | Indicates the last time the ML model was updated. The type of update is
+    -- not specified.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the ML model being described.
+    modelArn :: Prelude.Maybe Prelude.Text,
+    -- | The Model Metrics show an aggregated summary of the model\'s performance
+    -- within the evaluation time range. This is the JSON content of the
+    -- metrics created when evaluating the model.
+    modelMetrics :: Prelude.Maybe Prelude.Text,
+    -- | The name of the ML model being described.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates that the asset associated with this sensor has been shut off.
+    -- As long as this condition is met, Lookout for Equipment will not use
+    -- data from this asset for training, evaluation, or inference.
+    offCondition :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of a role with permission to access the
+    -- data source for the ML model being described.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | A JSON description of the data that is in each time series dataset,
+    -- including names, column names, and data types.
+    schema :: Prelude.Maybe Prelude.Text,
+    -- | Provides the identifier of the KMS key used to encrypt model data by
+    -- Amazon Lookout for Equipment.
+    serverSideKmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the current status of the model being described. Status
+    -- describes the status of the most recent action of the model.
+    status :: Prelude.Maybe ModelStatus,
+    -- | Indicates the time reference in the dataset that was used to end the
+    -- subset of training data for the ML model.
+    trainingDataEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the time reference in the dataset that was used to begin the
+    -- subset of training data for the ML model.
+    trainingDataStartTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the time at which the training of the ML model was completed.
+    trainingExecutionEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the time at which the training of the ML model began.
+    trainingExecutionStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeModelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'describeModelResponse_createdAt' - Indicates the time and date at which the ML model was created.
+--
+-- 'dataPreProcessingConfiguration', 'describeModelResponse_dataPreProcessingConfiguration' - The configuration is the @TargetSamplingRate@, which is the sampling
+-- rate of the data after post processing by Amazon Lookout for Equipment.
+-- For example, if you provide data that has been collected at a 1 second
+-- level and you want the system to resample the data at a 1 minute rate
+-- before training, the @TargetSamplingRate@ is 1 minute.
+--
+-- When providing a value for the @TargetSamplingRate@, you must attach the
+-- prefix \"PT\" to the rate you want. The value for a 1 second rate is
+-- therefore /PT1S/, the value for a 15 minute rate is /PT15M/, and the
+-- value for a 1 hour rate is /PT1H/
+--
+-- 'datasetArn', 'describeModelResponse_datasetArn' - The Amazon Resouce Name (ARN) of the dataset used to create the ML model
+-- being described.
+--
+-- 'datasetName', 'describeModelResponse_datasetName' - The name of the dataset being used by the ML being described.
+--
+-- 'evaluationDataEndTime', 'describeModelResponse_evaluationDataEndTime' - Indicates the time reference in the dataset that was used to end the
+-- subset of evaluation data for the ML model.
+--
+-- 'evaluationDataStartTime', 'describeModelResponse_evaluationDataStartTime' - Indicates the time reference in the dataset that was used to begin the
+-- subset of evaluation data for the ML model.
+--
+-- 'failedReason', 'describeModelResponse_failedReason' - If the training of the ML model failed, this indicates the reason for
+-- that failure.
+--
+-- 'labelsInputConfiguration', 'describeModelResponse_labelsInputConfiguration' - Specifies configuration information about the labels input, including
+-- its S3 location.
+--
+-- 'lastUpdatedTime', 'describeModelResponse_lastUpdatedTime' - Indicates the last time the ML model was updated. The type of update is
+-- not specified.
+--
+-- 'modelArn', 'describeModelResponse_modelArn' - The Amazon Resource Name (ARN) of the ML model being described.
+--
+-- 'modelMetrics', 'describeModelResponse_modelMetrics' - The Model Metrics show an aggregated summary of the model\'s performance
+-- within the evaluation time range. This is the JSON content of the
+-- metrics created when evaluating the model.
+--
+-- 'modelName', 'describeModelResponse_modelName' - The name of the ML model being described.
+--
+-- 'offCondition', 'describeModelResponse_offCondition' - Indicates that the asset associated with this sensor has been shut off.
+-- As long as this condition is met, Lookout for Equipment will not use
+-- data from this asset for training, evaluation, or inference.
+--
+-- 'roleArn', 'describeModelResponse_roleArn' - The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source for the ML model being described.
+--
+-- 'schema', 'describeModelResponse_schema' - A JSON description of the data that is in each time series dataset,
+-- including names, column names, and data types.
+--
+-- 'serverSideKmsKeyId', 'describeModelResponse_serverSideKmsKeyId' - Provides the identifier of the KMS key used to encrypt model data by
+-- Amazon Lookout for Equipment.
+--
+-- 'status', 'describeModelResponse_status' - Specifies the current status of the model being described. Status
+-- describes the status of the most recent action of the model.
+--
+-- 'trainingDataEndTime', 'describeModelResponse_trainingDataEndTime' - Indicates the time reference in the dataset that was used to end the
+-- subset of training data for the ML model.
+--
+-- 'trainingDataStartTime', 'describeModelResponse_trainingDataStartTime' - Indicates the time reference in the dataset that was used to begin the
+-- subset of training data for the ML model.
+--
+-- 'trainingExecutionEndTime', 'describeModelResponse_trainingExecutionEndTime' - Indicates the time at which the training of the ML model was completed.
+--
+-- 'trainingExecutionStartTime', 'describeModelResponse_trainingExecutionStartTime' - Indicates the time at which the training of the ML model began.
+--
+-- 'httpStatus', 'describeModelResponse_httpStatus' - The response's http status code.
+newDescribeModelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeModelResponse
+newDescribeModelResponse pHttpStatus_ =
+  DescribeModelResponse'
+    { createdAt = Prelude.Nothing,
+      dataPreProcessingConfiguration = Prelude.Nothing,
+      datasetArn = Prelude.Nothing,
+      datasetName = Prelude.Nothing,
+      evaluationDataEndTime = Prelude.Nothing,
+      evaluationDataStartTime = Prelude.Nothing,
+      failedReason = Prelude.Nothing,
+      labelsInputConfiguration = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      modelArn = Prelude.Nothing,
+      modelMetrics = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      offCondition = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      schema = Prelude.Nothing,
+      serverSideKmsKeyId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      trainingDataEndTime = Prelude.Nothing,
+      trainingDataStartTime = Prelude.Nothing,
+      trainingExecutionEndTime = Prelude.Nothing,
+      trainingExecutionStartTime = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Indicates the time and date at which the ML model was created.
+describeModelResponse_createdAt :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.UTCTime)
+describeModelResponse_createdAt = Lens.lens (\DescribeModelResponse' {createdAt} -> createdAt) (\s@DescribeModelResponse' {} a -> s {createdAt = a} :: DescribeModelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The configuration is the @TargetSamplingRate@, which is the sampling
+-- rate of the data after post processing by Amazon Lookout for Equipment.
+-- For example, if you provide data that has been collected at a 1 second
+-- level and you want the system to resample the data at a 1 minute rate
+-- before training, the @TargetSamplingRate@ is 1 minute.
+--
+-- When providing a value for the @TargetSamplingRate@, you must attach the
+-- prefix \"PT\" to the rate you want. The value for a 1 second rate is
+-- therefore /PT1S/, the value for a 15 minute rate is /PT15M/, and the
+-- value for a 1 hour rate is /PT1H/
+describeModelResponse_dataPreProcessingConfiguration :: Lens.Lens' DescribeModelResponse (Prelude.Maybe DataPreProcessingConfiguration)
+describeModelResponse_dataPreProcessingConfiguration = Lens.lens (\DescribeModelResponse' {dataPreProcessingConfiguration} -> dataPreProcessingConfiguration) (\s@DescribeModelResponse' {} a -> s {dataPreProcessingConfiguration = a} :: DescribeModelResponse)
+
+-- | The Amazon Resouce Name (ARN) of the dataset used to create the ML model
+-- being described.
+describeModelResponse_datasetArn :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Text)
+describeModelResponse_datasetArn = Lens.lens (\DescribeModelResponse' {datasetArn} -> datasetArn) (\s@DescribeModelResponse' {} a -> s {datasetArn = a} :: DescribeModelResponse)
+
+-- | The name of the dataset being used by the ML being described.
+describeModelResponse_datasetName :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Text)
+describeModelResponse_datasetName = Lens.lens (\DescribeModelResponse' {datasetName} -> datasetName) (\s@DescribeModelResponse' {} a -> s {datasetName = a} :: DescribeModelResponse)
+
+-- | Indicates the time reference in the dataset that was used to end the
+-- subset of evaluation data for the ML model.
+describeModelResponse_evaluationDataEndTime :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.UTCTime)
+describeModelResponse_evaluationDataEndTime = Lens.lens (\DescribeModelResponse' {evaluationDataEndTime} -> evaluationDataEndTime) (\s@DescribeModelResponse' {} a -> s {evaluationDataEndTime = a} :: DescribeModelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the time reference in the dataset that was used to begin the
+-- subset of evaluation data for the ML model.
+describeModelResponse_evaluationDataStartTime :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.UTCTime)
+describeModelResponse_evaluationDataStartTime = Lens.lens (\DescribeModelResponse' {evaluationDataStartTime} -> evaluationDataStartTime) (\s@DescribeModelResponse' {} a -> s {evaluationDataStartTime = a} :: DescribeModelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | If the training of the ML model failed, this indicates the reason for
+-- that failure.
+describeModelResponse_failedReason :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Text)
+describeModelResponse_failedReason = Lens.lens (\DescribeModelResponse' {failedReason} -> failedReason) (\s@DescribeModelResponse' {} a -> s {failedReason = a} :: DescribeModelResponse)
+
+-- | Specifies configuration information about the labels input, including
+-- its S3 location.
+describeModelResponse_labelsInputConfiguration :: Lens.Lens' DescribeModelResponse (Prelude.Maybe LabelsInputConfiguration)
+describeModelResponse_labelsInputConfiguration = Lens.lens (\DescribeModelResponse' {labelsInputConfiguration} -> labelsInputConfiguration) (\s@DescribeModelResponse' {} a -> s {labelsInputConfiguration = a} :: DescribeModelResponse)
+
+-- | Indicates the last time the ML model was updated. The type of update is
+-- not specified.
+describeModelResponse_lastUpdatedTime :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.UTCTime)
+describeModelResponse_lastUpdatedTime = Lens.lens (\DescribeModelResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@DescribeModelResponse' {} a -> s {lastUpdatedTime = a} :: DescribeModelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the ML model being described.
+describeModelResponse_modelArn :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Text)
+describeModelResponse_modelArn = Lens.lens (\DescribeModelResponse' {modelArn} -> modelArn) (\s@DescribeModelResponse' {} a -> s {modelArn = a} :: DescribeModelResponse)
+
+-- | The Model Metrics show an aggregated summary of the model\'s performance
+-- within the evaluation time range. This is the JSON content of the
+-- metrics created when evaluating the model.
+describeModelResponse_modelMetrics :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Text)
+describeModelResponse_modelMetrics = Lens.lens (\DescribeModelResponse' {modelMetrics} -> modelMetrics) (\s@DescribeModelResponse' {} a -> s {modelMetrics = a} :: DescribeModelResponse)
+
+-- | The name of the ML model being described.
+describeModelResponse_modelName :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Text)
+describeModelResponse_modelName = Lens.lens (\DescribeModelResponse' {modelName} -> modelName) (\s@DescribeModelResponse' {} a -> s {modelName = a} :: DescribeModelResponse)
+
+-- | Indicates that the asset associated with this sensor has been shut off.
+-- As long as this condition is met, Lookout for Equipment will not use
+-- data from this asset for training, evaluation, or inference.
+describeModelResponse_offCondition :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Text)
+describeModelResponse_offCondition = Lens.lens (\DescribeModelResponse' {offCondition} -> offCondition) (\s@DescribeModelResponse' {} a -> s {offCondition = a} :: DescribeModelResponse)
+
+-- | The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source for the ML model being described.
+describeModelResponse_roleArn :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Text)
+describeModelResponse_roleArn = Lens.lens (\DescribeModelResponse' {roleArn} -> roleArn) (\s@DescribeModelResponse' {} a -> s {roleArn = a} :: DescribeModelResponse)
+
+-- | A JSON description of the data that is in each time series dataset,
+-- including names, column names, and data types.
+describeModelResponse_schema :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Text)
+describeModelResponse_schema = Lens.lens (\DescribeModelResponse' {schema} -> schema) (\s@DescribeModelResponse' {} a -> s {schema = a} :: DescribeModelResponse)
+
+-- | Provides the identifier of the KMS key used to encrypt model data by
+-- Amazon Lookout for Equipment.
+describeModelResponse_serverSideKmsKeyId :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.Text)
+describeModelResponse_serverSideKmsKeyId = Lens.lens (\DescribeModelResponse' {serverSideKmsKeyId} -> serverSideKmsKeyId) (\s@DescribeModelResponse' {} a -> s {serverSideKmsKeyId = a} :: DescribeModelResponse)
+
+-- | Specifies the current status of the model being described. Status
+-- describes the status of the most recent action of the model.
+describeModelResponse_status :: Lens.Lens' DescribeModelResponse (Prelude.Maybe ModelStatus)
+describeModelResponse_status = Lens.lens (\DescribeModelResponse' {status} -> status) (\s@DescribeModelResponse' {} a -> s {status = a} :: DescribeModelResponse)
+
+-- | Indicates the time reference in the dataset that was used to end the
+-- subset of training data for the ML model.
+describeModelResponse_trainingDataEndTime :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.UTCTime)
+describeModelResponse_trainingDataEndTime = Lens.lens (\DescribeModelResponse' {trainingDataEndTime} -> trainingDataEndTime) (\s@DescribeModelResponse' {} a -> s {trainingDataEndTime = a} :: DescribeModelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the time reference in the dataset that was used to begin the
+-- subset of training data for the ML model.
+describeModelResponse_trainingDataStartTime :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.UTCTime)
+describeModelResponse_trainingDataStartTime = Lens.lens (\DescribeModelResponse' {trainingDataStartTime} -> trainingDataStartTime) (\s@DescribeModelResponse' {} a -> s {trainingDataStartTime = a} :: DescribeModelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the time at which the training of the ML model was completed.
+describeModelResponse_trainingExecutionEndTime :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.UTCTime)
+describeModelResponse_trainingExecutionEndTime = Lens.lens (\DescribeModelResponse' {trainingExecutionEndTime} -> trainingExecutionEndTime) (\s@DescribeModelResponse' {} a -> s {trainingExecutionEndTime = a} :: DescribeModelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the time at which the training of the ML model began.
+describeModelResponse_trainingExecutionStartTime :: Lens.Lens' DescribeModelResponse (Prelude.Maybe Prelude.UTCTime)
+describeModelResponse_trainingExecutionStartTime = Lens.lens (\DescribeModelResponse' {trainingExecutionStartTime} -> trainingExecutionStartTime) (\s@DescribeModelResponse' {} a -> s {trainingExecutionStartTime = a} :: DescribeModelResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+describeModelResponse_httpStatus :: Lens.Lens' DescribeModelResponse Prelude.Int
+describeModelResponse_httpStatus = Lens.lens (\DescribeModelResponse' {httpStatus} -> httpStatus) (\s@DescribeModelResponse' {} a -> s {httpStatus = a} :: DescribeModelResponse)
+
+instance Prelude.NFData DescribeModelResponse where
+  rnf DescribeModelResponse' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf dataPreProcessingConfiguration
+      `Prelude.seq` Prelude.rnf datasetArn
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf evaluationDataEndTime
+      `Prelude.seq` Prelude.rnf evaluationDataStartTime
+      `Prelude.seq` Prelude.rnf failedReason
+      `Prelude.seq` Prelude.rnf labelsInputConfiguration
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf modelArn
+      `Prelude.seq` Prelude.rnf modelMetrics
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf offCondition
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf schema
+      `Prelude.seq` Prelude.rnf serverSideKmsKeyId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf trainingDataEndTime
+      `Prelude.seq` Prelude.rnf
+        trainingDataStartTime
+      `Prelude.seq` Prelude.rnf
+        trainingExecutionEndTime
+      `Prelude.seq` Prelude.rnf
+        trainingExecutionStartTime
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/Lens.hs b/gen/Amazonka/LookoutEquipment/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Lens.hs
@@ -0,0 +1,606 @@
+{-# 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.LookoutEquipment.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.LookoutEquipment.Lens
+  ( -- * Operations
+
+    -- ** CreateDataset
+    createDataset_datasetSchema,
+    createDataset_serverSideKmsKeyId,
+    createDataset_tags,
+    createDataset_datasetName,
+    createDataset_clientToken,
+    createDatasetResponse_datasetArn,
+    createDatasetResponse_datasetName,
+    createDatasetResponse_status,
+    createDatasetResponse_httpStatus,
+
+    -- ** CreateInferenceScheduler
+    createInferenceScheduler_dataDelayOffsetInMinutes,
+    createInferenceScheduler_serverSideKmsKeyId,
+    createInferenceScheduler_tags,
+    createInferenceScheduler_modelName,
+    createInferenceScheduler_inferenceSchedulerName,
+    createInferenceScheduler_dataUploadFrequency,
+    createInferenceScheduler_dataInputConfiguration,
+    createInferenceScheduler_dataOutputConfiguration,
+    createInferenceScheduler_roleArn,
+    createInferenceScheduler_clientToken,
+    createInferenceSchedulerResponse_inferenceSchedulerArn,
+    createInferenceSchedulerResponse_inferenceSchedulerName,
+    createInferenceSchedulerResponse_status,
+    createInferenceSchedulerResponse_httpStatus,
+
+    -- ** CreateLabel
+    createLabel_equipment,
+    createLabel_faultCode,
+    createLabel_notes,
+    createLabel_labelGroupName,
+    createLabel_startTime,
+    createLabel_endTime,
+    createLabel_rating,
+    createLabel_clientToken,
+    createLabelResponse_labelId,
+    createLabelResponse_httpStatus,
+
+    -- ** CreateLabelGroup
+    createLabelGroup_faultCodes,
+    createLabelGroup_tags,
+    createLabelGroup_labelGroupName,
+    createLabelGroup_clientToken,
+    createLabelGroupResponse_labelGroupArn,
+    createLabelGroupResponse_labelGroupName,
+    createLabelGroupResponse_httpStatus,
+
+    -- ** CreateModel
+    createModel_dataPreProcessingConfiguration,
+    createModel_datasetSchema,
+    createModel_evaluationDataEndTime,
+    createModel_evaluationDataStartTime,
+    createModel_labelsInputConfiguration,
+    createModel_offCondition,
+    createModel_roleArn,
+    createModel_serverSideKmsKeyId,
+    createModel_tags,
+    createModel_trainingDataEndTime,
+    createModel_trainingDataStartTime,
+    createModel_modelName,
+    createModel_datasetName,
+    createModel_clientToken,
+    createModelResponse_modelArn,
+    createModelResponse_status,
+    createModelResponse_httpStatus,
+
+    -- ** DeleteDataset
+    deleteDataset_datasetName,
+
+    -- ** DeleteInferenceScheduler
+    deleteInferenceScheduler_inferenceSchedulerName,
+
+    -- ** DeleteLabel
+    deleteLabel_labelGroupName,
+    deleteLabel_labelId,
+
+    -- ** DeleteLabelGroup
+    deleteLabelGroup_labelGroupName,
+
+    -- ** DeleteModel
+    deleteModel_modelName,
+
+    -- ** DescribeDataIngestionJob
+    describeDataIngestionJob_jobId,
+    describeDataIngestionJobResponse_createdAt,
+    describeDataIngestionJobResponse_dataEndTime,
+    describeDataIngestionJobResponse_dataQualitySummary,
+    describeDataIngestionJobResponse_dataStartTime,
+    describeDataIngestionJobResponse_datasetArn,
+    describeDataIngestionJobResponse_failedReason,
+    describeDataIngestionJobResponse_ingestedDataSize,
+    describeDataIngestionJobResponse_ingestedFilesSummary,
+    describeDataIngestionJobResponse_ingestionInputConfiguration,
+    describeDataIngestionJobResponse_jobId,
+    describeDataIngestionJobResponse_roleArn,
+    describeDataIngestionJobResponse_status,
+    describeDataIngestionJobResponse_statusDetail,
+    describeDataIngestionJobResponse_httpStatus,
+
+    -- ** DescribeDataset
+    describeDataset_datasetName,
+    describeDatasetResponse_createdAt,
+    describeDatasetResponse_dataEndTime,
+    describeDatasetResponse_dataQualitySummary,
+    describeDatasetResponse_dataStartTime,
+    describeDatasetResponse_datasetArn,
+    describeDatasetResponse_datasetName,
+    describeDatasetResponse_ingestedFilesSummary,
+    describeDatasetResponse_ingestionInputConfiguration,
+    describeDatasetResponse_lastUpdatedAt,
+    describeDatasetResponse_roleArn,
+    describeDatasetResponse_schema,
+    describeDatasetResponse_serverSideKmsKeyId,
+    describeDatasetResponse_status,
+    describeDatasetResponse_httpStatus,
+
+    -- ** DescribeInferenceScheduler
+    describeInferenceScheduler_inferenceSchedulerName,
+    describeInferenceSchedulerResponse_createdAt,
+    describeInferenceSchedulerResponse_dataDelayOffsetInMinutes,
+    describeInferenceSchedulerResponse_dataInputConfiguration,
+    describeInferenceSchedulerResponse_dataOutputConfiguration,
+    describeInferenceSchedulerResponse_dataUploadFrequency,
+    describeInferenceSchedulerResponse_inferenceSchedulerArn,
+    describeInferenceSchedulerResponse_inferenceSchedulerName,
+    describeInferenceSchedulerResponse_latestInferenceResult,
+    describeInferenceSchedulerResponse_modelArn,
+    describeInferenceSchedulerResponse_modelName,
+    describeInferenceSchedulerResponse_roleArn,
+    describeInferenceSchedulerResponse_serverSideKmsKeyId,
+    describeInferenceSchedulerResponse_status,
+    describeInferenceSchedulerResponse_updatedAt,
+    describeInferenceSchedulerResponse_httpStatus,
+
+    -- ** DescribeLabel
+    describeLabel_labelGroupName,
+    describeLabel_labelId,
+    describeLabelResponse_createdAt,
+    describeLabelResponse_endTime,
+    describeLabelResponse_equipment,
+    describeLabelResponse_faultCode,
+    describeLabelResponse_labelGroupArn,
+    describeLabelResponse_labelGroupName,
+    describeLabelResponse_labelId,
+    describeLabelResponse_notes,
+    describeLabelResponse_rating,
+    describeLabelResponse_startTime,
+    describeLabelResponse_httpStatus,
+
+    -- ** DescribeLabelGroup
+    describeLabelGroup_labelGroupName,
+    describeLabelGroupResponse_createdAt,
+    describeLabelGroupResponse_faultCodes,
+    describeLabelGroupResponse_labelGroupArn,
+    describeLabelGroupResponse_labelGroupName,
+    describeLabelGroupResponse_updatedAt,
+    describeLabelGroupResponse_httpStatus,
+
+    -- ** DescribeModel
+    describeModel_modelName,
+    describeModelResponse_createdAt,
+    describeModelResponse_dataPreProcessingConfiguration,
+    describeModelResponse_datasetArn,
+    describeModelResponse_datasetName,
+    describeModelResponse_evaluationDataEndTime,
+    describeModelResponse_evaluationDataStartTime,
+    describeModelResponse_failedReason,
+    describeModelResponse_labelsInputConfiguration,
+    describeModelResponse_lastUpdatedTime,
+    describeModelResponse_modelArn,
+    describeModelResponse_modelMetrics,
+    describeModelResponse_modelName,
+    describeModelResponse_offCondition,
+    describeModelResponse_roleArn,
+    describeModelResponse_schema,
+    describeModelResponse_serverSideKmsKeyId,
+    describeModelResponse_status,
+    describeModelResponse_trainingDataEndTime,
+    describeModelResponse_trainingDataStartTime,
+    describeModelResponse_trainingExecutionEndTime,
+    describeModelResponse_trainingExecutionStartTime,
+    describeModelResponse_httpStatus,
+
+    -- ** ListDataIngestionJobs
+    listDataIngestionJobs_datasetName,
+    listDataIngestionJobs_maxResults,
+    listDataIngestionJobs_nextToken,
+    listDataIngestionJobs_status,
+    listDataIngestionJobsResponse_dataIngestionJobSummaries,
+    listDataIngestionJobsResponse_nextToken,
+    listDataIngestionJobsResponse_httpStatus,
+
+    -- ** ListDatasets
+    listDatasets_datasetNameBeginsWith,
+    listDatasets_maxResults,
+    listDatasets_nextToken,
+    listDatasetsResponse_datasetSummaries,
+    listDatasetsResponse_nextToken,
+    listDatasetsResponse_httpStatus,
+
+    -- ** ListInferenceEvents
+    listInferenceEvents_maxResults,
+    listInferenceEvents_nextToken,
+    listInferenceEvents_inferenceSchedulerName,
+    listInferenceEvents_intervalStartTime,
+    listInferenceEvents_intervalEndTime,
+    listInferenceEventsResponse_inferenceEventSummaries,
+    listInferenceEventsResponse_nextToken,
+    listInferenceEventsResponse_httpStatus,
+
+    -- ** ListInferenceExecutions
+    listInferenceExecutions_dataEndTimeBefore,
+    listInferenceExecutions_dataStartTimeAfter,
+    listInferenceExecutions_maxResults,
+    listInferenceExecutions_nextToken,
+    listInferenceExecutions_status,
+    listInferenceExecutions_inferenceSchedulerName,
+    listInferenceExecutionsResponse_inferenceExecutionSummaries,
+    listInferenceExecutionsResponse_nextToken,
+    listInferenceExecutionsResponse_httpStatus,
+
+    -- ** ListInferenceSchedulers
+    listInferenceSchedulers_inferenceSchedulerNameBeginsWith,
+    listInferenceSchedulers_maxResults,
+    listInferenceSchedulers_modelName,
+    listInferenceSchedulers_nextToken,
+    listInferenceSchedulers_status,
+    listInferenceSchedulersResponse_inferenceSchedulerSummaries,
+    listInferenceSchedulersResponse_nextToken,
+    listInferenceSchedulersResponse_httpStatus,
+
+    -- ** ListLabelGroups
+    listLabelGroups_labelGroupNameBeginsWith,
+    listLabelGroups_maxResults,
+    listLabelGroups_nextToken,
+    listLabelGroupsResponse_labelGroupSummaries,
+    listLabelGroupsResponse_nextToken,
+    listLabelGroupsResponse_httpStatus,
+
+    -- ** ListLabels
+    listLabels_equipment,
+    listLabels_faultCode,
+    listLabels_intervalEndTime,
+    listLabels_intervalStartTime,
+    listLabels_maxResults,
+    listLabels_nextToken,
+    listLabels_labelGroupName,
+    listLabelsResponse_labelSummaries,
+    listLabelsResponse_nextToken,
+    listLabelsResponse_httpStatus,
+
+    -- ** ListModels
+    listModels_datasetNameBeginsWith,
+    listModels_maxResults,
+    listModels_modelNameBeginsWith,
+    listModels_nextToken,
+    listModels_status,
+    listModelsResponse_modelSummaries,
+    listModelsResponse_nextToken,
+    listModelsResponse_httpStatus,
+
+    -- ** ListSensorStatistics
+    listSensorStatistics_ingestionJobId,
+    listSensorStatistics_maxResults,
+    listSensorStatistics_nextToken,
+    listSensorStatistics_datasetName,
+    listSensorStatisticsResponse_nextToken,
+    listSensorStatisticsResponse_sensorStatisticsSummaries,
+    listSensorStatisticsResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** StartDataIngestionJob
+    startDataIngestionJob_datasetName,
+    startDataIngestionJob_ingestionInputConfiguration,
+    startDataIngestionJob_roleArn,
+    startDataIngestionJob_clientToken,
+    startDataIngestionJobResponse_jobId,
+    startDataIngestionJobResponse_status,
+    startDataIngestionJobResponse_httpStatus,
+
+    -- ** StartInferenceScheduler
+    startInferenceScheduler_inferenceSchedulerName,
+    startInferenceSchedulerResponse_inferenceSchedulerArn,
+    startInferenceSchedulerResponse_inferenceSchedulerName,
+    startInferenceSchedulerResponse_modelArn,
+    startInferenceSchedulerResponse_modelName,
+    startInferenceSchedulerResponse_status,
+    startInferenceSchedulerResponse_httpStatus,
+
+    -- ** StopInferenceScheduler
+    stopInferenceScheduler_inferenceSchedulerName,
+    stopInferenceSchedulerResponse_inferenceSchedulerArn,
+    stopInferenceSchedulerResponse_inferenceSchedulerName,
+    stopInferenceSchedulerResponse_modelArn,
+    stopInferenceSchedulerResponse_modelName,
+    stopInferenceSchedulerResponse_status,
+    stopInferenceSchedulerResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateInferenceScheduler
+    updateInferenceScheduler_dataDelayOffsetInMinutes,
+    updateInferenceScheduler_dataInputConfiguration,
+    updateInferenceScheduler_dataOutputConfiguration,
+    updateInferenceScheduler_dataUploadFrequency,
+    updateInferenceScheduler_roleArn,
+    updateInferenceScheduler_inferenceSchedulerName,
+
+    -- ** UpdateLabelGroup
+    updateLabelGroup_faultCodes,
+    updateLabelGroup_labelGroupName,
+
+    -- * Types
+
+    -- ** CategoricalValues
+    categoricalValues_numberOfCategory,
+    categoricalValues_status,
+
+    -- ** CountPercent
+    countPercent_count,
+    countPercent_percentage,
+
+    -- ** DataIngestionJobSummary
+    dataIngestionJobSummary_datasetArn,
+    dataIngestionJobSummary_datasetName,
+    dataIngestionJobSummary_ingestionInputConfiguration,
+    dataIngestionJobSummary_jobId,
+    dataIngestionJobSummary_status,
+
+    -- ** DataPreProcessingConfiguration
+    dataPreProcessingConfiguration_targetSamplingRate,
+
+    -- ** DataQualitySummary
+    dataQualitySummary_insufficientSensorData,
+    dataQualitySummary_missingSensorData,
+    dataQualitySummary_invalidSensorData,
+    dataQualitySummary_unsupportedTimestamps,
+    dataQualitySummary_duplicateTimestamps,
+
+    -- ** DatasetSchema
+    datasetSchema_inlineDataSchema,
+
+    -- ** DatasetSummary
+    datasetSummary_createdAt,
+    datasetSummary_datasetArn,
+    datasetSummary_datasetName,
+    datasetSummary_status,
+
+    -- ** DuplicateTimestamps
+    duplicateTimestamps_totalNumberOfDuplicateTimestamps,
+
+    -- ** InferenceEventSummary
+    inferenceEventSummary_diagnostics,
+    inferenceEventSummary_eventDurationInSeconds,
+    inferenceEventSummary_eventEndTime,
+    inferenceEventSummary_eventStartTime,
+    inferenceEventSummary_inferenceSchedulerArn,
+    inferenceEventSummary_inferenceSchedulerName,
+
+    -- ** InferenceExecutionSummary
+    inferenceExecutionSummary_customerResultObject,
+    inferenceExecutionSummary_dataEndTime,
+    inferenceExecutionSummary_dataInputConfiguration,
+    inferenceExecutionSummary_dataOutputConfiguration,
+    inferenceExecutionSummary_dataStartTime,
+    inferenceExecutionSummary_failedReason,
+    inferenceExecutionSummary_inferenceSchedulerArn,
+    inferenceExecutionSummary_inferenceSchedulerName,
+    inferenceExecutionSummary_modelArn,
+    inferenceExecutionSummary_modelName,
+    inferenceExecutionSummary_scheduledStartTime,
+    inferenceExecutionSummary_status,
+
+    -- ** InferenceInputConfiguration
+    inferenceInputConfiguration_inferenceInputNameConfiguration,
+    inferenceInputConfiguration_inputTimeZoneOffset,
+    inferenceInputConfiguration_s3InputConfiguration,
+
+    -- ** InferenceInputNameConfiguration
+    inferenceInputNameConfiguration_componentTimestampDelimiter,
+    inferenceInputNameConfiguration_timestampFormat,
+
+    -- ** InferenceOutputConfiguration
+    inferenceOutputConfiguration_kmsKeyId,
+    inferenceOutputConfiguration_s3OutputConfiguration,
+
+    -- ** InferenceS3InputConfiguration
+    inferenceS3InputConfiguration_prefix,
+    inferenceS3InputConfiguration_bucket,
+
+    -- ** InferenceS3OutputConfiguration
+    inferenceS3OutputConfiguration_prefix,
+    inferenceS3OutputConfiguration_bucket,
+
+    -- ** InferenceSchedulerSummary
+    inferenceSchedulerSummary_dataDelayOffsetInMinutes,
+    inferenceSchedulerSummary_dataUploadFrequency,
+    inferenceSchedulerSummary_inferenceSchedulerArn,
+    inferenceSchedulerSummary_inferenceSchedulerName,
+    inferenceSchedulerSummary_latestInferenceResult,
+    inferenceSchedulerSummary_modelArn,
+    inferenceSchedulerSummary_modelName,
+    inferenceSchedulerSummary_status,
+
+    -- ** IngestedFilesSummary
+    ingestedFilesSummary_discardedFiles,
+    ingestedFilesSummary_totalNumberOfFiles,
+    ingestedFilesSummary_ingestedNumberOfFiles,
+
+    -- ** IngestionInputConfiguration
+    ingestionInputConfiguration_s3InputConfiguration,
+
+    -- ** IngestionS3InputConfiguration
+    ingestionS3InputConfiguration_keyPattern,
+    ingestionS3InputConfiguration_prefix,
+    ingestionS3InputConfiguration_bucket,
+
+    -- ** InsufficientSensorData
+    insufficientSensorData_missingCompleteSensorData,
+    insufficientSensorData_sensorsWithShortDateRange,
+
+    -- ** InvalidSensorData
+    invalidSensorData_affectedSensorCount,
+    invalidSensorData_totalNumberOfInvalidValues,
+
+    -- ** LabelGroupSummary
+    labelGroupSummary_createdAt,
+    labelGroupSummary_labelGroupArn,
+    labelGroupSummary_labelGroupName,
+    labelGroupSummary_updatedAt,
+
+    -- ** LabelSummary
+    labelSummary_createdAt,
+    labelSummary_endTime,
+    labelSummary_equipment,
+    labelSummary_faultCode,
+    labelSummary_labelGroupArn,
+    labelSummary_labelGroupName,
+    labelSummary_labelId,
+    labelSummary_rating,
+    labelSummary_startTime,
+
+    -- ** LabelsInputConfiguration
+    labelsInputConfiguration_labelGroupName,
+    labelsInputConfiguration_s3InputConfiguration,
+
+    -- ** LabelsS3InputConfiguration
+    labelsS3InputConfiguration_prefix,
+    labelsS3InputConfiguration_bucket,
+
+    -- ** LargeTimestampGaps
+    largeTimestampGaps_maxTimestampGapInDays,
+    largeTimestampGaps_numberOfLargeTimestampGaps,
+    largeTimestampGaps_status,
+
+    -- ** MissingCompleteSensorData
+    missingCompleteSensorData_affectedSensorCount,
+
+    -- ** MissingSensorData
+    missingSensorData_affectedSensorCount,
+    missingSensorData_totalNumberOfMissingValues,
+
+    -- ** ModelSummary
+    modelSummary_createdAt,
+    modelSummary_datasetArn,
+    modelSummary_datasetName,
+    modelSummary_modelArn,
+    modelSummary_modelName,
+    modelSummary_status,
+
+    -- ** MonotonicValues
+    monotonicValues_monotonicity,
+    monotonicValues_status,
+
+    -- ** MultipleOperatingModes
+    multipleOperatingModes_status,
+
+    -- ** S3Object
+    s3Object_bucket,
+    s3Object_key,
+
+    -- ** SensorStatisticsSummary
+    sensorStatisticsSummary_categoricalValues,
+    sensorStatisticsSummary_componentName,
+    sensorStatisticsSummary_dataEndTime,
+    sensorStatisticsSummary_dataExists,
+    sensorStatisticsSummary_dataStartTime,
+    sensorStatisticsSummary_duplicateTimestamps,
+    sensorStatisticsSummary_invalidDateEntries,
+    sensorStatisticsSummary_invalidValues,
+    sensorStatisticsSummary_largeTimestampGaps,
+    sensorStatisticsSummary_missingValues,
+    sensorStatisticsSummary_monotonicValues,
+    sensorStatisticsSummary_multipleOperatingModes,
+    sensorStatisticsSummary_sensorName,
+
+    -- ** SensorsWithShortDateRange
+    sensorsWithShortDateRange_affectedSensorCount,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+
+    -- ** UnsupportedTimestamps
+    unsupportedTimestamps_totalNumberOfUnsupportedTimestamps,
+  )
+where
+
+import Amazonka.LookoutEquipment.CreateDataset
+import Amazonka.LookoutEquipment.CreateInferenceScheduler
+import Amazonka.LookoutEquipment.CreateLabel
+import Amazonka.LookoutEquipment.CreateLabelGroup
+import Amazonka.LookoutEquipment.CreateModel
+import Amazonka.LookoutEquipment.DeleteDataset
+import Amazonka.LookoutEquipment.DeleteInferenceScheduler
+import Amazonka.LookoutEquipment.DeleteLabel
+import Amazonka.LookoutEquipment.DeleteLabelGroup
+import Amazonka.LookoutEquipment.DeleteModel
+import Amazonka.LookoutEquipment.DescribeDataIngestionJob
+import Amazonka.LookoutEquipment.DescribeDataset
+import Amazonka.LookoutEquipment.DescribeInferenceScheduler
+import Amazonka.LookoutEquipment.DescribeLabel
+import Amazonka.LookoutEquipment.DescribeLabelGroup
+import Amazonka.LookoutEquipment.DescribeModel
+import Amazonka.LookoutEquipment.ListDataIngestionJobs
+import Amazonka.LookoutEquipment.ListDatasets
+import Amazonka.LookoutEquipment.ListInferenceEvents
+import Amazonka.LookoutEquipment.ListInferenceExecutions
+import Amazonka.LookoutEquipment.ListInferenceSchedulers
+import Amazonka.LookoutEquipment.ListLabelGroups
+import Amazonka.LookoutEquipment.ListLabels
+import Amazonka.LookoutEquipment.ListModels
+import Amazonka.LookoutEquipment.ListSensorStatistics
+import Amazonka.LookoutEquipment.ListTagsForResource
+import Amazonka.LookoutEquipment.StartDataIngestionJob
+import Amazonka.LookoutEquipment.StartInferenceScheduler
+import Amazonka.LookoutEquipment.StopInferenceScheduler
+import Amazonka.LookoutEquipment.TagResource
+import Amazonka.LookoutEquipment.Types.CategoricalValues
+import Amazonka.LookoutEquipment.Types.CountPercent
+import Amazonka.LookoutEquipment.Types.DataIngestionJobSummary
+import Amazonka.LookoutEquipment.Types.DataPreProcessingConfiguration
+import Amazonka.LookoutEquipment.Types.DataQualitySummary
+import Amazonka.LookoutEquipment.Types.DatasetSchema
+import Amazonka.LookoutEquipment.Types.DatasetSummary
+import Amazonka.LookoutEquipment.Types.DuplicateTimestamps
+import Amazonka.LookoutEquipment.Types.InferenceEventSummary
+import Amazonka.LookoutEquipment.Types.InferenceExecutionSummary
+import Amazonka.LookoutEquipment.Types.InferenceInputConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceInputNameConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceOutputConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceS3InputConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceS3OutputConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceSchedulerSummary
+import Amazonka.LookoutEquipment.Types.IngestedFilesSummary
+import Amazonka.LookoutEquipment.Types.IngestionInputConfiguration
+import Amazonka.LookoutEquipment.Types.IngestionS3InputConfiguration
+import Amazonka.LookoutEquipment.Types.InsufficientSensorData
+import Amazonka.LookoutEquipment.Types.InvalidSensorData
+import Amazonka.LookoutEquipment.Types.LabelGroupSummary
+import Amazonka.LookoutEquipment.Types.LabelSummary
+import Amazonka.LookoutEquipment.Types.LabelsInputConfiguration
+import Amazonka.LookoutEquipment.Types.LabelsS3InputConfiguration
+import Amazonka.LookoutEquipment.Types.LargeTimestampGaps
+import Amazonka.LookoutEquipment.Types.MissingCompleteSensorData
+import Amazonka.LookoutEquipment.Types.MissingSensorData
+import Amazonka.LookoutEquipment.Types.ModelSummary
+import Amazonka.LookoutEquipment.Types.MonotonicValues
+import Amazonka.LookoutEquipment.Types.MultipleOperatingModes
+import Amazonka.LookoutEquipment.Types.S3Object
+import Amazonka.LookoutEquipment.Types.SensorStatisticsSummary
+import Amazonka.LookoutEquipment.Types.SensorsWithShortDateRange
+import Amazonka.LookoutEquipment.Types.Tag
+import Amazonka.LookoutEquipment.Types.UnsupportedTimestamps
+import Amazonka.LookoutEquipment.UntagResource
+import Amazonka.LookoutEquipment.UpdateInferenceScheduler
+import Amazonka.LookoutEquipment.UpdateLabelGroup
diff --git a/gen/Amazonka/LookoutEquipment/ListDataIngestionJobs.hs b/gen/Amazonka/LookoutEquipment/ListDataIngestionJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/ListDataIngestionJobs.hs
@@ -0,0 +1,236 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.ListDataIngestionJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a list of all data ingestion jobs, including dataset name and
+-- ARN, S3 location of the input data, status, and so on.
+module Amazonka.LookoutEquipment.ListDataIngestionJobs
+  ( -- * Creating a Request
+    ListDataIngestionJobs (..),
+    newListDataIngestionJobs,
+
+    -- * Request Lenses
+    listDataIngestionJobs_datasetName,
+    listDataIngestionJobs_maxResults,
+    listDataIngestionJobs_nextToken,
+    listDataIngestionJobs_status,
+
+    -- * Destructuring the Response
+    ListDataIngestionJobsResponse (..),
+    newListDataIngestionJobsResponse,
+
+    -- * Response Lenses
+    listDataIngestionJobsResponse_dataIngestionJobSummaries,
+    listDataIngestionJobsResponse_nextToken,
+    listDataIngestionJobsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListDataIngestionJobs' smart constructor.
+data ListDataIngestionJobs = ListDataIngestionJobs'
+  { -- | The name of the dataset being used for the data ingestion job.
+    datasetName :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the maximum number of data ingestion jobs to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- data ingestion jobs.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the data ingestion job.
+    status :: Prelude.Maybe IngestionJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDataIngestionJobs' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datasetName', 'listDataIngestionJobs_datasetName' - The name of the dataset being used for the data ingestion job.
+--
+-- 'maxResults', 'listDataIngestionJobs_maxResults' - Specifies the maximum number of data ingestion jobs to list.
+--
+-- 'nextToken', 'listDataIngestionJobs_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- data ingestion jobs.
+--
+-- 'status', 'listDataIngestionJobs_status' - Indicates the status of the data ingestion job.
+newListDataIngestionJobs ::
+  ListDataIngestionJobs
+newListDataIngestionJobs =
+  ListDataIngestionJobs'
+    { datasetName =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The name of the dataset being used for the data ingestion job.
+listDataIngestionJobs_datasetName :: Lens.Lens' ListDataIngestionJobs (Prelude.Maybe Prelude.Text)
+listDataIngestionJobs_datasetName = Lens.lens (\ListDataIngestionJobs' {datasetName} -> datasetName) (\s@ListDataIngestionJobs' {} a -> s {datasetName = a} :: ListDataIngestionJobs)
+
+-- | Specifies the maximum number of data ingestion jobs to list.
+listDataIngestionJobs_maxResults :: Lens.Lens' ListDataIngestionJobs (Prelude.Maybe Prelude.Natural)
+listDataIngestionJobs_maxResults = Lens.lens (\ListDataIngestionJobs' {maxResults} -> maxResults) (\s@ListDataIngestionJobs' {} a -> s {maxResults = a} :: ListDataIngestionJobs)
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- data ingestion jobs.
+listDataIngestionJobs_nextToken :: Lens.Lens' ListDataIngestionJobs (Prelude.Maybe Prelude.Text)
+listDataIngestionJobs_nextToken = Lens.lens (\ListDataIngestionJobs' {nextToken} -> nextToken) (\s@ListDataIngestionJobs' {} a -> s {nextToken = a} :: ListDataIngestionJobs)
+
+-- | Indicates the status of the data ingestion job.
+listDataIngestionJobs_status :: Lens.Lens' ListDataIngestionJobs (Prelude.Maybe IngestionJobStatus)
+listDataIngestionJobs_status = Lens.lens (\ListDataIngestionJobs' {status} -> status) (\s@ListDataIngestionJobs' {} a -> s {status = a} :: ListDataIngestionJobs)
+
+instance Core.AWSRequest ListDataIngestionJobs where
+  type
+    AWSResponse ListDataIngestionJobs =
+      ListDataIngestionJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDataIngestionJobsResponse'
+            Prelude.<$> ( x
+                            Data..?> "DataIngestionJobSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDataIngestionJobs where
+  hashWithSalt _salt ListDataIngestionJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ListDataIngestionJobs where
+  rnf ListDataIngestionJobs' {..} =
+    Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToHeaders ListDataIngestionJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.ListDataIngestionJobs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListDataIngestionJobs where
+  toJSON ListDataIngestionJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DatasetName" Data..=) Prelude.<$> datasetName,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("Status" Data..=) Prelude.<$> status
+          ]
+      )
+
+instance Data.ToPath ListDataIngestionJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListDataIngestionJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListDataIngestionJobsResponse' smart constructor.
+data ListDataIngestionJobsResponse = ListDataIngestionJobsResponse'
+  { -- | Specifies information about the specific data ingestion job, including
+    -- dataset name and status.
+    dataIngestionJobSummaries :: Prelude.Maybe [DataIngestionJobSummary],
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- data ingestion jobs.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDataIngestionJobsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataIngestionJobSummaries', 'listDataIngestionJobsResponse_dataIngestionJobSummaries' - Specifies information about the specific data ingestion job, including
+-- dataset name and status.
+--
+-- 'nextToken', 'listDataIngestionJobsResponse_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- data ingestion jobs.
+--
+-- 'httpStatus', 'listDataIngestionJobsResponse_httpStatus' - The response's http status code.
+newListDataIngestionJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListDataIngestionJobsResponse
+newListDataIngestionJobsResponse pHttpStatus_ =
+  ListDataIngestionJobsResponse'
+    { dataIngestionJobSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Specifies information about the specific data ingestion job, including
+-- dataset name and status.
+listDataIngestionJobsResponse_dataIngestionJobSummaries :: Lens.Lens' ListDataIngestionJobsResponse (Prelude.Maybe [DataIngestionJobSummary])
+listDataIngestionJobsResponse_dataIngestionJobSummaries = Lens.lens (\ListDataIngestionJobsResponse' {dataIngestionJobSummaries} -> dataIngestionJobSummaries) (\s@ListDataIngestionJobsResponse' {} a -> s {dataIngestionJobSummaries = a} :: ListDataIngestionJobsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- data ingestion jobs.
+listDataIngestionJobsResponse_nextToken :: Lens.Lens' ListDataIngestionJobsResponse (Prelude.Maybe Prelude.Text)
+listDataIngestionJobsResponse_nextToken = Lens.lens (\ListDataIngestionJobsResponse' {nextToken} -> nextToken) (\s@ListDataIngestionJobsResponse' {} a -> s {nextToken = a} :: ListDataIngestionJobsResponse)
+
+-- | The response's http status code.
+listDataIngestionJobsResponse_httpStatus :: Lens.Lens' ListDataIngestionJobsResponse Prelude.Int
+listDataIngestionJobsResponse_httpStatus = Lens.lens (\ListDataIngestionJobsResponse' {httpStatus} -> httpStatus) (\s@ListDataIngestionJobsResponse' {} a -> s {httpStatus = a} :: ListDataIngestionJobsResponse)
+
+instance Prelude.NFData ListDataIngestionJobsResponse where
+  rnf ListDataIngestionJobsResponse' {..} =
+    Prelude.rnf dataIngestionJobSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/ListDatasets.hs b/gen/Amazonka/LookoutEquipment/ListDatasets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/ListDatasets.hs
@@ -0,0 +1,222 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.ListDatasets
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all datasets currently available in your account, filtering on the
+-- dataset name.
+module Amazonka.LookoutEquipment.ListDatasets
+  ( -- * Creating a Request
+    ListDatasets (..),
+    newListDatasets,
+
+    -- * Request Lenses
+    listDatasets_datasetNameBeginsWith,
+    listDatasets_maxResults,
+    listDatasets_nextToken,
+
+    -- * Destructuring the Response
+    ListDatasetsResponse (..),
+    newListDatasetsResponse,
+
+    -- * Response Lenses
+    listDatasetsResponse_datasetSummaries,
+    listDatasetsResponse_nextToken,
+    listDatasetsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListDatasets' smart constructor.
+data ListDatasets = ListDatasets'
+  { -- | The beginning of the name of the datasets to be listed.
+    datasetNameBeginsWith :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the maximum number of datasets to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- datasets.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDatasets' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datasetNameBeginsWith', 'listDatasets_datasetNameBeginsWith' - The beginning of the name of the datasets to be listed.
+--
+-- 'maxResults', 'listDatasets_maxResults' - Specifies the maximum number of datasets to list.
+--
+-- 'nextToken', 'listDatasets_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- datasets.
+newListDatasets ::
+  ListDatasets
+newListDatasets =
+  ListDatasets'
+    { datasetNameBeginsWith =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The beginning of the name of the datasets to be listed.
+listDatasets_datasetNameBeginsWith :: Lens.Lens' ListDatasets (Prelude.Maybe Prelude.Text)
+listDatasets_datasetNameBeginsWith = Lens.lens (\ListDatasets' {datasetNameBeginsWith} -> datasetNameBeginsWith) (\s@ListDatasets' {} a -> s {datasetNameBeginsWith = a} :: ListDatasets)
+
+-- | Specifies the maximum number of datasets to list.
+listDatasets_maxResults :: Lens.Lens' ListDatasets (Prelude.Maybe Prelude.Natural)
+listDatasets_maxResults = Lens.lens (\ListDatasets' {maxResults} -> maxResults) (\s@ListDatasets' {} a -> s {maxResults = a} :: ListDatasets)
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- datasets.
+listDatasets_nextToken :: Lens.Lens' ListDatasets (Prelude.Maybe Prelude.Text)
+listDatasets_nextToken = Lens.lens (\ListDatasets' {nextToken} -> nextToken) (\s@ListDatasets' {} a -> s {nextToken = a} :: ListDatasets)
+
+instance Core.AWSRequest ListDatasets where
+  type AWSResponse ListDatasets = ListDatasetsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDatasetsResponse'
+            Prelude.<$> ( x
+                            Data..?> "DatasetSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDatasets where
+  hashWithSalt _salt ListDatasets' {..} =
+    _salt
+      `Prelude.hashWithSalt` datasetNameBeginsWith
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListDatasets where
+  rnf ListDatasets' {..} =
+    Prelude.rnf datasetNameBeginsWith
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListDatasets where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.ListDatasets" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListDatasets where
+  toJSON ListDatasets' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DatasetNameBeginsWith" Data..=)
+              Prelude.<$> datasetNameBeginsWith,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListDatasets where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListDatasets where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListDatasetsResponse' smart constructor.
+data ListDatasetsResponse = ListDatasetsResponse'
+  { -- | Provides information about the specified dataset, including creation
+    -- time, dataset ARN, and status.
+    datasetSummaries :: Prelude.Maybe [DatasetSummary],
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- datasets.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDatasetsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datasetSummaries', 'listDatasetsResponse_datasetSummaries' - Provides information about the specified dataset, including creation
+-- time, dataset ARN, and status.
+--
+-- 'nextToken', 'listDatasetsResponse_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- datasets.
+--
+-- 'httpStatus', 'listDatasetsResponse_httpStatus' - The response's http status code.
+newListDatasetsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListDatasetsResponse
+newListDatasetsResponse pHttpStatus_ =
+  ListDatasetsResponse'
+    { datasetSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Provides information about the specified dataset, including creation
+-- time, dataset ARN, and status.
+listDatasetsResponse_datasetSummaries :: Lens.Lens' ListDatasetsResponse (Prelude.Maybe [DatasetSummary])
+listDatasetsResponse_datasetSummaries = Lens.lens (\ListDatasetsResponse' {datasetSummaries} -> datasetSummaries) (\s@ListDatasetsResponse' {} a -> s {datasetSummaries = a} :: ListDatasetsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- datasets.
+listDatasetsResponse_nextToken :: Lens.Lens' ListDatasetsResponse (Prelude.Maybe Prelude.Text)
+listDatasetsResponse_nextToken = Lens.lens (\ListDatasetsResponse' {nextToken} -> nextToken) (\s@ListDatasetsResponse' {} a -> s {nextToken = a} :: ListDatasetsResponse)
+
+-- | The response's http status code.
+listDatasetsResponse_httpStatus :: Lens.Lens' ListDatasetsResponse Prelude.Int
+listDatasetsResponse_httpStatus = Lens.lens (\ListDatasetsResponse' {httpStatus} -> httpStatus) (\s@ListDatasetsResponse' {} a -> s {httpStatus = a} :: ListDatasetsResponse)
+
+instance Prelude.NFData ListDatasetsResponse where
+  rnf ListDatasetsResponse' {..} =
+    Prelude.rnf datasetSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/ListInferenceEvents.hs b/gen/Amazonka/LookoutEquipment/ListInferenceEvents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/ListInferenceEvents.hs
@@ -0,0 +1,273 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.ListInferenceEvents
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all inference events that have been found for the specified
+-- inference scheduler.
+module Amazonka.LookoutEquipment.ListInferenceEvents
+  ( -- * Creating a Request
+    ListInferenceEvents (..),
+    newListInferenceEvents,
+
+    -- * Request Lenses
+    listInferenceEvents_maxResults,
+    listInferenceEvents_nextToken,
+    listInferenceEvents_inferenceSchedulerName,
+    listInferenceEvents_intervalStartTime,
+    listInferenceEvents_intervalEndTime,
+
+    -- * Destructuring the Response
+    ListInferenceEventsResponse (..),
+    newListInferenceEventsResponse,
+
+    -- * Response Lenses
+    listInferenceEventsResponse_inferenceEventSummaries,
+    listInferenceEventsResponse_nextToken,
+    listInferenceEventsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListInferenceEvents' smart constructor.
+data ListInferenceEvents = ListInferenceEvents'
+  { -- | Specifies the maximum number of inference events to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- inference events.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the inference scheduler for the inference events listed.
+    inferenceSchedulerName :: Prelude.Text,
+    -- | Lookout for Equipment will return all the inference events with an end
+    -- time equal to or greater than the start time given.
+    intervalStartTime :: Data.POSIX,
+    -- | Returns all the inference events with an end start time equal to or
+    -- greater than less than the end time given
+    intervalEndTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceEvents' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listInferenceEvents_maxResults' - Specifies the maximum number of inference events to list.
+--
+-- 'nextToken', 'listInferenceEvents_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- inference events.
+--
+-- 'inferenceSchedulerName', 'listInferenceEvents_inferenceSchedulerName' - The name of the inference scheduler for the inference events listed.
+--
+-- 'intervalStartTime', 'listInferenceEvents_intervalStartTime' - Lookout for Equipment will return all the inference events with an end
+-- time equal to or greater than the start time given.
+--
+-- 'intervalEndTime', 'listInferenceEvents_intervalEndTime' - Returns all the inference events with an end start time equal to or
+-- greater than less than the end time given
+newListInferenceEvents ::
+  -- | 'inferenceSchedulerName'
+  Prelude.Text ->
+  -- | 'intervalStartTime'
+  Prelude.UTCTime ->
+  -- | 'intervalEndTime'
+  Prelude.UTCTime ->
+  ListInferenceEvents
+newListInferenceEvents
+  pInferenceSchedulerName_
+  pIntervalStartTime_
+  pIntervalEndTime_ =
+    ListInferenceEvents'
+      { maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        inferenceSchedulerName = pInferenceSchedulerName_,
+        intervalStartTime =
+          Data._Time Lens.# pIntervalStartTime_,
+        intervalEndTime =
+          Data._Time Lens.# pIntervalEndTime_
+      }
+
+-- | Specifies the maximum number of inference events to list.
+listInferenceEvents_maxResults :: Lens.Lens' ListInferenceEvents (Prelude.Maybe Prelude.Natural)
+listInferenceEvents_maxResults = Lens.lens (\ListInferenceEvents' {maxResults} -> maxResults) (\s@ListInferenceEvents' {} a -> s {maxResults = a} :: ListInferenceEvents)
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- inference events.
+listInferenceEvents_nextToken :: Lens.Lens' ListInferenceEvents (Prelude.Maybe Prelude.Text)
+listInferenceEvents_nextToken = Lens.lens (\ListInferenceEvents' {nextToken} -> nextToken) (\s@ListInferenceEvents' {} a -> s {nextToken = a} :: ListInferenceEvents)
+
+-- | The name of the inference scheduler for the inference events listed.
+listInferenceEvents_inferenceSchedulerName :: Lens.Lens' ListInferenceEvents Prelude.Text
+listInferenceEvents_inferenceSchedulerName = Lens.lens (\ListInferenceEvents' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@ListInferenceEvents' {} a -> s {inferenceSchedulerName = a} :: ListInferenceEvents)
+
+-- | Lookout for Equipment will return all the inference events with an end
+-- time equal to or greater than the start time given.
+listInferenceEvents_intervalStartTime :: Lens.Lens' ListInferenceEvents Prelude.UTCTime
+listInferenceEvents_intervalStartTime = Lens.lens (\ListInferenceEvents' {intervalStartTime} -> intervalStartTime) (\s@ListInferenceEvents' {} a -> s {intervalStartTime = a} :: ListInferenceEvents) Prelude.. Data._Time
+
+-- | Returns all the inference events with an end start time equal to or
+-- greater than less than the end time given
+listInferenceEvents_intervalEndTime :: Lens.Lens' ListInferenceEvents Prelude.UTCTime
+listInferenceEvents_intervalEndTime = Lens.lens (\ListInferenceEvents' {intervalEndTime} -> intervalEndTime) (\s@ListInferenceEvents' {} a -> s {intervalEndTime = a} :: ListInferenceEvents) Prelude.. Data._Time
+
+instance Core.AWSRequest ListInferenceEvents where
+  type
+    AWSResponse ListInferenceEvents =
+      ListInferenceEventsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListInferenceEventsResponse'
+            Prelude.<$> ( x
+                            Data..?> "InferenceEventSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListInferenceEvents where
+  hashWithSalt _salt ListInferenceEvents' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` inferenceSchedulerName
+      `Prelude.hashWithSalt` intervalStartTime
+      `Prelude.hashWithSalt` intervalEndTime
+
+instance Prelude.NFData ListInferenceEvents where
+  rnf ListInferenceEvents' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
+      `Prelude.seq` Prelude.rnf intervalStartTime
+      `Prelude.seq` Prelude.rnf intervalEndTime
+
+instance Data.ToHeaders ListInferenceEvents where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.ListInferenceEvents" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListInferenceEvents where
+  toJSON ListInferenceEvents' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ( "InferenceSchedulerName"
+                  Data..= inferenceSchedulerName
+              ),
+            Prelude.Just
+              ("IntervalStartTime" Data..= intervalStartTime),
+            Prelude.Just
+              ("IntervalEndTime" Data..= intervalEndTime)
+          ]
+      )
+
+instance Data.ToPath ListInferenceEvents where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListInferenceEvents where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListInferenceEventsResponse' smart constructor.
+data ListInferenceEventsResponse = ListInferenceEventsResponse'
+  { -- | Provides an array of information about the individual inference events
+    -- returned from the @ListInferenceEvents@ operation, including scheduler
+    -- used, event start time, event end time, diagnostics, and so on.
+    inferenceEventSummaries :: Prelude.Maybe [InferenceEventSummary],
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- inference executions.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceEventsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceEventSummaries', 'listInferenceEventsResponse_inferenceEventSummaries' - Provides an array of information about the individual inference events
+-- returned from the @ListInferenceEvents@ operation, including scheduler
+-- used, event start time, event end time, diagnostics, and so on.
+--
+-- 'nextToken', 'listInferenceEventsResponse_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- inference executions.
+--
+-- 'httpStatus', 'listInferenceEventsResponse_httpStatus' - The response's http status code.
+newListInferenceEventsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListInferenceEventsResponse
+newListInferenceEventsResponse pHttpStatus_ =
+  ListInferenceEventsResponse'
+    { inferenceEventSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Provides an array of information about the individual inference events
+-- returned from the @ListInferenceEvents@ operation, including scheduler
+-- used, event start time, event end time, diagnostics, and so on.
+listInferenceEventsResponse_inferenceEventSummaries :: Lens.Lens' ListInferenceEventsResponse (Prelude.Maybe [InferenceEventSummary])
+listInferenceEventsResponse_inferenceEventSummaries = Lens.lens (\ListInferenceEventsResponse' {inferenceEventSummaries} -> inferenceEventSummaries) (\s@ListInferenceEventsResponse' {} a -> s {inferenceEventSummaries = a} :: ListInferenceEventsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- inference executions.
+listInferenceEventsResponse_nextToken :: Lens.Lens' ListInferenceEventsResponse (Prelude.Maybe Prelude.Text)
+listInferenceEventsResponse_nextToken = Lens.lens (\ListInferenceEventsResponse' {nextToken} -> nextToken) (\s@ListInferenceEventsResponse' {} a -> s {nextToken = a} :: ListInferenceEventsResponse)
+
+-- | The response's http status code.
+listInferenceEventsResponse_httpStatus :: Lens.Lens' ListInferenceEventsResponse Prelude.Int
+listInferenceEventsResponse_httpStatus = Lens.lens (\ListInferenceEventsResponse' {httpStatus} -> httpStatus) (\s@ListInferenceEventsResponse' {} a -> s {httpStatus = a} :: ListInferenceEventsResponse)
+
+instance Prelude.NFData ListInferenceEventsResponse where
+  rnf ListInferenceEventsResponse' {..} =
+    Prelude.rnf inferenceEventSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/ListInferenceExecutions.hs b/gen/Amazonka/LookoutEquipment/ListInferenceExecutions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/ListInferenceExecutions.hs
@@ -0,0 +1,284 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.ListInferenceExecutions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all inference executions that have been performed by the specified
+-- inference scheduler.
+module Amazonka.LookoutEquipment.ListInferenceExecutions
+  ( -- * Creating a Request
+    ListInferenceExecutions (..),
+    newListInferenceExecutions,
+
+    -- * Request Lenses
+    listInferenceExecutions_dataEndTimeBefore,
+    listInferenceExecutions_dataStartTimeAfter,
+    listInferenceExecutions_maxResults,
+    listInferenceExecutions_nextToken,
+    listInferenceExecutions_status,
+    listInferenceExecutions_inferenceSchedulerName,
+
+    -- * Destructuring the Response
+    ListInferenceExecutionsResponse (..),
+    newListInferenceExecutionsResponse,
+
+    -- * Response Lenses
+    listInferenceExecutionsResponse_inferenceExecutionSummaries,
+    listInferenceExecutionsResponse_nextToken,
+    listInferenceExecutionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListInferenceExecutions' smart constructor.
+data ListInferenceExecutions = ListInferenceExecutions'
+  { -- | The time reference in the inferenced dataset before which Amazon Lookout
+    -- for Equipment stopped the inference execution.
+    dataEndTimeBefore :: Prelude.Maybe Data.POSIX,
+    -- | The time reference in the inferenced dataset after which Amazon Lookout
+    -- for Equipment started the inference execution.
+    dataStartTimeAfter :: Prelude.Maybe Data.POSIX,
+    -- | Specifies the maximum number of inference executions to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- inference executions.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The status of the inference execution.
+    status :: Prelude.Maybe InferenceExecutionStatus,
+    -- | The name of the inference scheduler for the inference execution listed.
+    inferenceSchedulerName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceExecutions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataEndTimeBefore', 'listInferenceExecutions_dataEndTimeBefore' - The time reference in the inferenced dataset before which Amazon Lookout
+-- for Equipment stopped the inference execution.
+--
+-- 'dataStartTimeAfter', 'listInferenceExecutions_dataStartTimeAfter' - The time reference in the inferenced dataset after which Amazon Lookout
+-- for Equipment started the inference execution.
+--
+-- 'maxResults', 'listInferenceExecutions_maxResults' - Specifies the maximum number of inference executions to list.
+--
+-- 'nextToken', 'listInferenceExecutions_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- inference executions.
+--
+-- 'status', 'listInferenceExecutions_status' - The status of the inference execution.
+--
+-- 'inferenceSchedulerName', 'listInferenceExecutions_inferenceSchedulerName' - The name of the inference scheduler for the inference execution listed.
+newListInferenceExecutions ::
+  -- | 'inferenceSchedulerName'
+  Prelude.Text ->
+  ListInferenceExecutions
+newListInferenceExecutions pInferenceSchedulerName_ =
+  ListInferenceExecutions'
+    { dataEndTimeBefore =
+        Prelude.Nothing,
+      dataStartTimeAfter = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      status = Prelude.Nothing,
+      inferenceSchedulerName = pInferenceSchedulerName_
+    }
+
+-- | The time reference in the inferenced dataset before which Amazon Lookout
+-- for Equipment stopped the inference execution.
+listInferenceExecutions_dataEndTimeBefore :: Lens.Lens' ListInferenceExecutions (Prelude.Maybe Prelude.UTCTime)
+listInferenceExecutions_dataEndTimeBefore = Lens.lens (\ListInferenceExecutions' {dataEndTimeBefore} -> dataEndTimeBefore) (\s@ListInferenceExecutions' {} a -> s {dataEndTimeBefore = a} :: ListInferenceExecutions) Prelude.. Lens.mapping Data._Time
+
+-- | The time reference in the inferenced dataset after which Amazon Lookout
+-- for Equipment started the inference execution.
+listInferenceExecutions_dataStartTimeAfter :: Lens.Lens' ListInferenceExecutions (Prelude.Maybe Prelude.UTCTime)
+listInferenceExecutions_dataStartTimeAfter = Lens.lens (\ListInferenceExecutions' {dataStartTimeAfter} -> dataStartTimeAfter) (\s@ListInferenceExecutions' {} a -> s {dataStartTimeAfter = a} :: ListInferenceExecutions) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the maximum number of inference executions to list.
+listInferenceExecutions_maxResults :: Lens.Lens' ListInferenceExecutions (Prelude.Maybe Prelude.Natural)
+listInferenceExecutions_maxResults = Lens.lens (\ListInferenceExecutions' {maxResults} -> maxResults) (\s@ListInferenceExecutions' {} a -> s {maxResults = a} :: ListInferenceExecutions)
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- inference executions.
+listInferenceExecutions_nextToken :: Lens.Lens' ListInferenceExecutions (Prelude.Maybe Prelude.Text)
+listInferenceExecutions_nextToken = Lens.lens (\ListInferenceExecutions' {nextToken} -> nextToken) (\s@ListInferenceExecutions' {} a -> s {nextToken = a} :: ListInferenceExecutions)
+
+-- | The status of the inference execution.
+listInferenceExecutions_status :: Lens.Lens' ListInferenceExecutions (Prelude.Maybe InferenceExecutionStatus)
+listInferenceExecutions_status = Lens.lens (\ListInferenceExecutions' {status} -> status) (\s@ListInferenceExecutions' {} a -> s {status = a} :: ListInferenceExecutions)
+
+-- | The name of the inference scheduler for the inference execution listed.
+listInferenceExecutions_inferenceSchedulerName :: Lens.Lens' ListInferenceExecutions Prelude.Text
+listInferenceExecutions_inferenceSchedulerName = Lens.lens (\ListInferenceExecutions' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@ListInferenceExecutions' {} a -> s {inferenceSchedulerName = a} :: ListInferenceExecutions)
+
+instance Core.AWSRequest ListInferenceExecutions where
+  type
+    AWSResponse ListInferenceExecutions =
+      ListInferenceExecutionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListInferenceExecutionsResponse'
+            Prelude.<$> ( x
+                            Data..?> "InferenceExecutionSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListInferenceExecutions where
+  hashWithSalt _salt ListInferenceExecutions' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataEndTimeBefore
+      `Prelude.hashWithSalt` dataStartTimeAfter
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` inferenceSchedulerName
+
+instance Prelude.NFData ListInferenceExecutions where
+  rnf ListInferenceExecutions' {..} =
+    Prelude.rnf dataEndTimeBefore
+      `Prelude.seq` Prelude.rnf dataStartTimeAfter
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
+
+instance Data.ToHeaders ListInferenceExecutions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.ListInferenceExecutions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListInferenceExecutions where
+  toJSON ListInferenceExecutions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataEndTimeBefore" Data..=)
+              Prelude.<$> dataEndTimeBefore,
+            ("DataStartTimeAfter" Data..=)
+              Prelude.<$> dataStartTimeAfter,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("Status" Data..=) Prelude.<$> status,
+            Prelude.Just
+              ( "InferenceSchedulerName"
+                  Data..= inferenceSchedulerName
+              )
+          ]
+      )
+
+instance Data.ToPath ListInferenceExecutions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListInferenceExecutions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListInferenceExecutionsResponse' smart constructor.
+data ListInferenceExecutionsResponse = ListInferenceExecutionsResponse'
+  { -- | Provides an array of information about the individual inference
+    -- executions returned from the @ListInferenceExecutions@ operation,
+    -- including model used, inference scheduler, data configuration, and so
+    -- on.
+    inferenceExecutionSummaries :: Prelude.Maybe [InferenceExecutionSummary],
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- inference executions.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceExecutionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceExecutionSummaries', 'listInferenceExecutionsResponse_inferenceExecutionSummaries' - Provides an array of information about the individual inference
+-- executions returned from the @ListInferenceExecutions@ operation,
+-- including model used, inference scheduler, data configuration, and so
+-- on.
+--
+-- 'nextToken', 'listInferenceExecutionsResponse_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- inference executions.
+--
+-- 'httpStatus', 'listInferenceExecutionsResponse_httpStatus' - The response's http status code.
+newListInferenceExecutionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListInferenceExecutionsResponse
+newListInferenceExecutionsResponse pHttpStatus_ =
+  ListInferenceExecutionsResponse'
+    { inferenceExecutionSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Provides an array of information about the individual inference
+-- executions returned from the @ListInferenceExecutions@ operation,
+-- including model used, inference scheduler, data configuration, and so
+-- on.
+listInferenceExecutionsResponse_inferenceExecutionSummaries :: Lens.Lens' ListInferenceExecutionsResponse (Prelude.Maybe [InferenceExecutionSummary])
+listInferenceExecutionsResponse_inferenceExecutionSummaries = Lens.lens (\ListInferenceExecutionsResponse' {inferenceExecutionSummaries} -> inferenceExecutionSummaries) (\s@ListInferenceExecutionsResponse' {} a -> s {inferenceExecutionSummaries = a} :: ListInferenceExecutionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- inference executions.
+listInferenceExecutionsResponse_nextToken :: Lens.Lens' ListInferenceExecutionsResponse (Prelude.Maybe Prelude.Text)
+listInferenceExecutionsResponse_nextToken = Lens.lens (\ListInferenceExecutionsResponse' {nextToken} -> nextToken) (\s@ListInferenceExecutionsResponse' {} a -> s {nextToken = a} :: ListInferenceExecutionsResponse)
+
+-- | The response's http status code.
+listInferenceExecutionsResponse_httpStatus :: Lens.Lens' ListInferenceExecutionsResponse Prelude.Int
+listInferenceExecutionsResponse_httpStatus = Lens.lens (\ListInferenceExecutionsResponse' {httpStatus} -> httpStatus) (\s@ListInferenceExecutionsResponse' {} a -> s {httpStatus = a} :: ListInferenceExecutionsResponse)
+
+instance
+  Prelude.NFData
+    ListInferenceExecutionsResponse
+  where
+  rnf ListInferenceExecutionsResponse' {..} =
+    Prelude.rnf inferenceExecutionSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/ListInferenceSchedulers.hs b/gen/Amazonka/LookoutEquipment/ListInferenceSchedulers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/ListInferenceSchedulers.hs
@@ -0,0 +1,253 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.ListInferenceSchedulers
+-- 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 all inference schedulers currently available for
+-- your account.
+module Amazonka.LookoutEquipment.ListInferenceSchedulers
+  ( -- * Creating a Request
+    ListInferenceSchedulers (..),
+    newListInferenceSchedulers,
+
+    -- * Request Lenses
+    listInferenceSchedulers_inferenceSchedulerNameBeginsWith,
+    listInferenceSchedulers_maxResults,
+    listInferenceSchedulers_modelName,
+    listInferenceSchedulers_nextToken,
+    listInferenceSchedulers_status,
+
+    -- * Destructuring the Response
+    ListInferenceSchedulersResponse (..),
+    newListInferenceSchedulersResponse,
+
+    -- * Response Lenses
+    listInferenceSchedulersResponse_inferenceSchedulerSummaries,
+    listInferenceSchedulersResponse_nextToken,
+    listInferenceSchedulersResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListInferenceSchedulers' smart constructor.
+data ListInferenceSchedulers = ListInferenceSchedulers'
+  { -- | The beginning of the name of the inference schedulers to be listed.
+    inferenceSchedulerNameBeginsWith :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the maximum number of inference schedulers to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the ML model used by the inference scheduler to be listed.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- inference schedulers.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the current status of the inference schedulers to list.
+    status :: Prelude.Maybe InferenceSchedulerStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceSchedulers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceSchedulerNameBeginsWith', 'listInferenceSchedulers_inferenceSchedulerNameBeginsWith' - The beginning of the name of the inference schedulers to be listed.
+--
+-- 'maxResults', 'listInferenceSchedulers_maxResults' - Specifies the maximum number of inference schedulers to list.
+--
+-- 'modelName', 'listInferenceSchedulers_modelName' - The name of the ML model used by the inference scheduler to be listed.
+--
+-- 'nextToken', 'listInferenceSchedulers_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- inference schedulers.
+--
+-- 'status', 'listInferenceSchedulers_status' - Specifies the current status of the inference schedulers to list.
+newListInferenceSchedulers ::
+  ListInferenceSchedulers
+newListInferenceSchedulers =
+  ListInferenceSchedulers'
+    { inferenceSchedulerNameBeginsWith =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The beginning of the name of the inference schedulers to be listed.
+listInferenceSchedulers_inferenceSchedulerNameBeginsWith :: Lens.Lens' ListInferenceSchedulers (Prelude.Maybe Prelude.Text)
+listInferenceSchedulers_inferenceSchedulerNameBeginsWith = Lens.lens (\ListInferenceSchedulers' {inferenceSchedulerNameBeginsWith} -> inferenceSchedulerNameBeginsWith) (\s@ListInferenceSchedulers' {} a -> s {inferenceSchedulerNameBeginsWith = a} :: ListInferenceSchedulers)
+
+-- | Specifies the maximum number of inference schedulers to list.
+listInferenceSchedulers_maxResults :: Lens.Lens' ListInferenceSchedulers (Prelude.Maybe Prelude.Natural)
+listInferenceSchedulers_maxResults = Lens.lens (\ListInferenceSchedulers' {maxResults} -> maxResults) (\s@ListInferenceSchedulers' {} a -> s {maxResults = a} :: ListInferenceSchedulers)
+
+-- | The name of the ML model used by the inference scheduler to be listed.
+listInferenceSchedulers_modelName :: Lens.Lens' ListInferenceSchedulers (Prelude.Maybe Prelude.Text)
+listInferenceSchedulers_modelName = Lens.lens (\ListInferenceSchedulers' {modelName} -> modelName) (\s@ListInferenceSchedulers' {} a -> s {modelName = a} :: ListInferenceSchedulers)
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- inference schedulers.
+listInferenceSchedulers_nextToken :: Lens.Lens' ListInferenceSchedulers (Prelude.Maybe Prelude.Text)
+listInferenceSchedulers_nextToken = Lens.lens (\ListInferenceSchedulers' {nextToken} -> nextToken) (\s@ListInferenceSchedulers' {} a -> s {nextToken = a} :: ListInferenceSchedulers)
+
+-- | Specifies the current status of the inference schedulers to list.
+listInferenceSchedulers_status :: Lens.Lens' ListInferenceSchedulers (Prelude.Maybe InferenceSchedulerStatus)
+listInferenceSchedulers_status = Lens.lens (\ListInferenceSchedulers' {status} -> status) (\s@ListInferenceSchedulers' {} a -> s {status = a} :: ListInferenceSchedulers)
+
+instance Core.AWSRequest ListInferenceSchedulers where
+  type
+    AWSResponse ListInferenceSchedulers =
+      ListInferenceSchedulersResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListInferenceSchedulersResponse'
+            Prelude.<$> ( x
+                            Data..?> "InferenceSchedulerSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListInferenceSchedulers where
+  hashWithSalt _salt ListInferenceSchedulers' {..} =
+    _salt
+      `Prelude.hashWithSalt` inferenceSchedulerNameBeginsWith
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ListInferenceSchedulers where
+  rnf ListInferenceSchedulers' {..} =
+    Prelude.rnf inferenceSchedulerNameBeginsWith
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToHeaders ListInferenceSchedulers where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.ListInferenceSchedulers" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListInferenceSchedulers where
+  toJSON ListInferenceSchedulers' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InferenceSchedulerNameBeginsWith" Data..=)
+              Prelude.<$> inferenceSchedulerNameBeginsWith,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("ModelName" Data..=) Prelude.<$> modelName,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("Status" Data..=) Prelude.<$> status
+          ]
+      )
+
+instance Data.ToPath ListInferenceSchedulers where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListInferenceSchedulers where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListInferenceSchedulersResponse' smart constructor.
+data ListInferenceSchedulersResponse = ListInferenceSchedulersResponse'
+  { -- | Provides information about the specified inference scheduler, including
+    -- data upload frequency, model name and ARN, and status.
+    inferenceSchedulerSummaries :: Prelude.Maybe [InferenceSchedulerSummary],
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- inference schedulers.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListInferenceSchedulersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceSchedulerSummaries', 'listInferenceSchedulersResponse_inferenceSchedulerSummaries' - Provides information about the specified inference scheduler, including
+-- data upload frequency, model name and ARN, and status.
+--
+-- 'nextToken', 'listInferenceSchedulersResponse_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- inference schedulers.
+--
+-- 'httpStatus', 'listInferenceSchedulersResponse_httpStatus' - The response's http status code.
+newListInferenceSchedulersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListInferenceSchedulersResponse
+newListInferenceSchedulersResponse pHttpStatus_ =
+  ListInferenceSchedulersResponse'
+    { inferenceSchedulerSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Provides information about the specified inference scheduler, including
+-- data upload frequency, model name and ARN, and status.
+listInferenceSchedulersResponse_inferenceSchedulerSummaries :: Lens.Lens' ListInferenceSchedulersResponse (Prelude.Maybe [InferenceSchedulerSummary])
+listInferenceSchedulersResponse_inferenceSchedulerSummaries = Lens.lens (\ListInferenceSchedulersResponse' {inferenceSchedulerSummaries} -> inferenceSchedulerSummaries) (\s@ListInferenceSchedulersResponse' {} a -> s {inferenceSchedulerSummaries = a} :: ListInferenceSchedulersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- inference schedulers.
+listInferenceSchedulersResponse_nextToken :: Lens.Lens' ListInferenceSchedulersResponse (Prelude.Maybe Prelude.Text)
+listInferenceSchedulersResponse_nextToken = Lens.lens (\ListInferenceSchedulersResponse' {nextToken} -> nextToken) (\s@ListInferenceSchedulersResponse' {} a -> s {nextToken = a} :: ListInferenceSchedulersResponse)
+
+-- | The response's http status code.
+listInferenceSchedulersResponse_httpStatus :: Lens.Lens' ListInferenceSchedulersResponse Prelude.Int
+listInferenceSchedulersResponse_httpStatus = Lens.lens (\ListInferenceSchedulersResponse' {httpStatus} -> httpStatus) (\s@ListInferenceSchedulersResponse' {} a -> s {httpStatus = a} :: ListInferenceSchedulersResponse)
+
+instance
+  Prelude.NFData
+    ListInferenceSchedulersResponse
+  where
+  rnf ListInferenceSchedulersResponse' {..} =
+    Prelude.rnf inferenceSchedulerSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/ListLabelGroups.hs b/gen/Amazonka/LookoutEquipment/ListLabelGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/ListLabelGroups.hs
@@ -0,0 +1,220 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.ListLabelGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of the label groups.
+module Amazonka.LookoutEquipment.ListLabelGroups
+  ( -- * Creating a Request
+    ListLabelGroups (..),
+    newListLabelGroups,
+
+    -- * Request Lenses
+    listLabelGroups_labelGroupNameBeginsWith,
+    listLabelGroups_maxResults,
+    listLabelGroups_nextToken,
+
+    -- * Destructuring the Response
+    ListLabelGroupsResponse (..),
+    newListLabelGroupsResponse,
+
+    -- * Response Lenses
+    listLabelGroupsResponse_labelGroupSummaries,
+    listLabelGroupsResponse_nextToken,
+    listLabelGroupsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListLabelGroups' smart constructor.
+data ListLabelGroups = ListLabelGroups'
+  { -- | The beginning of the name of the label groups to be listed.
+    labelGroupNameBeginsWith :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the maximum number of label groups to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- label groups.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLabelGroups' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelGroupNameBeginsWith', 'listLabelGroups_labelGroupNameBeginsWith' - The beginning of the name of the label groups to be listed.
+--
+-- 'maxResults', 'listLabelGroups_maxResults' - Specifies the maximum number of label groups to list.
+--
+-- 'nextToken', 'listLabelGroups_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- label groups.
+newListLabelGroups ::
+  ListLabelGroups
+newListLabelGroups =
+  ListLabelGroups'
+    { labelGroupNameBeginsWith =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The beginning of the name of the label groups to be listed.
+listLabelGroups_labelGroupNameBeginsWith :: Lens.Lens' ListLabelGroups (Prelude.Maybe Prelude.Text)
+listLabelGroups_labelGroupNameBeginsWith = Lens.lens (\ListLabelGroups' {labelGroupNameBeginsWith} -> labelGroupNameBeginsWith) (\s@ListLabelGroups' {} a -> s {labelGroupNameBeginsWith = a} :: ListLabelGroups)
+
+-- | Specifies the maximum number of label groups to list.
+listLabelGroups_maxResults :: Lens.Lens' ListLabelGroups (Prelude.Maybe Prelude.Natural)
+listLabelGroups_maxResults = Lens.lens (\ListLabelGroups' {maxResults} -> maxResults) (\s@ListLabelGroups' {} a -> s {maxResults = a} :: ListLabelGroups)
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- label groups.
+listLabelGroups_nextToken :: Lens.Lens' ListLabelGroups (Prelude.Maybe Prelude.Text)
+listLabelGroups_nextToken = Lens.lens (\ListLabelGroups' {nextToken} -> nextToken) (\s@ListLabelGroups' {} a -> s {nextToken = a} :: ListLabelGroups)
+
+instance Core.AWSRequest ListLabelGroups where
+  type
+    AWSResponse ListLabelGroups =
+      ListLabelGroupsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLabelGroupsResponse'
+            Prelude.<$> ( x
+                            Data..?> "LabelGroupSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListLabelGroups where
+  hashWithSalt _salt ListLabelGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` labelGroupNameBeginsWith
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListLabelGroups where
+  rnf ListLabelGroups' {..} =
+    Prelude.rnf labelGroupNameBeginsWith
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListLabelGroups where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.ListLabelGroups" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListLabelGroups where
+  toJSON ListLabelGroups' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LabelGroupNameBeginsWith" Data..=)
+              Prelude.<$> labelGroupNameBeginsWith,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListLabelGroups where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListLabelGroups where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListLabelGroupsResponse' smart constructor.
+data ListLabelGroupsResponse = ListLabelGroupsResponse'
+  { -- | A summary of the label groups.
+    labelGroupSummaries :: Prelude.Maybe [LabelGroupSummary],
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- label groups.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLabelGroupsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelGroupSummaries', 'listLabelGroupsResponse_labelGroupSummaries' - A summary of the label groups.
+--
+-- 'nextToken', 'listLabelGroupsResponse_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- label groups.
+--
+-- 'httpStatus', 'listLabelGroupsResponse_httpStatus' - The response's http status code.
+newListLabelGroupsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLabelGroupsResponse
+newListLabelGroupsResponse pHttpStatus_ =
+  ListLabelGroupsResponse'
+    { labelGroupSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A summary of the label groups.
+listLabelGroupsResponse_labelGroupSummaries :: Lens.Lens' ListLabelGroupsResponse (Prelude.Maybe [LabelGroupSummary])
+listLabelGroupsResponse_labelGroupSummaries = Lens.lens (\ListLabelGroupsResponse' {labelGroupSummaries} -> labelGroupSummaries) (\s@ListLabelGroupsResponse' {} a -> s {labelGroupSummaries = a} :: ListLabelGroupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- label groups.
+listLabelGroupsResponse_nextToken :: Lens.Lens' ListLabelGroupsResponse (Prelude.Maybe Prelude.Text)
+listLabelGroupsResponse_nextToken = Lens.lens (\ListLabelGroupsResponse' {nextToken} -> nextToken) (\s@ListLabelGroupsResponse' {} a -> s {nextToken = a} :: ListLabelGroupsResponse)
+
+-- | The response's http status code.
+listLabelGroupsResponse_httpStatus :: Lens.Lens' ListLabelGroupsResponse Prelude.Int
+listLabelGroupsResponse_httpStatus = Lens.lens (\ListLabelGroupsResponse' {httpStatus} -> httpStatus) (\s@ListLabelGroupsResponse' {} a -> s {httpStatus = a} :: ListLabelGroupsResponse)
+
+instance Prelude.NFData ListLabelGroupsResponse where
+  rnf ListLabelGroupsResponse' {..} =
+    Prelude.rnf labelGroupSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/ListLabels.hs b/gen/Amazonka/LookoutEquipment/ListLabels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/ListLabels.hs
@@ -0,0 +1,273 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.ListLabels
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a list of labels.
+module Amazonka.LookoutEquipment.ListLabels
+  ( -- * Creating a Request
+    ListLabels (..),
+    newListLabels,
+
+    -- * Request Lenses
+    listLabels_equipment,
+    listLabels_faultCode,
+    listLabels_intervalEndTime,
+    listLabels_intervalStartTime,
+    listLabels_maxResults,
+    listLabels_nextToken,
+    listLabels_labelGroupName,
+
+    -- * Destructuring the Response
+    ListLabelsResponse (..),
+    newListLabelsResponse,
+
+    -- * Response Lenses
+    listLabelsResponse_labelSummaries,
+    listLabelsResponse_nextToken,
+    listLabelsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListLabels' smart constructor.
+data ListLabels = ListLabels'
+  { -- | Lists the labels that pertain to a particular piece of equipment.
+    equipment :: Prelude.Maybe Prelude.Text,
+    -- | Returns labels with a particular fault code.
+    faultCode :: Prelude.Maybe Prelude.Text,
+    -- | Returns all labels with a start time earlier than the end time given.
+    intervalEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Returns all the labels with a end time equal to or later than the start
+    -- time given.
+    intervalStartTime :: Prelude.Maybe Data.POSIX,
+    -- | Specifies the maximum number of labels to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- label groups.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Retruns the name of the label group.
+    labelGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLabels' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'equipment', 'listLabels_equipment' - Lists the labels that pertain to a particular piece of equipment.
+--
+-- 'faultCode', 'listLabels_faultCode' - Returns labels with a particular fault code.
+--
+-- 'intervalEndTime', 'listLabels_intervalEndTime' - Returns all labels with a start time earlier than the end time given.
+--
+-- 'intervalStartTime', 'listLabels_intervalStartTime' - Returns all the labels with a end time equal to or later than the start
+-- time given.
+--
+-- 'maxResults', 'listLabels_maxResults' - Specifies the maximum number of labels to list.
+--
+-- 'nextToken', 'listLabels_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- label groups.
+--
+-- 'labelGroupName', 'listLabels_labelGroupName' - Retruns the name of the label group.
+newListLabels ::
+  -- | 'labelGroupName'
+  Prelude.Text ->
+  ListLabels
+newListLabels pLabelGroupName_ =
+  ListLabels'
+    { equipment = Prelude.Nothing,
+      faultCode = Prelude.Nothing,
+      intervalEndTime = Prelude.Nothing,
+      intervalStartTime = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      labelGroupName = pLabelGroupName_
+    }
+
+-- | Lists the labels that pertain to a particular piece of equipment.
+listLabels_equipment :: Lens.Lens' ListLabels (Prelude.Maybe Prelude.Text)
+listLabels_equipment = Lens.lens (\ListLabels' {equipment} -> equipment) (\s@ListLabels' {} a -> s {equipment = a} :: ListLabels)
+
+-- | Returns labels with a particular fault code.
+listLabels_faultCode :: Lens.Lens' ListLabels (Prelude.Maybe Prelude.Text)
+listLabels_faultCode = Lens.lens (\ListLabels' {faultCode} -> faultCode) (\s@ListLabels' {} a -> s {faultCode = a} :: ListLabels)
+
+-- | Returns all labels with a start time earlier than the end time given.
+listLabels_intervalEndTime :: Lens.Lens' ListLabels (Prelude.Maybe Prelude.UTCTime)
+listLabels_intervalEndTime = Lens.lens (\ListLabels' {intervalEndTime} -> intervalEndTime) (\s@ListLabels' {} a -> s {intervalEndTime = a} :: ListLabels) Prelude.. Lens.mapping Data._Time
+
+-- | Returns all the labels with a end time equal to or later than the start
+-- time given.
+listLabels_intervalStartTime :: Lens.Lens' ListLabels (Prelude.Maybe Prelude.UTCTime)
+listLabels_intervalStartTime = Lens.lens (\ListLabels' {intervalStartTime} -> intervalStartTime) (\s@ListLabels' {} a -> s {intervalStartTime = a} :: ListLabels) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the maximum number of labels to list.
+listLabels_maxResults :: Lens.Lens' ListLabels (Prelude.Maybe Prelude.Natural)
+listLabels_maxResults = Lens.lens (\ListLabels' {maxResults} -> maxResults) (\s@ListLabels' {} a -> s {maxResults = a} :: ListLabels)
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- label groups.
+listLabels_nextToken :: Lens.Lens' ListLabels (Prelude.Maybe Prelude.Text)
+listLabels_nextToken = Lens.lens (\ListLabels' {nextToken} -> nextToken) (\s@ListLabels' {} a -> s {nextToken = a} :: ListLabels)
+
+-- | Retruns the name of the label group.
+listLabels_labelGroupName :: Lens.Lens' ListLabels Prelude.Text
+listLabels_labelGroupName = Lens.lens (\ListLabels' {labelGroupName} -> labelGroupName) (\s@ListLabels' {} a -> s {labelGroupName = a} :: ListLabels)
+
+instance Core.AWSRequest ListLabels where
+  type AWSResponse ListLabels = ListLabelsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListLabelsResponse'
+            Prelude.<$> (x Data..?> "LabelSummaries" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListLabels where
+  hashWithSalt _salt ListLabels' {..} =
+    _salt
+      `Prelude.hashWithSalt` equipment
+      `Prelude.hashWithSalt` faultCode
+      `Prelude.hashWithSalt` intervalEndTime
+      `Prelude.hashWithSalt` intervalStartTime
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` labelGroupName
+
+instance Prelude.NFData ListLabels where
+  rnf ListLabels' {..} =
+    Prelude.rnf equipment
+      `Prelude.seq` Prelude.rnf faultCode
+      `Prelude.seq` Prelude.rnf intervalEndTime
+      `Prelude.seq` Prelude.rnf intervalStartTime
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf labelGroupName
+
+instance Data.ToHeaders ListLabels where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.ListLabels" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListLabels where
+  toJSON ListLabels' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Equipment" Data..=) Prelude.<$> equipment,
+            ("FaultCode" Data..=) Prelude.<$> faultCode,
+            ("IntervalEndTime" Data..=)
+              Prelude.<$> intervalEndTime,
+            ("IntervalStartTime" Data..=)
+              Prelude.<$> intervalStartTime,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ("LabelGroupName" Data..= labelGroupName)
+          ]
+      )
+
+instance Data.ToPath ListLabels where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListLabels where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListLabelsResponse' smart constructor.
+data ListLabelsResponse = ListLabelsResponse'
+  { -- | A summary of the items in the label group.
+    labelSummaries :: Prelude.Maybe [LabelSummary],
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- datasets.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListLabelsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelSummaries', 'listLabelsResponse_labelSummaries' - A summary of the items in the label group.
+--
+-- 'nextToken', 'listLabelsResponse_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- datasets.
+--
+-- 'httpStatus', 'listLabelsResponse_httpStatus' - The response's http status code.
+newListLabelsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListLabelsResponse
+newListLabelsResponse pHttpStatus_ =
+  ListLabelsResponse'
+    { labelSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A summary of the items in the label group.
+listLabelsResponse_labelSummaries :: Lens.Lens' ListLabelsResponse (Prelude.Maybe [LabelSummary])
+listLabelsResponse_labelSummaries = Lens.lens (\ListLabelsResponse' {labelSummaries} -> labelSummaries) (\s@ListLabelsResponse' {} a -> s {labelSummaries = a} :: ListLabelsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- datasets.
+listLabelsResponse_nextToken :: Lens.Lens' ListLabelsResponse (Prelude.Maybe Prelude.Text)
+listLabelsResponse_nextToken = Lens.lens (\ListLabelsResponse' {nextToken} -> nextToken) (\s@ListLabelsResponse' {} a -> s {nextToken = a} :: ListLabelsResponse)
+
+-- | The response's http status code.
+listLabelsResponse_httpStatus :: Lens.Lens' ListLabelsResponse Prelude.Int
+listLabelsResponse_httpStatus = Lens.lens (\ListLabelsResponse' {httpStatus} -> httpStatus) (\s@ListLabelsResponse' {} a -> s {httpStatus = a} :: ListLabelsResponse)
+
+instance Prelude.NFData ListLabelsResponse where
+  rnf ListLabelsResponse' {..} =
+    Prelude.rnf labelSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/ListModels.hs b/gen/Amazonka/LookoutEquipment/ListModels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/ListModels.hs
@@ -0,0 +1,246 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.ListModels
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Generates a list of all models in the account, including model name and
+-- ARN, dataset, and status.
+module Amazonka.LookoutEquipment.ListModels
+  ( -- * Creating a Request
+    ListModels (..),
+    newListModels,
+
+    -- * Request Lenses
+    listModels_datasetNameBeginsWith,
+    listModels_maxResults,
+    listModels_modelNameBeginsWith,
+    listModels_nextToken,
+    listModels_status,
+
+    -- * Destructuring the Response
+    ListModelsResponse (..),
+    newListModelsResponse,
+
+    -- * Response Lenses
+    listModelsResponse_modelSummaries,
+    listModelsResponse_nextToken,
+    listModelsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListModels' smart constructor.
+data ListModels = ListModels'
+  { -- | The beginning of the name of the dataset of the ML models to be listed.
+    datasetNameBeginsWith :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the maximum number of ML models to list.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The beginning of the name of the ML models being listed.
+    modelNameBeginsWith :: Prelude.Maybe Prelude.Text,
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- ML models.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The status of the ML model.
+    status :: Prelude.Maybe ModelStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModels' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datasetNameBeginsWith', 'listModels_datasetNameBeginsWith' - The beginning of the name of the dataset of the ML models to be listed.
+--
+-- 'maxResults', 'listModels_maxResults' - Specifies the maximum number of ML models to list.
+--
+-- 'modelNameBeginsWith', 'listModels_modelNameBeginsWith' - The beginning of the name of the ML models being listed.
+--
+-- 'nextToken', 'listModels_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- ML models.
+--
+-- 'status', 'listModels_status' - The status of the ML model.
+newListModels ::
+  ListModels
+newListModels =
+  ListModels'
+    { datasetNameBeginsWith =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      modelNameBeginsWith = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The beginning of the name of the dataset of the ML models to be listed.
+listModels_datasetNameBeginsWith :: Lens.Lens' ListModels (Prelude.Maybe Prelude.Text)
+listModels_datasetNameBeginsWith = Lens.lens (\ListModels' {datasetNameBeginsWith} -> datasetNameBeginsWith) (\s@ListModels' {} a -> s {datasetNameBeginsWith = a} :: ListModels)
+
+-- | Specifies the maximum number of ML models to list.
+listModels_maxResults :: Lens.Lens' ListModels (Prelude.Maybe Prelude.Natural)
+listModels_maxResults = Lens.lens (\ListModels' {maxResults} -> maxResults) (\s@ListModels' {} a -> s {maxResults = a} :: ListModels)
+
+-- | The beginning of the name of the ML models being listed.
+listModels_modelNameBeginsWith :: Lens.Lens' ListModels (Prelude.Maybe Prelude.Text)
+listModels_modelNameBeginsWith = Lens.lens (\ListModels' {modelNameBeginsWith} -> modelNameBeginsWith) (\s@ListModels' {} a -> s {modelNameBeginsWith = a} :: ListModels)
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- ML models.
+listModels_nextToken :: Lens.Lens' ListModels (Prelude.Maybe Prelude.Text)
+listModels_nextToken = Lens.lens (\ListModels' {nextToken} -> nextToken) (\s@ListModels' {} a -> s {nextToken = a} :: ListModels)
+
+-- | The status of the ML model.
+listModels_status :: Lens.Lens' ListModels (Prelude.Maybe ModelStatus)
+listModels_status = Lens.lens (\ListModels' {status} -> status) (\s@ListModels' {} a -> s {status = a} :: ListModels)
+
+instance Core.AWSRequest ListModels where
+  type AWSResponse ListModels = ListModelsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListModelsResponse'
+            Prelude.<$> (x Data..?> "ModelSummaries" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListModels where
+  hashWithSalt _salt ListModels' {..} =
+    _salt
+      `Prelude.hashWithSalt` datasetNameBeginsWith
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` modelNameBeginsWith
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ListModels where
+  rnf ListModels' {..} =
+    Prelude.rnf datasetNameBeginsWith
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf modelNameBeginsWith
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToHeaders ListModels where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.ListModels" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListModels where
+  toJSON ListModels' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DatasetNameBeginsWith" Data..=)
+              Prelude.<$> datasetNameBeginsWith,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("ModelNameBeginsWith" Data..=)
+              Prelude.<$> modelNameBeginsWith,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("Status" Data..=) Prelude.<$> status
+          ]
+      )
+
+instance Data.ToPath ListModels where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListModels where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListModelsResponse' smart constructor.
+data ListModelsResponse = ListModelsResponse'
+  { -- | Provides information on the specified model, including created time,
+    -- model and dataset ARNs, and status.
+    modelSummaries :: Prelude.Maybe [ModelSummary],
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- ML models.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListModelsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'modelSummaries', 'listModelsResponse_modelSummaries' - Provides information on the specified model, including created time,
+-- model and dataset ARNs, and status.
+--
+-- 'nextToken', 'listModelsResponse_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- ML models.
+--
+-- 'httpStatus', 'listModelsResponse_httpStatus' - The response's http status code.
+newListModelsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListModelsResponse
+newListModelsResponse pHttpStatus_ =
+  ListModelsResponse'
+    { modelSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Provides information on the specified model, including created time,
+-- model and dataset ARNs, and status.
+listModelsResponse_modelSummaries :: Lens.Lens' ListModelsResponse (Prelude.Maybe [ModelSummary])
+listModelsResponse_modelSummaries = Lens.lens (\ListModelsResponse' {modelSummaries} -> modelSummaries) (\s@ListModelsResponse' {} a -> s {modelSummaries = a} :: ListModelsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- ML models.
+listModelsResponse_nextToken :: Lens.Lens' ListModelsResponse (Prelude.Maybe Prelude.Text)
+listModelsResponse_nextToken = Lens.lens (\ListModelsResponse' {nextToken} -> nextToken) (\s@ListModelsResponse' {} a -> s {nextToken = a} :: ListModelsResponse)
+
+-- | The response's http status code.
+listModelsResponse_httpStatus :: Lens.Lens' ListModelsResponse Prelude.Int
+listModelsResponse_httpStatus = Lens.lens (\ListModelsResponse' {httpStatus} -> httpStatus) (\s@ListModelsResponse' {} a -> s {httpStatus = a} :: ListModelsResponse)
+
+instance Prelude.NFData ListModelsResponse where
+  rnf ListModelsResponse' {..} =
+    Prelude.rnf modelSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/ListSensorStatistics.hs b/gen/Amazonka/LookoutEquipment/ListSensorStatistics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/ListSensorStatistics.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.ListSensorStatistics
+-- 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 statistics about the data collected for each of the sensors that
+-- have been successfully ingested in the particular dataset. Can also be
+-- used to retreive Sensor Statistics for a previous ingestion job.
+module Amazonka.LookoutEquipment.ListSensorStatistics
+  ( -- * Creating a Request
+    ListSensorStatistics (..),
+    newListSensorStatistics,
+
+    -- * Request Lenses
+    listSensorStatistics_ingestionJobId,
+    listSensorStatistics_maxResults,
+    listSensorStatistics_nextToken,
+    listSensorStatistics_datasetName,
+
+    -- * Destructuring the Response
+    ListSensorStatisticsResponse (..),
+    newListSensorStatisticsResponse,
+
+    -- * Response Lenses
+    listSensorStatisticsResponse_nextToken,
+    listSensorStatisticsResponse_sensorStatisticsSummaries,
+    listSensorStatisticsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListSensorStatistics' smart constructor.
+data ListSensorStatistics = ListSensorStatistics'
+  { -- | The ingestion job id associated with the list of Sensor Statistics. To
+    -- get sensor statistics for a particular ingestion job id, both dataset
+    -- name and ingestion job id must be submitted as inputs.
+    ingestionJobId :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the maximum number of sensors for which to retrieve
+    -- statistics.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | An opaque pagination token indicating where to continue the listing of
+    -- sensor statistics.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the dataset associated with the list of Sensor Statistics.
+    datasetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSensorStatistics' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ingestionJobId', 'listSensorStatistics_ingestionJobId' - The ingestion job id associated with the list of Sensor Statistics. To
+-- get sensor statistics for a particular ingestion job id, both dataset
+-- name and ingestion job id must be submitted as inputs.
+--
+-- 'maxResults', 'listSensorStatistics_maxResults' - Specifies the maximum number of sensors for which to retrieve
+-- statistics.
+--
+-- 'nextToken', 'listSensorStatistics_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- sensor statistics.
+--
+-- 'datasetName', 'listSensorStatistics_datasetName' - The name of the dataset associated with the list of Sensor Statistics.
+newListSensorStatistics ::
+  -- | 'datasetName'
+  Prelude.Text ->
+  ListSensorStatistics
+newListSensorStatistics pDatasetName_ =
+  ListSensorStatistics'
+    { ingestionJobId =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      datasetName = pDatasetName_
+    }
+
+-- | The ingestion job id associated with the list of Sensor Statistics. To
+-- get sensor statistics for a particular ingestion job id, both dataset
+-- name and ingestion job id must be submitted as inputs.
+listSensorStatistics_ingestionJobId :: Lens.Lens' ListSensorStatistics (Prelude.Maybe Prelude.Text)
+listSensorStatistics_ingestionJobId = Lens.lens (\ListSensorStatistics' {ingestionJobId} -> ingestionJobId) (\s@ListSensorStatistics' {} a -> s {ingestionJobId = a} :: ListSensorStatistics)
+
+-- | Specifies the maximum number of sensors for which to retrieve
+-- statistics.
+listSensorStatistics_maxResults :: Lens.Lens' ListSensorStatistics (Prelude.Maybe Prelude.Natural)
+listSensorStatistics_maxResults = Lens.lens (\ListSensorStatistics' {maxResults} -> maxResults) (\s@ListSensorStatistics' {} a -> s {maxResults = a} :: ListSensorStatistics)
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- sensor statistics.
+listSensorStatistics_nextToken :: Lens.Lens' ListSensorStatistics (Prelude.Maybe Prelude.Text)
+listSensorStatistics_nextToken = Lens.lens (\ListSensorStatistics' {nextToken} -> nextToken) (\s@ListSensorStatistics' {} a -> s {nextToken = a} :: ListSensorStatistics)
+
+-- | The name of the dataset associated with the list of Sensor Statistics.
+listSensorStatistics_datasetName :: Lens.Lens' ListSensorStatistics Prelude.Text
+listSensorStatistics_datasetName = Lens.lens (\ListSensorStatistics' {datasetName} -> datasetName) (\s@ListSensorStatistics' {} a -> s {datasetName = a} :: ListSensorStatistics)
+
+instance Core.AWSRequest ListSensorStatistics where
+  type
+    AWSResponse ListSensorStatistics =
+      ListSensorStatisticsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSensorStatisticsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "SensorStatisticsSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListSensorStatistics where
+  hashWithSalt _salt ListSensorStatistics' {..} =
+    _salt
+      `Prelude.hashWithSalt` ingestionJobId
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` datasetName
+
+instance Prelude.NFData ListSensorStatistics where
+  rnf ListSensorStatistics' {..} =
+    Prelude.rnf ingestionJobId
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf datasetName
+
+instance Data.ToHeaders ListSensorStatistics where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.ListSensorStatistics" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListSensorStatistics where
+  toJSON ListSensorStatistics' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("IngestionJobId" Data..=)
+              Prelude.<$> ingestionJobId,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("DatasetName" Data..= datasetName)
+          ]
+      )
+
+instance Data.ToPath ListSensorStatistics where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListSensorStatistics where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListSensorStatisticsResponse' smart constructor.
+data ListSensorStatisticsResponse = ListSensorStatisticsResponse'
+  { -- | An opaque pagination token indicating where to continue the listing of
+    -- sensor statistics.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Provides ingestion-based statistics regarding the specified sensor with
+    -- respect to various validation types, such as whether data exists, the
+    -- number and percentage of missing values, and the number and percentage
+    -- of duplicate timestamps.
+    sensorStatisticsSummaries :: Prelude.Maybe [SensorStatisticsSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSensorStatisticsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSensorStatisticsResponse_nextToken' - An opaque pagination token indicating where to continue the listing of
+-- sensor statistics.
+--
+-- 'sensorStatisticsSummaries', 'listSensorStatisticsResponse_sensorStatisticsSummaries' - Provides ingestion-based statistics regarding the specified sensor with
+-- respect to various validation types, such as whether data exists, the
+-- number and percentage of missing values, and the number and percentage
+-- of duplicate timestamps.
+--
+-- 'httpStatus', 'listSensorStatisticsResponse_httpStatus' - The response's http status code.
+newListSensorStatisticsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSensorStatisticsResponse
+newListSensorStatisticsResponse pHttpStatus_ =
+  ListSensorStatisticsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      sensorStatisticsSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An opaque pagination token indicating where to continue the listing of
+-- sensor statistics.
+listSensorStatisticsResponse_nextToken :: Lens.Lens' ListSensorStatisticsResponse (Prelude.Maybe Prelude.Text)
+listSensorStatisticsResponse_nextToken = Lens.lens (\ListSensorStatisticsResponse' {nextToken} -> nextToken) (\s@ListSensorStatisticsResponse' {} a -> s {nextToken = a} :: ListSensorStatisticsResponse)
+
+-- | Provides ingestion-based statistics regarding the specified sensor with
+-- respect to various validation types, such as whether data exists, the
+-- number and percentage of missing values, and the number and percentage
+-- of duplicate timestamps.
+listSensorStatisticsResponse_sensorStatisticsSummaries :: Lens.Lens' ListSensorStatisticsResponse (Prelude.Maybe [SensorStatisticsSummary])
+listSensorStatisticsResponse_sensorStatisticsSummaries = Lens.lens (\ListSensorStatisticsResponse' {sensorStatisticsSummaries} -> sensorStatisticsSummaries) (\s@ListSensorStatisticsResponse' {} a -> s {sensorStatisticsSummaries = a} :: ListSensorStatisticsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listSensorStatisticsResponse_httpStatus :: Lens.Lens' ListSensorStatisticsResponse Prelude.Int
+listSensorStatisticsResponse_httpStatus = Lens.lens (\ListSensorStatisticsResponse' {httpStatus} -> httpStatus) (\s@ListSensorStatisticsResponse' {} a -> s {httpStatus = a} :: ListSensorStatisticsResponse)
+
+instance Prelude.NFData ListSensorStatisticsResponse where
+  rnf ListSensorStatisticsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sensorStatisticsSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/ListTagsForResource.hs b/gen/Amazonka/LookoutEquipment/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/ListTagsForResource.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.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 all the tags for a specified resource, including key and value.
+module Amazonka.LookoutEquipment.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 Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the resource (such as the dataset or
+    -- model) that is the focus of the @ListTagsForResource@ operation.
+    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 (such as the dataset or
+-- model) that is the focus of the @ListTagsForResource@ operation.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the resource (such as the dataset or
+-- model) that is the focus of the @ListTagsForResource@ operation.
+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.postJSON (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
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.ListTagsForResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTagsForResource where
+  toJSON ListTagsForResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ResourceArn" Data..= resourceArn)]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | Any tags associated with the resource.
+    tags :: Prelude.Maybe [Tag],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of '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' - Any tags associated with the resource.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Any tags associated with the resource.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe [Tag])
+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/LookoutEquipment/StartDataIngestionJob.hs b/gen/Amazonka/LookoutEquipment/StartDataIngestionJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/StartDataIngestionJob.hs
@@ -0,0 +1,248 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.StartDataIngestionJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts a data ingestion job. Amazon Lookout for Equipment returns the
+-- job status.
+module Amazonka.LookoutEquipment.StartDataIngestionJob
+  ( -- * Creating a Request
+    StartDataIngestionJob (..),
+    newStartDataIngestionJob,
+
+    -- * Request Lenses
+    startDataIngestionJob_datasetName,
+    startDataIngestionJob_ingestionInputConfiguration,
+    startDataIngestionJob_roleArn,
+    startDataIngestionJob_clientToken,
+
+    -- * Destructuring the Response
+    StartDataIngestionJobResponse (..),
+    newStartDataIngestionJobResponse,
+
+    -- * Response Lenses
+    startDataIngestionJobResponse_jobId,
+    startDataIngestionJobResponse_status,
+    startDataIngestionJobResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartDataIngestionJob' smart constructor.
+data StartDataIngestionJob = StartDataIngestionJob'
+  { -- | The name of the dataset being used by the data ingestion job.
+    datasetName :: Prelude.Text,
+    -- | Specifies information for the input data for the data ingestion job,
+    -- including dataset S3 location.
+    ingestionInputConfiguration :: IngestionInputConfiguration,
+    -- | The Amazon Resource Name (ARN) of a role with permission to access the
+    -- data source for the data ingestion job.
+    roleArn :: Prelude.Text,
+    -- | A unique identifier for the request. If you do not set the client
+    -- request token, Amazon Lookout for Equipment generates one.
+    clientToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartDataIngestionJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datasetName', 'startDataIngestionJob_datasetName' - The name of the dataset being used by the data ingestion job.
+--
+-- 'ingestionInputConfiguration', 'startDataIngestionJob_ingestionInputConfiguration' - Specifies information for the input data for the data ingestion job,
+-- including dataset S3 location.
+--
+-- 'roleArn', 'startDataIngestionJob_roleArn' - The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source for the data ingestion job.
+--
+-- 'clientToken', 'startDataIngestionJob_clientToken' - A unique identifier for the request. If you do not set the client
+-- request token, Amazon Lookout for Equipment generates one.
+newStartDataIngestionJob ::
+  -- | 'datasetName'
+  Prelude.Text ->
+  -- | 'ingestionInputConfiguration'
+  IngestionInputConfiguration ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'clientToken'
+  Prelude.Text ->
+  StartDataIngestionJob
+newStartDataIngestionJob
+  pDatasetName_
+  pIngestionInputConfiguration_
+  pRoleArn_
+  pClientToken_ =
+    StartDataIngestionJob'
+      { datasetName = pDatasetName_,
+        ingestionInputConfiguration =
+          pIngestionInputConfiguration_,
+        roleArn = pRoleArn_,
+        clientToken = pClientToken_
+      }
+
+-- | The name of the dataset being used by the data ingestion job.
+startDataIngestionJob_datasetName :: Lens.Lens' StartDataIngestionJob Prelude.Text
+startDataIngestionJob_datasetName = Lens.lens (\StartDataIngestionJob' {datasetName} -> datasetName) (\s@StartDataIngestionJob' {} a -> s {datasetName = a} :: StartDataIngestionJob)
+
+-- | Specifies information for the input data for the data ingestion job,
+-- including dataset S3 location.
+startDataIngestionJob_ingestionInputConfiguration :: Lens.Lens' StartDataIngestionJob IngestionInputConfiguration
+startDataIngestionJob_ingestionInputConfiguration = Lens.lens (\StartDataIngestionJob' {ingestionInputConfiguration} -> ingestionInputConfiguration) (\s@StartDataIngestionJob' {} a -> s {ingestionInputConfiguration = a} :: StartDataIngestionJob)
+
+-- | The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source for the data ingestion job.
+startDataIngestionJob_roleArn :: Lens.Lens' StartDataIngestionJob Prelude.Text
+startDataIngestionJob_roleArn = Lens.lens (\StartDataIngestionJob' {roleArn} -> roleArn) (\s@StartDataIngestionJob' {} a -> s {roleArn = a} :: StartDataIngestionJob)
+
+-- | A unique identifier for the request. If you do not set the client
+-- request token, Amazon Lookout for Equipment generates one.
+startDataIngestionJob_clientToken :: Lens.Lens' StartDataIngestionJob Prelude.Text
+startDataIngestionJob_clientToken = Lens.lens (\StartDataIngestionJob' {clientToken} -> clientToken) (\s@StartDataIngestionJob' {} a -> s {clientToken = a} :: StartDataIngestionJob)
+
+instance Core.AWSRequest StartDataIngestionJob where
+  type
+    AWSResponse StartDataIngestionJob =
+      StartDataIngestionJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartDataIngestionJobResponse'
+            Prelude.<$> (x Data..?> "JobId")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartDataIngestionJob where
+  hashWithSalt _salt StartDataIngestionJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` ingestionInputConfiguration
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` clientToken
+
+instance Prelude.NFData StartDataIngestionJob where
+  rnf StartDataIngestionJob' {..} =
+    Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf ingestionInputConfiguration
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf clientToken
+
+instance Data.ToHeaders StartDataIngestionJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.StartDataIngestionJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartDataIngestionJob where
+  toJSON StartDataIngestionJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("DatasetName" Data..= datasetName),
+            Prelude.Just
+              ( "IngestionInputConfiguration"
+                  Data..= ingestionInputConfiguration
+              ),
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just ("ClientToken" Data..= clientToken)
+          ]
+      )
+
+instance Data.ToPath StartDataIngestionJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartDataIngestionJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartDataIngestionJobResponse' smart constructor.
+data StartDataIngestionJobResponse = StartDataIngestionJobResponse'
+  { -- | Indicates the job ID of the data ingestion job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the @StartDataIngestionJob@ operation.
+    status :: Prelude.Maybe IngestionJobStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartDataIngestionJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'jobId', 'startDataIngestionJobResponse_jobId' - Indicates the job ID of the data ingestion job.
+--
+-- 'status', 'startDataIngestionJobResponse_status' - Indicates the status of the @StartDataIngestionJob@ operation.
+--
+-- 'httpStatus', 'startDataIngestionJobResponse_httpStatus' - The response's http status code.
+newStartDataIngestionJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartDataIngestionJobResponse
+newStartDataIngestionJobResponse pHttpStatus_ =
+  StartDataIngestionJobResponse'
+    { jobId =
+        Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Indicates the job ID of the data ingestion job.
+startDataIngestionJobResponse_jobId :: Lens.Lens' StartDataIngestionJobResponse (Prelude.Maybe Prelude.Text)
+startDataIngestionJobResponse_jobId = Lens.lens (\StartDataIngestionJobResponse' {jobId} -> jobId) (\s@StartDataIngestionJobResponse' {} a -> s {jobId = a} :: StartDataIngestionJobResponse)
+
+-- | Indicates the status of the @StartDataIngestionJob@ operation.
+startDataIngestionJobResponse_status :: Lens.Lens' StartDataIngestionJobResponse (Prelude.Maybe IngestionJobStatus)
+startDataIngestionJobResponse_status = Lens.lens (\StartDataIngestionJobResponse' {status} -> status) (\s@StartDataIngestionJobResponse' {} a -> s {status = a} :: StartDataIngestionJobResponse)
+
+-- | The response's http status code.
+startDataIngestionJobResponse_httpStatus :: Lens.Lens' StartDataIngestionJobResponse Prelude.Int
+startDataIngestionJobResponse_httpStatus = Lens.lens (\StartDataIngestionJobResponse' {httpStatus} -> httpStatus) (\s@StartDataIngestionJobResponse' {} a -> s {httpStatus = a} :: StartDataIngestionJobResponse)
+
+instance Prelude.NFData StartDataIngestionJobResponse where
+  rnf StartDataIngestionJobResponse' {..} =
+    Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/StartInferenceScheduler.hs b/gen/Amazonka/LookoutEquipment/StartInferenceScheduler.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/StartInferenceScheduler.hs
@@ -0,0 +1,230 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.StartInferenceScheduler
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts an inference scheduler.
+module Amazonka.LookoutEquipment.StartInferenceScheduler
+  ( -- * Creating a Request
+    StartInferenceScheduler (..),
+    newStartInferenceScheduler,
+
+    -- * Request Lenses
+    startInferenceScheduler_inferenceSchedulerName,
+
+    -- * Destructuring the Response
+    StartInferenceSchedulerResponse (..),
+    newStartInferenceSchedulerResponse,
+
+    -- * Response Lenses
+    startInferenceSchedulerResponse_inferenceSchedulerArn,
+    startInferenceSchedulerResponse_inferenceSchedulerName,
+    startInferenceSchedulerResponse_modelArn,
+    startInferenceSchedulerResponse_modelName,
+    startInferenceSchedulerResponse_status,
+    startInferenceSchedulerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartInferenceScheduler' smart constructor.
+data StartInferenceScheduler = StartInferenceScheduler'
+  { -- | The name of the inference scheduler to be started.
+    inferenceSchedulerName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartInferenceScheduler' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceSchedulerName', 'startInferenceScheduler_inferenceSchedulerName' - The name of the inference scheduler to be started.
+newStartInferenceScheduler ::
+  -- | 'inferenceSchedulerName'
+  Prelude.Text ->
+  StartInferenceScheduler
+newStartInferenceScheduler pInferenceSchedulerName_ =
+  StartInferenceScheduler'
+    { inferenceSchedulerName =
+        pInferenceSchedulerName_
+    }
+
+-- | The name of the inference scheduler to be started.
+startInferenceScheduler_inferenceSchedulerName :: Lens.Lens' StartInferenceScheduler Prelude.Text
+startInferenceScheduler_inferenceSchedulerName = Lens.lens (\StartInferenceScheduler' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@StartInferenceScheduler' {} a -> s {inferenceSchedulerName = a} :: StartInferenceScheduler)
+
+instance Core.AWSRequest StartInferenceScheduler where
+  type
+    AWSResponse StartInferenceScheduler =
+      StartInferenceSchedulerResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartInferenceSchedulerResponse'
+            Prelude.<$> (x Data..?> "InferenceSchedulerArn")
+            Prelude.<*> (x Data..?> "InferenceSchedulerName")
+            Prelude.<*> (x Data..?> "ModelArn")
+            Prelude.<*> (x Data..?> "ModelName")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartInferenceScheduler where
+  hashWithSalt _salt StartInferenceScheduler' {..} =
+    _salt `Prelude.hashWithSalt` inferenceSchedulerName
+
+instance Prelude.NFData StartInferenceScheduler where
+  rnf StartInferenceScheduler' {..} =
+    Prelude.rnf inferenceSchedulerName
+
+instance Data.ToHeaders StartInferenceScheduler where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.StartInferenceScheduler" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartInferenceScheduler where
+  toJSON StartInferenceScheduler' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "InferenceSchedulerName"
+                  Data..= inferenceSchedulerName
+              )
+          ]
+      )
+
+instance Data.ToPath StartInferenceScheduler where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartInferenceScheduler where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartInferenceSchedulerResponse' smart constructor.
+data StartInferenceSchedulerResponse = StartInferenceSchedulerResponse'
+  { -- | The Amazon Resource Name (ARN) of the inference scheduler being started.
+    inferenceSchedulerArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the inference scheduler being started.
+    inferenceSchedulerName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the ML model being used by the
+    -- inference scheduler.
+    modelArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the ML model being used by the inference scheduler.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the inference scheduler.
+    status :: Prelude.Maybe InferenceSchedulerStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartInferenceSchedulerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceSchedulerArn', 'startInferenceSchedulerResponse_inferenceSchedulerArn' - The Amazon Resource Name (ARN) of the inference scheduler being started.
+--
+-- 'inferenceSchedulerName', 'startInferenceSchedulerResponse_inferenceSchedulerName' - The name of the inference scheduler being started.
+--
+-- 'modelArn', 'startInferenceSchedulerResponse_modelArn' - The Amazon Resource Name (ARN) of the ML model being used by the
+-- inference scheduler.
+--
+-- 'modelName', 'startInferenceSchedulerResponse_modelName' - The name of the ML model being used by the inference scheduler.
+--
+-- 'status', 'startInferenceSchedulerResponse_status' - Indicates the status of the inference scheduler.
+--
+-- 'httpStatus', 'startInferenceSchedulerResponse_httpStatus' - The response's http status code.
+newStartInferenceSchedulerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartInferenceSchedulerResponse
+newStartInferenceSchedulerResponse pHttpStatus_ =
+  StartInferenceSchedulerResponse'
+    { inferenceSchedulerArn =
+        Prelude.Nothing,
+      inferenceSchedulerName = Prelude.Nothing,
+      modelArn = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the inference scheduler being started.
+startInferenceSchedulerResponse_inferenceSchedulerArn :: Lens.Lens' StartInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+startInferenceSchedulerResponse_inferenceSchedulerArn = Lens.lens (\StartInferenceSchedulerResponse' {inferenceSchedulerArn} -> inferenceSchedulerArn) (\s@StartInferenceSchedulerResponse' {} a -> s {inferenceSchedulerArn = a} :: StartInferenceSchedulerResponse)
+
+-- | The name of the inference scheduler being started.
+startInferenceSchedulerResponse_inferenceSchedulerName :: Lens.Lens' StartInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+startInferenceSchedulerResponse_inferenceSchedulerName = Lens.lens (\StartInferenceSchedulerResponse' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@StartInferenceSchedulerResponse' {} a -> s {inferenceSchedulerName = a} :: StartInferenceSchedulerResponse)
+
+-- | The Amazon Resource Name (ARN) of the ML model being used by the
+-- inference scheduler.
+startInferenceSchedulerResponse_modelArn :: Lens.Lens' StartInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+startInferenceSchedulerResponse_modelArn = Lens.lens (\StartInferenceSchedulerResponse' {modelArn} -> modelArn) (\s@StartInferenceSchedulerResponse' {} a -> s {modelArn = a} :: StartInferenceSchedulerResponse)
+
+-- | The name of the ML model being used by the inference scheduler.
+startInferenceSchedulerResponse_modelName :: Lens.Lens' StartInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+startInferenceSchedulerResponse_modelName = Lens.lens (\StartInferenceSchedulerResponse' {modelName} -> modelName) (\s@StartInferenceSchedulerResponse' {} a -> s {modelName = a} :: StartInferenceSchedulerResponse)
+
+-- | Indicates the status of the inference scheduler.
+startInferenceSchedulerResponse_status :: Lens.Lens' StartInferenceSchedulerResponse (Prelude.Maybe InferenceSchedulerStatus)
+startInferenceSchedulerResponse_status = Lens.lens (\StartInferenceSchedulerResponse' {status} -> status) (\s@StartInferenceSchedulerResponse' {} a -> s {status = a} :: StartInferenceSchedulerResponse)
+
+-- | The response's http status code.
+startInferenceSchedulerResponse_httpStatus :: Lens.Lens' StartInferenceSchedulerResponse Prelude.Int
+startInferenceSchedulerResponse_httpStatus = Lens.lens (\StartInferenceSchedulerResponse' {httpStatus} -> httpStatus) (\s@StartInferenceSchedulerResponse' {} a -> s {httpStatus = a} :: StartInferenceSchedulerResponse)
+
+instance
+  Prelude.NFData
+    StartInferenceSchedulerResponse
+  where
+  rnf StartInferenceSchedulerResponse' {..} =
+    Prelude.rnf inferenceSchedulerArn
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
+      `Prelude.seq` Prelude.rnf modelArn
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/StopInferenceScheduler.hs b/gen/Amazonka/LookoutEquipment/StopInferenceScheduler.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/StopInferenceScheduler.hs
@@ -0,0 +1,230 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.StopInferenceScheduler
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops an inference scheduler.
+module Amazonka.LookoutEquipment.StopInferenceScheduler
+  ( -- * Creating a Request
+    StopInferenceScheduler (..),
+    newStopInferenceScheduler,
+
+    -- * Request Lenses
+    stopInferenceScheduler_inferenceSchedulerName,
+
+    -- * Destructuring the Response
+    StopInferenceSchedulerResponse (..),
+    newStopInferenceSchedulerResponse,
+
+    -- * Response Lenses
+    stopInferenceSchedulerResponse_inferenceSchedulerArn,
+    stopInferenceSchedulerResponse_inferenceSchedulerName,
+    stopInferenceSchedulerResponse_modelArn,
+    stopInferenceSchedulerResponse_modelName,
+    stopInferenceSchedulerResponse_status,
+    stopInferenceSchedulerResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStopInferenceScheduler' smart constructor.
+data StopInferenceScheduler = StopInferenceScheduler'
+  { -- | The name of the inference scheduler to be stopped.
+    inferenceSchedulerName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopInferenceScheduler' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceSchedulerName', 'stopInferenceScheduler_inferenceSchedulerName' - The name of the inference scheduler to be stopped.
+newStopInferenceScheduler ::
+  -- | 'inferenceSchedulerName'
+  Prelude.Text ->
+  StopInferenceScheduler
+newStopInferenceScheduler pInferenceSchedulerName_ =
+  StopInferenceScheduler'
+    { inferenceSchedulerName =
+        pInferenceSchedulerName_
+    }
+
+-- | The name of the inference scheduler to be stopped.
+stopInferenceScheduler_inferenceSchedulerName :: Lens.Lens' StopInferenceScheduler Prelude.Text
+stopInferenceScheduler_inferenceSchedulerName = Lens.lens (\StopInferenceScheduler' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@StopInferenceScheduler' {} a -> s {inferenceSchedulerName = a} :: StopInferenceScheduler)
+
+instance Core.AWSRequest StopInferenceScheduler where
+  type
+    AWSResponse StopInferenceScheduler =
+      StopInferenceSchedulerResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StopInferenceSchedulerResponse'
+            Prelude.<$> (x Data..?> "InferenceSchedulerArn")
+            Prelude.<*> (x Data..?> "InferenceSchedulerName")
+            Prelude.<*> (x Data..?> "ModelArn")
+            Prelude.<*> (x Data..?> "ModelName")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopInferenceScheduler where
+  hashWithSalt _salt StopInferenceScheduler' {..} =
+    _salt `Prelude.hashWithSalt` inferenceSchedulerName
+
+instance Prelude.NFData StopInferenceScheduler where
+  rnf StopInferenceScheduler' {..} =
+    Prelude.rnf inferenceSchedulerName
+
+instance Data.ToHeaders StopInferenceScheduler where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.StopInferenceScheduler" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopInferenceScheduler where
+  toJSON StopInferenceScheduler' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "InferenceSchedulerName"
+                  Data..= inferenceSchedulerName
+              )
+          ]
+      )
+
+instance Data.ToPath StopInferenceScheduler where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopInferenceScheduler where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopInferenceSchedulerResponse' smart constructor.
+data StopInferenceSchedulerResponse = StopInferenceSchedulerResponse'
+  { -- | The Amazon Resource Name (ARN) of the inference schedule being stopped.
+    inferenceSchedulerArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the inference scheduler being stopped.
+    inferenceSchedulerName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the ML model used by the inference
+    -- scheduler being stopped.
+    modelArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the ML model used by the inference scheduler being stopped.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the inference scheduler.
+    status :: Prelude.Maybe InferenceSchedulerStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopInferenceSchedulerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceSchedulerArn', 'stopInferenceSchedulerResponse_inferenceSchedulerArn' - The Amazon Resource Name (ARN) of the inference schedule being stopped.
+--
+-- 'inferenceSchedulerName', 'stopInferenceSchedulerResponse_inferenceSchedulerName' - The name of the inference scheduler being stopped.
+--
+-- 'modelArn', 'stopInferenceSchedulerResponse_modelArn' - The Amazon Resource Name (ARN) of the ML model used by the inference
+-- scheduler being stopped.
+--
+-- 'modelName', 'stopInferenceSchedulerResponse_modelName' - The name of the ML model used by the inference scheduler being stopped.
+--
+-- 'status', 'stopInferenceSchedulerResponse_status' - Indicates the status of the inference scheduler.
+--
+-- 'httpStatus', 'stopInferenceSchedulerResponse_httpStatus' - The response's http status code.
+newStopInferenceSchedulerResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopInferenceSchedulerResponse
+newStopInferenceSchedulerResponse pHttpStatus_ =
+  StopInferenceSchedulerResponse'
+    { inferenceSchedulerArn =
+        Prelude.Nothing,
+      inferenceSchedulerName = Prelude.Nothing,
+      modelArn = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the inference schedule being stopped.
+stopInferenceSchedulerResponse_inferenceSchedulerArn :: Lens.Lens' StopInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+stopInferenceSchedulerResponse_inferenceSchedulerArn = Lens.lens (\StopInferenceSchedulerResponse' {inferenceSchedulerArn} -> inferenceSchedulerArn) (\s@StopInferenceSchedulerResponse' {} a -> s {inferenceSchedulerArn = a} :: StopInferenceSchedulerResponse)
+
+-- | The name of the inference scheduler being stopped.
+stopInferenceSchedulerResponse_inferenceSchedulerName :: Lens.Lens' StopInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+stopInferenceSchedulerResponse_inferenceSchedulerName = Lens.lens (\StopInferenceSchedulerResponse' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@StopInferenceSchedulerResponse' {} a -> s {inferenceSchedulerName = a} :: StopInferenceSchedulerResponse)
+
+-- | The Amazon Resource Name (ARN) of the ML model used by the inference
+-- scheduler being stopped.
+stopInferenceSchedulerResponse_modelArn :: Lens.Lens' StopInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+stopInferenceSchedulerResponse_modelArn = Lens.lens (\StopInferenceSchedulerResponse' {modelArn} -> modelArn) (\s@StopInferenceSchedulerResponse' {} a -> s {modelArn = a} :: StopInferenceSchedulerResponse)
+
+-- | The name of the ML model used by the inference scheduler being stopped.
+stopInferenceSchedulerResponse_modelName :: Lens.Lens' StopInferenceSchedulerResponse (Prelude.Maybe Prelude.Text)
+stopInferenceSchedulerResponse_modelName = Lens.lens (\StopInferenceSchedulerResponse' {modelName} -> modelName) (\s@StopInferenceSchedulerResponse' {} a -> s {modelName = a} :: StopInferenceSchedulerResponse)
+
+-- | Indicates the status of the inference scheduler.
+stopInferenceSchedulerResponse_status :: Lens.Lens' StopInferenceSchedulerResponse (Prelude.Maybe InferenceSchedulerStatus)
+stopInferenceSchedulerResponse_status = Lens.lens (\StopInferenceSchedulerResponse' {status} -> status) (\s@StopInferenceSchedulerResponse' {} a -> s {status = a} :: StopInferenceSchedulerResponse)
+
+-- | The response's http status code.
+stopInferenceSchedulerResponse_httpStatus :: Lens.Lens' StopInferenceSchedulerResponse Prelude.Int
+stopInferenceSchedulerResponse_httpStatus = Lens.lens (\StopInferenceSchedulerResponse' {httpStatus} -> httpStatus) (\s@StopInferenceSchedulerResponse' {} a -> s {httpStatus = a} :: StopInferenceSchedulerResponse)
+
+instance
+  Prelude.NFData
+    StopInferenceSchedulerResponse
+  where
+  rnf StopInferenceSchedulerResponse' {..} =
+    Prelude.rnf inferenceSchedulerArn
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
+      `Prelude.seq` Prelude.rnf modelArn
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/LookoutEquipment/TagResource.hs b/gen/Amazonka/LookoutEquipment/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/TagResource.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.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)
+--
+-- Associates a given tag to a resource in your account. A tag is a
+-- key-value pair which can be added to an Amazon Lookout for Equipment
+-- resource as metadata. Tags can be used for organizing your resources as
+-- well as helping you to search and filter by tag. Multiple tags can be
+-- added to a resource, either when you create it, or later. Up to 50 tags
+-- can be associated with each resource.
+module Amazonka.LookoutEquipment.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 Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the specific resource to which the tag
+    -- should be associated.
+    resourceArn :: Prelude.Text,
+    -- | The tag or tags to be associated with a specific resource. Both the tag
+    -- key and value are specified.
+    tags :: [Tag]
+  }
+  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 specific resource to which the tag
+-- should be associated.
+--
+-- 'tags', 'tagResource_tags' - The tag or tags to be associated with a specific resource. Both the tag
+-- key and value are specified.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the specific resource to which the tag
+-- should be associated.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | The tag or tags to be associated with a specific resource. Both the tag
+-- key and value are specified.
+tagResource_tags :: Lens.Lens' TagResource [Tag]
+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.postJSON (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
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.TagResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),
+            Prelude.Just ("Tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath TagResource where
+  toPath = Prelude.const "/"
+
+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/LookoutEquipment/Types.hs b/gen/Amazonka/LookoutEquipment/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types.hs
@@ -0,0 +1,502 @@
+{-# 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.LookoutEquipment.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.LookoutEquipment.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * DataUploadFrequency
+    DataUploadFrequency (..),
+
+    -- * DatasetStatus
+    DatasetStatus (..),
+
+    -- * InferenceExecutionStatus
+    InferenceExecutionStatus (..),
+
+    -- * InferenceSchedulerStatus
+    InferenceSchedulerStatus (..),
+
+    -- * IngestionJobStatus
+    IngestionJobStatus (..),
+
+    -- * LabelRating
+    LabelRating (..),
+
+    -- * LatestInferenceResult
+    LatestInferenceResult (..),
+
+    -- * ModelStatus
+    ModelStatus (..),
+
+    -- * Monotonicity
+    Monotonicity (..),
+
+    -- * StatisticalIssueStatus
+    StatisticalIssueStatus (..),
+
+    -- * TargetSamplingRate
+    TargetSamplingRate (..),
+
+    -- * CategoricalValues
+    CategoricalValues (..),
+    newCategoricalValues,
+    categoricalValues_numberOfCategory,
+    categoricalValues_status,
+
+    -- * CountPercent
+    CountPercent (..),
+    newCountPercent,
+    countPercent_count,
+    countPercent_percentage,
+
+    -- * DataIngestionJobSummary
+    DataIngestionJobSummary (..),
+    newDataIngestionJobSummary,
+    dataIngestionJobSummary_datasetArn,
+    dataIngestionJobSummary_datasetName,
+    dataIngestionJobSummary_ingestionInputConfiguration,
+    dataIngestionJobSummary_jobId,
+    dataIngestionJobSummary_status,
+
+    -- * DataPreProcessingConfiguration
+    DataPreProcessingConfiguration (..),
+    newDataPreProcessingConfiguration,
+    dataPreProcessingConfiguration_targetSamplingRate,
+
+    -- * DataQualitySummary
+    DataQualitySummary (..),
+    newDataQualitySummary,
+    dataQualitySummary_insufficientSensorData,
+    dataQualitySummary_missingSensorData,
+    dataQualitySummary_invalidSensorData,
+    dataQualitySummary_unsupportedTimestamps,
+    dataQualitySummary_duplicateTimestamps,
+
+    -- * DatasetSchema
+    DatasetSchema (..),
+    newDatasetSchema,
+    datasetSchema_inlineDataSchema,
+
+    -- * DatasetSummary
+    DatasetSummary (..),
+    newDatasetSummary,
+    datasetSummary_createdAt,
+    datasetSummary_datasetArn,
+    datasetSummary_datasetName,
+    datasetSummary_status,
+
+    -- * DuplicateTimestamps
+    DuplicateTimestamps (..),
+    newDuplicateTimestamps,
+    duplicateTimestamps_totalNumberOfDuplicateTimestamps,
+
+    -- * InferenceEventSummary
+    InferenceEventSummary (..),
+    newInferenceEventSummary,
+    inferenceEventSummary_diagnostics,
+    inferenceEventSummary_eventDurationInSeconds,
+    inferenceEventSummary_eventEndTime,
+    inferenceEventSummary_eventStartTime,
+    inferenceEventSummary_inferenceSchedulerArn,
+    inferenceEventSummary_inferenceSchedulerName,
+
+    -- * InferenceExecutionSummary
+    InferenceExecutionSummary (..),
+    newInferenceExecutionSummary,
+    inferenceExecutionSummary_customerResultObject,
+    inferenceExecutionSummary_dataEndTime,
+    inferenceExecutionSummary_dataInputConfiguration,
+    inferenceExecutionSummary_dataOutputConfiguration,
+    inferenceExecutionSummary_dataStartTime,
+    inferenceExecutionSummary_failedReason,
+    inferenceExecutionSummary_inferenceSchedulerArn,
+    inferenceExecutionSummary_inferenceSchedulerName,
+    inferenceExecutionSummary_modelArn,
+    inferenceExecutionSummary_modelName,
+    inferenceExecutionSummary_scheduledStartTime,
+    inferenceExecutionSummary_status,
+
+    -- * InferenceInputConfiguration
+    InferenceInputConfiguration (..),
+    newInferenceInputConfiguration,
+    inferenceInputConfiguration_inferenceInputNameConfiguration,
+    inferenceInputConfiguration_inputTimeZoneOffset,
+    inferenceInputConfiguration_s3InputConfiguration,
+
+    -- * InferenceInputNameConfiguration
+    InferenceInputNameConfiguration (..),
+    newInferenceInputNameConfiguration,
+    inferenceInputNameConfiguration_componentTimestampDelimiter,
+    inferenceInputNameConfiguration_timestampFormat,
+
+    -- * InferenceOutputConfiguration
+    InferenceOutputConfiguration (..),
+    newInferenceOutputConfiguration,
+    inferenceOutputConfiguration_kmsKeyId,
+    inferenceOutputConfiguration_s3OutputConfiguration,
+
+    -- * InferenceS3InputConfiguration
+    InferenceS3InputConfiguration (..),
+    newInferenceS3InputConfiguration,
+    inferenceS3InputConfiguration_prefix,
+    inferenceS3InputConfiguration_bucket,
+
+    -- * InferenceS3OutputConfiguration
+    InferenceS3OutputConfiguration (..),
+    newInferenceS3OutputConfiguration,
+    inferenceS3OutputConfiguration_prefix,
+    inferenceS3OutputConfiguration_bucket,
+
+    -- * InferenceSchedulerSummary
+    InferenceSchedulerSummary (..),
+    newInferenceSchedulerSummary,
+    inferenceSchedulerSummary_dataDelayOffsetInMinutes,
+    inferenceSchedulerSummary_dataUploadFrequency,
+    inferenceSchedulerSummary_inferenceSchedulerArn,
+    inferenceSchedulerSummary_inferenceSchedulerName,
+    inferenceSchedulerSummary_latestInferenceResult,
+    inferenceSchedulerSummary_modelArn,
+    inferenceSchedulerSummary_modelName,
+    inferenceSchedulerSummary_status,
+
+    -- * IngestedFilesSummary
+    IngestedFilesSummary (..),
+    newIngestedFilesSummary,
+    ingestedFilesSummary_discardedFiles,
+    ingestedFilesSummary_totalNumberOfFiles,
+    ingestedFilesSummary_ingestedNumberOfFiles,
+
+    -- * IngestionInputConfiguration
+    IngestionInputConfiguration (..),
+    newIngestionInputConfiguration,
+    ingestionInputConfiguration_s3InputConfiguration,
+
+    -- * IngestionS3InputConfiguration
+    IngestionS3InputConfiguration (..),
+    newIngestionS3InputConfiguration,
+    ingestionS3InputConfiguration_keyPattern,
+    ingestionS3InputConfiguration_prefix,
+    ingestionS3InputConfiguration_bucket,
+
+    -- * InsufficientSensorData
+    InsufficientSensorData (..),
+    newInsufficientSensorData,
+    insufficientSensorData_missingCompleteSensorData,
+    insufficientSensorData_sensorsWithShortDateRange,
+
+    -- * InvalidSensorData
+    InvalidSensorData (..),
+    newInvalidSensorData,
+    invalidSensorData_affectedSensorCount,
+    invalidSensorData_totalNumberOfInvalidValues,
+
+    -- * LabelGroupSummary
+    LabelGroupSummary (..),
+    newLabelGroupSummary,
+    labelGroupSummary_createdAt,
+    labelGroupSummary_labelGroupArn,
+    labelGroupSummary_labelGroupName,
+    labelGroupSummary_updatedAt,
+
+    -- * LabelSummary
+    LabelSummary (..),
+    newLabelSummary,
+    labelSummary_createdAt,
+    labelSummary_endTime,
+    labelSummary_equipment,
+    labelSummary_faultCode,
+    labelSummary_labelGroupArn,
+    labelSummary_labelGroupName,
+    labelSummary_labelId,
+    labelSummary_rating,
+    labelSummary_startTime,
+
+    -- * LabelsInputConfiguration
+    LabelsInputConfiguration (..),
+    newLabelsInputConfiguration,
+    labelsInputConfiguration_labelGroupName,
+    labelsInputConfiguration_s3InputConfiguration,
+
+    -- * LabelsS3InputConfiguration
+    LabelsS3InputConfiguration (..),
+    newLabelsS3InputConfiguration,
+    labelsS3InputConfiguration_prefix,
+    labelsS3InputConfiguration_bucket,
+
+    -- * LargeTimestampGaps
+    LargeTimestampGaps (..),
+    newLargeTimestampGaps,
+    largeTimestampGaps_maxTimestampGapInDays,
+    largeTimestampGaps_numberOfLargeTimestampGaps,
+    largeTimestampGaps_status,
+
+    -- * MissingCompleteSensorData
+    MissingCompleteSensorData (..),
+    newMissingCompleteSensorData,
+    missingCompleteSensorData_affectedSensorCount,
+
+    -- * MissingSensorData
+    MissingSensorData (..),
+    newMissingSensorData,
+    missingSensorData_affectedSensorCount,
+    missingSensorData_totalNumberOfMissingValues,
+
+    -- * ModelSummary
+    ModelSummary (..),
+    newModelSummary,
+    modelSummary_createdAt,
+    modelSummary_datasetArn,
+    modelSummary_datasetName,
+    modelSummary_modelArn,
+    modelSummary_modelName,
+    modelSummary_status,
+
+    -- * MonotonicValues
+    MonotonicValues (..),
+    newMonotonicValues,
+    monotonicValues_monotonicity,
+    monotonicValues_status,
+
+    -- * MultipleOperatingModes
+    MultipleOperatingModes (..),
+    newMultipleOperatingModes,
+    multipleOperatingModes_status,
+
+    -- * S3Object
+    S3Object (..),
+    newS3Object,
+    s3Object_bucket,
+    s3Object_key,
+
+    -- * SensorStatisticsSummary
+    SensorStatisticsSummary (..),
+    newSensorStatisticsSummary,
+    sensorStatisticsSummary_categoricalValues,
+    sensorStatisticsSummary_componentName,
+    sensorStatisticsSummary_dataEndTime,
+    sensorStatisticsSummary_dataExists,
+    sensorStatisticsSummary_dataStartTime,
+    sensorStatisticsSummary_duplicateTimestamps,
+    sensorStatisticsSummary_invalidDateEntries,
+    sensorStatisticsSummary_invalidValues,
+    sensorStatisticsSummary_largeTimestampGaps,
+    sensorStatisticsSummary_missingValues,
+    sensorStatisticsSummary_monotonicValues,
+    sensorStatisticsSummary_multipleOperatingModes,
+    sensorStatisticsSummary_sensorName,
+
+    -- * SensorsWithShortDateRange
+    SensorsWithShortDateRange (..),
+    newSensorsWithShortDateRange,
+    sensorsWithShortDateRange_affectedSensorCount,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+
+    -- * UnsupportedTimestamps
+    UnsupportedTimestamps (..),
+    newUnsupportedTimestamps,
+    unsupportedTimestamps_totalNumberOfUnsupportedTimestamps,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.LookoutEquipment.Types.CategoricalValues
+import Amazonka.LookoutEquipment.Types.CountPercent
+import Amazonka.LookoutEquipment.Types.DataIngestionJobSummary
+import Amazonka.LookoutEquipment.Types.DataPreProcessingConfiguration
+import Amazonka.LookoutEquipment.Types.DataQualitySummary
+import Amazonka.LookoutEquipment.Types.DataUploadFrequency
+import Amazonka.LookoutEquipment.Types.DatasetSchema
+import Amazonka.LookoutEquipment.Types.DatasetStatus
+import Amazonka.LookoutEquipment.Types.DatasetSummary
+import Amazonka.LookoutEquipment.Types.DuplicateTimestamps
+import Amazonka.LookoutEquipment.Types.InferenceEventSummary
+import Amazonka.LookoutEquipment.Types.InferenceExecutionStatus
+import Amazonka.LookoutEquipment.Types.InferenceExecutionSummary
+import Amazonka.LookoutEquipment.Types.InferenceInputConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceInputNameConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceOutputConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceS3InputConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceS3OutputConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceSchedulerStatus
+import Amazonka.LookoutEquipment.Types.InferenceSchedulerSummary
+import Amazonka.LookoutEquipment.Types.IngestedFilesSummary
+import Amazonka.LookoutEquipment.Types.IngestionInputConfiguration
+import Amazonka.LookoutEquipment.Types.IngestionJobStatus
+import Amazonka.LookoutEquipment.Types.IngestionS3InputConfiguration
+import Amazonka.LookoutEquipment.Types.InsufficientSensorData
+import Amazonka.LookoutEquipment.Types.InvalidSensorData
+import Amazonka.LookoutEquipment.Types.LabelGroupSummary
+import Amazonka.LookoutEquipment.Types.LabelRating
+import Amazonka.LookoutEquipment.Types.LabelSummary
+import Amazonka.LookoutEquipment.Types.LabelsInputConfiguration
+import Amazonka.LookoutEquipment.Types.LabelsS3InputConfiguration
+import Amazonka.LookoutEquipment.Types.LargeTimestampGaps
+import Amazonka.LookoutEquipment.Types.LatestInferenceResult
+import Amazonka.LookoutEquipment.Types.MissingCompleteSensorData
+import Amazonka.LookoutEquipment.Types.MissingSensorData
+import Amazonka.LookoutEquipment.Types.ModelStatus
+import Amazonka.LookoutEquipment.Types.ModelSummary
+import Amazonka.LookoutEquipment.Types.MonotonicValues
+import Amazonka.LookoutEquipment.Types.Monotonicity
+import Amazonka.LookoutEquipment.Types.MultipleOperatingModes
+import Amazonka.LookoutEquipment.Types.S3Object
+import Amazonka.LookoutEquipment.Types.SensorStatisticsSummary
+import Amazonka.LookoutEquipment.Types.SensorsWithShortDateRange
+import Amazonka.LookoutEquipment.Types.StatisticalIssueStatus
+import Amazonka.LookoutEquipment.Types.Tag
+import Amazonka.LookoutEquipment.Types.TargetSamplingRate
+import Amazonka.LookoutEquipment.Types.UnsupportedTimestamps
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2020-12-15@ of the Amazon Lookout for Equipment SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "LookoutEquipment",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "lookoutequipment",
+      Core.signingName = "lookoutequipment",
+      Core.version = "2020-12-15",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "LookoutEquipment",
+      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
+
+-- | The request could not be completed because you do not have access to the
+-- resource.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+
+-- | The request could not be completed due to a conflict with the current
+-- state of the target resource.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+
+-- | Processing of the request has failed because of an unknown error,
+-- exception or failure.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+
+-- | The resource requested could not be found. Verify the resource ID and
+-- retry your request.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+
+-- | Resource limitations have been exceeded.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+
+-- | The request was denied due to request throttling.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+
+-- | The input fails to satisfy constraints specified by Amazon Lookout for
+-- Equipment or a related AWS service that\'s being utilized.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
diff --git a/gen/Amazonka/LookoutEquipment/Types/CategoricalValues.hs b/gen/Amazonka/LookoutEquipment/Types/CategoricalValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/CategoricalValues.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.LookoutEquipment.Types.CategoricalValues
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.CategoricalValues where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.StatisticalIssueStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises information on categorical values in data.
+--
+-- /See:/ 'newCategoricalValues' smart constructor.
+data CategoricalValues = CategoricalValues'
+  { -- | Indicates the number of categories in the data.
+    numberOfCategory :: Prelude.Maybe Prelude.Int,
+    -- | Indicates whether there is a potential data issue related to categorical
+    -- values.
+    status :: StatisticalIssueStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CategoricalValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'numberOfCategory', 'categoricalValues_numberOfCategory' - Indicates the number of categories in the data.
+--
+-- 'status', 'categoricalValues_status' - Indicates whether there is a potential data issue related to categorical
+-- values.
+newCategoricalValues ::
+  -- | 'status'
+  StatisticalIssueStatus ->
+  CategoricalValues
+newCategoricalValues pStatus_ =
+  CategoricalValues'
+    { numberOfCategory =
+        Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Indicates the number of categories in the data.
+categoricalValues_numberOfCategory :: Lens.Lens' CategoricalValues (Prelude.Maybe Prelude.Int)
+categoricalValues_numberOfCategory = Lens.lens (\CategoricalValues' {numberOfCategory} -> numberOfCategory) (\s@CategoricalValues' {} a -> s {numberOfCategory = a} :: CategoricalValues)
+
+-- | Indicates whether there is a potential data issue related to categorical
+-- values.
+categoricalValues_status :: Lens.Lens' CategoricalValues StatisticalIssueStatus
+categoricalValues_status = Lens.lens (\CategoricalValues' {status} -> status) (\s@CategoricalValues' {} a -> s {status = a} :: CategoricalValues)
+
+instance Data.FromJSON CategoricalValues where
+  parseJSON =
+    Data.withObject
+      "CategoricalValues"
+      ( \x ->
+          CategoricalValues'
+            Prelude.<$> (x Data..:? "NumberOfCategory")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable CategoricalValues where
+  hashWithSalt _salt CategoricalValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` numberOfCategory
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData CategoricalValues where
+  rnf CategoricalValues' {..} =
+    Prelude.rnf numberOfCategory
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/LookoutEquipment/Types/CountPercent.hs b/gen/Amazonka/LookoutEquipment/Types/CountPercent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/CountPercent.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.CountPercent
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.CountPercent where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises information of count and percentage.
+--
+-- /See:/ 'newCountPercent' smart constructor.
+data CountPercent = CountPercent'
+  { -- | Indicates the count of occurences of the given statistic.
+    count :: Prelude.Int,
+    -- | Indicates the percentage of occurances of the given statistic.
+    percentage :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CountPercent' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'count', 'countPercent_count' - Indicates the count of occurences of the given statistic.
+--
+-- 'percentage', 'countPercent_percentage' - Indicates the percentage of occurances of the given statistic.
+newCountPercent ::
+  -- | 'count'
+  Prelude.Int ->
+  -- | 'percentage'
+  Prelude.Double ->
+  CountPercent
+newCountPercent pCount_ pPercentage_ =
+  CountPercent'
+    { count = pCount_,
+      percentage = pPercentage_
+    }
+
+-- | Indicates the count of occurences of the given statistic.
+countPercent_count :: Lens.Lens' CountPercent Prelude.Int
+countPercent_count = Lens.lens (\CountPercent' {count} -> count) (\s@CountPercent' {} a -> s {count = a} :: CountPercent)
+
+-- | Indicates the percentage of occurances of the given statistic.
+countPercent_percentage :: Lens.Lens' CountPercent Prelude.Double
+countPercent_percentage = Lens.lens (\CountPercent' {percentage} -> percentage) (\s@CountPercent' {} a -> s {percentage = a} :: CountPercent)
+
+instance Data.FromJSON CountPercent where
+  parseJSON =
+    Data.withObject
+      "CountPercent"
+      ( \x ->
+          CountPercent'
+            Prelude.<$> (x Data..: "Count")
+            Prelude.<*> (x Data..: "Percentage")
+      )
+
+instance Prelude.Hashable CountPercent where
+  hashWithSalt _salt CountPercent' {..} =
+    _salt
+      `Prelude.hashWithSalt` count
+      `Prelude.hashWithSalt` percentage
+
+instance Prelude.NFData CountPercent where
+  rnf CountPercent' {..} =
+    Prelude.rnf count
+      `Prelude.seq` Prelude.rnf percentage
diff --git a/gen/Amazonka/LookoutEquipment/Types/DataIngestionJobSummary.hs b/gen/Amazonka/LookoutEquipment/Types/DataIngestionJobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/DataIngestionJobSummary.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.DataIngestionJobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.DataIngestionJobSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.IngestionInputConfiguration
+import Amazonka.LookoutEquipment.Types.IngestionJobStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides information about a specified data ingestion job, including
+-- dataset information, data ingestion configuration, and status.
+--
+-- /See:/ 'newDataIngestionJobSummary' smart constructor.
+data DataIngestionJobSummary = DataIngestionJobSummary'
+  { -- | The Amazon Resource Name (ARN) of the dataset used in the data ingestion
+    -- job.
+    datasetArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the dataset used for the data ingestion job.
+    datasetName :: Prelude.Maybe Prelude.Text,
+    -- | Specifies information for the input data for the data inference job,
+    -- including data Amazon S3 location parameters.
+    ingestionInputConfiguration :: Prelude.Maybe IngestionInputConfiguration,
+    -- | Indicates the job ID of the data ingestion job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the data ingestion job.
+    status :: Prelude.Maybe IngestionJobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataIngestionJobSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'datasetArn', 'dataIngestionJobSummary_datasetArn' - The Amazon Resource Name (ARN) of the dataset used in the data ingestion
+-- job.
+--
+-- 'datasetName', 'dataIngestionJobSummary_datasetName' - The name of the dataset used for the data ingestion job.
+--
+-- 'ingestionInputConfiguration', 'dataIngestionJobSummary_ingestionInputConfiguration' - Specifies information for the input data for the data inference job,
+-- including data Amazon S3 location parameters.
+--
+-- 'jobId', 'dataIngestionJobSummary_jobId' - Indicates the job ID of the data ingestion job.
+--
+-- 'status', 'dataIngestionJobSummary_status' - Indicates the status of the data ingestion job.
+newDataIngestionJobSummary ::
+  DataIngestionJobSummary
+newDataIngestionJobSummary =
+  DataIngestionJobSummary'
+    { datasetArn =
+        Prelude.Nothing,
+      datasetName = Prelude.Nothing,
+      ingestionInputConfiguration = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the dataset used in the data ingestion
+-- job.
+dataIngestionJobSummary_datasetArn :: Lens.Lens' DataIngestionJobSummary (Prelude.Maybe Prelude.Text)
+dataIngestionJobSummary_datasetArn = Lens.lens (\DataIngestionJobSummary' {datasetArn} -> datasetArn) (\s@DataIngestionJobSummary' {} a -> s {datasetArn = a} :: DataIngestionJobSummary)
+
+-- | The name of the dataset used for the data ingestion job.
+dataIngestionJobSummary_datasetName :: Lens.Lens' DataIngestionJobSummary (Prelude.Maybe Prelude.Text)
+dataIngestionJobSummary_datasetName = Lens.lens (\DataIngestionJobSummary' {datasetName} -> datasetName) (\s@DataIngestionJobSummary' {} a -> s {datasetName = a} :: DataIngestionJobSummary)
+
+-- | Specifies information for the input data for the data inference job,
+-- including data Amazon S3 location parameters.
+dataIngestionJobSummary_ingestionInputConfiguration :: Lens.Lens' DataIngestionJobSummary (Prelude.Maybe IngestionInputConfiguration)
+dataIngestionJobSummary_ingestionInputConfiguration = Lens.lens (\DataIngestionJobSummary' {ingestionInputConfiguration} -> ingestionInputConfiguration) (\s@DataIngestionJobSummary' {} a -> s {ingestionInputConfiguration = a} :: DataIngestionJobSummary)
+
+-- | Indicates the job ID of the data ingestion job.
+dataIngestionJobSummary_jobId :: Lens.Lens' DataIngestionJobSummary (Prelude.Maybe Prelude.Text)
+dataIngestionJobSummary_jobId = Lens.lens (\DataIngestionJobSummary' {jobId} -> jobId) (\s@DataIngestionJobSummary' {} a -> s {jobId = a} :: DataIngestionJobSummary)
+
+-- | Indicates the status of the data ingestion job.
+dataIngestionJobSummary_status :: Lens.Lens' DataIngestionJobSummary (Prelude.Maybe IngestionJobStatus)
+dataIngestionJobSummary_status = Lens.lens (\DataIngestionJobSummary' {status} -> status) (\s@DataIngestionJobSummary' {} a -> s {status = a} :: DataIngestionJobSummary)
+
+instance Data.FromJSON DataIngestionJobSummary where
+  parseJSON =
+    Data.withObject
+      "DataIngestionJobSummary"
+      ( \x ->
+          DataIngestionJobSummary'
+            Prelude.<$> (x Data..:? "DatasetArn")
+            Prelude.<*> (x Data..:? "DatasetName")
+            Prelude.<*> (x Data..:? "IngestionInputConfiguration")
+            Prelude.<*> (x Data..:? "JobId")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable DataIngestionJobSummary where
+  hashWithSalt _salt DataIngestionJobSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` datasetArn
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` ingestionInputConfiguration
+      `Prelude.hashWithSalt` jobId
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData DataIngestionJobSummary where
+  rnf DataIngestionJobSummary' {..} =
+    Prelude.rnf datasetArn
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf ingestionInputConfiguration
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/LookoutEquipment/Types/DataPreProcessingConfiguration.hs b/gen/Amazonka/LookoutEquipment/Types/DataPreProcessingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/DataPreProcessingConfiguration.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.DataPreProcessingConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.DataPreProcessingConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.TargetSamplingRate
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration is the @TargetSamplingRate@, which is the sampling
+-- rate of the data after post processing by Amazon Lookout for Equipment.
+-- For example, if you provide data that has been collected at a 1 second
+-- level and you want the system to resample the data at a 1 minute rate
+-- before training, the @TargetSamplingRate@ is 1 minute.
+--
+-- When providing a value for the @TargetSamplingRate@, you must attach the
+-- prefix \"PT\" to the rate you want. The value for a 1 second rate is
+-- therefore /PT1S/, the value for a 15 minute rate is /PT15M/, and the
+-- value for a 1 hour rate is /PT1H/
+--
+-- /See:/ 'newDataPreProcessingConfiguration' smart constructor.
+data DataPreProcessingConfiguration = DataPreProcessingConfiguration'
+  { -- | The sampling rate of the data after post processing by Amazon Lookout
+    -- for Equipment. For example, if you provide data that has been collected
+    -- at a 1 second level and you want the system to resample the data at a 1
+    -- minute rate before training, the @TargetSamplingRate@ is 1 minute.
+    --
+    -- When providing a value for the @TargetSamplingRate@, you must attach the
+    -- prefix \"PT\" to the rate you want. The value for a 1 second rate is
+    -- therefore /PT1S/, the value for a 15 minute rate is /PT15M/, and the
+    -- value for a 1 hour rate is /PT1H/
+    targetSamplingRate :: Prelude.Maybe TargetSamplingRate
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataPreProcessingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'targetSamplingRate', 'dataPreProcessingConfiguration_targetSamplingRate' - The sampling rate of the data after post processing by Amazon Lookout
+-- for Equipment. For example, if you provide data that has been collected
+-- at a 1 second level and you want the system to resample the data at a 1
+-- minute rate before training, the @TargetSamplingRate@ is 1 minute.
+--
+-- When providing a value for the @TargetSamplingRate@, you must attach the
+-- prefix \"PT\" to the rate you want. The value for a 1 second rate is
+-- therefore /PT1S/, the value for a 15 minute rate is /PT15M/, and the
+-- value for a 1 hour rate is /PT1H/
+newDataPreProcessingConfiguration ::
+  DataPreProcessingConfiguration
+newDataPreProcessingConfiguration =
+  DataPreProcessingConfiguration'
+    { targetSamplingRate =
+        Prelude.Nothing
+    }
+
+-- | The sampling rate of the data after post processing by Amazon Lookout
+-- for Equipment. For example, if you provide data that has been collected
+-- at a 1 second level and you want the system to resample the data at a 1
+-- minute rate before training, the @TargetSamplingRate@ is 1 minute.
+--
+-- When providing a value for the @TargetSamplingRate@, you must attach the
+-- prefix \"PT\" to the rate you want. The value for a 1 second rate is
+-- therefore /PT1S/, the value for a 15 minute rate is /PT15M/, and the
+-- value for a 1 hour rate is /PT1H/
+dataPreProcessingConfiguration_targetSamplingRate :: Lens.Lens' DataPreProcessingConfiguration (Prelude.Maybe TargetSamplingRate)
+dataPreProcessingConfiguration_targetSamplingRate = Lens.lens (\DataPreProcessingConfiguration' {targetSamplingRate} -> targetSamplingRate) (\s@DataPreProcessingConfiguration' {} a -> s {targetSamplingRate = a} :: DataPreProcessingConfiguration)
+
+instance Data.FromJSON DataPreProcessingConfiguration where
+  parseJSON =
+    Data.withObject
+      "DataPreProcessingConfiguration"
+      ( \x ->
+          DataPreProcessingConfiguration'
+            Prelude.<$> (x Data..:? "TargetSamplingRate")
+      )
+
+instance
+  Prelude.Hashable
+    DataPreProcessingConfiguration
+  where
+  hashWithSalt
+    _salt
+    DataPreProcessingConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` targetSamplingRate
+
+instance
+  Prelude.NFData
+    DataPreProcessingConfiguration
+  where
+  rnf DataPreProcessingConfiguration' {..} =
+    Prelude.rnf targetSamplingRate
+
+instance Data.ToJSON DataPreProcessingConfiguration where
+  toJSON DataPreProcessingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("TargetSamplingRate" Data..=)
+              Prelude.<$> targetSamplingRate
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/DataQualitySummary.hs b/gen/Amazonka/LookoutEquipment/Types/DataQualitySummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/DataQualitySummary.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.LookoutEquipment.Types.DataQualitySummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.DataQualitySummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.DuplicateTimestamps
+import Amazonka.LookoutEquipment.Types.InsufficientSensorData
+import Amazonka.LookoutEquipment.Types.InvalidSensorData
+import Amazonka.LookoutEquipment.Types.MissingSensorData
+import Amazonka.LookoutEquipment.Types.UnsupportedTimestamps
+import qualified Amazonka.Prelude as Prelude
+
+-- | DataQualitySummary gives aggregated statistics over all the sensors
+-- about a completed ingestion job. It primarily gives more information
+-- about statistics over different incorrect data like
+-- MissingCompleteSensorData, MissingSensorData, UnsupportedDateFormats,
+-- InsufficientSensorData, DuplicateTimeStamps.
+--
+-- /See:/ 'newDataQualitySummary' smart constructor.
+data DataQualitySummary = DataQualitySummary'
+  { -- | Parameter that gives information about insufficient data for sensors in
+    -- the dataset. This includes information about those sensors that have
+    -- complete data missing and those with a short date range.
+    insufficientSensorData :: InsufficientSensorData,
+    -- | Parameter that gives information about data that is missing over all the
+    -- sensors in the input data.
+    missingSensorData :: MissingSensorData,
+    -- | Parameter that gives information about data that is invalid over all the
+    -- sensors in the input data.
+    invalidSensorData :: InvalidSensorData,
+    -- | Parameter that gives information about unsupported timestamps in the
+    -- input data.
+    unsupportedTimestamps :: UnsupportedTimestamps,
+    -- | Parameter that gives information about duplicate timestamps in the input
+    -- data.
+    duplicateTimestamps :: DuplicateTimestamps
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataQualitySummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'insufficientSensorData', 'dataQualitySummary_insufficientSensorData' - Parameter that gives information about insufficient data for sensors in
+-- the dataset. This includes information about those sensors that have
+-- complete data missing and those with a short date range.
+--
+-- 'missingSensorData', 'dataQualitySummary_missingSensorData' - Parameter that gives information about data that is missing over all the
+-- sensors in the input data.
+--
+-- 'invalidSensorData', 'dataQualitySummary_invalidSensorData' - Parameter that gives information about data that is invalid over all the
+-- sensors in the input data.
+--
+-- 'unsupportedTimestamps', 'dataQualitySummary_unsupportedTimestamps' - Parameter that gives information about unsupported timestamps in the
+-- input data.
+--
+-- 'duplicateTimestamps', 'dataQualitySummary_duplicateTimestamps' - Parameter that gives information about duplicate timestamps in the input
+-- data.
+newDataQualitySummary ::
+  -- | 'insufficientSensorData'
+  InsufficientSensorData ->
+  -- | 'missingSensorData'
+  MissingSensorData ->
+  -- | 'invalidSensorData'
+  InvalidSensorData ->
+  -- | 'unsupportedTimestamps'
+  UnsupportedTimestamps ->
+  -- | 'duplicateTimestamps'
+  DuplicateTimestamps ->
+  DataQualitySummary
+newDataQualitySummary
+  pInsufficientSensorData_
+  pMissingSensorData_
+  pInvalidSensorData_
+  pUnsupportedTimestamps_
+  pDuplicateTimestamps_ =
+    DataQualitySummary'
+      { insufficientSensorData =
+          pInsufficientSensorData_,
+        missingSensorData = pMissingSensorData_,
+        invalidSensorData = pInvalidSensorData_,
+        unsupportedTimestamps = pUnsupportedTimestamps_,
+        duplicateTimestamps = pDuplicateTimestamps_
+      }
+
+-- | Parameter that gives information about insufficient data for sensors in
+-- the dataset. This includes information about those sensors that have
+-- complete data missing and those with a short date range.
+dataQualitySummary_insufficientSensorData :: Lens.Lens' DataQualitySummary InsufficientSensorData
+dataQualitySummary_insufficientSensorData = Lens.lens (\DataQualitySummary' {insufficientSensorData} -> insufficientSensorData) (\s@DataQualitySummary' {} a -> s {insufficientSensorData = a} :: DataQualitySummary)
+
+-- | Parameter that gives information about data that is missing over all the
+-- sensors in the input data.
+dataQualitySummary_missingSensorData :: Lens.Lens' DataQualitySummary MissingSensorData
+dataQualitySummary_missingSensorData = Lens.lens (\DataQualitySummary' {missingSensorData} -> missingSensorData) (\s@DataQualitySummary' {} a -> s {missingSensorData = a} :: DataQualitySummary)
+
+-- | Parameter that gives information about data that is invalid over all the
+-- sensors in the input data.
+dataQualitySummary_invalidSensorData :: Lens.Lens' DataQualitySummary InvalidSensorData
+dataQualitySummary_invalidSensorData = Lens.lens (\DataQualitySummary' {invalidSensorData} -> invalidSensorData) (\s@DataQualitySummary' {} a -> s {invalidSensorData = a} :: DataQualitySummary)
+
+-- | Parameter that gives information about unsupported timestamps in the
+-- input data.
+dataQualitySummary_unsupportedTimestamps :: Lens.Lens' DataQualitySummary UnsupportedTimestamps
+dataQualitySummary_unsupportedTimestamps = Lens.lens (\DataQualitySummary' {unsupportedTimestamps} -> unsupportedTimestamps) (\s@DataQualitySummary' {} a -> s {unsupportedTimestamps = a} :: DataQualitySummary)
+
+-- | Parameter that gives information about duplicate timestamps in the input
+-- data.
+dataQualitySummary_duplicateTimestamps :: Lens.Lens' DataQualitySummary DuplicateTimestamps
+dataQualitySummary_duplicateTimestamps = Lens.lens (\DataQualitySummary' {duplicateTimestamps} -> duplicateTimestamps) (\s@DataQualitySummary' {} a -> s {duplicateTimestamps = a} :: DataQualitySummary)
+
+instance Data.FromJSON DataQualitySummary where
+  parseJSON =
+    Data.withObject
+      "DataQualitySummary"
+      ( \x ->
+          DataQualitySummary'
+            Prelude.<$> (x Data..: "InsufficientSensorData")
+            Prelude.<*> (x Data..: "MissingSensorData")
+            Prelude.<*> (x Data..: "InvalidSensorData")
+            Prelude.<*> (x Data..: "UnsupportedTimestamps")
+            Prelude.<*> (x Data..: "DuplicateTimestamps")
+      )
+
+instance Prelude.Hashable DataQualitySummary where
+  hashWithSalt _salt DataQualitySummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` insufficientSensorData
+      `Prelude.hashWithSalt` missingSensorData
+      `Prelude.hashWithSalt` invalidSensorData
+      `Prelude.hashWithSalt` unsupportedTimestamps
+      `Prelude.hashWithSalt` duplicateTimestamps
+
+instance Prelude.NFData DataQualitySummary where
+  rnf DataQualitySummary' {..} =
+    Prelude.rnf insufficientSensorData
+      `Prelude.seq` Prelude.rnf missingSensorData
+      `Prelude.seq` Prelude.rnf invalidSensorData
+      `Prelude.seq` Prelude.rnf unsupportedTimestamps
+      `Prelude.seq` Prelude.rnf duplicateTimestamps
diff --git a/gen/Amazonka/LookoutEquipment/Types/DataUploadFrequency.hs b/gen/Amazonka/LookoutEquipment/Types/DataUploadFrequency.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/DataUploadFrequency.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.LookoutEquipment.Types.DataUploadFrequency
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.DataUploadFrequency
+  ( DataUploadFrequency
+      ( ..,
+        DataUploadFrequency_PT10M,
+        DataUploadFrequency_PT15M,
+        DataUploadFrequency_PT1H,
+        DataUploadFrequency_PT30M,
+        DataUploadFrequency_PT5M
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataUploadFrequency = DataUploadFrequency'
+  { fromDataUploadFrequency ::
+      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 DataUploadFrequency_PT10M :: DataUploadFrequency
+pattern DataUploadFrequency_PT10M = DataUploadFrequency' "PT10M"
+
+pattern DataUploadFrequency_PT15M :: DataUploadFrequency
+pattern DataUploadFrequency_PT15M = DataUploadFrequency' "PT15M"
+
+pattern DataUploadFrequency_PT1H :: DataUploadFrequency
+pattern DataUploadFrequency_PT1H = DataUploadFrequency' "PT1H"
+
+pattern DataUploadFrequency_PT30M :: DataUploadFrequency
+pattern DataUploadFrequency_PT30M = DataUploadFrequency' "PT30M"
+
+pattern DataUploadFrequency_PT5M :: DataUploadFrequency
+pattern DataUploadFrequency_PT5M = DataUploadFrequency' "PT5M"
+
+{-# COMPLETE
+  DataUploadFrequency_PT10M,
+  DataUploadFrequency_PT15M,
+  DataUploadFrequency_PT1H,
+  DataUploadFrequency_PT30M,
+  DataUploadFrequency_PT5M,
+  DataUploadFrequency'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/DatasetSchema.hs b/gen/Amazonka/LookoutEquipment/Types/DatasetSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/DatasetSchema.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.DatasetSchema
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.DatasetSchema where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides information about the data schema used with the given dataset.
+--
+-- /See:/ 'newDatasetSchema' smart constructor.
+data DatasetSchema = DatasetSchema'
+  { inlineDataSchema :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DatasetSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inlineDataSchema', 'datasetSchema_inlineDataSchema' -
+newDatasetSchema ::
+  DatasetSchema
+newDatasetSchema =
+  DatasetSchema' {inlineDataSchema = Prelude.Nothing}
+
+datasetSchema_inlineDataSchema :: Lens.Lens' DatasetSchema (Prelude.Maybe Prelude.Text)
+datasetSchema_inlineDataSchema = Lens.lens (\DatasetSchema' {inlineDataSchema} -> inlineDataSchema) (\s@DatasetSchema' {} a -> s {inlineDataSchema = a} :: DatasetSchema)
+
+instance Prelude.Hashable DatasetSchema where
+  hashWithSalt _salt DatasetSchema' {..} =
+    _salt `Prelude.hashWithSalt` inlineDataSchema
+
+instance Prelude.NFData DatasetSchema where
+  rnf DatasetSchema' {..} = Prelude.rnf inlineDataSchema
+
+instance Data.ToJSON DatasetSchema where
+  toJSON DatasetSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InlineDataSchema" Data..=)
+              Prelude.<$> inlineDataSchema
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/DatasetStatus.hs b/gen/Amazonka/LookoutEquipment/Types/DatasetStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/DatasetStatus.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.LookoutEquipment.Types.DatasetStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.DatasetStatus
+  ( DatasetStatus
+      ( ..,
+        DatasetStatus_ACTIVE,
+        DatasetStatus_CREATED,
+        DatasetStatus_INGESTION_IN_PROGRESS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DatasetStatus = DatasetStatus'
+  { fromDatasetStatus ::
+      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 DatasetStatus_ACTIVE :: DatasetStatus
+pattern DatasetStatus_ACTIVE = DatasetStatus' "ACTIVE"
+
+pattern DatasetStatus_CREATED :: DatasetStatus
+pattern DatasetStatus_CREATED = DatasetStatus' "CREATED"
+
+pattern DatasetStatus_INGESTION_IN_PROGRESS :: DatasetStatus
+pattern DatasetStatus_INGESTION_IN_PROGRESS = DatasetStatus' "INGESTION_IN_PROGRESS"
+
+{-# COMPLETE
+  DatasetStatus_ACTIVE,
+  DatasetStatus_CREATED,
+  DatasetStatus_INGESTION_IN_PROGRESS,
+  DatasetStatus'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/DatasetSummary.hs b/gen/Amazonka/LookoutEquipment/Types/DatasetSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/DatasetSummary.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.LookoutEquipment.Types.DatasetSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.DatasetSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.DatasetStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the specific data set, including name, ARN,
+-- and status.
+--
+-- /See:/ 'newDatasetSummary' smart constructor.
+data DatasetSummary = DatasetSummary'
+  { -- | The time at which the dataset was created in Amazon Lookout for
+    -- Equipment.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the specified dataset.
+    datasetArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the dataset.
+    datasetName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the dataset.
+    status :: Prelude.Maybe DatasetStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DatasetSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'datasetSummary_createdAt' - The time at which the dataset was created in Amazon Lookout for
+-- Equipment.
+--
+-- 'datasetArn', 'datasetSummary_datasetArn' - The Amazon Resource Name (ARN) of the specified dataset.
+--
+-- 'datasetName', 'datasetSummary_datasetName' - The name of the dataset.
+--
+-- 'status', 'datasetSummary_status' - Indicates the status of the dataset.
+newDatasetSummary ::
+  DatasetSummary
+newDatasetSummary =
+  DatasetSummary'
+    { createdAt = Prelude.Nothing,
+      datasetArn = Prelude.Nothing,
+      datasetName = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The time at which the dataset was created in Amazon Lookout for
+-- Equipment.
+datasetSummary_createdAt :: Lens.Lens' DatasetSummary (Prelude.Maybe Prelude.UTCTime)
+datasetSummary_createdAt = Lens.lens (\DatasetSummary' {createdAt} -> createdAt) (\s@DatasetSummary' {} a -> s {createdAt = a} :: DatasetSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the specified dataset.
+datasetSummary_datasetArn :: Lens.Lens' DatasetSummary (Prelude.Maybe Prelude.Text)
+datasetSummary_datasetArn = Lens.lens (\DatasetSummary' {datasetArn} -> datasetArn) (\s@DatasetSummary' {} a -> s {datasetArn = a} :: DatasetSummary)
+
+-- | The name of the dataset.
+datasetSummary_datasetName :: Lens.Lens' DatasetSummary (Prelude.Maybe Prelude.Text)
+datasetSummary_datasetName = Lens.lens (\DatasetSummary' {datasetName} -> datasetName) (\s@DatasetSummary' {} a -> s {datasetName = a} :: DatasetSummary)
+
+-- | Indicates the status of the dataset.
+datasetSummary_status :: Lens.Lens' DatasetSummary (Prelude.Maybe DatasetStatus)
+datasetSummary_status = Lens.lens (\DatasetSummary' {status} -> status) (\s@DatasetSummary' {} a -> s {status = a} :: DatasetSummary)
+
+instance Data.FromJSON DatasetSummary where
+  parseJSON =
+    Data.withObject
+      "DatasetSummary"
+      ( \x ->
+          DatasetSummary'
+            Prelude.<$> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "DatasetArn")
+            Prelude.<*> (x Data..:? "DatasetName")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable DatasetSummary where
+  hashWithSalt _salt DatasetSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` datasetArn
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData DatasetSummary where
+  rnf DatasetSummary' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf datasetArn
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/LookoutEquipment/Types/DuplicateTimestamps.hs b/gen/Amazonka/LookoutEquipment/Types/DuplicateTimestamps.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/DuplicateTimestamps.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.DuplicateTimestamps
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.DuplicateTimestamps where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises information abount duplicate timestamps in the
+-- dataset.
+--
+-- /See:/ 'newDuplicateTimestamps' smart constructor.
+data DuplicateTimestamps = DuplicateTimestamps'
+  { -- | Indicates the total number of duplicate timestamps.
+    totalNumberOfDuplicateTimestamps :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DuplicateTimestamps' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'totalNumberOfDuplicateTimestamps', 'duplicateTimestamps_totalNumberOfDuplicateTimestamps' - Indicates the total number of duplicate timestamps.
+newDuplicateTimestamps ::
+  -- | 'totalNumberOfDuplicateTimestamps'
+  Prelude.Int ->
+  DuplicateTimestamps
+newDuplicateTimestamps
+  pTotalNumberOfDuplicateTimestamps_ =
+    DuplicateTimestamps'
+      { totalNumberOfDuplicateTimestamps =
+          pTotalNumberOfDuplicateTimestamps_
+      }
+
+-- | Indicates the total number of duplicate timestamps.
+duplicateTimestamps_totalNumberOfDuplicateTimestamps :: Lens.Lens' DuplicateTimestamps Prelude.Int
+duplicateTimestamps_totalNumberOfDuplicateTimestamps = Lens.lens (\DuplicateTimestamps' {totalNumberOfDuplicateTimestamps} -> totalNumberOfDuplicateTimestamps) (\s@DuplicateTimestamps' {} a -> s {totalNumberOfDuplicateTimestamps = a} :: DuplicateTimestamps)
+
+instance Data.FromJSON DuplicateTimestamps where
+  parseJSON =
+    Data.withObject
+      "DuplicateTimestamps"
+      ( \x ->
+          DuplicateTimestamps'
+            Prelude.<$> (x Data..: "TotalNumberOfDuplicateTimestamps")
+      )
+
+instance Prelude.Hashable DuplicateTimestamps where
+  hashWithSalt _salt DuplicateTimestamps' {..} =
+    _salt
+      `Prelude.hashWithSalt` totalNumberOfDuplicateTimestamps
+
+instance Prelude.NFData DuplicateTimestamps where
+  rnf DuplicateTimestamps' {..} =
+    Prelude.rnf totalNumberOfDuplicateTimestamps
diff --git a/gen/Amazonka/LookoutEquipment/Types/InferenceEventSummary.hs b/gen/Amazonka/LookoutEquipment/Types/InferenceEventSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InferenceEventSummary.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.InferenceEventSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InferenceEventSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the specific inference event, including start
+-- and end time, diagnostics information, event duration and so on.
+--
+-- /See:/ 'newInferenceEventSummary' smart constructor.
+data InferenceEventSummary = InferenceEventSummary'
+  { -- | An array which specifies the names and values of all sensors
+    -- contributing to an inference event.
+    diagnostics :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the size of an inference event in seconds.
+    eventDurationInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | Indicates the ending time of an inference event.
+    eventEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the starting time of an inference event.
+    eventStartTime :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the inference scheduler being used for
+    -- the inference event.
+    inferenceSchedulerArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the inference scheduler being used for the inference events.
+    inferenceSchedulerName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceEventSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'diagnostics', 'inferenceEventSummary_diagnostics' - An array which specifies the names and values of all sensors
+-- contributing to an inference event.
+--
+-- 'eventDurationInSeconds', 'inferenceEventSummary_eventDurationInSeconds' - Indicates the size of an inference event in seconds.
+--
+-- 'eventEndTime', 'inferenceEventSummary_eventEndTime' - Indicates the ending time of an inference event.
+--
+-- 'eventStartTime', 'inferenceEventSummary_eventStartTime' - Indicates the starting time of an inference event.
+--
+-- 'inferenceSchedulerArn', 'inferenceEventSummary_inferenceSchedulerArn' - The Amazon Resource Name (ARN) of the inference scheduler being used for
+-- the inference event.
+--
+-- 'inferenceSchedulerName', 'inferenceEventSummary_inferenceSchedulerName' - The name of the inference scheduler being used for the inference events.
+newInferenceEventSummary ::
+  InferenceEventSummary
+newInferenceEventSummary =
+  InferenceEventSummary'
+    { diagnostics =
+        Prelude.Nothing,
+      eventDurationInSeconds = Prelude.Nothing,
+      eventEndTime = Prelude.Nothing,
+      eventStartTime = Prelude.Nothing,
+      inferenceSchedulerArn = Prelude.Nothing,
+      inferenceSchedulerName = Prelude.Nothing
+    }
+
+-- | An array which specifies the names and values of all sensors
+-- contributing to an inference event.
+inferenceEventSummary_diagnostics :: Lens.Lens' InferenceEventSummary (Prelude.Maybe Prelude.Text)
+inferenceEventSummary_diagnostics = Lens.lens (\InferenceEventSummary' {diagnostics} -> diagnostics) (\s@InferenceEventSummary' {} a -> s {diagnostics = a} :: InferenceEventSummary)
+
+-- | Indicates the size of an inference event in seconds.
+inferenceEventSummary_eventDurationInSeconds :: Lens.Lens' InferenceEventSummary (Prelude.Maybe Prelude.Natural)
+inferenceEventSummary_eventDurationInSeconds = Lens.lens (\InferenceEventSummary' {eventDurationInSeconds} -> eventDurationInSeconds) (\s@InferenceEventSummary' {} a -> s {eventDurationInSeconds = a} :: InferenceEventSummary)
+
+-- | Indicates the ending time of an inference event.
+inferenceEventSummary_eventEndTime :: Lens.Lens' InferenceEventSummary (Prelude.Maybe Prelude.UTCTime)
+inferenceEventSummary_eventEndTime = Lens.lens (\InferenceEventSummary' {eventEndTime} -> eventEndTime) (\s@InferenceEventSummary' {} a -> s {eventEndTime = a} :: InferenceEventSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the starting time of an inference event.
+inferenceEventSummary_eventStartTime :: Lens.Lens' InferenceEventSummary (Prelude.Maybe Prelude.UTCTime)
+inferenceEventSummary_eventStartTime = Lens.lens (\InferenceEventSummary' {eventStartTime} -> eventStartTime) (\s@InferenceEventSummary' {} a -> s {eventStartTime = a} :: InferenceEventSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the inference scheduler being used for
+-- the inference event.
+inferenceEventSummary_inferenceSchedulerArn :: Lens.Lens' InferenceEventSummary (Prelude.Maybe Prelude.Text)
+inferenceEventSummary_inferenceSchedulerArn = Lens.lens (\InferenceEventSummary' {inferenceSchedulerArn} -> inferenceSchedulerArn) (\s@InferenceEventSummary' {} a -> s {inferenceSchedulerArn = a} :: InferenceEventSummary)
+
+-- | The name of the inference scheduler being used for the inference events.
+inferenceEventSummary_inferenceSchedulerName :: Lens.Lens' InferenceEventSummary (Prelude.Maybe Prelude.Text)
+inferenceEventSummary_inferenceSchedulerName = Lens.lens (\InferenceEventSummary' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@InferenceEventSummary' {} a -> s {inferenceSchedulerName = a} :: InferenceEventSummary)
+
+instance Data.FromJSON InferenceEventSummary where
+  parseJSON =
+    Data.withObject
+      "InferenceEventSummary"
+      ( \x ->
+          InferenceEventSummary'
+            Prelude.<$> (x Data..:? "Diagnostics")
+            Prelude.<*> (x Data..:? "EventDurationInSeconds")
+            Prelude.<*> (x Data..:? "EventEndTime")
+            Prelude.<*> (x Data..:? "EventStartTime")
+            Prelude.<*> (x Data..:? "InferenceSchedulerArn")
+            Prelude.<*> (x Data..:? "InferenceSchedulerName")
+      )
+
+instance Prelude.Hashable InferenceEventSummary where
+  hashWithSalt _salt InferenceEventSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` diagnostics
+      `Prelude.hashWithSalt` eventDurationInSeconds
+      `Prelude.hashWithSalt` eventEndTime
+      `Prelude.hashWithSalt` eventStartTime
+      `Prelude.hashWithSalt` inferenceSchedulerArn
+      `Prelude.hashWithSalt` inferenceSchedulerName
+
+instance Prelude.NFData InferenceEventSummary where
+  rnf InferenceEventSummary' {..} =
+    Prelude.rnf diagnostics
+      `Prelude.seq` Prelude.rnf eventDurationInSeconds
+      `Prelude.seq` Prelude.rnf eventEndTime
+      `Prelude.seq` Prelude.rnf eventStartTime
+      `Prelude.seq` Prelude.rnf inferenceSchedulerArn
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
diff --git a/gen/Amazonka/LookoutEquipment/Types/InferenceExecutionStatus.hs b/gen/Amazonka/LookoutEquipment/Types/InferenceExecutionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InferenceExecutionStatus.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.LookoutEquipment.Types.InferenceExecutionStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InferenceExecutionStatus
+  ( InferenceExecutionStatus
+      ( ..,
+        InferenceExecutionStatus_FAILED,
+        InferenceExecutionStatus_IN_PROGRESS,
+        InferenceExecutionStatus_SUCCESS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InferenceExecutionStatus = InferenceExecutionStatus'
+  { fromInferenceExecutionStatus ::
+      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 InferenceExecutionStatus_FAILED :: InferenceExecutionStatus
+pattern InferenceExecutionStatus_FAILED = InferenceExecutionStatus' "FAILED"
+
+pattern InferenceExecutionStatus_IN_PROGRESS :: InferenceExecutionStatus
+pattern InferenceExecutionStatus_IN_PROGRESS = InferenceExecutionStatus' "IN_PROGRESS"
+
+pattern InferenceExecutionStatus_SUCCESS :: InferenceExecutionStatus
+pattern InferenceExecutionStatus_SUCCESS = InferenceExecutionStatus' "SUCCESS"
+
+{-# COMPLETE
+  InferenceExecutionStatus_FAILED,
+  InferenceExecutionStatus_IN_PROGRESS,
+  InferenceExecutionStatus_SUCCESS,
+  InferenceExecutionStatus'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/InferenceExecutionSummary.hs b/gen/Amazonka/LookoutEquipment/Types/InferenceExecutionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InferenceExecutionSummary.hs
@@ -0,0 +1,233 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.InferenceExecutionSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InferenceExecutionSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.InferenceExecutionStatus
+import Amazonka.LookoutEquipment.Types.InferenceInputConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceOutputConfiguration
+import Amazonka.LookoutEquipment.Types.S3Object
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the specific inference execution, including
+-- input and output data configuration, inference scheduling information,
+-- status, and so on.
+--
+-- /See:/ 'newInferenceExecutionSummary' smart constructor.
+data InferenceExecutionSummary = InferenceExecutionSummary'
+  { customerResultObject :: Prelude.Maybe S3Object,
+    -- | Indicates the time reference in the dataset at which the inference
+    -- execution stopped.
+    dataEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Specifies configuration information for the input data for the inference
+    -- scheduler, including delimiter, format, and dataset location.
+    dataInputConfiguration :: Prelude.Maybe InferenceInputConfiguration,
+    -- | Specifies configuration information for the output results from for the
+    -- inference execution, including the output Amazon S3 location.
+    dataOutputConfiguration :: Prelude.Maybe InferenceOutputConfiguration,
+    -- | Indicates the time reference in the dataset at which the inference
+    -- execution began.
+    dataStartTime :: Prelude.Maybe Data.POSIX,
+    -- | Specifies the reason for failure when an inference execution has failed.
+    failedReason :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the inference scheduler being used for
+    -- the inference execution.
+    inferenceSchedulerArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the inference scheduler being used for the inference
+    -- execution.
+    inferenceSchedulerName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the ML model used for the inference
+    -- execution.
+    modelArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the ML model being used for the inference execution.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the start time at which the inference scheduler began the
+    -- specific inference execution.
+    scheduledStartTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates the status of the inference execution.
+    status :: Prelude.Maybe InferenceExecutionStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceExecutionSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customerResultObject', 'inferenceExecutionSummary_customerResultObject' -
+--
+-- 'dataEndTime', 'inferenceExecutionSummary_dataEndTime' - Indicates the time reference in the dataset at which the inference
+-- execution stopped.
+--
+-- 'dataInputConfiguration', 'inferenceExecutionSummary_dataInputConfiguration' - Specifies configuration information for the input data for the inference
+-- scheduler, including delimiter, format, and dataset location.
+--
+-- 'dataOutputConfiguration', 'inferenceExecutionSummary_dataOutputConfiguration' - Specifies configuration information for the output results from for the
+-- inference execution, including the output Amazon S3 location.
+--
+-- 'dataStartTime', 'inferenceExecutionSummary_dataStartTime' - Indicates the time reference in the dataset at which the inference
+-- execution began.
+--
+-- 'failedReason', 'inferenceExecutionSummary_failedReason' - Specifies the reason for failure when an inference execution has failed.
+--
+-- 'inferenceSchedulerArn', 'inferenceExecutionSummary_inferenceSchedulerArn' - The Amazon Resource Name (ARN) of the inference scheduler being used for
+-- the inference execution.
+--
+-- 'inferenceSchedulerName', 'inferenceExecutionSummary_inferenceSchedulerName' - The name of the inference scheduler being used for the inference
+-- execution.
+--
+-- 'modelArn', 'inferenceExecutionSummary_modelArn' - The Amazon Resource Name (ARN) of the ML model used for the inference
+-- execution.
+--
+-- 'modelName', 'inferenceExecutionSummary_modelName' - The name of the ML model being used for the inference execution.
+--
+-- 'scheduledStartTime', 'inferenceExecutionSummary_scheduledStartTime' - Indicates the start time at which the inference scheduler began the
+-- specific inference execution.
+--
+-- 'status', 'inferenceExecutionSummary_status' - Indicates the status of the inference execution.
+newInferenceExecutionSummary ::
+  InferenceExecutionSummary
+newInferenceExecutionSummary =
+  InferenceExecutionSummary'
+    { customerResultObject =
+        Prelude.Nothing,
+      dataEndTime = Prelude.Nothing,
+      dataInputConfiguration = Prelude.Nothing,
+      dataOutputConfiguration = Prelude.Nothing,
+      dataStartTime = Prelude.Nothing,
+      failedReason = Prelude.Nothing,
+      inferenceSchedulerArn = Prelude.Nothing,
+      inferenceSchedulerName = Prelude.Nothing,
+      modelArn = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      scheduledStartTime = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+inferenceExecutionSummary_customerResultObject :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe S3Object)
+inferenceExecutionSummary_customerResultObject = Lens.lens (\InferenceExecutionSummary' {customerResultObject} -> customerResultObject) (\s@InferenceExecutionSummary' {} a -> s {customerResultObject = a} :: InferenceExecutionSummary)
+
+-- | Indicates the time reference in the dataset at which the inference
+-- execution stopped.
+inferenceExecutionSummary_dataEndTime :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe Prelude.UTCTime)
+inferenceExecutionSummary_dataEndTime = Lens.lens (\InferenceExecutionSummary' {dataEndTime} -> dataEndTime) (\s@InferenceExecutionSummary' {} a -> s {dataEndTime = a} :: InferenceExecutionSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies configuration information for the input data for the inference
+-- scheduler, including delimiter, format, and dataset location.
+inferenceExecutionSummary_dataInputConfiguration :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe InferenceInputConfiguration)
+inferenceExecutionSummary_dataInputConfiguration = Lens.lens (\InferenceExecutionSummary' {dataInputConfiguration} -> dataInputConfiguration) (\s@InferenceExecutionSummary' {} a -> s {dataInputConfiguration = a} :: InferenceExecutionSummary)
+
+-- | Specifies configuration information for the output results from for the
+-- inference execution, including the output Amazon S3 location.
+inferenceExecutionSummary_dataOutputConfiguration :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe InferenceOutputConfiguration)
+inferenceExecutionSummary_dataOutputConfiguration = Lens.lens (\InferenceExecutionSummary' {dataOutputConfiguration} -> dataOutputConfiguration) (\s@InferenceExecutionSummary' {} a -> s {dataOutputConfiguration = a} :: InferenceExecutionSummary)
+
+-- | Indicates the time reference in the dataset at which the inference
+-- execution began.
+inferenceExecutionSummary_dataStartTime :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe Prelude.UTCTime)
+inferenceExecutionSummary_dataStartTime = Lens.lens (\InferenceExecutionSummary' {dataStartTime} -> dataStartTime) (\s@InferenceExecutionSummary' {} a -> s {dataStartTime = a} :: InferenceExecutionSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the reason for failure when an inference execution has failed.
+inferenceExecutionSummary_failedReason :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe Prelude.Text)
+inferenceExecutionSummary_failedReason = Lens.lens (\InferenceExecutionSummary' {failedReason} -> failedReason) (\s@InferenceExecutionSummary' {} a -> s {failedReason = a} :: InferenceExecutionSummary)
+
+-- | The Amazon Resource Name (ARN) of the inference scheduler being used for
+-- the inference execution.
+inferenceExecutionSummary_inferenceSchedulerArn :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe Prelude.Text)
+inferenceExecutionSummary_inferenceSchedulerArn = Lens.lens (\InferenceExecutionSummary' {inferenceSchedulerArn} -> inferenceSchedulerArn) (\s@InferenceExecutionSummary' {} a -> s {inferenceSchedulerArn = a} :: InferenceExecutionSummary)
+
+-- | The name of the inference scheduler being used for the inference
+-- execution.
+inferenceExecutionSummary_inferenceSchedulerName :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe Prelude.Text)
+inferenceExecutionSummary_inferenceSchedulerName = Lens.lens (\InferenceExecutionSummary' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@InferenceExecutionSummary' {} a -> s {inferenceSchedulerName = a} :: InferenceExecutionSummary)
+
+-- | The Amazon Resource Name (ARN) of the ML model used for the inference
+-- execution.
+inferenceExecutionSummary_modelArn :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe Prelude.Text)
+inferenceExecutionSummary_modelArn = Lens.lens (\InferenceExecutionSummary' {modelArn} -> modelArn) (\s@InferenceExecutionSummary' {} a -> s {modelArn = a} :: InferenceExecutionSummary)
+
+-- | The name of the ML model being used for the inference execution.
+inferenceExecutionSummary_modelName :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe Prelude.Text)
+inferenceExecutionSummary_modelName = Lens.lens (\InferenceExecutionSummary' {modelName} -> modelName) (\s@InferenceExecutionSummary' {} a -> s {modelName = a} :: InferenceExecutionSummary)
+
+-- | Indicates the start time at which the inference scheduler began the
+-- specific inference execution.
+inferenceExecutionSummary_scheduledStartTime :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe Prelude.UTCTime)
+inferenceExecutionSummary_scheduledStartTime = Lens.lens (\InferenceExecutionSummary' {scheduledStartTime} -> scheduledStartTime) (\s@InferenceExecutionSummary' {} a -> s {scheduledStartTime = a} :: InferenceExecutionSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the status of the inference execution.
+inferenceExecutionSummary_status :: Lens.Lens' InferenceExecutionSummary (Prelude.Maybe InferenceExecutionStatus)
+inferenceExecutionSummary_status = Lens.lens (\InferenceExecutionSummary' {status} -> status) (\s@InferenceExecutionSummary' {} a -> s {status = a} :: InferenceExecutionSummary)
+
+instance Data.FromJSON InferenceExecutionSummary where
+  parseJSON =
+    Data.withObject
+      "InferenceExecutionSummary"
+      ( \x ->
+          InferenceExecutionSummary'
+            Prelude.<$> (x Data..:? "CustomerResultObject")
+            Prelude.<*> (x Data..:? "DataEndTime")
+            Prelude.<*> (x Data..:? "DataInputConfiguration")
+            Prelude.<*> (x Data..:? "DataOutputConfiguration")
+            Prelude.<*> (x Data..:? "DataStartTime")
+            Prelude.<*> (x Data..:? "FailedReason")
+            Prelude.<*> (x Data..:? "InferenceSchedulerArn")
+            Prelude.<*> (x Data..:? "InferenceSchedulerName")
+            Prelude.<*> (x Data..:? "ModelArn")
+            Prelude.<*> (x Data..:? "ModelName")
+            Prelude.<*> (x Data..:? "ScheduledStartTime")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable InferenceExecutionSummary where
+  hashWithSalt _salt InferenceExecutionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` customerResultObject
+      `Prelude.hashWithSalt` dataEndTime
+      `Prelude.hashWithSalt` dataInputConfiguration
+      `Prelude.hashWithSalt` dataOutputConfiguration
+      `Prelude.hashWithSalt` dataStartTime
+      `Prelude.hashWithSalt` failedReason
+      `Prelude.hashWithSalt` inferenceSchedulerArn
+      `Prelude.hashWithSalt` inferenceSchedulerName
+      `Prelude.hashWithSalt` modelArn
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` scheduledStartTime
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData InferenceExecutionSummary where
+  rnf InferenceExecutionSummary' {..} =
+    Prelude.rnf customerResultObject
+      `Prelude.seq` Prelude.rnf dataEndTime
+      `Prelude.seq` Prelude.rnf dataInputConfiguration
+      `Prelude.seq` Prelude.rnf dataOutputConfiguration
+      `Prelude.seq` Prelude.rnf dataStartTime
+      `Prelude.seq` Prelude.rnf failedReason
+      `Prelude.seq` Prelude.rnf inferenceSchedulerArn
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
+      `Prelude.seq` Prelude.rnf modelArn
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf scheduledStartTime
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/LookoutEquipment/Types/InferenceInputConfiguration.hs b/gen/Amazonka/LookoutEquipment/Types/InferenceInputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InferenceInputConfiguration.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.LookoutEquipment.Types.InferenceInputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InferenceInputConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.InferenceInputNameConfiguration
+import Amazonka.LookoutEquipment.Types.InferenceS3InputConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies configuration information for the input data for the
+-- inference, including Amazon S3 location of input data..
+--
+-- /See:/ 'newInferenceInputConfiguration' smart constructor.
+data InferenceInputConfiguration = InferenceInputConfiguration'
+  { -- | Specifies configuration information for the input data for the
+    -- inference, including timestamp format and delimiter.
+    inferenceInputNameConfiguration :: Prelude.Maybe InferenceInputNameConfiguration,
+    -- | Indicates the difference between your time zone and Coordinated
+    -- Universal Time (UTC).
+    inputTimeZoneOffset :: Prelude.Maybe Prelude.Text,
+    -- | Specifies configuration information for the input data for the
+    -- inference, including Amazon S3 location of input data.
+    s3InputConfiguration :: Prelude.Maybe InferenceS3InputConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceInputConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'inferenceInputNameConfiguration', 'inferenceInputConfiguration_inferenceInputNameConfiguration' - Specifies configuration information for the input data for the
+-- inference, including timestamp format and delimiter.
+--
+-- 'inputTimeZoneOffset', 'inferenceInputConfiguration_inputTimeZoneOffset' - Indicates the difference between your time zone and Coordinated
+-- Universal Time (UTC).
+--
+-- 's3InputConfiguration', 'inferenceInputConfiguration_s3InputConfiguration' - Specifies configuration information for the input data for the
+-- inference, including Amazon S3 location of input data.
+newInferenceInputConfiguration ::
+  InferenceInputConfiguration
+newInferenceInputConfiguration =
+  InferenceInputConfiguration'
+    { inferenceInputNameConfiguration =
+        Prelude.Nothing,
+      inputTimeZoneOffset = Prelude.Nothing,
+      s3InputConfiguration = Prelude.Nothing
+    }
+
+-- | Specifies configuration information for the input data for the
+-- inference, including timestamp format and delimiter.
+inferenceInputConfiguration_inferenceInputNameConfiguration :: Lens.Lens' InferenceInputConfiguration (Prelude.Maybe InferenceInputNameConfiguration)
+inferenceInputConfiguration_inferenceInputNameConfiguration = Lens.lens (\InferenceInputConfiguration' {inferenceInputNameConfiguration} -> inferenceInputNameConfiguration) (\s@InferenceInputConfiguration' {} a -> s {inferenceInputNameConfiguration = a} :: InferenceInputConfiguration)
+
+-- | Indicates the difference between your time zone and Coordinated
+-- Universal Time (UTC).
+inferenceInputConfiguration_inputTimeZoneOffset :: Lens.Lens' InferenceInputConfiguration (Prelude.Maybe Prelude.Text)
+inferenceInputConfiguration_inputTimeZoneOffset = Lens.lens (\InferenceInputConfiguration' {inputTimeZoneOffset} -> inputTimeZoneOffset) (\s@InferenceInputConfiguration' {} a -> s {inputTimeZoneOffset = a} :: InferenceInputConfiguration)
+
+-- | Specifies configuration information for the input data for the
+-- inference, including Amazon S3 location of input data.
+inferenceInputConfiguration_s3InputConfiguration :: Lens.Lens' InferenceInputConfiguration (Prelude.Maybe InferenceS3InputConfiguration)
+inferenceInputConfiguration_s3InputConfiguration = Lens.lens (\InferenceInputConfiguration' {s3InputConfiguration} -> s3InputConfiguration) (\s@InferenceInputConfiguration' {} a -> s {s3InputConfiguration = a} :: InferenceInputConfiguration)
+
+instance Data.FromJSON InferenceInputConfiguration where
+  parseJSON =
+    Data.withObject
+      "InferenceInputConfiguration"
+      ( \x ->
+          InferenceInputConfiguration'
+            Prelude.<$> (x Data..:? "InferenceInputNameConfiguration")
+            Prelude.<*> (x Data..:? "InputTimeZoneOffset")
+            Prelude.<*> (x Data..:? "S3InputConfiguration")
+      )
+
+instance Prelude.Hashable InferenceInputConfiguration where
+  hashWithSalt _salt InferenceInputConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` inferenceInputNameConfiguration
+      `Prelude.hashWithSalt` inputTimeZoneOffset
+      `Prelude.hashWithSalt` s3InputConfiguration
+
+instance Prelude.NFData InferenceInputConfiguration where
+  rnf InferenceInputConfiguration' {..} =
+    Prelude.rnf inferenceInputNameConfiguration
+      `Prelude.seq` Prelude.rnf inputTimeZoneOffset
+      `Prelude.seq` Prelude.rnf s3InputConfiguration
+
+instance Data.ToJSON InferenceInputConfiguration where
+  toJSON InferenceInputConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InferenceInputNameConfiguration" Data..=)
+              Prelude.<$> inferenceInputNameConfiguration,
+            ("InputTimeZoneOffset" Data..=)
+              Prelude.<$> inputTimeZoneOffset,
+            ("S3InputConfiguration" Data..=)
+              Prelude.<$> s3InputConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/InferenceInputNameConfiguration.hs b/gen/Amazonka/LookoutEquipment/Types/InferenceInputNameConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InferenceInputNameConfiguration.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.InferenceInputNameConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InferenceInputNameConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies configuration information for the input data for the
+-- inference, including timestamp format and delimiter.
+--
+-- /See:/ 'newInferenceInputNameConfiguration' smart constructor.
+data InferenceInputNameConfiguration = InferenceInputNameConfiguration'
+  { -- | Indicates the delimiter character used between items in the data.
+    componentTimestampDelimiter :: Prelude.Maybe Prelude.Text,
+    -- | The format of the timestamp, whether Epoch time, or standard, with or
+    -- without hyphens (-).
+    timestampFormat :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceInputNameConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'componentTimestampDelimiter', 'inferenceInputNameConfiguration_componentTimestampDelimiter' - Indicates the delimiter character used between items in the data.
+--
+-- 'timestampFormat', 'inferenceInputNameConfiguration_timestampFormat' - The format of the timestamp, whether Epoch time, or standard, with or
+-- without hyphens (-).
+newInferenceInputNameConfiguration ::
+  InferenceInputNameConfiguration
+newInferenceInputNameConfiguration =
+  InferenceInputNameConfiguration'
+    { componentTimestampDelimiter =
+        Prelude.Nothing,
+      timestampFormat = Prelude.Nothing
+    }
+
+-- | Indicates the delimiter character used between items in the data.
+inferenceInputNameConfiguration_componentTimestampDelimiter :: Lens.Lens' InferenceInputNameConfiguration (Prelude.Maybe Prelude.Text)
+inferenceInputNameConfiguration_componentTimestampDelimiter = Lens.lens (\InferenceInputNameConfiguration' {componentTimestampDelimiter} -> componentTimestampDelimiter) (\s@InferenceInputNameConfiguration' {} a -> s {componentTimestampDelimiter = a} :: InferenceInputNameConfiguration)
+
+-- | The format of the timestamp, whether Epoch time, or standard, with or
+-- without hyphens (-).
+inferenceInputNameConfiguration_timestampFormat :: Lens.Lens' InferenceInputNameConfiguration (Prelude.Maybe Prelude.Text)
+inferenceInputNameConfiguration_timestampFormat = Lens.lens (\InferenceInputNameConfiguration' {timestampFormat} -> timestampFormat) (\s@InferenceInputNameConfiguration' {} a -> s {timestampFormat = a} :: InferenceInputNameConfiguration)
+
+instance
+  Data.FromJSON
+    InferenceInputNameConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "InferenceInputNameConfiguration"
+      ( \x ->
+          InferenceInputNameConfiguration'
+            Prelude.<$> (x Data..:? "ComponentTimestampDelimiter")
+            Prelude.<*> (x Data..:? "TimestampFormat")
+      )
+
+instance
+  Prelude.Hashable
+    InferenceInputNameConfiguration
+  where
+  hashWithSalt
+    _salt
+    InferenceInputNameConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` componentTimestampDelimiter
+        `Prelude.hashWithSalt` timestampFormat
+
+instance
+  Prelude.NFData
+    InferenceInputNameConfiguration
+  where
+  rnf InferenceInputNameConfiguration' {..} =
+    Prelude.rnf componentTimestampDelimiter
+      `Prelude.seq` Prelude.rnf timestampFormat
+
+instance Data.ToJSON InferenceInputNameConfiguration where
+  toJSON InferenceInputNameConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ComponentTimestampDelimiter" Data..=)
+              Prelude.<$> componentTimestampDelimiter,
+            ("TimestampFormat" Data..=)
+              Prelude.<$> timestampFormat
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/InferenceOutputConfiguration.hs b/gen/Amazonka/LookoutEquipment/Types/InferenceOutputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InferenceOutputConfiguration.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.LookoutEquipment.Types.InferenceOutputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InferenceOutputConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.InferenceS3OutputConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies configuration information for the output results from for the
+-- inference, including KMS key ID and output S3 location.
+--
+-- /See:/ 'newInferenceOutputConfiguration' smart constructor.
+data InferenceOutputConfiguration = InferenceOutputConfiguration'
+  { -- | The ID number for the AWS KMS key used to encrypt the inference output.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Specifies configuration information for the output results from for the
+    -- inference, output S3 location.
+    s3OutputConfiguration :: InferenceS3OutputConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceOutputConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'inferenceOutputConfiguration_kmsKeyId' - The ID number for the AWS KMS key used to encrypt the inference output.
+--
+-- 's3OutputConfiguration', 'inferenceOutputConfiguration_s3OutputConfiguration' - Specifies configuration information for the output results from for the
+-- inference, output S3 location.
+newInferenceOutputConfiguration ::
+  -- | 's3OutputConfiguration'
+  InferenceS3OutputConfiguration ->
+  InferenceOutputConfiguration
+newInferenceOutputConfiguration
+  pS3OutputConfiguration_ =
+    InferenceOutputConfiguration'
+      { kmsKeyId =
+          Prelude.Nothing,
+        s3OutputConfiguration =
+          pS3OutputConfiguration_
+      }
+
+-- | The ID number for the AWS KMS key used to encrypt the inference output.
+inferenceOutputConfiguration_kmsKeyId :: Lens.Lens' InferenceOutputConfiguration (Prelude.Maybe Prelude.Text)
+inferenceOutputConfiguration_kmsKeyId = Lens.lens (\InferenceOutputConfiguration' {kmsKeyId} -> kmsKeyId) (\s@InferenceOutputConfiguration' {} a -> s {kmsKeyId = a} :: InferenceOutputConfiguration)
+
+-- | Specifies configuration information for the output results from for the
+-- inference, output S3 location.
+inferenceOutputConfiguration_s3OutputConfiguration :: Lens.Lens' InferenceOutputConfiguration InferenceS3OutputConfiguration
+inferenceOutputConfiguration_s3OutputConfiguration = Lens.lens (\InferenceOutputConfiguration' {s3OutputConfiguration} -> s3OutputConfiguration) (\s@InferenceOutputConfiguration' {} a -> s {s3OutputConfiguration = a} :: InferenceOutputConfiguration)
+
+instance Data.FromJSON InferenceOutputConfiguration where
+  parseJSON =
+    Data.withObject
+      "InferenceOutputConfiguration"
+      ( \x ->
+          InferenceOutputConfiguration'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "S3OutputConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    InferenceOutputConfiguration
+  where
+  hashWithSalt _salt InferenceOutputConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` s3OutputConfiguration
+
+instance Prelude.NFData InferenceOutputConfiguration where
+  rnf InferenceOutputConfiguration' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf s3OutputConfiguration
+
+instance Data.ToJSON InferenceOutputConfiguration where
+  toJSON InferenceOutputConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just
+              ( "S3OutputConfiguration"
+                  Data..= s3OutputConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/InferenceS3InputConfiguration.hs b/gen/Amazonka/LookoutEquipment/Types/InferenceS3InputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InferenceS3InputConfiguration.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.LookoutEquipment.Types.InferenceS3InputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InferenceS3InputConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies configuration information for the input data for the
+-- inference, including input data S3 location.
+--
+-- /See:/ 'newInferenceS3InputConfiguration' smart constructor.
+data InferenceS3InputConfiguration = InferenceS3InputConfiguration'
+  { -- | The prefix for the S3 bucket used for the input data for the inference.
+    prefix :: Prelude.Maybe Prelude.Text,
+    -- | The bucket containing the input dataset for the inference.
+    bucket :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceS3InputConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'prefix', 'inferenceS3InputConfiguration_prefix' - The prefix for the S3 bucket used for the input data for the inference.
+--
+-- 'bucket', 'inferenceS3InputConfiguration_bucket' - The bucket containing the input dataset for the inference.
+newInferenceS3InputConfiguration ::
+  -- | 'bucket'
+  Prelude.Text ->
+  InferenceS3InputConfiguration
+newInferenceS3InputConfiguration pBucket_ =
+  InferenceS3InputConfiguration'
+    { prefix =
+        Prelude.Nothing,
+      bucket = pBucket_
+    }
+
+-- | The prefix for the S3 bucket used for the input data for the inference.
+inferenceS3InputConfiguration_prefix :: Lens.Lens' InferenceS3InputConfiguration (Prelude.Maybe Prelude.Text)
+inferenceS3InputConfiguration_prefix = Lens.lens (\InferenceS3InputConfiguration' {prefix} -> prefix) (\s@InferenceS3InputConfiguration' {} a -> s {prefix = a} :: InferenceS3InputConfiguration)
+
+-- | The bucket containing the input dataset for the inference.
+inferenceS3InputConfiguration_bucket :: Lens.Lens' InferenceS3InputConfiguration Prelude.Text
+inferenceS3InputConfiguration_bucket = Lens.lens (\InferenceS3InputConfiguration' {bucket} -> bucket) (\s@InferenceS3InputConfiguration' {} a -> s {bucket = a} :: InferenceS3InputConfiguration)
+
+instance Data.FromJSON InferenceS3InputConfiguration where
+  parseJSON =
+    Data.withObject
+      "InferenceS3InputConfiguration"
+      ( \x ->
+          InferenceS3InputConfiguration'
+            Prelude.<$> (x Data..:? "Prefix")
+            Prelude.<*> (x Data..: "Bucket")
+      )
+
+instance
+  Prelude.Hashable
+    InferenceS3InputConfiguration
+  where
+  hashWithSalt _salt InferenceS3InputConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` prefix
+      `Prelude.hashWithSalt` bucket
+
+instance Prelude.NFData InferenceS3InputConfiguration where
+  rnf InferenceS3InputConfiguration' {..} =
+    Prelude.rnf prefix `Prelude.seq` Prelude.rnf bucket
+
+instance Data.ToJSON InferenceS3InputConfiguration where
+  toJSON InferenceS3InputConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Prefix" Data..=) Prelude.<$> prefix,
+            Prelude.Just ("Bucket" Data..= bucket)
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/InferenceS3OutputConfiguration.hs b/gen/Amazonka/LookoutEquipment/Types/InferenceS3OutputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InferenceS3OutputConfiguration.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.LookoutEquipment.Types.InferenceS3OutputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InferenceS3OutputConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies configuration information for the output results from the
+-- inference, including output S3 location.
+--
+-- /See:/ 'newInferenceS3OutputConfiguration' smart constructor.
+data InferenceS3OutputConfiguration = InferenceS3OutputConfiguration'
+  { -- | The prefix for the S3 bucket used for the output results from the
+    -- inference.
+    prefix :: Prelude.Maybe Prelude.Text,
+    -- | The bucket containing the output results from the inference
+    bucket :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceS3OutputConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'prefix', 'inferenceS3OutputConfiguration_prefix' - The prefix for the S3 bucket used for the output results from the
+-- inference.
+--
+-- 'bucket', 'inferenceS3OutputConfiguration_bucket' - The bucket containing the output results from the inference
+newInferenceS3OutputConfiguration ::
+  -- | 'bucket'
+  Prelude.Text ->
+  InferenceS3OutputConfiguration
+newInferenceS3OutputConfiguration pBucket_ =
+  InferenceS3OutputConfiguration'
+    { prefix =
+        Prelude.Nothing,
+      bucket = pBucket_
+    }
+
+-- | The prefix for the S3 bucket used for the output results from the
+-- inference.
+inferenceS3OutputConfiguration_prefix :: Lens.Lens' InferenceS3OutputConfiguration (Prelude.Maybe Prelude.Text)
+inferenceS3OutputConfiguration_prefix = Lens.lens (\InferenceS3OutputConfiguration' {prefix} -> prefix) (\s@InferenceS3OutputConfiguration' {} a -> s {prefix = a} :: InferenceS3OutputConfiguration)
+
+-- | The bucket containing the output results from the inference
+inferenceS3OutputConfiguration_bucket :: Lens.Lens' InferenceS3OutputConfiguration Prelude.Text
+inferenceS3OutputConfiguration_bucket = Lens.lens (\InferenceS3OutputConfiguration' {bucket} -> bucket) (\s@InferenceS3OutputConfiguration' {} a -> s {bucket = a} :: InferenceS3OutputConfiguration)
+
+instance Data.FromJSON InferenceS3OutputConfiguration where
+  parseJSON =
+    Data.withObject
+      "InferenceS3OutputConfiguration"
+      ( \x ->
+          InferenceS3OutputConfiguration'
+            Prelude.<$> (x Data..:? "Prefix")
+            Prelude.<*> (x Data..: "Bucket")
+      )
+
+instance
+  Prelude.Hashable
+    InferenceS3OutputConfiguration
+  where
+  hashWithSalt
+    _salt
+    InferenceS3OutputConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` prefix
+        `Prelude.hashWithSalt` bucket
+
+instance
+  Prelude.NFData
+    InferenceS3OutputConfiguration
+  where
+  rnf InferenceS3OutputConfiguration' {..} =
+    Prelude.rnf prefix `Prelude.seq` Prelude.rnf bucket
+
+instance Data.ToJSON InferenceS3OutputConfiguration where
+  toJSON InferenceS3OutputConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Prefix" Data..=) Prelude.<$> prefix,
+            Prelude.Just ("Bucket" Data..= bucket)
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/InferenceSchedulerStatus.hs b/gen/Amazonka/LookoutEquipment/Types/InferenceSchedulerStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InferenceSchedulerStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.InferenceSchedulerStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InferenceSchedulerStatus
+  ( InferenceSchedulerStatus
+      ( ..,
+        InferenceSchedulerStatus_PENDING,
+        InferenceSchedulerStatus_RUNNING,
+        InferenceSchedulerStatus_STOPPED,
+        InferenceSchedulerStatus_STOPPING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InferenceSchedulerStatus = InferenceSchedulerStatus'
+  { fromInferenceSchedulerStatus ::
+      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 InferenceSchedulerStatus_PENDING :: InferenceSchedulerStatus
+pattern InferenceSchedulerStatus_PENDING = InferenceSchedulerStatus' "PENDING"
+
+pattern InferenceSchedulerStatus_RUNNING :: InferenceSchedulerStatus
+pattern InferenceSchedulerStatus_RUNNING = InferenceSchedulerStatus' "RUNNING"
+
+pattern InferenceSchedulerStatus_STOPPED :: InferenceSchedulerStatus
+pattern InferenceSchedulerStatus_STOPPED = InferenceSchedulerStatus' "STOPPED"
+
+pattern InferenceSchedulerStatus_STOPPING :: InferenceSchedulerStatus
+pattern InferenceSchedulerStatus_STOPPING = InferenceSchedulerStatus' "STOPPING"
+
+{-# COMPLETE
+  InferenceSchedulerStatus_PENDING,
+  InferenceSchedulerStatus_RUNNING,
+  InferenceSchedulerStatus_STOPPED,
+  InferenceSchedulerStatus_STOPPING,
+  InferenceSchedulerStatus'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/InferenceSchedulerSummary.hs b/gen/Amazonka/LookoutEquipment/Types/InferenceSchedulerSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InferenceSchedulerSummary.hs
@@ -0,0 +1,212 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.InferenceSchedulerSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InferenceSchedulerSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.DataUploadFrequency
+import Amazonka.LookoutEquipment.Types.InferenceSchedulerStatus
+import Amazonka.LookoutEquipment.Types.LatestInferenceResult
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the specific inference scheduler, including
+-- data delay offset, model name and ARN, status, and so on.
+--
+-- /See:/ 'newInferenceSchedulerSummary' smart constructor.
+data InferenceSchedulerSummary = InferenceSchedulerSummary'
+  { -- | A period of time (in minutes) by which inference on the data is delayed
+    -- after the data starts. For instance, if an offset delay time of five
+    -- minutes was selected, inference will not begin on the data until the
+    -- first data measurement after the five minute mark. For example, if five
+    -- minutes is selected, the inference scheduler will wake up at the
+    -- configured frequency with the additional five minute delay time to check
+    -- the customer S3 bucket. The customer can upload data at the same
+    -- frequency and they don\'t need to stop and restart the scheduler when
+    -- uploading new data.
+    dataDelayOffsetInMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | How often data is uploaded to the source S3 bucket for the input data.
+    -- This value is the length of time between data uploads. For instance, if
+    -- you select 5 minutes, Amazon Lookout for Equipment will upload the
+    -- real-time data to the source bucket once every 5 minutes. This frequency
+    -- also determines how often Amazon Lookout for Equipment starts a
+    -- scheduled inference on your data. In this example, it starts once every
+    -- 5 minutes.
+    dataUploadFrequency :: Prelude.Maybe DataUploadFrequency,
+    -- | The Amazon Resource Name (ARN) of the inference scheduler.
+    inferenceSchedulerArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the inference scheduler.
+    inferenceSchedulerName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether the latest execution for the inference scheduler was
+    -- Anomalous (anomalous events found) or Normal (no anomalous events
+    -- found).
+    latestInferenceResult :: Prelude.Maybe LatestInferenceResult,
+    -- | The Amazon Resource Name (ARN) of the ML model used by the inference
+    -- scheduler.
+    modelArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the ML model used for the inference scheduler.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the inference scheduler.
+    status :: Prelude.Maybe InferenceSchedulerStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InferenceSchedulerSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataDelayOffsetInMinutes', 'inferenceSchedulerSummary_dataDelayOffsetInMinutes' - A period of time (in minutes) by which inference on the data is delayed
+-- after the data starts. For instance, if an offset delay time of five
+-- minutes was selected, inference will not begin on the data until the
+-- first data measurement after the five minute mark. For example, if five
+-- minutes is selected, the inference scheduler will wake up at the
+-- configured frequency with the additional five minute delay time to check
+-- the customer S3 bucket. The customer can upload data at the same
+-- frequency and they don\'t need to stop and restart the scheduler when
+-- uploading new data.
+--
+-- 'dataUploadFrequency', 'inferenceSchedulerSummary_dataUploadFrequency' - How often data is uploaded to the source S3 bucket for the input data.
+-- This value is the length of time between data uploads. For instance, if
+-- you select 5 minutes, Amazon Lookout for Equipment will upload the
+-- real-time data to the source bucket once every 5 minutes. This frequency
+-- also determines how often Amazon Lookout for Equipment starts a
+-- scheduled inference on your data. In this example, it starts once every
+-- 5 minutes.
+--
+-- 'inferenceSchedulerArn', 'inferenceSchedulerSummary_inferenceSchedulerArn' - The Amazon Resource Name (ARN) of the inference scheduler.
+--
+-- 'inferenceSchedulerName', 'inferenceSchedulerSummary_inferenceSchedulerName' - The name of the inference scheduler.
+--
+-- 'latestInferenceResult', 'inferenceSchedulerSummary_latestInferenceResult' - Indicates whether the latest execution for the inference scheduler was
+-- Anomalous (anomalous events found) or Normal (no anomalous events
+-- found).
+--
+-- 'modelArn', 'inferenceSchedulerSummary_modelArn' - The Amazon Resource Name (ARN) of the ML model used by the inference
+-- scheduler.
+--
+-- 'modelName', 'inferenceSchedulerSummary_modelName' - The name of the ML model used for the inference scheduler.
+--
+-- 'status', 'inferenceSchedulerSummary_status' - Indicates the status of the inference scheduler.
+newInferenceSchedulerSummary ::
+  InferenceSchedulerSummary
+newInferenceSchedulerSummary =
+  InferenceSchedulerSummary'
+    { dataDelayOffsetInMinutes =
+        Prelude.Nothing,
+      dataUploadFrequency = Prelude.Nothing,
+      inferenceSchedulerArn = Prelude.Nothing,
+      inferenceSchedulerName = Prelude.Nothing,
+      latestInferenceResult = Prelude.Nothing,
+      modelArn = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | A period of time (in minutes) by which inference on the data is delayed
+-- after the data starts. For instance, if an offset delay time of five
+-- minutes was selected, inference will not begin on the data until the
+-- first data measurement after the five minute mark. For example, if five
+-- minutes is selected, the inference scheduler will wake up at the
+-- configured frequency with the additional five minute delay time to check
+-- the customer S3 bucket. The customer can upload data at the same
+-- frequency and they don\'t need to stop and restart the scheduler when
+-- uploading new data.
+inferenceSchedulerSummary_dataDelayOffsetInMinutes :: Lens.Lens' InferenceSchedulerSummary (Prelude.Maybe Prelude.Natural)
+inferenceSchedulerSummary_dataDelayOffsetInMinutes = Lens.lens (\InferenceSchedulerSummary' {dataDelayOffsetInMinutes} -> dataDelayOffsetInMinutes) (\s@InferenceSchedulerSummary' {} a -> s {dataDelayOffsetInMinutes = a} :: InferenceSchedulerSummary)
+
+-- | How often data is uploaded to the source S3 bucket for the input data.
+-- This value is the length of time between data uploads. For instance, if
+-- you select 5 minutes, Amazon Lookout for Equipment will upload the
+-- real-time data to the source bucket once every 5 minutes. This frequency
+-- also determines how often Amazon Lookout for Equipment starts a
+-- scheduled inference on your data. In this example, it starts once every
+-- 5 minutes.
+inferenceSchedulerSummary_dataUploadFrequency :: Lens.Lens' InferenceSchedulerSummary (Prelude.Maybe DataUploadFrequency)
+inferenceSchedulerSummary_dataUploadFrequency = Lens.lens (\InferenceSchedulerSummary' {dataUploadFrequency} -> dataUploadFrequency) (\s@InferenceSchedulerSummary' {} a -> s {dataUploadFrequency = a} :: InferenceSchedulerSummary)
+
+-- | The Amazon Resource Name (ARN) of the inference scheduler.
+inferenceSchedulerSummary_inferenceSchedulerArn :: Lens.Lens' InferenceSchedulerSummary (Prelude.Maybe Prelude.Text)
+inferenceSchedulerSummary_inferenceSchedulerArn = Lens.lens (\InferenceSchedulerSummary' {inferenceSchedulerArn} -> inferenceSchedulerArn) (\s@InferenceSchedulerSummary' {} a -> s {inferenceSchedulerArn = a} :: InferenceSchedulerSummary)
+
+-- | The name of the inference scheduler.
+inferenceSchedulerSummary_inferenceSchedulerName :: Lens.Lens' InferenceSchedulerSummary (Prelude.Maybe Prelude.Text)
+inferenceSchedulerSummary_inferenceSchedulerName = Lens.lens (\InferenceSchedulerSummary' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@InferenceSchedulerSummary' {} a -> s {inferenceSchedulerName = a} :: InferenceSchedulerSummary)
+
+-- | Indicates whether the latest execution for the inference scheduler was
+-- Anomalous (anomalous events found) or Normal (no anomalous events
+-- found).
+inferenceSchedulerSummary_latestInferenceResult :: Lens.Lens' InferenceSchedulerSummary (Prelude.Maybe LatestInferenceResult)
+inferenceSchedulerSummary_latestInferenceResult = Lens.lens (\InferenceSchedulerSummary' {latestInferenceResult} -> latestInferenceResult) (\s@InferenceSchedulerSummary' {} a -> s {latestInferenceResult = a} :: InferenceSchedulerSummary)
+
+-- | The Amazon Resource Name (ARN) of the ML model used by the inference
+-- scheduler.
+inferenceSchedulerSummary_modelArn :: Lens.Lens' InferenceSchedulerSummary (Prelude.Maybe Prelude.Text)
+inferenceSchedulerSummary_modelArn = Lens.lens (\InferenceSchedulerSummary' {modelArn} -> modelArn) (\s@InferenceSchedulerSummary' {} a -> s {modelArn = a} :: InferenceSchedulerSummary)
+
+-- | The name of the ML model used for the inference scheduler.
+inferenceSchedulerSummary_modelName :: Lens.Lens' InferenceSchedulerSummary (Prelude.Maybe Prelude.Text)
+inferenceSchedulerSummary_modelName = Lens.lens (\InferenceSchedulerSummary' {modelName} -> modelName) (\s@InferenceSchedulerSummary' {} a -> s {modelName = a} :: InferenceSchedulerSummary)
+
+-- | Indicates the status of the inference scheduler.
+inferenceSchedulerSummary_status :: Lens.Lens' InferenceSchedulerSummary (Prelude.Maybe InferenceSchedulerStatus)
+inferenceSchedulerSummary_status = Lens.lens (\InferenceSchedulerSummary' {status} -> status) (\s@InferenceSchedulerSummary' {} a -> s {status = a} :: InferenceSchedulerSummary)
+
+instance Data.FromJSON InferenceSchedulerSummary where
+  parseJSON =
+    Data.withObject
+      "InferenceSchedulerSummary"
+      ( \x ->
+          InferenceSchedulerSummary'
+            Prelude.<$> (x Data..:? "DataDelayOffsetInMinutes")
+            Prelude.<*> (x Data..:? "DataUploadFrequency")
+            Prelude.<*> (x Data..:? "InferenceSchedulerArn")
+            Prelude.<*> (x Data..:? "InferenceSchedulerName")
+            Prelude.<*> (x Data..:? "LatestInferenceResult")
+            Prelude.<*> (x Data..:? "ModelArn")
+            Prelude.<*> (x Data..:? "ModelName")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable InferenceSchedulerSummary where
+  hashWithSalt _salt InferenceSchedulerSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataDelayOffsetInMinutes
+      `Prelude.hashWithSalt` dataUploadFrequency
+      `Prelude.hashWithSalt` inferenceSchedulerArn
+      `Prelude.hashWithSalt` inferenceSchedulerName
+      `Prelude.hashWithSalt` latestInferenceResult
+      `Prelude.hashWithSalt` modelArn
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData InferenceSchedulerSummary where
+  rnf InferenceSchedulerSummary' {..} =
+    Prelude.rnf dataDelayOffsetInMinutes
+      `Prelude.seq` Prelude.rnf dataUploadFrequency
+      `Prelude.seq` Prelude.rnf inferenceSchedulerArn
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
+      `Prelude.seq` Prelude.rnf latestInferenceResult
+      `Prelude.seq` Prelude.rnf modelArn
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/LookoutEquipment/Types/IngestedFilesSummary.hs b/gen/Amazonka/LookoutEquipment/Types/IngestedFilesSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/IngestedFilesSummary.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.IngestedFilesSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.IngestedFilesSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.S3Object
+import qualified Amazonka.Prelude as Prelude
+
+-- | Gives statistics about how many files have been ingested, and which
+-- files have not been ingested, for a particular ingestion job.
+--
+-- /See:/ 'newIngestedFilesSummary' smart constructor.
+data IngestedFilesSummary = IngestedFilesSummary'
+  { -- | Indicates the number of files that were discarded. A file could be
+    -- discarded because its format is invalid (for example, a jpg or pdf) or
+    -- not readable.
+    discardedFiles :: Prelude.Maybe [S3Object],
+    -- | Indicates the total number of files that were submitted for ingestion.
+    totalNumberOfFiles :: Prelude.Int,
+    -- | Indicates the number of files that were successfully ingested.
+    ingestedNumberOfFiles :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IngestedFilesSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'discardedFiles', 'ingestedFilesSummary_discardedFiles' - Indicates the number of files that were discarded. A file could be
+-- discarded because its format is invalid (for example, a jpg or pdf) or
+-- not readable.
+--
+-- 'totalNumberOfFiles', 'ingestedFilesSummary_totalNumberOfFiles' - Indicates the total number of files that were submitted for ingestion.
+--
+-- 'ingestedNumberOfFiles', 'ingestedFilesSummary_ingestedNumberOfFiles' - Indicates the number of files that were successfully ingested.
+newIngestedFilesSummary ::
+  -- | 'totalNumberOfFiles'
+  Prelude.Int ->
+  -- | 'ingestedNumberOfFiles'
+  Prelude.Int ->
+  IngestedFilesSummary
+newIngestedFilesSummary
+  pTotalNumberOfFiles_
+  pIngestedNumberOfFiles_ =
+    IngestedFilesSummary'
+      { discardedFiles =
+          Prelude.Nothing,
+        totalNumberOfFiles = pTotalNumberOfFiles_,
+        ingestedNumberOfFiles = pIngestedNumberOfFiles_
+      }
+
+-- | Indicates the number of files that were discarded. A file could be
+-- discarded because its format is invalid (for example, a jpg or pdf) or
+-- not readable.
+ingestedFilesSummary_discardedFiles :: Lens.Lens' IngestedFilesSummary (Prelude.Maybe [S3Object])
+ingestedFilesSummary_discardedFiles = Lens.lens (\IngestedFilesSummary' {discardedFiles} -> discardedFiles) (\s@IngestedFilesSummary' {} a -> s {discardedFiles = a} :: IngestedFilesSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | Indicates the total number of files that were submitted for ingestion.
+ingestedFilesSummary_totalNumberOfFiles :: Lens.Lens' IngestedFilesSummary Prelude.Int
+ingestedFilesSummary_totalNumberOfFiles = Lens.lens (\IngestedFilesSummary' {totalNumberOfFiles} -> totalNumberOfFiles) (\s@IngestedFilesSummary' {} a -> s {totalNumberOfFiles = a} :: IngestedFilesSummary)
+
+-- | Indicates the number of files that were successfully ingested.
+ingestedFilesSummary_ingestedNumberOfFiles :: Lens.Lens' IngestedFilesSummary Prelude.Int
+ingestedFilesSummary_ingestedNumberOfFiles = Lens.lens (\IngestedFilesSummary' {ingestedNumberOfFiles} -> ingestedNumberOfFiles) (\s@IngestedFilesSummary' {} a -> s {ingestedNumberOfFiles = a} :: IngestedFilesSummary)
+
+instance Data.FromJSON IngestedFilesSummary where
+  parseJSON =
+    Data.withObject
+      "IngestedFilesSummary"
+      ( \x ->
+          IngestedFilesSummary'
+            Prelude.<$> (x Data..:? "DiscardedFiles" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "TotalNumberOfFiles")
+            Prelude.<*> (x Data..: "IngestedNumberOfFiles")
+      )
+
+instance Prelude.Hashable IngestedFilesSummary where
+  hashWithSalt _salt IngestedFilesSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` discardedFiles
+      `Prelude.hashWithSalt` totalNumberOfFiles
+      `Prelude.hashWithSalt` ingestedNumberOfFiles
+
+instance Prelude.NFData IngestedFilesSummary where
+  rnf IngestedFilesSummary' {..} =
+    Prelude.rnf discardedFiles
+      `Prelude.seq` Prelude.rnf totalNumberOfFiles
+      `Prelude.seq` Prelude.rnf ingestedNumberOfFiles
diff --git a/gen/Amazonka/LookoutEquipment/Types/IngestionInputConfiguration.hs b/gen/Amazonka/LookoutEquipment/Types/IngestionInputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/IngestionInputConfiguration.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.LookoutEquipment.Types.IngestionInputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.IngestionInputConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.IngestionS3InputConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies configuration information for the input data for the data
+-- ingestion job, including input data S3 location.
+--
+-- /See:/ 'newIngestionInputConfiguration' smart constructor.
+data IngestionInputConfiguration = IngestionInputConfiguration'
+  { -- | The location information for the S3 bucket used for input data for the
+    -- data ingestion.
+    s3InputConfiguration :: IngestionS3InputConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IngestionInputConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 's3InputConfiguration', 'ingestionInputConfiguration_s3InputConfiguration' - The location information for the S3 bucket used for input data for the
+-- data ingestion.
+newIngestionInputConfiguration ::
+  -- | 's3InputConfiguration'
+  IngestionS3InputConfiguration ->
+  IngestionInputConfiguration
+newIngestionInputConfiguration pS3InputConfiguration_ =
+  IngestionInputConfiguration'
+    { s3InputConfiguration =
+        pS3InputConfiguration_
+    }
+
+-- | The location information for the S3 bucket used for input data for the
+-- data ingestion.
+ingestionInputConfiguration_s3InputConfiguration :: Lens.Lens' IngestionInputConfiguration IngestionS3InputConfiguration
+ingestionInputConfiguration_s3InputConfiguration = Lens.lens (\IngestionInputConfiguration' {s3InputConfiguration} -> s3InputConfiguration) (\s@IngestionInputConfiguration' {} a -> s {s3InputConfiguration = a} :: IngestionInputConfiguration)
+
+instance Data.FromJSON IngestionInputConfiguration where
+  parseJSON =
+    Data.withObject
+      "IngestionInputConfiguration"
+      ( \x ->
+          IngestionInputConfiguration'
+            Prelude.<$> (x Data..: "S3InputConfiguration")
+      )
+
+instance Prelude.Hashable IngestionInputConfiguration where
+  hashWithSalt _salt IngestionInputConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` s3InputConfiguration
+
+instance Prelude.NFData IngestionInputConfiguration where
+  rnf IngestionInputConfiguration' {..} =
+    Prelude.rnf s3InputConfiguration
+
+instance Data.ToJSON IngestionInputConfiguration where
+  toJSON IngestionInputConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "S3InputConfiguration"
+                  Data..= s3InputConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/IngestionJobStatus.hs b/gen/Amazonka/LookoutEquipment/Types/IngestionJobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/IngestionJobStatus.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.LookoutEquipment.Types.IngestionJobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.IngestionJobStatus
+  ( IngestionJobStatus
+      ( ..,
+        IngestionJobStatus_FAILED,
+        IngestionJobStatus_IN_PROGRESS,
+        IngestionJobStatus_SUCCESS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype IngestionJobStatus = IngestionJobStatus'
+  { fromIngestionJobStatus ::
+      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 IngestionJobStatus_FAILED :: IngestionJobStatus
+pattern IngestionJobStatus_FAILED = IngestionJobStatus' "FAILED"
+
+pattern IngestionJobStatus_IN_PROGRESS :: IngestionJobStatus
+pattern IngestionJobStatus_IN_PROGRESS = IngestionJobStatus' "IN_PROGRESS"
+
+pattern IngestionJobStatus_SUCCESS :: IngestionJobStatus
+pattern IngestionJobStatus_SUCCESS = IngestionJobStatus' "SUCCESS"
+
+{-# COMPLETE
+  IngestionJobStatus_FAILED,
+  IngestionJobStatus_IN_PROGRESS,
+  IngestionJobStatus_SUCCESS,
+  IngestionJobStatus'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/IngestionS3InputConfiguration.hs b/gen/Amazonka/LookoutEquipment/Types/IngestionS3InputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/IngestionS3InputConfiguration.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.IngestionS3InputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.IngestionS3InputConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies S3 configuration information for the input data for the data
+-- ingestion job.
+--
+-- /See:/ 'newIngestionS3InputConfiguration' smart constructor.
+data IngestionS3InputConfiguration = IngestionS3InputConfiguration'
+  { -- | Pattern for matching the Amazon S3 files which will be used for
+    -- ingestion. If no KeyPattern is provided, we will use the default
+    -- hierarchy file structure, which is same as KeyPattern
+    -- {prefix}\/{component_name}\/*
+    keyPattern :: Prelude.Maybe Prelude.Text,
+    -- | The prefix for the S3 location being used for the input data for the
+    -- data ingestion.
+    prefix :: Prelude.Maybe Prelude.Text,
+    -- | The name of the S3 bucket used for the input data for the data
+    -- ingestion.
+    bucket :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IngestionS3InputConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'keyPattern', 'ingestionS3InputConfiguration_keyPattern' - Pattern for matching the Amazon S3 files which will be used for
+-- ingestion. If no KeyPattern is provided, we will use the default
+-- hierarchy file structure, which is same as KeyPattern
+-- {prefix}\/{component_name}\/*
+--
+-- 'prefix', 'ingestionS3InputConfiguration_prefix' - The prefix for the S3 location being used for the input data for the
+-- data ingestion.
+--
+-- 'bucket', 'ingestionS3InputConfiguration_bucket' - The name of the S3 bucket used for the input data for the data
+-- ingestion.
+newIngestionS3InputConfiguration ::
+  -- | 'bucket'
+  Prelude.Text ->
+  IngestionS3InputConfiguration
+newIngestionS3InputConfiguration pBucket_ =
+  IngestionS3InputConfiguration'
+    { keyPattern =
+        Prelude.Nothing,
+      prefix = Prelude.Nothing,
+      bucket = pBucket_
+    }
+
+-- | Pattern for matching the Amazon S3 files which will be used for
+-- ingestion. If no KeyPattern is provided, we will use the default
+-- hierarchy file structure, which is same as KeyPattern
+-- {prefix}\/{component_name}\/*
+ingestionS3InputConfiguration_keyPattern :: Lens.Lens' IngestionS3InputConfiguration (Prelude.Maybe Prelude.Text)
+ingestionS3InputConfiguration_keyPattern = Lens.lens (\IngestionS3InputConfiguration' {keyPattern} -> keyPattern) (\s@IngestionS3InputConfiguration' {} a -> s {keyPattern = a} :: IngestionS3InputConfiguration)
+
+-- | The prefix for the S3 location being used for the input data for the
+-- data ingestion.
+ingestionS3InputConfiguration_prefix :: Lens.Lens' IngestionS3InputConfiguration (Prelude.Maybe Prelude.Text)
+ingestionS3InputConfiguration_prefix = Lens.lens (\IngestionS3InputConfiguration' {prefix} -> prefix) (\s@IngestionS3InputConfiguration' {} a -> s {prefix = a} :: IngestionS3InputConfiguration)
+
+-- | The name of the S3 bucket used for the input data for the data
+-- ingestion.
+ingestionS3InputConfiguration_bucket :: Lens.Lens' IngestionS3InputConfiguration Prelude.Text
+ingestionS3InputConfiguration_bucket = Lens.lens (\IngestionS3InputConfiguration' {bucket} -> bucket) (\s@IngestionS3InputConfiguration' {} a -> s {bucket = a} :: IngestionS3InputConfiguration)
+
+instance Data.FromJSON IngestionS3InputConfiguration where
+  parseJSON =
+    Data.withObject
+      "IngestionS3InputConfiguration"
+      ( \x ->
+          IngestionS3InputConfiguration'
+            Prelude.<$> (x Data..:? "KeyPattern")
+            Prelude.<*> (x Data..:? "Prefix")
+            Prelude.<*> (x Data..: "Bucket")
+      )
+
+instance
+  Prelude.Hashable
+    IngestionS3InputConfiguration
+  where
+  hashWithSalt _salt IngestionS3InputConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` keyPattern
+      `Prelude.hashWithSalt` prefix
+      `Prelude.hashWithSalt` bucket
+
+instance Prelude.NFData IngestionS3InputConfiguration where
+  rnf IngestionS3InputConfiguration' {..} =
+    Prelude.rnf keyPattern
+      `Prelude.seq` Prelude.rnf prefix
+      `Prelude.seq` Prelude.rnf bucket
+
+instance Data.ToJSON IngestionS3InputConfiguration where
+  toJSON IngestionS3InputConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KeyPattern" Data..=) Prelude.<$> keyPattern,
+            ("Prefix" Data..=) Prelude.<$> prefix,
+            Prelude.Just ("Bucket" Data..= bucket)
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/InsufficientSensorData.hs b/gen/Amazonka/LookoutEquipment/Types/InsufficientSensorData.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InsufficientSensorData.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.LookoutEquipment.Types.InsufficientSensorData
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InsufficientSensorData where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.MissingCompleteSensorData
+import Amazonka.LookoutEquipment.Types.SensorsWithShortDateRange
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises aggregated information on sensors having
+-- insufficient data.
+--
+-- /See:/ 'newInsufficientSensorData' smart constructor.
+data InsufficientSensorData = InsufficientSensorData'
+  { -- | Parameter that describes the total number of sensors that have data
+    -- completely missing for it.
+    missingCompleteSensorData :: MissingCompleteSensorData,
+    -- | Parameter that describes the total number of sensors that have a short
+    -- date range of less than 90 days of data overall.
+    sensorsWithShortDateRange :: SensorsWithShortDateRange
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InsufficientSensorData' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'missingCompleteSensorData', 'insufficientSensorData_missingCompleteSensorData' - Parameter that describes the total number of sensors that have data
+-- completely missing for it.
+--
+-- 'sensorsWithShortDateRange', 'insufficientSensorData_sensorsWithShortDateRange' - Parameter that describes the total number of sensors that have a short
+-- date range of less than 90 days of data overall.
+newInsufficientSensorData ::
+  -- | 'missingCompleteSensorData'
+  MissingCompleteSensorData ->
+  -- | 'sensorsWithShortDateRange'
+  SensorsWithShortDateRange ->
+  InsufficientSensorData
+newInsufficientSensorData
+  pMissingCompleteSensorData_
+  pSensorsWithShortDateRange_ =
+    InsufficientSensorData'
+      { missingCompleteSensorData =
+          pMissingCompleteSensorData_,
+        sensorsWithShortDateRange =
+          pSensorsWithShortDateRange_
+      }
+
+-- | Parameter that describes the total number of sensors that have data
+-- completely missing for it.
+insufficientSensorData_missingCompleteSensorData :: Lens.Lens' InsufficientSensorData MissingCompleteSensorData
+insufficientSensorData_missingCompleteSensorData = Lens.lens (\InsufficientSensorData' {missingCompleteSensorData} -> missingCompleteSensorData) (\s@InsufficientSensorData' {} a -> s {missingCompleteSensorData = a} :: InsufficientSensorData)
+
+-- | Parameter that describes the total number of sensors that have a short
+-- date range of less than 90 days of data overall.
+insufficientSensorData_sensorsWithShortDateRange :: Lens.Lens' InsufficientSensorData SensorsWithShortDateRange
+insufficientSensorData_sensorsWithShortDateRange = Lens.lens (\InsufficientSensorData' {sensorsWithShortDateRange} -> sensorsWithShortDateRange) (\s@InsufficientSensorData' {} a -> s {sensorsWithShortDateRange = a} :: InsufficientSensorData)
+
+instance Data.FromJSON InsufficientSensorData where
+  parseJSON =
+    Data.withObject
+      "InsufficientSensorData"
+      ( \x ->
+          InsufficientSensorData'
+            Prelude.<$> (x Data..: "MissingCompleteSensorData")
+            Prelude.<*> (x Data..: "SensorsWithShortDateRange")
+      )
+
+instance Prelude.Hashable InsufficientSensorData where
+  hashWithSalt _salt InsufficientSensorData' {..} =
+    _salt
+      `Prelude.hashWithSalt` missingCompleteSensorData
+      `Prelude.hashWithSalt` sensorsWithShortDateRange
+
+instance Prelude.NFData InsufficientSensorData where
+  rnf InsufficientSensorData' {..} =
+    Prelude.rnf missingCompleteSensorData
+      `Prelude.seq` Prelude.rnf sensorsWithShortDateRange
diff --git a/gen/Amazonka/LookoutEquipment/Types/InvalidSensorData.hs b/gen/Amazonka/LookoutEquipment/Types/InvalidSensorData.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/InvalidSensorData.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.LookoutEquipment.Types.InvalidSensorData
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.InvalidSensorData where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises aggregated information on sensors having
+-- insufficient data.
+--
+-- /See:/ 'newInvalidSensorData' smart constructor.
+data InvalidSensorData = InvalidSensorData'
+  { -- | Indicates the number of sensors that have at least some invalid values.
+    affectedSensorCount :: Prelude.Int,
+    -- | Indicates the total number of invalid values across all the sensors.
+    totalNumberOfInvalidValues :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InvalidSensorData' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'affectedSensorCount', 'invalidSensorData_affectedSensorCount' - Indicates the number of sensors that have at least some invalid values.
+--
+-- 'totalNumberOfInvalidValues', 'invalidSensorData_totalNumberOfInvalidValues' - Indicates the total number of invalid values across all the sensors.
+newInvalidSensorData ::
+  -- | 'affectedSensorCount'
+  Prelude.Int ->
+  -- | 'totalNumberOfInvalidValues'
+  Prelude.Int ->
+  InvalidSensorData
+newInvalidSensorData
+  pAffectedSensorCount_
+  pTotalNumberOfInvalidValues_ =
+    InvalidSensorData'
+      { affectedSensorCount =
+          pAffectedSensorCount_,
+        totalNumberOfInvalidValues =
+          pTotalNumberOfInvalidValues_
+      }
+
+-- | Indicates the number of sensors that have at least some invalid values.
+invalidSensorData_affectedSensorCount :: Lens.Lens' InvalidSensorData Prelude.Int
+invalidSensorData_affectedSensorCount = Lens.lens (\InvalidSensorData' {affectedSensorCount} -> affectedSensorCount) (\s@InvalidSensorData' {} a -> s {affectedSensorCount = a} :: InvalidSensorData)
+
+-- | Indicates the total number of invalid values across all the sensors.
+invalidSensorData_totalNumberOfInvalidValues :: Lens.Lens' InvalidSensorData Prelude.Int
+invalidSensorData_totalNumberOfInvalidValues = Lens.lens (\InvalidSensorData' {totalNumberOfInvalidValues} -> totalNumberOfInvalidValues) (\s@InvalidSensorData' {} a -> s {totalNumberOfInvalidValues = a} :: InvalidSensorData)
+
+instance Data.FromJSON InvalidSensorData where
+  parseJSON =
+    Data.withObject
+      "InvalidSensorData"
+      ( \x ->
+          InvalidSensorData'
+            Prelude.<$> (x Data..: "AffectedSensorCount")
+            Prelude.<*> (x Data..: "TotalNumberOfInvalidValues")
+      )
+
+instance Prelude.Hashable InvalidSensorData where
+  hashWithSalt _salt InvalidSensorData' {..} =
+    _salt
+      `Prelude.hashWithSalt` affectedSensorCount
+      `Prelude.hashWithSalt` totalNumberOfInvalidValues
+
+instance Prelude.NFData InvalidSensorData where
+  rnf InvalidSensorData' {..} =
+    Prelude.rnf affectedSensorCount
+      `Prelude.seq` Prelude.rnf totalNumberOfInvalidValues
diff --git a/gen/Amazonka/LookoutEquipment/Types/LabelGroupSummary.hs b/gen/Amazonka/LookoutEquipment/Types/LabelGroupSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/LabelGroupSummary.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.LookoutEquipment.Types.LabelGroupSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.LabelGroupSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the label group.
+--
+-- /See:/ 'newLabelGroupSummary' smart constructor.
+data LabelGroupSummary = LabelGroupSummary'
+  { -- | The time at which the label group was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The ARN of the label group.
+    labelGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the label group.
+    labelGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The time at which the label group was updated.
+    updatedAt :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelGroupSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'labelGroupSummary_createdAt' - The time at which the label group was created.
+--
+-- 'labelGroupArn', 'labelGroupSummary_labelGroupArn' - The ARN of the label group.
+--
+-- 'labelGroupName', 'labelGroupSummary_labelGroupName' - The name of the label group.
+--
+-- 'updatedAt', 'labelGroupSummary_updatedAt' - The time at which the label group was updated.
+newLabelGroupSummary ::
+  LabelGroupSummary
+newLabelGroupSummary =
+  LabelGroupSummary'
+    { createdAt = Prelude.Nothing,
+      labelGroupArn = Prelude.Nothing,
+      labelGroupName = Prelude.Nothing,
+      updatedAt = Prelude.Nothing
+    }
+
+-- | The time at which the label group was created.
+labelGroupSummary_createdAt :: Lens.Lens' LabelGroupSummary (Prelude.Maybe Prelude.UTCTime)
+labelGroupSummary_createdAt = Lens.lens (\LabelGroupSummary' {createdAt} -> createdAt) (\s@LabelGroupSummary' {} a -> s {createdAt = a} :: LabelGroupSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the label group.
+labelGroupSummary_labelGroupArn :: Lens.Lens' LabelGroupSummary (Prelude.Maybe Prelude.Text)
+labelGroupSummary_labelGroupArn = Lens.lens (\LabelGroupSummary' {labelGroupArn} -> labelGroupArn) (\s@LabelGroupSummary' {} a -> s {labelGroupArn = a} :: LabelGroupSummary)
+
+-- | The name of the label group.
+labelGroupSummary_labelGroupName :: Lens.Lens' LabelGroupSummary (Prelude.Maybe Prelude.Text)
+labelGroupSummary_labelGroupName = Lens.lens (\LabelGroupSummary' {labelGroupName} -> labelGroupName) (\s@LabelGroupSummary' {} a -> s {labelGroupName = a} :: LabelGroupSummary)
+
+-- | The time at which the label group was updated.
+labelGroupSummary_updatedAt :: Lens.Lens' LabelGroupSummary (Prelude.Maybe Prelude.UTCTime)
+labelGroupSummary_updatedAt = Lens.lens (\LabelGroupSummary' {updatedAt} -> updatedAt) (\s@LabelGroupSummary' {} a -> s {updatedAt = a} :: LabelGroupSummary) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON LabelGroupSummary where
+  parseJSON =
+    Data.withObject
+      "LabelGroupSummary"
+      ( \x ->
+          LabelGroupSummary'
+            Prelude.<$> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "LabelGroupArn")
+            Prelude.<*> (x Data..:? "LabelGroupName")
+            Prelude.<*> (x Data..:? "UpdatedAt")
+      )
+
+instance Prelude.Hashable LabelGroupSummary where
+  hashWithSalt _salt LabelGroupSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` labelGroupArn
+      `Prelude.hashWithSalt` labelGroupName
+      `Prelude.hashWithSalt` updatedAt
+
+instance Prelude.NFData LabelGroupSummary where
+  rnf LabelGroupSummary' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf labelGroupArn
+      `Prelude.seq` Prelude.rnf labelGroupName
+      `Prelude.seq` Prelude.rnf updatedAt
diff --git a/gen/Amazonka/LookoutEquipment/Types/LabelRating.hs b/gen/Amazonka/LookoutEquipment/Types/LabelRating.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/LabelRating.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.LookoutEquipment.Types.LabelRating
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.LabelRating
+  ( LabelRating
+      ( ..,
+        LabelRating_ANOMALY,
+        LabelRating_NEUTRAL,
+        LabelRating_NO_ANOMALY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LabelRating = LabelRating'
+  { fromLabelRating ::
+      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 LabelRating_ANOMALY :: LabelRating
+pattern LabelRating_ANOMALY = LabelRating' "ANOMALY"
+
+pattern LabelRating_NEUTRAL :: LabelRating
+pattern LabelRating_NEUTRAL = LabelRating' "NEUTRAL"
+
+pattern LabelRating_NO_ANOMALY :: LabelRating
+pattern LabelRating_NO_ANOMALY = LabelRating' "NO_ANOMALY"
+
+{-# COMPLETE
+  LabelRating_ANOMALY,
+  LabelRating_NEUTRAL,
+  LabelRating_NO_ANOMALY,
+  LabelRating'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/LabelSummary.hs b/gen/Amazonka/LookoutEquipment/Types/LabelSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/LabelSummary.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.LookoutEquipment.Types.LabelSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.LabelSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.LabelRating
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the label.
+--
+-- /See:/ 'newLabelSummary' smart constructor.
+data LabelSummary = LabelSummary'
+  { -- | The time at which the label was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The timestamp indicating the end of the label.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | Indicates that a label pertains to a particular piece of equipment.
+    equipment :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the type of anomaly associated with the label.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    faultCode :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the label group.
+    labelGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the label group.
+    labelGroupName :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the label.
+    labelId :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether a labeled event represents an anomaly.
+    rating :: Prelude.Maybe LabelRating,
+    -- | The timestamp indicating the start of the label.
+    startTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'labelSummary_createdAt' - The time at which the label was created.
+--
+-- 'endTime', 'labelSummary_endTime' - The timestamp indicating the end of the label.
+--
+-- 'equipment', 'labelSummary_equipment' - Indicates that a label pertains to a particular piece of equipment.
+--
+-- 'faultCode', 'labelSummary_faultCode' - Indicates the type of anomaly associated with the label.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'labelGroupArn', 'labelSummary_labelGroupArn' - The ARN of the label group.
+--
+-- 'labelGroupName', 'labelSummary_labelGroupName' - The name of the label group.
+--
+-- 'labelId', 'labelSummary_labelId' - The ID of the label.
+--
+-- 'rating', 'labelSummary_rating' - Indicates whether a labeled event represents an anomaly.
+--
+-- 'startTime', 'labelSummary_startTime' - The timestamp indicating the start of the label.
+newLabelSummary ::
+  LabelSummary
+newLabelSummary =
+  LabelSummary'
+    { createdAt = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      equipment = Prelude.Nothing,
+      faultCode = Prelude.Nothing,
+      labelGroupArn = Prelude.Nothing,
+      labelGroupName = Prelude.Nothing,
+      labelId = Prelude.Nothing,
+      rating = Prelude.Nothing,
+      startTime = Prelude.Nothing
+    }
+
+-- | The time at which the label was created.
+labelSummary_createdAt :: Lens.Lens' LabelSummary (Prelude.Maybe Prelude.UTCTime)
+labelSummary_createdAt = Lens.lens (\LabelSummary' {createdAt} -> createdAt) (\s@LabelSummary' {} a -> s {createdAt = a} :: LabelSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The timestamp indicating the end of the label.
+labelSummary_endTime :: Lens.Lens' LabelSummary (Prelude.Maybe Prelude.UTCTime)
+labelSummary_endTime = Lens.lens (\LabelSummary' {endTime} -> endTime) (\s@LabelSummary' {} a -> s {endTime = a} :: LabelSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates that a label pertains to a particular piece of equipment.
+labelSummary_equipment :: Lens.Lens' LabelSummary (Prelude.Maybe Prelude.Text)
+labelSummary_equipment = Lens.lens (\LabelSummary' {equipment} -> equipment) (\s@LabelSummary' {} a -> s {equipment = a} :: LabelSummary)
+
+-- | Indicates the type of anomaly associated with the label.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+labelSummary_faultCode :: Lens.Lens' LabelSummary (Prelude.Maybe Prelude.Text)
+labelSummary_faultCode = Lens.lens (\LabelSummary' {faultCode} -> faultCode) (\s@LabelSummary' {} a -> s {faultCode = a} :: LabelSummary)
+
+-- | The ARN of the label group.
+labelSummary_labelGroupArn :: Lens.Lens' LabelSummary (Prelude.Maybe Prelude.Text)
+labelSummary_labelGroupArn = Lens.lens (\LabelSummary' {labelGroupArn} -> labelGroupArn) (\s@LabelSummary' {} a -> s {labelGroupArn = a} :: LabelSummary)
+
+-- | The name of the label group.
+labelSummary_labelGroupName :: Lens.Lens' LabelSummary (Prelude.Maybe Prelude.Text)
+labelSummary_labelGroupName = Lens.lens (\LabelSummary' {labelGroupName} -> labelGroupName) (\s@LabelSummary' {} a -> s {labelGroupName = a} :: LabelSummary)
+
+-- | The ID of the label.
+labelSummary_labelId :: Lens.Lens' LabelSummary (Prelude.Maybe Prelude.Text)
+labelSummary_labelId = Lens.lens (\LabelSummary' {labelId} -> labelId) (\s@LabelSummary' {} a -> s {labelId = a} :: LabelSummary)
+
+-- | Indicates whether a labeled event represents an anomaly.
+labelSummary_rating :: Lens.Lens' LabelSummary (Prelude.Maybe LabelRating)
+labelSummary_rating = Lens.lens (\LabelSummary' {rating} -> rating) (\s@LabelSummary' {} a -> s {rating = a} :: LabelSummary)
+
+-- | The timestamp indicating the start of the label.
+labelSummary_startTime :: Lens.Lens' LabelSummary (Prelude.Maybe Prelude.UTCTime)
+labelSummary_startTime = Lens.lens (\LabelSummary' {startTime} -> startTime) (\s@LabelSummary' {} a -> s {startTime = a} :: LabelSummary) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON LabelSummary where
+  parseJSON =
+    Data.withObject
+      "LabelSummary"
+      ( \x ->
+          LabelSummary'
+            Prelude.<$> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "Equipment")
+            Prelude.<*> (x Data..:? "FaultCode")
+            Prelude.<*> (x Data..:? "LabelGroupArn")
+            Prelude.<*> (x Data..:? "LabelGroupName")
+            Prelude.<*> (x Data..:? "LabelId")
+            Prelude.<*> (x Data..:? "Rating")
+            Prelude.<*> (x Data..:? "StartTime")
+      )
+
+instance Prelude.Hashable LabelSummary where
+  hashWithSalt _salt LabelSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` equipment
+      `Prelude.hashWithSalt` faultCode
+      `Prelude.hashWithSalt` labelGroupArn
+      `Prelude.hashWithSalt` labelGroupName
+      `Prelude.hashWithSalt` labelId
+      `Prelude.hashWithSalt` rating
+      `Prelude.hashWithSalt` startTime
+
+instance Prelude.NFData LabelSummary where
+  rnf LabelSummary' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf equipment
+      `Prelude.seq` Prelude.rnf faultCode
+      `Prelude.seq` Prelude.rnf labelGroupArn
+      `Prelude.seq` Prelude.rnf labelGroupName
+      `Prelude.seq` Prelude.rnf labelId
+      `Prelude.seq` Prelude.rnf rating
+      `Prelude.seq` Prelude.rnf startTime
diff --git a/gen/Amazonka/LookoutEquipment/Types/LabelsInputConfiguration.hs b/gen/Amazonka/LookoutEquipment/Types/LabelsInputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/LabelsInputConfiguration.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.LookoutEquipment.Types.LabelsInputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.LabelsInputConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.LabelsS3InputConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains the configuration information for the S3 location being used to
+-- hold label data.
+--
+-- /See:/ 'newLabelsInputConfiguration' smart constructor.
+data LabelsInputConfiguration = LabelsInputConfiguration'
+  { -- | The name of the label group to be used for label data.
+    labelGroupName :: Prelude.Maybe Prelude.Text,
+    -- | Contains location information for the S3 location being used for label
+    -- data.
+    s3InputConfiguration :: Prelude.Maybe LabelsS3InputConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelsInputConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'labelGroupName', 'labelsInputConfiguration_labelGroupName' - The name of the label group to be used for label data.
+--
+-- 's3InputConfiguration', 'labelsInputConfiguration_s3InputConfiguration' - Contains location information for the S3 location being used for label
+-- data.
+newLabelsInputConfiguration ::
+  LabelsInputConfiguration
+newLabelsInputConfiguration =
+  LabelsInputConfiguration'
+    { labelGroupName =
+        Prelude.Nothing,
+      s3InputConfiguration = Prelude.Nothing
+    }
+
+-- | The name of the label group to be used for label data.
+labelsInputConfiguration_labelGroupName :: Lens.Lens' LabelsInputConfiguration (Prelude.Maybe Prelude.Text)
+labelsInputConfiguration_labelGroupName = Lens.lens (\LabelsInputConfiguration' {labelGroupName} -> labelGroupName) (\s@LabelsInputConfiguration' {} a -> s {labelGroupName = a} :: LabelsInputConfiguration)
+
+-- | Contains location information for the S3 location being used for label
+-- data.
+labelsInputConfiguration_s3InputConfiguration :: Lens.Lens' LabelsInputConfiguration (Prelude.Maybe LabelsS3InputConfiguration)
+labelsInputConfiguration_s3InputConfiguration = Lens.lens (\LabelsInputConfiguration' {s3InputConfiguration} -> s3InputConfiguration) (\s@LabelsInputConfiguration' {} a -> s {s3InputConfiguration = a} :: LabelsInputConfiguration)
+
+instance Data.FromJSON LabelsInputConfiguration where
+  parseJSON =
+    Data.withObject
+      "LabelsInputConfiguration"
+      ( \x ->
+          LabelsInputConfiguration'
+            Prelude.<$> (x Data..:? "LabelGroupName")
+            Prelude.<*> (x Data..:? "S3InputConfiguration")
+      )
+
+instance Prelude.Hashable LabelsInputConfiguration where
+  hashWithSalt _salt LabelsInputConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` labelGroupName
+      `Prelude.hashWithSalt` s3InputConfiguration
+
+instance Prelude.NFData LabelsInputConfiguration where
+  rnf LabelsInputConfiguration' {..} =
+    Prelude.rnf labelGroupName
+      `Prelude.seq` Prelude.rnf s3InputConfiguration
+
+instance Data.ToJSON LabelsInputConfiguration where
+  toJSON LabelsInputConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LabelGroupName" Data..=)
+              Prelude.<$> labelGroupName,
+            ("S3InputConfiguration" Data..=)
+              Prelude.<$> s3InputConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/LabelsS3InputConfiguration.hs b/gen/Amazonka/LookoutEquipment/Types/LabelsS3InputConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/LabelsS3InputConfiguration.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.LookoutEquipment.Types.LabelsS3InputConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.LabelsS3InputConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The location information (prefix and bucket name) for the s3 location
+-- being used for label data.
+--
+-- /See:/ 'newLabelsS3InputConfiguration' smart constructor.
+data LabelsS3InputConfiguration = LabelsS3InputConfiguration'
+  { -- | The prefix for the S3 bucket used for the label data.
+    prefix :: Prelude.Maybe Prelude.Text,
+    -- | The name of the S3 bucket holding the label data.
+    bucket :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LabelsS3InputConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'prefix', 'labelsS3InputConfiguration_prefix' - The prefix for the S3 bucket used for the label data.
+--
+-- 'bucket', 'labelsS3InputConfiguration_bucket' - The name of the S3 bucket holding the label data.
+newLabelsS3InputConfiguration ::
+  -- | 'bucket'
+  Prelude.Text ->
+  LabelsS3InputConfiguration
+newLabelsS3InputConfiguration pBucket_ =
+  LabelsS3InputConfiguration'
+    { prefix =
+        Prelude.Nothing,
+      bucket = pBucket_
+    }
+
+-- | The prefix for the S3 bucket used for the label data.
+labelsS3InputConfiguration_prefix :: Lens.Lens' LabelsS3InputConfiguration (Prelude.Maybe Prelude.Text)
+labelsS3InputConfiguration_prefix = Lens.lens (\LabelsS3InputConfiguration' {prefix} -> prefix) (\s@LabelsS3InputConfiguration' {} a -> s {prefix = a} :: LabelsS3InputConfiguration)
+
+-- | The name of the S3 bucket holding the label data.
+labelsS3InputConfiguration_bucket :: Lens.Lens' LabelsS3InputConfiguration Prelude.Text
+labelsS3InputConfiguration_bucket = Lens.lens (\LabelsS3InputConfiguration' {bucket} -> bucket) (\s@LabelsS3InputConfiguration' {} a -> s {bucket = a} :: LabelsS3InputConfiguration)
+
+instance Data.FromJSON LabelsS3InputConfiguration where
+  parseJSON =
+    Data.withObject
+      "LabelsS3InputConfiguration"
+      ( \x ->
+          LabelsS3InputConfiguration'
+            Prelude.<$> (x Data..:? "Prefix")
+            Prelude.<*> (x Data..: "Bucket")
+      )
+
+instance Prelude.Hashable LabelsS3InputConfiguration where
+  hashWithSalt _salt LabelsS3InputConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` prefix
+      `Prelude.hashWithSalt` bucket
+
+instance Prelude.NFData LabelsS3InputConfiguration where
+  rnf LabelsS3InputConfiguration' {..} =
+    Prelude.rnf prefix `Prelude.seq` Prelude.rnf bucket
+
+instance Data.ToJSON LabelsS3InputConfiguration where
+  toJSON LabelsS3InputConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Prefix" Data..=) Prelude.<$> prefix,
+            Prelude.Just ("Bucket" Data..= bucket)
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/LargeTimestampGaps.hs b/gen/Amazonka/LookoutEquipment/Types/LargeTimestampGaps.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/LargeTimestampGaps.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.LargeTimestampGaps
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.LargeTimestampGaps where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.StatisticalIssueStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises information on large gaps between consecutive
+-- timestamps in data.
+--
+-- /See:/ 'newLargeTimestampGaps' smart constructor.
+data LargeTimestampGaps = LargeTimestampGaps'
+  { -- | Indicates the size of the largest timestamp gap, in days.
+    maxTimestampGapInDays :: Prelude.Maybe Prelude.Int,
+    -- | Indicates the number of large timestamp gaps, if there are any.
+    numberOfLargeTimestampGaps :: Prelude.Maybe Prelude.Int,
+    -- | Indicates whether there is a potential data issue related to large gaps
+    -- in timestamps.
+    status :: StatisticalIssueStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LargeTimestampGaps' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxTimestampGapInDays', 'largeTimestampGaps_maxTimestampGapInDays' - Indicates the size of the largest timestamp gap, in days.
+--
+-- 'numberOfLargeTimestampGaps', 'largeTimestampGaps_numberOfLargeTimestampGaps' - Indicates the number of large timestamp gaps, if there are any.
+--
+-- 'status', 'largeTimestampGaps_status' - Indicates whether there is a potential data issue related to large gaps
+-- in timestamps.
+newLargeTimestampGaps ::
+  -- | 'status'
+  StatisticalIssueStatus ->
+  LargeTimestampGaps
+newLargeTimestampGaps pStatus_ =
+  LargeTimestampGaps'
+    { maxTimestampGapInDays =
+        Prelude.Nothing,
+      numberOfLargeTimestampGaps = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Indicates the size of the largest timestamp gap, in days.
+largeTimestampGaps_maxTimestampGapInDays :: Lens.Lens' LargeTimestampGaps (Prelude.Maybe Prelude.Int)
+largeTimestampGaps_maxTimestampGapInDays = Lens.lens (\LargeTimestampGaps' {maxTimestampGapInDays} -> maxTimestampGapInDays) (\s@LargeTimestampGaps' {} a -> s {maxTimestampGapInDays = a} :: LargeTimestampGaps)
+
+-- | Indicates the number of large timestamp gaps, if there are any.
+largeTimestampGaps_numberOfLargeTimestampGaps :: Lens.Lens' LargeTimestampGaps (Prelude.Maybe Prelude.Int)
+largeTimestampGaps_numberOfLargeTimestampGaps = Lens.lens (\LargeTimestampGaps' {numberOfLargeTimestampGaps} -> numberOfLargeTimestampGaps) (\s@LargeTimestampGaps' {} a -> s {numberOfLargeTimestampGaps = a} :: LargeTimestampGaps)
+
+-- | Indicates whether there is a potential data issue related to large gaps
+-- in timestamps.
+largeTimestampGaps_status :: Lens.Lens' LargeTimestampGaps StatisticalIssueStatus
+largeTimestampGaps_status = Lens.lens (\LargeTimestampGaps' {status} -> status) (\s@LargeTimestampGaps' {} a -> s {status = a} :: LargeTimestampGaps)
+
+instance Data.FromJSON LargeTimestampGaps where
+  parseJSON =
+    Data.withObject
+      "LargeTimestampGaps"
+      ( \x ->
+          LargeTimestampGaps'
+            Prelude.<$> (x Data..:? "MaxTimestampGapInDays")
+            Prelude.<*> (x Data..:? "NumberOfLargeTimestampGaps")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable LargeTimestampGaps where
+  hashWithSalt _salt LargeTimestampGaps' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxTimestampGapInDays
+      `Prelude.hashWithSalt` numberOfLargeTimestampGaps
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData LargeTimestampGaps where
+  rnf LargeTimestampGaps' {..} =
+    Prelude.rnf maxTimestampGapInDays
+      `Prelude.seq` Prelude.rnf numberOfLargeTimestampGaps
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/LookoutEquipment/Types/LatestInferenceResult.hs b/gen/Amazonka/LookoutEquipment/Types/LatestInferenceResult.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/LatestInferenceResult.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.LookoutEquipment.Types.LatestInferenceResult
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.LatestInferenceResult
+  ( LatestInferenceResult
+      ( ..,
+        LatestInferenceResult_ANOMALOUS,
+        LatestInferenceResult_NORMAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LatestInferenceResult = LatestInferenceResult'
+  { fromLatestInferenceResult ::
+      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 LatestInferenceResult_ANOMALOUS :: LatestInferenceResult
+pattern LatestInferenceResult_ANOMALOUS = LatestInferenceResult' "ANOMALOUS"
+
+pattern LatestInferenceResult_NORMAL :: LatestInferenceResult
+pattern LatestInferenceResult_NORMAL = LatestInferenceResult' "NORMAL"
+
+{-# COMPLETE
+  LatestInferenceResult_ANOMALOUS,
+  LatestInferenceResult_NORMAL,
+  LatestInferenceResult'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/MissingCompleteSensorData.hs b/gen/Amazonka/LookoutEquipment/Types/MissingCompleteSensorData.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/MissingCompleteSensorData.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.LookoutEquipment.Types.MissingCompleteSensorData
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.MissingCompleteSensorData where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises information on sensors that have sensor data
+-- completely missing.
+--
+-- /See:/ 'newMissingCompleteSensorData' smart constructor.
+data MissingCompleteSensorData = MissingCompleteSensorData'
+  { -- | Indicates the number of sensors that have data missing completely.
+    affectedSensorCount :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MissingCompleteSensorData' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'affectedSensorCount', 'missingCompleteSensorData_affectedSensorCount' - Indicates the number of sensors that have data missing completely.
+newMissingCompleteSensorData ::
+  -- | 'affectedSensorCount'
+  Prelude.Int ->
+  MissingCompleteSensorData
+newMissingCompleteSensorData pAffectedSensorCount_ =
+  MissingCompleteSensorData'
+    { affectedSensorCount =
+        pAffectedSensorCount_
+    }
+
+-- | Indicates the number of sensors that have data missing completely.
+missingCompleteSensorData_affectedSensorCount :: Lens.Lens' MissingCompleteSensorData Prelude.Int
+missingCompleteSensorData_affectedSensorCount = Lens.lens (\MissingCompleteSensorData' {affectedSensorCount} -> affectedSensorCount) (\s@MissingCompleteSensorData' {} a -> s {affectedSensorCount = a} :: MissingCompleteSensorData)
+
+instance Data.FromJSON MissingCompleteSensorData where
+  parseJSON =
+    Data.withObject
+      "MissingCompleteSensorData"
+      ( \x ->
+          MissingCompleteSensorData'
+            Prelude.<$> (x Data..: "AffectedSensorCount")
+      )
+
+instance Prelude.Hashable MissingCompleteSensorData where
+  hashWithSalt _salt MissingCompleteSensorData' {..} =
+    _salt `Prelude.hashWithSalt` affectedSensorCount
+
+instance Prelude.NFData MissingCompleteSensorData where
+  rnf MissingCompleteSensorData' {..} =
+    Prelude.rnf affectedSensorCount
diff --git a/gen/Amazonka/LookoutEquipment/Types/MissingSensorData.hs b/gen/Amazonka/LookoutEquipment/Types/MissingSensorData.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/MissingSensorData.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.LookoutEquipment.Types.MissingSensorData
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.MissingSensorData where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises aggregated information on sensors having missing
+-- data.
+--
+-- /See:/ 'newMissingSensorData' smart constructor.
+data MissingSensorData = MissingSensorData'
+  { -- | Indicates the number of sensors that have atleast some data missing.
+    affectedSensorCount :: Prelude.Int,
+    -- | Indicates the total number of missing values across all the sensors.
+    totalNumberOfMissingValues :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MissingSensorData' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'affectedSensorCount', 'missingSensorData_affectedSensorCount' - Indicates the number of sensors that have atleast some data missing.
+--
+-- 'totalNumberOfMissingValues', 'missingSensorData_totalNumberOfMissingValues' - Indicates the total number of missing values across all the sensors.
+newMissingSensorData ::
+  -- | 'affectedSensorCount'
+  Prelude.Int ->
+  -- | 'totalNumberOfMissingValues'
+  Prelude.Int ->
+  MissingSensorData
+newMissingSensorData
+  pAffectedSensorCount_
+  pTotalNumberOfMissingValues_ =
+    MissingSensorData'
+      { affectedSensorCount =
+          pAffectedSensorCount_,
+        totalNumberOfMissingValues =
+          pTotalNumberOfMissingValues_
+      }
+
+-- | Indicates the number of sensors that have atleast some data missing.
+missingSensorData_affectedSensorCount :: Lens.Lens' MissingSensorData Prelude.Int
+missingSensorData_affectedSensorCount = Lens.lens (\MissingSensorData' {affectedSensorCount} -> affectedSensorCount) (\s@MissingSensorData' {} a -> s {affectedSensorCount = a} :: MissingSensorData)
+
+-- | Indicates the total number of missing values across all the sensors.
+missingSensorData_totalNumberOfMissingValues :: Lens.Lens' MissingSensorData Prelude.Int
+missingSensorData_totalNumberOfMissingValues = Lens.lens (\MissingSensorData' {totalNumberOfMissingValues} -> totalNumberOfMissingValues) (\s@MissingSensorData' {} a -> s {totalNumberOfMissingValues = a} :: MissingSensorData)
+
+instance Data.FromJSON MissingSensorData where
+  parseJSON =
+    Data.withObject
+      "MissingSensorData"
+      ( \x ->
+          MissingSensorData'
+            Prelude.<$> (x Data..: "AffectedSensorCount")
+            Prelude.<*> (x Data..: "TotalNumberOfMissingValues")
+      )
+
+instance Prelude.Hashable MissingSensorData where
+  hashWithSalt _salt MissingSensorData' {..} =
+    _salt
+      `Prelude.hashWithSalt` affectedSensorCount
+      `Prelude.hashWithSalt` totalNumberOfMissingValues
+
+instance Prelude.NFData MissingSensorData where
+  rnf MissingSensorData' {..} =
+    Prelude.rnf affectedSensorCount
+      `Prelude.seq` Prelude.rnf totalNumberOfMissingValues
diff --git a/gen/Amazonka/LookoutEquipment/Types/ModelStatus.hs b/gen/Amazonka/LookoutEquipment/Types/ModelStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/ModelStatus.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.LookoutEquipment.Types.ModelStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.ModelStatus
+  ( ModelStatus
+      ( ..,
+        ModelStatus_FAILED,
+        ModelStatus_IN_PROGRESS,
+        ModelStatus_SUCCESS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ModelStatus = ModelStatus'
+  { fromModelStatus ::
+      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 ModelStatus_FAILED :: ModelStatus
+pattern ModelStatus_FAILED = ModelStatus' "FAILED"
+
+pattern ModelStatus_IN_PROGRESS :: ModelStatus
+pattern ModelStatus_IN_PROGRESS = ModelStatus' "IN_PROGRESS"
+
+pattern ModelStatus_SUCCESS :: ModelStatus
+pattern ModelStatus_SUCCESS = ModelStatus' "SUCCESS"
+
+{-# COMPLETE
+  ModelStatus_FAILED,
+  ModelStatus_IN_PROGRESS,
+  ModelStatus_SUCCESS,
+  ModelStatus'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/ModelSummary.hs b/gen/Amazonka/LookoutEquipment/Types/ModelSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/ModelSummary.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.ModelSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.ModelSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.ModelStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides information about the specified ML model, including dataset and
+-- model names and ARNs, as well as status.
+--
+-- /See:/ 'newModelSummary' smart constructor.
+data ModelSummary = ModelSummary'
+  { -- | The time at which the specific model was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the dataset used to create the model.
+    datasetArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the dataset being used for the ML model.
+    datasetName :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the ML model.
+    modelArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the ML model.
+    modelName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the status of the ML model.
+    status :: Prelude.Maybe ModelStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModelSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdAt', 'modelSummary_createdAt' - The time at which the specific model was created.
+--
+-- 'datasetArn', 'modelSummary_datasetArn' - The Amazon Resource Name (ARN) of the dataset used to create the model.
+--
+-- 'datasetName', 'modelSummary_datasetName' - The name of the dataset being used for the ML model.
+--
+-- 'modelArn', 'modelSummary_modelArn' - The Amazon Resource Name (ARN) of the ML model.
+--
+-- 'modelName', 'modelSummary_modelName' - The name of the ML model.
+--
+-- 'status', 'modelSummary_status' - Indicates the status of the ML model.
+newModelSummary ::
+  ModelSummary
+newModelSummary =
+  ModelSummary'
+    { createdAt = Prelude.Nothing,
+      datasetArn = Prelude.Nothing,
+      datasetName = Prelude.Nothing,
+      modelArn = Prelude.Nothing,
+      modelName = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The time at which the specific model was created.
+modelSummary_createdAt :: Lens.Lens' ModelSummary (Prelude.Maybe Prelude.UTCTime)
+modelSummary_createdAt = Lens.lens (\ModelSummary' {createdAt} -> createdAt) (\s@ModelSummary' {} a -> s {createdAt = a} :: ModelSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the dataset used to create the model.
+modelSummary_datasetArn :: Lens.Lens' ModelSummary (Prelude.Maybe Prelude.Text)
+modelSummary_datasetArn = Lens.lens (\ModelSummary' {datasetArn} -> datasetArn) (\s@ModelSummary' {} a -> s {datasetArn = a} :: ModelSummary)
+
+-- | The name of the dataset being used for the ML model.
+modelSummary_datasetName :: Lens.Lens' ModelSummary (Prelude.Maybe Prelude.Text)
+modelSummary_datasetName = Lens.lens (\ModelSummary' {datasetName} -> datasetName) (\s@ModelSummary' {} a -> s {datasetName = a} :: ModelSummary)
+
+-- | The Amazon Resource Name (ARN) of the ML model.
+modelSummary_modelArn :: Lens.Lens' ModelSummary (Prelude.Maybe Prelude.Text)
+modelSummary_modelArn = Lens.lens (\ModelSummary' {modelArn} -> modelArn) (\s@ModelSummary' {} a -> s {modelArn = a} :: ModelSummary)
+
+-- | The name of the ML model.
+modelSummary_modelName :: Lens.Lens' ModelSummary (Prelude.Maybe Prelude.Text)
+modelSummary_modelName = Lens.lens (\ModelSummary' {modelName} -> modelName) (\s@ModelSummary' {} a -> s {modelName = a} :: ModelSummary)
+
+-- | Indicates the status of the ML model.
+modelSummary_status :: Lens.Lens' ModelSummary (Prelude.Maybe ModelStatus)
+modelSummary_status = Lens.lens (\ModelSummary' {status} -> status) (\s@ModelSummary' {} a -> s {status = a} :: ModelSummary)
+
+instance Data.FromJSON ModelSummary where
+  parseJSON =
+    Data.withObject
+      "ModelSummary"
+      ( \x ->
+          ModelSummary'
+            Prelude.<$> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "DatasetArn")
+            Prelude.<*> (x Data..:? "DatasetName")
+            Prelude.<*> (x Data..:? "ModelArn")
+            Prelude.<*> (x Data..:? "ModelName")
+            Prelude.<*> (x Data..:? "Status")
+      )
+
+instance Prelude.Hashable ModelSummary where
+  hashWithSalt _salt ModelSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` datasetArn
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` modelArn
+      `Prelude.hashWithSalt` modelName
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ModelSummary where
+  rnf ModelSummary' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf datasetArn
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf modelArn
+      `Prelude.seq` Prelude.rnf modelName
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/LookoutEquipment/Types/MonotonicValues.hs b/gen/Amazonka/LookoutEquipment/Types/MonotonicValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/MonotonicValues.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.LookoutEquipment.Types.MonotonicValues
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.MonotonicValues where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.Monotonicity
+import Amazonka.LookoutEquipment.Types.StatisticalIssueStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises information on monotonic values in the data.
+--
+-- /See:/ 'newMonotonicValues' smart constructor.
+data MonotonicValues = MonotonicValues'
+  { -- | Indicates the monotonicity of values. Can be INCREASING, DECREASING, or
+    -- STATIC.
+    monotonicity :: Prelude.Maybe Monotonicity,
+    -- | Indicates whether there is a potential data issue related to having
+    -- monotonic values.
+    status :: StatisticalIssueStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MonotonicValues' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'monotonicity', 'monotonicValues_monotonicity' - Indicates the monotonicity of values. Can be INCREASING, DECREASING, or
+-- STATIC.
+--
+-- 'status', 'monotonicValues_status' - Indicates whether there is a potential data issue related to having
+-- monotonic values.
+newMonotonicValues ::
+  -- | 'status'
+  StatisticalIssueStatus ->
+  MonotonicValues
+newMonotonicValues pStatus_ =
+  MonotonicValues'
+    { monotonicity = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Indicates the monotonicity of values. Can be INCREASING, DECREASING, or
+-- STATIC.
+monotonicValues_monotonicity :: Lens.Lens' MonotonicValues (Prelude.Maybe Monotonicity)
+monotonicValues_monotonicity = Lens.lens (\MonotonicValues' {monotonicity} -> monotonicity) (\s@MonotonicValues' {} a -> s {monotonicity = a} :: MonotonicValues)
+
+-- | Indicates whether there is a potential data issue related to having
+-- monotonic values.
+monotonicValues_status :: Lens.Lens' MonotonicValues StatisticalIssueStatus
+monotonicValues_status = Lens.lens (\MonotonicValues' {status} -> status) (\s@MonotonicValues' {} a -> s {status = a} :: MonotonicValues)
+
+instance Data.FromJSON MonotonicValues where
+  parseJSON =
+    Data.withObject
+      "MonotonicValues"
+      ( \x ->
+          MonotonicValues'
+            Prelude.<$> (x Data..:? "Monotonicity")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable MonotonicValues where
+  hashWithSalt _salt MonotonicValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` monotonicity
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData MonotonicValues where
+  rnf MonotonicValues' {..} =
+    Prelude.rnf monotonicity
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/LookoutEquipment/Types/Monotonicity.hs b/gen/Amazonka/LookoutEquipment/Types/Monotonicity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/Monotonicity.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.LookoutEquipment.Types.Monotonicity
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.Monotonicity
+  ( Monotonicity
+      ( ..,
+        Monotonicity_DECREASING,
+        Monotonicity_INCREASING,
+        Monotonicity_STATIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Monotonicity = Monotonicity'
+  { fromMonotonicity ::
+      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 Monotonicity_DECREASING :: Monotonicity
+pattern Monotonicity_DECREASING = Monotonicity' "DECREASING"
+
+pattern Monotonicity_INCREASING :: Monotonicity
+pattern Monotonicity_INCREASING = Monotonicity' "INCREASING"
+
+pattern Monotonicity_STATIC :: Monotonicity
+pattern Monotonicity_STATIC = Monotonicity' "STATIC"
+
+{-# COMPLETE
+  Monotonicity_DECREASING,
+  Monotonicity_INCREASING,
+  Monotonicity_STATIC,
+  Monotonicity'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/MultipleOperatingModes.hs b/gen/Amazonka/LookoutEquipment/Types/MultipleOperatingModes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/MultipleOperatingModes.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.LookoutEquipment.Types.MultipleOperatingModes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.MultipleOperatingModes where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.StatisticalIssueStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises information on operating modes in data.
+--
+-- /See:/ 'newMultipleOperatingModes' smart constructor.
+data MultipleOperatingModes = MultipleOperatingModes'
+  { -- | Indicates whether there is a potential data issue related to having
+    -- multiple operating modes.
+    status :: StatisticalIssueStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MultipleOperatingModes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'status', 'multipleOperatingModes_status' - Indicates whether there is a potential data issue related to having
+-- multiple operating modes.
+newMultipleOperatingModes ::
+  -- | 'status'
+  StatisticalIssueStatus ->
+  MultipleOperatingModes
+newMultipleOperatingModes pStatus_ =
+  MultipleOperatingModes' {status = pStatus_}
+
+-- | Indicates whether there is a potential data issue related to having
+-- multiple operating modes.
+multipleOperatingModes_status :: Lens.Lens' MultipleOperatingModes StatisticalIssueStatus
+multipleOperatingModes_status = Lens.lens (\MultipleOperatingModes' {status} -> status) (\s@MultipleOperatingModes' {} a -> s {status = a} :: MultipleOperatingModes)
+
+instance Data.FromJSON MultipleOperatingModes where
+  parseJSON =
+    Data.withObject
+      "MultipleOperatingModes"
+      ( \x ->
+          MultipleOperatingModes'
+            Prelude.<$> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable MultipleOperatingModes where
+  hashWithSalt _salt MultipleOperatingModes' {..} =
+    _salt `Prelude.hashWithSalt` status
+
+instance Prelude.NFData MultipleOperatingModes where
+  rnf MultipleOperatingModes' {..} = Prelude.rnf status
diff --git a/gen/Amazonka/LookoutEquipment/Types/S3Object.hs b/gen/Amazonka/LookoutEquipment/Types/S3Object.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/S3Object.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.S3Object
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.S3Object where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about an S3 bucket.
+--
+-- /See:/ 'newS3Object' smart constructor.
+data S3Object = S3Object'
+  { -- | The name of the specific S3 bucket.
+    bucket :: Prelude.Text,
+    -- | The AWS Key Management Service (AWS KMS) key being used to encrypt the
+    -- S3 object. Without this key, data in the bucket is not accessible.
+    key :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3Object' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucket', 's3Object_bucket' - The name of the specific S3 bucket.
+--
+-- 'key', 's3Object_key' - The AWS Key Management Service (AWS KMS) key being used to encrypt the
+-- S3 object. Without this key, data in the bucket is not accessible.
+newS3Object ::
+  -- | 'bucket'
+  Prelude.Text ->
+  -- | 'key'
+  Prelude.Text ->
+  S3Object
+newS3Object pBucket_ pKey_ =
+  S3Object' {bucket = pBucket_, key = pKey_}
+
+-- | The name of the specific S3 bucket.
+s3Object_bucket :: Lens.Lens' S3Object Prelude.Text
+s3Object_bucket = Lens.lens (\S3Object' {bucket} -> bucket) (\s@S3Object' {} a -> s {bucket = a} :: S3Object)
+
+-- | The AWS Key Management Service (AWS KMS) key being used to encrypt the
+-- S3 object. Without this key, data in the bucket is not accessible.
+s3Object_key :: Lens.Lens' S3Object Prelude.Text
+s3Object_key = Lens.lens (\S3Object' {key} -> key) (\s@S3Object' {} a -> s {key = a} :: S3Object)
+
+instance Data.FromJSON S3Object where
+  parseJSON =
+    Data.withObject
+      "S3Object"
+      ( \x ->
+          S3Object'
+            Prelude.<$> (x Data..: "Bucket")
+            Prelude.<*> (x Data..: "Key")
+      )
+
+instance Prelude.Hashable S3Object where
+  hashWithSalt _salt S3Object' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucket
+      `Prelude.hashWithSalt` key
+
+instance Prelude.NFData S3Object where
+  rnf S3Object' {..} =
+    Prelude.rnf bucket `Prelude.seq` Prelude.rnf key
diff --git a/gen/Amazonka/LookoutEquipment/Types/SensorStatisticsSummary.hs b/gen/Amazonka/LookoutEquipment/Types/SensorStatisticsSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/SensorStatisticsSummary.hs
@@ -0,0 +1,263 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.Types.SensorStatisticsSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.SensorStatisticsSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types.CategoricalValues
+import Amazonka.LookoutEquipment.Types.CountPercent
+import Amazonka.LookoutEquipment.Types.LargeTimestampGaps
+import Amazonka.LookoutEquipment.Types.MonotonicValues
+import Amazonka.LookoutEquipment.Types.MultipleOperatingModes
+import qualified Amazonka.Prelude as Prelude
+
+-- | Summary of ingestion statistics like whether data exists, number of
+-- missing values, number of invalid values and so on related to the
+-- particular sensor.
+--
+-- /See:/ 'newSensorStatisticsSummary' smart constructor.
+data SensorStatisticsSummary = SensorStatisticsSummary'
+  { -- | Parameter that describes potential risk about whether data associated
+    -- with the sensor is categorical.
+    categoricalValues :: Prelude.Maybe CategoricalValues,
+    -- | Name of the component to which the particular sensor belongs for which
+    -- the statistics belong to.
+    componentName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the time reference to indicate the end of valid data
+    -- associated with the sensor that the statistics belong to.
+    dataEndTime :: Prelude.Maybe Data.POSIX,
+    -- | Parameter that indicates whether data exists for the sensor that the
+    -- statistics belong to.
+    dataExists :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates the time reference to indicate the beginning of valid data
+    -- associated with the sensor that the statistics belong to.
+    dataStartTime :: Prelude.Maybe Data.POSIX,
+    -- | Parameter that describes the total number of duplicate timestamp records
+    -- associated with the sensor that the statistics belong to.
+    duplicateTimestamps :: Prelude.Maybe CountPercent,
+    -- | Parameter that describes the total number of invalid date entries
+    -- associated with the sensor that the statistics belong to.
+    invalidDateEntries :: Prelude.Maybe CountPercent,
+    -- | Parameter that describes the total number of, and percentage of, values
+    -- that are invalid for the sensor that the statistics belong to.
+    invalidValues :: Prelude.Maybe CountPercent,
+    -- | Parameter that describes potential risk about whether data associated
+    -- with the sensor contains one or more large gaps between consecutive
+    -- timestamps.
+    largeTimestampGaps :: Prelude.Maybe LargeTimestampGaps,
+    -- | Parameter that describes the total number of, and percentage of, values
+    -- that are missing for the sensor that the statistics belong to.
+    missingValues :: Prelude.Maybe CountPercent,
+    -- | Parameter that describes potential risk about whether data associated
+    -- with the sensor is mostly monotonic.
+    monotonicValues :: Prelude.Maybe MonotonicValues,
+    -- | Parameter that describes potential risk about whether data associated
+    -- with the sensor has more than one operating mode.
+    multipleOperatingModes :: Prelude.Maybe MultipleOperatingModes,
+    -- | Name of the sensor that the statistics belong to.
+    sensorName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SensorStatisticsSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'categoricalValues', 'sensorStatisticsSummary_categoricalValues' - Parameter that describes potential risk about whether data associated
+-- with the sensor is categorical.
+--
+-- 'componentName', 'sensorStatisticsSummary_componentName' - Name of the component to which the particular sensor belongs for which
+-- the statistics belong to.
+--
+-- 'dataEndTime', 'sensorStatisticsSummary_dataEndTime' - Indicates the time reference to indicate the end of valid data
+-- associated with the sensor that the statistics belong to.
+--
+-- 'dataExists', 'sensorStatisticsSummary_dataExists' - Parameter that indicates whether data exists for the sensor that the
+-- statistics belong to.
+--
+-- 'dataStartTime', 'sensorStatisticsSummary_dataStartTime' - Indicates the time reference to indicate the beginning of valid data
+-- associated with the sensor that the statistics belong to.
+--
+-- 'duplicateTimestamps', 'sensorStatisticsSummary_duplicateTimestamps' - Parameter that describes the total number of duplicate timestamp records
+-- associated with the sensor that the statistics belong to.
+--
+-- 'invalidDateEntries', 'sensorStatisticsSummary_invalidDateEntries' - Parameter that describes the total number of invalid date entries
+-- associated with the sensor that the statistics belong to.
+--
+-- 'invalidValues', 'sensorStatisticsSummary_invalidValues' - Parameter that describes the total number of, and percentage of, values
+-- that are invalid for the sensor that the statistics belong to.
+--
+-- 'largeTimestampGaps', 'sensorStatisticsSummary_largeTimestampGaps' - Parameter that describes potential risk about whether data associated
+-- with the sensor contains one or more large gaps between consecutive
+-- timestamps.
+--
+-- 'missingValues', 'sensorStatisticsSummary_missingValues' - Parameter that describes the total number of, and percentage of, values
+-- that are missing for the sensor that the statistics belong to.
+--
+-- 'monotonicValues', 'sensorStatisticsSummary_monotonicValues' - Parameter that describes potential risk about whether data associated
+-- with the sensor is mostly monotonic.
+--
+-- 'multipleOperatingModes', 'sensorStatisticsSummary_multipleOperatingModes' - Parameter that describes potential risk about whether data associated
+-- with the sensor has more than one operating mode.
+--
+-- 'sensorName', 'sensorStatisticsSummary_sensorName' - Name of the sensor that the statistics belong to.
+newSensorStatisticsSummary ::
+  SensorStatisticsSummary
+newSensorStatisticsSummary =
+  SensorStatisticsSummary'
+    { categoricalValues =
+        Prelude.Nothing,
+      componentName = Prelude.Nothing,
+      dataEndTime = Prelude.Nothing,
+      dataExists = Prelude.Nothing,
+      dataStartTime = Prelude.Nothing,
+      duplicateTimestamps = Prelude.Nothing,
+      invalidDateEntries = Prelude.Nothing,
+      invalidValues = Prelude.Nothing,
+      largeTimestampGaps = Prelude.Nothing,
+      missingValues = Prelude.Nothing,
+      monotonicValues = Prelude.Nothing,
+      multipleOperatingModes = Prelude.Nothing,
+      sensorName = Prelude.Nothing
+    }
+
+-- | Parameter that describes potential risk about whether data associated
+-- with the sensor is categorical.
+sensorStatisticsSummary_categoricalValues :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe CategoricalValues)
+sensorStatisticsSummary_categoricalValues = Lens.lens (\SensorStatisticsSummary' {categoricalValues} -> categoricalValues) (\s@SensorStatisticsSummary' {} a -> s {categoricalValues = a} :: SensorStatisticsSummary)
+
+-- | Name of the component to which the particular sensor belongs for which
+-- the statistics belong to.
+sensorStatisticsSummary_componentName :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe Prelude.Text)
+sensorStatisticsSummary_componentName = Lens.lens (\SensorStatisticsSummary' {componentName} -> componentName) (\s@SensorStatisticsSummary' {} a -> s {componentName = a} :: SensorStatisticsSummary)
+
+-- | Indicates the time reference to indicate the end of valid data
+-- associated with the sensor that the statistics belong to.
+sensorStatisticsSummary_dataEndTime :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe Prelude.UTCTime)
+sensorStatisticsSummary_dataEndTime = Lens.lens (\SensorStatisticsSummary' {dataEndTime} -> dataEndTime) (\s@SensorStatisticsSummary' {} a -> s {dataEndTime = a} :: SensorStatisticsSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Parameter that indicates whether data exists for the sensor that the
+-- statistics belong to.
+sensorStatisticsSummary_dataExists :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe Prelude.Bool)
+sensorStatisticsSummary_dataExists = Lens.lens (\SensorStatisticsSummary' {dataExists} -> dataExists) (\s@SensorStatisticsSummary' {} a -> s {dataExists = a} :: SensorStatisticsSummary)
+
+-- | Indicates the time reference to indicate the beginning of valid data
+-- associated with the sensor that the statistics belong to.
+sensorStatisticsSummary_dataStartTime :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe Prelude.UTCTime)
+sensorStatisticsSummary_dataStartTime = Lens.lens (\SensorStatisticsSummary' {dataStartTime} -> dataStartTime) (\s@SensorStatisticsSummary' {} a -> s {dataStartTime = a} :: SensorStatisticsSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Parameter that describes the total number of duplicate timestamp records
+-- associated with the sensor that the statistics belong to.
+sensorStatisticsSummary_duplicateTimestamps :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe CountPercent)
+sensorStatisticsSummary_duplicateTimestamps = Lens.lens (\SensorStatisticsSummary' {duplicateTimestamps} -> duplicateTimestamps) (\s@SensorStatisticsSummary' {} a -> s {duplicateTimestamps = a} :: SensorStatisticsSummary)
+
+-- | Parameter that describes the total number of invalid date entries
+-- associated with the sensor that the statistics belong to.
+sensorStatisticsSummary_invalidDateEntries :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe CountPercent)
+sensorStatisticsSummary_invalidDateEntries = Lens.lens (\SensorStatisticsSummary' {invalidDateEntries} -> invalidDateEntries) (\s@SensorStatisticsSummary' {} a -> s {invalidDateEntries = a} :: SensorStatisticsSummary)
+
+-- | Parameter that describes the total number of, and percentage of, values
+-- that are invalid for the sensor that the statistics belong to.
+sensorStatisticsSummary_invalidValues :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe CountPercent)
+sensorStatisticsSummary_invalidValues = Lens.lens (\SensorStatisticsSummary' {invalidValues} -> invalidValues) (\s@SensorStatisticsSummary' {} a -> s {invalidValues = a} :: SensorStatisticsSummary)
+
+-- | Parameter that describes potential risk about whether data associated
+-- with the sensor contains one or more large gaps between consecutive
+-- timestamps.
+sensorStatisticsSummary_largeTimestampGaps :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe LargeTimestampGaps)
+sensorStatisticsSummary_largeTimestampGaps = Lens.lens (\SensorStatisticsSummary' {largeTimestampGaps} -> largeTimestampGaps) (\s@SensorStatisticsSummary' {} a -> s {largeTimestampGaps = a} :: SensorStatisticsSummary)
+
+-- | Parameter that describes the total number of, and percentage of, values
+-- that are missing for the sensor that the statistics belong to.
+sensorStatisticsSummary_missingValues :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe CountPercent)
+sensorStatisticsSummary_missingValues = Lens.lens (\SensorStatisticsSummary' {missingValues} -> missingValues) (\s@SensorStatisticsSummary' {} a -> s {missingValues = a} :: SensorStatisticsSummary)
+
+-- | Parameter that describes potential risk about whether data associated
+-- with the sensor is mostly monotonic.
+sensorStatisticsSummary_monotonicValues :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe MonotonicValues)
+sensorStatisticsSummary_monotonicValues = Lens.lens (\SensorStatisticsSummary' {monotonicValues} -> monotonicValues) (\s@SensorStatisticsSummary' {} a -> s {monotonicValues = a} :: SensorStatisticsSummary)
+
+-- | Parameter that describes potential risk about whether data associated
+-- with the sensor has more than one operating mode.
+sensorStatisticsSummary_multipleOperatingModes :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe MultipleOperatingModes)
+sensorStatisticsSummary_multipleOperatingModes = Lens.lens (\SensorStatisticsSummary' {multipleOperatingModes} -> multipleOperatingModes) (\s@SensorStatisticsSummary' {} a -> s {multipleOperatingModes = a} :: SensorStatisticsSummary)
+
+-- | Name of the sensor that the statistics belong to.
+sensorStatisticsSummary_sensorName :: Lens.Lens' SensorStatisticsSummary (Prelude.Maybe Prelude.Text)
+sensorStatisticsSummary_sensorName = Lens.lens (\SensorStatisticsSummary' {sensorName} -> sensorName) (\s@SensorStatisticsSummary' {} a -> s {sensorName = a} :: SensorStatisticsSummary)
+
+instance Data.FromJSON SensorStatisticsSummary where
+  parseJSON =
+    Data.withObject
+      "SensorStatisticsSummary"
+      ( \x ->
+          SensorStatisticsSummary'
+            Prelude.<$> (x Data..:? "CategoricalValues")
+            Prelude.<*> (x Data..:? "ComponentName")
+            Prelude.<*> (x Data..:? "DataEndTime")
+            Prelude.<*> (x Data..:? "DataExists")
+            Prelude.<*> (x Data..:? "DataStartTime")
+            Prelude.<*> (x Data..:? "DuplicateTimestamps")
+            Prelude.<*> (x Data..:? "InvalidDateEntries")
+            Prelude.<*> (x Data..:? "InvalidValues")
+            Prelude.<*> (x Data..:? "LargeTimestampGaps")
+            Prelude.<*> (x Data..:? "MissingValues")
+            Prelude.<*> (x Data..:? "MonotonicValues")
+            Prelude.<*> (x Data..:? "MultipleOperatingModes")
+            Prelude.<*> (x Data..:? "SensorName")
+      )
+
+instance Prelude.Hashable SensorStatisticsSummary where
+  hashWithSalt _salt SensorStatisticsSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` categoricalValues
+      `Prelude.hashWithSalt` componentName
+      `Prelude.hashWithSalt` dataEndTime
+      `Prelude.hashWithSalt` dataExists
+      `Prelude.hashWithSalt` dataStartTime
+      `Prelude.hashWithSalt` duplicateTimestamps
+      `Prelude.hashWithSalt` invalidDateEntries
+      `Prelude.hashWithSalt` invalidValues
+      `Prelude.hashWithSalt` largeTimestampGaps
+      `Prelude.hashWithSalt` missingValues
+      `Prelude.hashWithSalt` monotonicValues
+      `Prelude.hashWithSalt` multipleOperatingModes
+      `Prelude.hashWithSalt` sensorName
+
+instance Prelude.NFData SensorStatisticsSummary where
+  rnf SensorStatisticsSummary' {..} =
+    Prelude.rnf categoricalValues
+      `Prelude.seq` Prelude.rnf componentName
+      `Prelude.seq` Prelude.rnf dataEndTime
+      `Prelude.seq` Prelude.rnf dataExists
+      `Prelude.seq` Prelude.rnf dataStartTime
+      `Prelude.seq` Prelude.rnf duplicateTimestamps
+      `Prelude.seq` Prelude.rnf invalidDateEntries
+      `Prelude.seq` Prelude.rnf invalidValues
+      `Prelude.seq` Prelude.rnf largeTimestampGaps
+      `Prelude.seq` Prelude.rnf missingValues
+      `Prelude.seq` Prelude.rnf monotonicValues
+      `Prelude.seq` Prelude.rnf multipleOperatingModes
+      `Prelude.seq` Prelude.rnf sensorName
diff --git a/gen/Amazonka/LookoutEquipment/Types/SensorsWithShortDateRange.hs b/gen/Amazonka/LookoutEquipment/Types/SensorsWithShortDateRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/SensorsWithShortDateRange.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.LookoutEquipment.Types.SensorsWithShortDateRange
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.SensorsWithShortDateRange where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises information on sensors that have shorter date
+-- range.
+--
+-- /See:/ 'newSensorsWithShortDateRange' smart constructor.
+data SensorsWithShortDateRange = SensorsWithShortDateRange'
+  { -- | Indicates the number of sensors that have less than 90 days of data.
+    affectedSensorCount :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SensorsWithShortDateRange' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'affectedSensorCount', 'sensorsWithShortDateRange_affectedSensorCount' - Indicates the number of sensors that have less than 90 days of data.
+newSensorsWithShortDateRange ::
+  -- | 'affectedSensorCount'
+  Prelude.Int ->
+  SensorsWithShortDateRange
+newSensorsWithShortDateRange pAffectedSensorCount_ =
+  SensorsWithShortDateRange'
+    { affectedSensorCount =
+        pAffectedSensorCount_
+    }
+
+-- | Indicates the number of sensors that have less than 90 days of data.
+sensorsWithShortDateRange_affectedSensorCount :: Lens.Lens' SensorsWithShortDateRange Prelude.Int
+sensorsWithShortDateRange_affectedSensorCount = Lens.lens (\SensorsWithShortDateRange' {affectedSensorCount} -> affectedSensorCount) (\s@SensorsWithShortDateRange' {} a -> s {affectedSensorCount = a} :: SensorsWithShortDateRange)
+
+instance Data.FromJSON SensorsWithShortDateRange where
+  parseJSON =
+    Data.withObject
+      "SensorsWithShortDateRange"
+      ( \x ->
+          SensorsWithShortDateRange'
+            Prelude.<$> (x Data..: "AffectedSensorCount")
+      )
+
+instance Prelude.Hashable SensorsWithShortDateRange where
+  hashWithSalt _salt SensorsWithShortDateRange' {..} =
+    _salt `Prelude.hashWithSalt` affectedSensorCount
+
+instance Prelude.NFData SensorsWithShortDateRange where
+  rnf SensorsWithShortDateRange' {..} =
+    Prelude.rnf affectedSensorCount
diff --git a/gen/Amazonka/LookoutEquipment/Types/StatisticalIssueStatus.hs b/gen/Amazonka/LookoutEquipment/Types/StatisticalIssueStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/StatisticalIssueStatus.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.LookoutEquipment.Types.StatisticalIssueStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.StatisticalIssueStatus
+  ( StatisticalIssueStatus
+      ( ..,
+        StatisticalIssueStatus_NO_ISSUE_DETECTED,
+        StatisticalIssueStatus_POTENTIAL_ISSUE_DETECTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StatisticalIssueStatus = StatisticalIssueStatus'
+  { fromStatisticalIssueStatus ::
+      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 StatisticalIssueStatus_NO_ISSUE_DETECTED :: StatisticalIssueStatus
+pattern StatisticalIssueStatus_NO_ISSUE_DETECTED = StatisticalIssueStatus' "NO_ISSUE_DETECTED"
+
+pattern StatisticalIssueStatus_POTENTIAL_ISSUE_DETECTED :: StatisticalIssueStatus
+pattern StatisticalIssueStatus_POTENTIAL_ISSUE_DETECTED = StatisticalIssueStatus' "POTENTIAL_ISSUE_DETECTED"
+
+{-# COMPLETE
+  StatisticalIssueStatus_NO_ISSUE_DETECTED,
+  StatisticalIssueStatus_POTENTIAL_ISSUE_DETECTED,
+  StatisticalIssueStatus'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/Tag.hs b/gen/Amazonka/LookoutEquipment/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/Tag.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.LookoutEquipment.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A tag is a key-value pair that can be added to a resource as metadata.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | The key for the specified tag.
+    key :: Prelude.Text,
+    -- | The value for the specified tag.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'tag_key' - The key for the specified tag.
+--
+-- 'value', 'tag_value' - The value for the specified tag.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag' {key = pKey_, value = pValue_}
+
+-- | The key for the specified tag.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | The value for the specified tag.
+tag_value :: Lens.Lens' Tag Prelude.Text
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..: "Key")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/LookoutEquipment/Types/TargetSamplingRate.hs b/gen/Amazonka/LookoutEquipment/Types/TargetSamplingRate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/TargetSamplingRate.hs
@@ -0,0 +1,116 @@
+{-# 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.LookoutEquipment.Types.TargetSamplingRate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.TargetSamplingRate
+  ( TargetSamplingRate
+      ( ..,
+        TargetSamplingRate_PT10M,
+        TargetSamplingRate_PT10S,
+        TargetSamplingRate_PT15M,
+        TargetSamplingRate_PT15S,
+        TargetSamplingRate_PT1H,
+        TargetSamplingRate_PT1M,
+        TargetSamplingRate_PT1S,
+        TargetSamplingRate_PT30M,
+        TargetSamplingRate_PT30S,
+        TargetSamplingRate_PT5M,
+        TargetSamplingRate_PT5S
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TargetSamplingRate = TargetSamplingRate'
+  { fromTargetSamplingRate ::
+      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 TargetSamplingRate_PT10M :: TargetSamplingRate
+pattern TargetSamplingRate_PT10M = TargetSamplingRate' "PT10M"
+
+pattern TargetSamplingRate_PT10S :: TargetSamplingRate
+pattern TargetSamplingRate_PT10S = TargetSamplingRate' "PT10S"
+
+pattern TargetSamplingRate_PT15M :: TargetSamplingRate
+pattern TargetSamplingRate_PT15M = TargetSamplingRate' "PT15M"
+
+pattern TargetSamplingRate_PT15S :: TargetSamplingRate
+pattern TargetSamplingRate_PT15S = TargetSamplingRate' "PT15S"
+
+pattern TargetSamplingRate_PT1H :: TargetSamplingRate
+pattern TargetSamplingRate_PT1H = TargetSamplingRate' "PT1H"
+
+pattern TargetSamplingRate_PT1M :: TargetSamplingRate
+pattern TargetSamplingRate_PT1M = TargetSamplingRate' "PT1M"
+
+pattern TargetSamplingRate_PT1S :: TargetSamplingRate
+pattern TargetSamplingRate_PT1S = TargetSamplingRate' "PT1S"
+
+pattern TargetSamplingRate_PT30M :: TargetSamplingRate
+pattern TargetSamplingRate_PT30M = TargetSamplingRate' "PT30M"
+
+pattern TargetSamplingRate_PT30S :: TargetSamplingRate
+pattern TargetSamplingRate_PT30S = TargetSamplingRate' "PT30S"
+
+pattern TargetSamplingRate_PT5M :: TargetSamplingRate
+pattern TargetSamplingRate_PT5M = TargetSamplingRate' "PT5M"
+
+pattern TargetSamplingRate_PT5S :: TargetSamplingRate
+pattern TargetSamplingRate_PT5S = TargetSamplingRate' "PT5S"
+
+{-# COMPLETE
+  TargetSamplingRate_PT10M,
+  TargetSamplingRate_PT10S,
+  TargetSamplingRate_PT15M,
+  TargetSamplingRate_PT15S,
+  TargetSamplingRate_PT1H,
+  TargetSamplingRate_PT1M,
+  TargetSamplingRate_PT1S,
+  TargetSamplingRate_PT30M,
+  TargetSamplingRate_PT30S,
+  TargetSamplingRate_PT5M,
+  TargetSamplingRate_PT5S,
+  TargetSamplingRate'
+  #-}
diff --git a/gen/Amazonka/LookoutEquipment/Types/UnsupportedTimestamps.hs b/gen/Amazonka/LookoutEquipment/Types/UnsupportedTimestamps.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/Types/UnsupportedTimestamps.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.LookoutEquipment.Types.UnsupportedTimestamps
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.LookoutEquipment.Types.UnsupportedTimestamps where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Entity that comprises information abount unsupported timestamps in the
+-- dataset.
+--
+-- /See:/ 'newUnsupportedTimestamps' smart constructor.
+data UnsupportedTimestamps = UnsupportedTimestamps'
+  { -- | Indicates the total number of unsupported timestamps across the ingested
+    -- data.
+    totalNumberOfUnsupportedTimestamps :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UnsupportedTimestamps' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'totalNumberOfUnsupportedTimestamps', 'unsupportedTimestamps_totalNumberOfUnsupportedTimestamps' - Indicates the total number of unsupported timestamps across the ingested
+-- data.
+newUnsupportedTimestamps ::
+  -- | 'totalNumberOfUnsupportedTimestamps'
+  Prelude.Int ->
+  UnsupportedTimestamps
+newUnsupportedTimestamps
+  pTotalNumberOfUnsupportedTimestamps_ =
+    UnsupportedTimestamps'
+      { totalNumberOfUnsupportedTimestamps =
+          pTotalNumberOfUnsupportedTimestamps_
+      }
+
+-- | Indicates the total number of unsupported timestamps across the ingested
+-- data.
+unsupportedTimestamps_totalNumberOfUnsupportedTimestamps :: Lens.Lens' UnsupportedTimestamps Prelude.Int
+unsupportedTimestamps_totalNumberOfUnsupportedTimestamps = Lens.lens (\UnsupportedTimestamps' {totalNumberOfUnsupportedTimestamps} -> totalNumberOfUnsupportedTimestamps) (\s@UnsupportedTimestamps' {} a -> s {totalNumberOfUnsupportedTimestamps = a} :: UnsupportedTimestamps)
+
+instance Data.FromJSON UnsupportedTimestamps where
+  parseJSON =
+    Data.withObject
+      "UnsupportedTimestamps"
+      ( \x ->
+          UnsupportedTimestamps'
+            Prelude.<$> (x Data..: "TotalNumberOfUnsupportedTimestamps")
+      )
+
+instance Prelude.Hashable UnsupportedTimestamps where
+  hashWithSalt _salt UnsupportedTimestamps' {..} =
+    _salt
+      `Prelude.hashWithSalt` totalNumberOfUnsupportedTimestamps
+
+instance Prelude.NFData UnsupportedTimestamps where
+  rnf UnsupportedTimestamps' {..} =
+    Prelude.rnf totalNumberOfUnsupportedTimestamps
diff --git a/gen/Amazonka/LookoutEquipment/UntagResource.hs b/gen/Amazonka/LookoutEquipment/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/UntagResource.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.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)
+--
+-- Removes a specific tag from a given resource. The tag is specified by
+-- its key.
+module Amazonka.LookoutEquipment.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 Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource to which the tag is
+    -- currently associated.
+    resourceArn :: Prelude.Text,
+    -- | Specifies the key of the tag to be removed from a specified resource.
+    tagKeys :: [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 to which the tag is
+-- currently associated.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - Specifies the key of the tag to be removed from a specified resource.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource to which the tag is
+-- currently associated.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | Specifies the key of the tag to be removed from a specified resource.
+untagResource_tagKeys :: Lens.Lens' UntagResource [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.postJSON (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
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.UntagResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UntagResource where
+  toJSON UntagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),
+            Prelude.Just ("TagKeys" Data..= tagKeys)
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UntagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /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/LookoutEquipment/UpdateInferenceScheduler.hs b/gen/Amazonka/LookoutEquipment/UpdateInferenceScheduler.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/UpdateInferenceScheduler.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.LookoutEquipment.UpdateInferenceScheduler
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an inference scheduler.
+module Amazonka.LookoutEquipment.UpdateInferenceScheduler
+  ( -- * Creating a Request
+    UpdateInferenceScheduler (..),
+    newUpdateInferenceScheduler,
+
+    -- * Request Lenses
+    updateInferenceScheduler_dataDelayOffsetInMinutes,
+    updateInferenceScheduler_dataInputConfiguration,
+    updateInferenceScheduler_dataOutputConfiguration,
+    updateInferenceScheduler_dataUploadFrequency,
+    updateInferenceScheduler_roleArn,
+    updateInferenceScheduler_inferenceSchedulerName,
+
+    -- * Destructuring the Response
+    UpdateInferenceSchedulerResponse (..),
+    newUpdateInferenceSchedulerResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateInferenceScheduler' smart constructor.
+data UpdateInferenceScheduler = UpdateInferenceScheduler'
+  { -- | A period of time (in minutes) by which inference on the data is delayed
+    -- after the data starts. For instance, if you select an offset delay time
+    -- of five minutes, inference will not begin on the data until the first
+    -- data measurement after the five minute mark. For example, if five
+    -- minutes is selected, the inference scheduler will wake up at the
+    -- configured frequency with the additional five minute delay time to check
+    -- the customer S3 bucket. The customer can upload data at the same
+    -- frequency and they don\'t need to stop and restart the scheduler when
+    -- uploading new data.
+    dataDelayOffsetInMinutes :: Prelude.Maybe Prelude.Natural,
+    -- | Specifies information for the input data for the inference scheduler,
+    -- including delimiter, format, and dataset location.
+    dataInputConfiguration :: Prelude.Maybe InferenceInputConfiguration,
+    -- | Specifies information for the output results from the inference
+    -- scheduler, including the output S3 location.
+    dataOutputConfiguration :: Prelude.Maybe InferenceOutputConfiguration,
+    -- | How often data is uploaded to the source S3 bucket for the input data.
+    -- The value chosen is the length of time between data uploads. For
+    -- instance, if you select 5 minutes, Amazon Lookout for Equipment will
+    -- upload the real-time data to the source bucket once every 5 minutes.
+    -- This frequency also determines how often Amazon Lookout for Equipment
+    -- starts a scheduled inference on your data. In this example, it starts
+    -- once every 5 minutes.
+    dataUploadFrequency :: Prelude.Maybe DataUploadFrequency,
+    -- | The Amazon Resource Name (ARN) of a role with permission to access the
+    -- data source for the inference scheduler.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the inference scheduler to be updated.
+    inferenceSchedulerName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateInferenceScheduler' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataDelayOffsetInMinutes', 'updateInferenceScheduler_dataDelayOffsetInMinutes' - A period of time (in minutes) by which inference on the data is delayed
+-- after the data starts. For instance, if you select an offset delay time
+-- of five minutes, inference will not begin on the data until the first
+-- data measurement after the five minute mark. For example, if five
+-- minutes is selected, the inference scheduler will wake up at the
+-- configured frequency with the additional five minute delay time to check
+-- the customer S3 bucket. The customer can upload data at the same
+-- frequency and they don\'t need to stop and restart the scheduler when
+-- uploading new data.
+--
+-- 'dataInputConfiguration', 'updateInferenceScheduler_dataInputConfiguration' - Specifies information for the input data for the inference scheduler,
+-- including delimiter, format, and dataset location.
+--
+-- 'dataOutputConfiguration', 'updateInferenceScheduler_dataOutputConfiguration' - Specifies information for the output results from the inference
+-- scheduler, including the output S3 location.
+--
+-- 'dataUploadFrequency', 'updateInferenceScheduler_dataUploadFrequency' - How often data is uploaded to the source S3 bucket for the input data.
+-- The value chosen is the length of time between data uploads. For
+-- instance, if you select 5 minutes, Amazon Lookout for Equipment will
+-- upload the real-time data to the source bucket once every 5 minutes.
+-- This frequency also determines how often Amazon Lookout for Equipment
+-- starts a scheduled inference on your data. In this example, it starts
+-- once every 5 minutes.
+--
+-- 'roleArn', 'updateInferenceScheduler_roleArn' - The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source for the inference scheduler.
+--
+-- 'inferenceSchedulerName', 'updateInferenceScheduler_inferenceSchedulerName' - The name of the inference scheduler to be updated.
+newUpdateInferenceScheduler ::
+  -- | 'inferenceSchedulerName'
+  Prelude.Text ->
+  UpdateInferenceScheduler
+newUpdateInferenceScheduler pInferenceSchedulerName_ =
+  UpdateInferenceScheduler'
+    { dataDelayOffsetInMinutes =
+        Prelude.Nothing,
+      dataInputConfiguration = Prelude.Nothing,
+      dataOutputConfiguration = Prelude.Nothing,
+      dataUploadFrequency = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      inferenceSchedulerName = pInferenceSchedulerName_
+    }
+
+-- | A period of time (in minutes) by which inference on the data is delayed
+-- after the data starts. For instance, if you select an offset delay time
+-- of five minutes, inference will not begin on the data until the first
+-- data measurement after the five minute mark. For example, if five
+-- minutes is selected, the inference scheduler will wake up at the
+-- configured frequency with the additional five minute delay time to check
+-- the customer S3 bucket. The customer can upload data at the same
+-- frequency and they don\'t need to stop and restart the scheduler when
+-- uploading new data.
+updateInferenceScheduler_dataDelayOffsetInMinutes :: Lens.Lens' UpdateInferenceScheduler (Prelude.Maybe Prelude.Natural)
+updateInferenceScheduler_dataDelayOffsetInMinutes = Lens.lens (\UpdateInferenceScheduler' {dataDelayOffsetInMinutes} -> dataDelayOffsetInMinutes) (\s@UpdateInferenceScheduler' {} a -> s {dataDelayOffsetInMinutes = a} :: UpdateInferenceScheduler)
+
+-- | Specifies information for the input data for the inference scheduler,
+-- including delimiter, format, and dataset location.
+updateInferenceScheduler_dataInputConfiguration :: Lens.Lens' UpdateInferenceScheduler (Prelude.Maybe InferenceInputConfiguration)
+updateInferenceScheduler_dataInputConfiguration = Lens.lens (\UpdateInferenceScheduler' {dataInputConfiguration} -> dataInputConfiguration) (\s@UpdateInferenceScheduler' {} a -> s {dataInputConfiguration = a} :: UpdateInferenceScheduler)
+
+-- | Specifies information for the output results from the inference
+-- scheduler, including the output S3 location.
+updateInferenceScheduler_dataOutputConfiguration :: Lens.Lens' UpdateInferenceScheduler (Prelude.Maybe InferenceOutputConfiguration)
+updateInferenceScheduler_dataOutputConfiguration = Lens.lens (\UpdateInferenceScheduler' {dataOutputConfiguration} -> dataOutputConfiguration) (\s@UpdateInferenceScheduler' {} a -> s {dataOutputConfiguration = a} :: UpdateInferenceScheduler)
+
+-- | How often data is uploaded to the source S3 bucket for the input data.
+-- The value chosen is the length of time between data uploads. For
+-- instance, if you select 5 minutes, Amazon Lookout for Equipment will
+-- upload the real-time data to the source bucket once every 5 minutes.
+-- This frequency also determines how often Amazon Lookout for Equipment
+-- starts a scheduled inference on your data. In this example, it starts
+-- once every 5 minutes.
+updateInferenceScheduler_dataUploadFrequency :: Lens.Lens' UpdateInferenceScheduler (Prelude.Maybe DataUploadFrequency)
+updateInferenceScheduler_dataUploadFrequency = Lens.lens (\UpdateInferenceScheduler' {dataUploadFrequency} -> dataUploadFrequency) (\s@UpdateInferenceScheduler' {} a -> s {dataUploadFrequency = a} :: UpdateInferenceScheduler)
+
+-- | The Amazon Resource Name (ARN) of a role with permission to access the
+-- data source for the inference scheduler.
+updateInferenceScheduler_roleArn :: Lens.Lens' UpdateInferenceScheduler (Prelude.Maybe Prelude.Text)
+updateInferenceScheduler_roleArn = Lens.lens (\UpdateInferenceScheduler' {roleArn} -> roleArn) (\s@UpdateInferenceScheduler' {} a -> s {roleArn = a} :: UpdateInferenceScheduler)
+
+-- | The name of the inference scheduler to be updated.
+updateInferenceScheduler_inferenceSchedulerName :: Lens.Lens' UpdateInferenceScheduler Prelude.Text
+updateInferenceScheduler_inferenceSchedulerName = Lens.lens (\UpdateInferenceScheduler' {inferenceSchedulerName} -> inferenceSchedulerName) (\s@UpdateInferenceScheduler' {} a -> s {inferenceSchedulerName = a} :: UpdateInferenceScheduler)
+
+instance Core.AWSRequest UpdateInferenceScheduler where
+  type
+    AWSResponse UpdateInferenceScheduler =
+      UpdateInferenceSchedulerResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      UpdateInferenceSchedulerResponse'
+
+instance Prelude.Hashable UpdateInferenceScheduler where
+  hashWithSalt _salt UpdateInferenceScheduler' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataDelayOffsetInMinutes
+      `Prelude.hashWithSalt` dataInputConfiguration
+      `Prelude.hashWithSalt` dataOutputConfiguration
+      `Prelude.hashWithSalt` dataUploadFrequency
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` inferenceSchedulerName
+
+instance Prelude.NFData UpdateInferenceScheduler where
+  rnf UpdateInferenceScheduler' {..} =
+    Prelude.rnf dataDelayOffsetInMinutes
+      `Prelude.seq` Prelude.rnf dataInputConfiguration
+      `Prelude.seq` Prelude.rnf dataOutputConfiguration
+      `Prelude.seq` Prelude.rnf dataUploadFrequency
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf inferenceSchedulerName
+
+instance Data.ToHeaders UpdateInferenceScheduler where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.UpdateInferenceScheduler" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateInferenceScheduler where
+  toJSON UpdateInferenceScheduler' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DataDelayOffsetInMinutes" Data..=)
+              Prelude.<$> dataDelayOffsetInMinutes,
+            ("DataInputConfiguration" Data..=)
+              Prelude.<$> dataInputConfiguration,
+            ("DataOutputConfiguration" Data..=)
+              Prelude.<$> dataOutputConfiguration,
+            ("DataUploadFrequency" Data..=)
+              Prelude.<$> dataUploadFrequency,
+            ("RoleArn" Data..=) Prelude.<$> roleArn,
+            Prelude.Just
+              ( "InferenceSchedulerName"
+                  Data..= inferenceSchedulerName
+              )
+          ]
+      )
+
+instance Data.ToPath UpdateInferenceScheduler where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateInferenceScheduler where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateInferenceSchedulerResponse' smart constructor.
+data UpdateInferenceSchedulerResponse = UpdateInferenceSchedulerResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateInferenceSchedulerResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpdateInferenceSchedulerResponse ::
+  UpdateInferenceSchedulerResponse
+newUpdateInferenceSchedulerResponse =
+  UpdateInferenceSchedulerResponse'
+
+instance
+  Prelude.NFData
+    UpdateInferenceSchedulerResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/LookoutEquipment/UpdateLabelGroup.hs b/gen/Amazonka/LookoutEquipment/UpdateLabelGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/UpdateLabelGroup.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.LookoutEquipment.UpdateLabelGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the label group.
+module Amazonka.LookoutEquipment.UpdateLabelGroup
+  ( -- * Creating a Request
+    UpdateLabelGroup (..),
+    newUpdateLabelGroup,
+
+    -- * Request Lenses
+    updateLabelGroup_faultCodes,
+    updateLabelGroup_labelGroupName,
+
+    -- * Destructuring the Response
+    UpdateLabelGroupResponse (..),
+    newUpdateLabelGroupResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateLabelGroup' smart constructor.
+data UpdateLabelGroup = UpdateLabelGroup'
+  { -- | Updates the code indicating the type of anomaly associated with the
+    -- label.
+    --
+    -- Data in this field will be retained for service usage. Follow best
+    -- practices for the security of your data.
+    faultCodes :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the label group to be updated.
+    labelGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateLabelGroup' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'faultCodes', 'updateLabelGroup_faultCodes' - Updates the code indicating the type of anomaly associated with the
+-- label.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+--
+-- 'labelGroupName', 'updateLabelGroup_labelGroupName' - The name of the label group to be updated.
+newUpdateLabelGroup ::
+  -- | 'labelGroupName'
+  Prelude.Text ->
+  UpdateLabelGroup
+newUpdateLabelGroup pLabelGroupName_ =
+  UpdateLabelGroup'
+    { faultCodes = Prelude.Nothing,
+      labelGroupName = pLabelGroupName_
+    }
+
+-- | Updates the code indicating the type of anomaly associated with the
+-- label.
+--
+-- Data in this field will be retained for service usage. Follow best
+-- practices for the security of your data.
+updateLabelGroup_faultCodes :: Lens.Lens' UpdateLabelGroup (Prelude.Maybe [Prelude.Text])
+updateLabelGroup_faultCodes = Lens.lens (\UpdateLabelGroup' {faultCodes} -> faultCodes) (\s@UpdateLabelGroup' {} a -> s {faultCodes = a} :: UpdateLabelGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the label group to be updated.
+updateLabelGroup_labelGroupName :: Lens.Lens' UpdateLabelGroup Prelude.Text
+updateLabelGroup_labelGroupName = Lens.lens (\UpdateLabelGroup' {labelGroupName} -> labelGroupName) (\s@UpdateLabelGroup' {} a -> s {labelGroupName = a} :: UpdateLabelGroup)
+
+instance Core.AWSRequest UpdateLabelGroup where
+  type
+    AWSResponse UpdateLabelGroup =
+      UpdateLabelGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull UpdateLabelGroupResponse'
+
+instance Prelude.Hashable UpdateLabelGroup where
+  hashWithSalt _salt UpdateLabelGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` faultCodes
+      `Prelude.hashWithSalt` labelGroupName
+
+instance Prelude.NFData UpdateLabelGroup where
+  rnf UpdateLabelGroup' {..} =
+    Prelude.rnf faultCodes
+      `Prelude.seq` Prelude.rnf labelGroupName
+
+instance Data.ToHeaders UpdateLabelGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSLookoutEquipmentFrontendService.UpdateLabelGroup" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateLabelGroup where
+  toJSON UpdateLabelGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("FaultCodes" Data..=) Prelude.<$> faultCodes,
+            Prelude.Just
+              ("LabelGroupName" Data..= labelGroupName)
+          ]
+      )
+
+instance Data.ToPath UpdateLabelGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateLabelGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateLabelGroupResponse' smart constructor.
+data UpdateLabelGroupResponse = UpdateLabelGroupResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateLabelGroupResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpdateLabelGroupResponse ::
+  UpdateLabelGroupResponse
+newUpdateLabelGroupResponse =
+  UpdateLabelGroupResponse'
+
+instance Prelude.NFData UpdateLabelGroupResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/LookoutEquipment/Waiters.hs b/gen/Amazonka/LookoutEquipment/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/LookoutEquipment/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.LookoutEquipment.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.LookoutEquipment.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.LookoutEquipment.Lens
+import Amazonka.LookoutEquipment.Types
+import qualified Amazonka.Prelude as Prelude
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.LookoutEquipment
+import Test.Amazonka.LookoutEquipment.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "LookoutEquipment"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/LookoutEquipment.hs b/test/Test/Amazonka/Gen/LookoutEquipment.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/LookoutEquipment.hs
@@ -0,0 +1,698 @@
+{-# 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.LookoutEquipment
+-- Copyright   : (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.LookoutEquipment where
+
+import Amazonka.LookoutEquipment
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.LookoutEquipment.Internal
+import Test.Amazonka.Prelude
+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"
+--         [ requestCreateDataset $
+--             newCreateDataset
+--
+--         , requestCreateInferenceScheduler $
+--             newCreateInferenceScheduler
+--
+--         , requestCreateLabel $
+--             newCreateLabel
+--
+--         , requestCreateLabelGroup $
+--             newCreateLabelGroup
+--
+--         , requestCreateModel $
+--             newCreateModel
+--
+--         , requestDeleteDataset $
+--             newDeleteDataset
+--
+--         , requestDeleteInferenceScheduler $
+--             newDeleteInferenceScheduler
+--
+--         , requestDeleteLabel $
+--             newDeleteLabel
+--
+--         , requestDeleteLabelGroup $
+--             newDeleteLabelGroup
+--
+--         , requestDeleteModel $
+--             newDeleteModel
+--
+--         , requestDescribeDataIngestionJob $
+--             newDescribeDataIngestionJob
+--
+--         , requestDescribeDataset $
+--             newDescribeDataset
+--
+--         , requestDescribeInferenceScheduler $
+--             newDescribeInferenceScheduler
+--
+--         , requestDescribeLabel $
+--             newDescribeLabel
+--
+--         , requestDescribeLabelGroup $
+--             newDescribeLabelGroup
+--
+--         , requestDescribeModel $
+--             newDescribeModel
+--
+--         , requestListDataIngestionJobs $
+--             newListDataIngestionJobs
+--
+--         , requestListDatasets $
+--             newListDatasets
+--
+--         , requestListInferenceEvents $
+--             newListInferenceEvents
+--
+--         , requestListInferenceExecutions $
+--             newListInferenceExecutions
+--
+--         , requestListInferenceSchedulers $
+--             newListInferenceSchedulers
+--
+--         , requestListLabelGroups $
+--             newListLabelGroups
+--
+--         , requestListLabels $
+--             newListLabels
+--
+--         , requestListModels $
+--             newListModels
+--
+--         , requestListSensorStatistics $
+--             newListSensorStatistics
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestStartDataIngestionJob $
+--             newStartDataIngestionJob
+--
+--         , requestStartInferenceScheduler $
+--             newStartInferenceScheduler
+--
+--         , requestStopInferenceScheduler $
+--             newStopInferenceScheduler
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateInferenceScheduler $
+--             newUpdateInferenceScheduler
+--
+--         , requestUpdateLabelGroup $
+--             newUpdateLabelGroup
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCreateDataset $
+--             newCreateDatasetResponse
+--
+--         , responseCreateInferenceScheduler $
+--             newCreateInferenceSchedulerResponse
+--
+--         , responseCreateLabel $
+--             newCreateLabelResponse
+--
+--         , responseCreateLabelGroup $
+--             newCreateLabelGroupResponse
+--
+--         , responseCreateModel $
+--             newCreateModelResponse
+--
+--         , responseDeleteDataset $
+--             newDeleteDatasetResponse
+--
+--         , responseDeleteInferenceScheduler $
+--             newDeleteInferenceSchedulerResponse
+--
+--         , responseDeleteLabel $
+--             newDeleteLabelResponse
+--
+--         , responseDeleteLabelGroup $
+--             newDeleteLabelGroupResponse
+--
+--         , responseDeleteModel $
+--             newDeleteModelResponse
+--
+--         , responseDescribeDataIngestionJob $
+--             newDescribeDataIngestionJobResponse
+--
+--         , responseDescribeDataset $
+--             newDescribeDatasetResponse
+--
+--         , responseDescribeInferenceScheduler $
+--             newDescribeInferenceSchedulerResponse
+--
+--         , responseDescribeLabel $
+--             newDescribeLabelResponse
+--
+--         , responseDescribeLabelGroup $
+--             newDescribeLabelGroupResponse
+--
+--         , responseDescribeModel $
+--             newDescribeModelResponse
+--
+--         , responseListDataIngestionJobs $
+--             newListDataIngestionJobsResponse
+--
+--         , responseListDatasets $
+--             newListDatasetsResponse
+--
+--         , responseListInferenceEvents $
+--             newListInferenceEventsResponse
+--
+--         , responseListInferenceExecutions $
+--             newListInferenceExecutionsResponse
+--
+--         , responseListInferenceSchedulers $
+--             newListInferenceSchedulersResponse
+--
+--         , responseListLabelGroups $
+--             newListLabelGroupsResponse
+--
+--         , responseListLabels $
+--             newListLabelsResponse
+--
+--         , responseListModels $
+--             newListModelsResponse
+--
+--         , responseListSensorStatistics $
+--             newListSensorStatisticsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseStartDataIngestionJob $
+--             newStartDataIngestionJobResponse
+--
+--         , responseStartInferenceScheduler $
+--             newStartInferenceSchedulerResponse
+--
+--         , responseStopInferenceScheduler $
+--             newStopInferenceSchedulerResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateInferenceScheduler $
+--             newUpdateInferenceSchedulerResponse
+--
+--         , responseUpdateLabelGroup $
+--             newUpdateLabelGroupResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCreateDataset :: CreateDataset -> TestTree
+requestCreateDataset =
+  req
+    "CreateDataset"
+    "fixture/CreateDataset.yaml"
+
+requestCreateInferenceScheduler :: CreateInferenceScheduler -> TestTree
+requestCreateInferenceScheduler =
+  req
+    "CreateInferenceScheduler"
+    "fixture/CreateInferenceScheduler.yaml"
+
+requestCreateLabel :: CreateLabel -> TestTree
+requestCreateLabel =
+  req
+    "CreateLabel"
+    "fixture/CreateLabel.yaml"
+
+requestCreateLabelGroup :: CreateLabelGroup -> TestTree
+requestCreateLabelGroup =
+  req
+    "CreateLabelGroup"
+    "fixture/CreateLabelGroup.yaml"
+
+requestCreateModel :: CreateModel -> TestTree
+requestCreateModel =
+  req
+    "CreateModel"
+    "fixture/CreateModel.yaml"
+
+requestDeleteDataset :: DeleteDataset -> TestTree
+requestDeleteDataset =
+  req
+    "DeleteDataset"
+    "fixture/DeleteDataset.yaml"
+
+requestDeleteInferenceScheduler :: DeleteInferenceScheduler -> TestTree
+requestDeleteInferenceScheduler =
+  req
+    "DeleteInferenceScheduler"
+    "fixture/DeleteInferenceScheduler.yaml"
+
+requestDeleteLabel :: DeleteLabel -> TestTree
+requestDeleteLabel =
+  req
+    "DeleteLabel"
+    "fixture/DeleteLabel.yaml"
+
+requestDeleteLabelGroup :: DeleteLabelGroup -> TestTree
+requestDeleteLabelGroup =
+  req
+    "DeleteLabelGroup"
+    "fixture/DeleteLabelGroup.yaml"
+
+requestDeleteModel :: DeleteModel -> TestTree
+requestDeleteModel =
+  req
+    "DeleteModel"
+    "fixture/DeleteModel.yaml"
+
+requestDescribeDataIngestionJob :: DescribeDataIngestionJob -> TestTree
+requestDescribeDataIngestionJob =
+  req
+    "DescribeDataIngestionJob"
+    "fixture/DescribeDataIngestionJob.yaml"
+
+requestDescribeDataset :: DescribeDataset -> TestTree
+requestDescribeDataset =
+  req
+    "DescribeDataset"
+    "fixture/DescribeDataset.yaml"
+
+requestDescribeInferenceScheduler :: DescribeInferenceScheduler -> TestTree
+requestDescribeInferenceScheduler =
+  req
+    "DescribeInferenceScheduler"
+    "fixture/DescribeInferenceScheduler.yaml"
+
+requestDescribeLabel :: DescribeLabel -> TestTree
+requestDescribeLabel =
+  req
+    "DescribeLabel"
+    "fixture/DescribeLabel.yaml"
+
+requestDescribeLabelGroup :: DescribeLabelGroup -> TestTree
+requestDescribeLabelGroup =
+  req
+    "DescribeLabelGroup"
+    "fixture/DescribeLabelGroup.yaml"
+
+requestDescribeModel :: DescribeModel -> TestTree
+requestDescribeModel =
+  req
+    "DescribeModel"
+    "fixture/DescribeModel.yaml"
+
+requestListDataIngestionJobs :: ListDataIngestionJobs -> TestTree
+requestListDataIngestionJobs =
+  req
+    "ListDataIngestionJobs"
+    "fixture/ListDataIngestionJobs.yaml"
+
+requestListDatasets :: ListDatasets -> TestTree
+requestListDatasets =
+  req
+    "ListDatasets"
+    "fixture/ListDatasets.yaml"
+
+requestListInferenceEvents :: ListInferenceEvents -> TestTree
+requestListInferenceEvents =
+  req
+    "ListInferenceEvents"
+    "fixture/ListInferenceEvents.yaml"
+
+requestListInferenceExecutions :: ListInferenceExecutions -> TestTree
+requestListInferenceExecutions =
+  req
+    "ListInferenceExecutions"
+    "fixture/ListInferenceExecutions.yaml"
+
+requestListInferenceSchedulers :: ListInferenceSchedulers -> TestTree
+requestListInferenceSchedulers =
+  req
+    "ListInferenceSchedulers"
+    "fixture/ListInferenceSchedulers.yaml"
+
+requestListLabelGroups :: ListLabelGroups -> TestTree
+requestListLabelGroups =
+  req
+    "ListLabelGroups"
+    "fixture/ListLabelGroups.yaml"
+
+requestListLabels :: ListLabels -> TestTree
+requestListLabels =
+  req
+    "ListLabels"
+    "fixture/ListLabels.yaml"
+
+requestListModels :: ListModels -> TestTree
+requestListModels =
+  req
+    "ListModels"
+    "fixture/ListModels.yaml"
+
+requestListSensorStatistics :: ListSensorStatistics -> TestTree
+requestListSensorStatistics =
+  req
+    "ListSensorStatistics"
+    "fixture/ListSensorStatistics.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestStartDataIngestionJob :: StartDataIngestionJob -> TestTree
+requestStartDataIngestionJob =
+  req
+    "StartDataIngestionJob"
+    "fixture/StartDataIngestionJob.yaml"
+
+requestStartInferenceScheduler :: StartInferenceScheduler -> TestTree
+requestStartInferenceScheduler =
+  req
+    "StartInferenceScheduler"
+    "fixture/StartInferenceScheduler.yaml"
+
+requestStopInferenceScheduler :: StopInferenceScheduler -> TestTree
+requestStopInferenceScheduler =
+  req
+    "StopInferenceScheduler"
+    "fixture/StopInferenceScheduler.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateInferenceScheduler :: UpdateInferenceScheduler -> TestTree
+requestUpdateInferenceScheduler =
+  req
+    "UpdateInferenceScheduler"
+    "fixture/UpdateInferenceScheduler.yaml"
+
+requestUpdateLabelGroup :: UpdateLabelGroup -> TestTree
+requestUpdateLabelGroup =
+  req
+    "UpdateLabelGroup"
+    "fixture/UpdateLabelGroup.yaml"
+
+-- Responses
+
+responseCreateDataset :: CreateDatasetResponse -> TestTree
+responseCreateDataset =
+  res
+    "CreateDatasetResponse"
+    "fixture/CreateDatasetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDataset)
+
+responseCreateInferenceScheduler :: CreateInferenceSchedulerResponse -> TestTree
+responseCreateInferenceScheduler =
+  res
+    "CreateInferenceSchedulerResponse"
+    "fixture/CreateInferenceSchedulerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateInferenceScheduler)
+
+responseCreateLabel :: CreateLabelResponse -> TestTree
+responseCreateLabel =
+  res
+    "CreateLabelResponse"
+    "fixture/CreateLabelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateLabel)
+
+responseCreateLabelGroup :: CreateLabelGroupResponse -> TestTree
+responseCreateLabelGroup =
+  res
+    "CreateLabelGroupResponse"
+    "fixture/CreateLabelGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateLabelGroup)
+
+responseCreateModel :: CreateModelResponse -> TestTree
+responseCreateModel =
+  res
+    "CreateModelResponse"
+    "fixture/CreateModelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateModel)
+
+responseDeleteDataset :: DeleteDatasetResponse -> TestTree
+responseDeleteDataset =
+  res
+    "DeleteDatasetResponse"
+    "fixture/DeleteDatasetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDataset)
+
+responseDeleteInferenceScheduler :: DeleteInferenceSchedulerResponse -> TestTree
+responseDeleteInferenceScheduler =
+  res
+    "DeleteInferenceSchedulerResponse"
+    "fixture/DeleteInferenceSchedulerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteInferenceScheduler)
+
+responseDeleteLabel :: DeleteLabelResponse -> TestTree
+responseDeleteLabel =
+  res
+    "DeleteLabelResponse"
+    "fixture/DeleteLabelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteLabel)
+
+responseDeleteLabelGroup :: DeleteLabelGroupResponse -> TestTree
+responseDeleteLabelGroup =
+  res
+    "DeleteLabelGroupResponse"
+    "fixture/DeleteLabelGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteLabelGroup)
+
+responseDeleteModel :: DeleteModelResponse -> TestTree
+responseDeleteModel =
+  res
+    "DeleteModelResponse"
+    "fixture/DeleteModelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteModel)
+
+responseDescribeDataIngestionJob :: DescribeDataIngestionJobResponse -> TestTree
+responseDescribeDataIngestionJob =
+  res
+    "DescribeDataIngestionJobResponse"
+    "fixture/DescribeDataIngestionJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDataIngestionJob)
+
+responseDescribeDataset :: DescribeDatasetResponse -> TestTree
+responseDescribeDataset =
+  res
+    "DescribeDatasetResponse"
+    "fixture/DescribeDatasetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDataset)
+
+responseDescribeInferenceScheduler :: DescribeInferenceSchedulerResponse -> TestTree
+responseDescribeInferenceScheduler =
+  res
+    "DescribeInferenceSchedulerResponse"
+    "fixture/DescribeInferenceSchedulerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeInferenceScheduler)
+
+responseDescribeLabel :: DescribeLabelResponse -> TestTree
+responseDescribeLabel =
+  res
+    "DescribeLabelResponse"
+    "fixture/DescribeLabelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeLabel)
+
+responseDescribeLabelGroup :: DescribeLabelGroupResponse -> TestTree
+responseDescribeLabelGroup =
+  res
+    "DescribeLabelGroupResponse"
+    "fixture/DescribeLabelGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeLabelGroup)
+
+responseDescribeModel :: DescribeModelResponse -> TestTree
+responseDescribeModel =
+  res
+    "DescribeModelResponse"
+    "fixture/DescribeModelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeModel)
+
+responseListDataIngestionJobs :: ListDataIngestionJobsResponse -> TestTree
+responseListDataIngestionJobs =
+  res
+    "ListDataIngestionJobsResponse"
+    "fixture/ListDataIngestionJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDataIngestionJobs)
+
+responseListDatasets :: ListDatasetsResponse -> TestTree
+responseListDatasets =
+  res
+    "ListDatasetsResponse"
+    "fixture/ListDatasetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDatasets)
+
+responseListInferenceEvents :: ListInferenceEventsResponse -> TestTree
+responseListInferenceEvents =
+  res
+    "ListInferenceEventsResponse"
+    "fixture/ListInferenceEventsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListInferenceEvents)
+
+responseListInferenceExecutions :: ListInferenceExecutionsResponse -> TestTree
+responseListInferenceExecutions =
+  res
+    "ListInferenceExecutionsResponse"
+    "fixture/ListInferenceExecutionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListInferenceExecutions)
+
+responseListInferenceSchedulers :: ListInferenceSchedulersResponse -> TestTree
+responseListInferenceSchedulers =
+  res
+    "ListInferenceSchedulersResponse"
+    "fixture/ListInferenceSchedulersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListInferenceSchedulers)
+
+responseListLabelGroups :: ListLabelGroupsResponse -> TestTree
+responseListLabelGroups =
+  res
+    "ListLabelGroupsResponse"
+    "fixture/ListLabelGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLabelGroups)
+
+responseListLabels :: ListLabelsResponse -> TestTree
+responseListLabels =
+  res
+    "ListLabelsResponse"
+    "fixture/ListLabelsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListLabels)
+
+responseListModels :: ListModelsResponse -> TestTree
+responseListModels =
+  res
+    "ListModelsResponse"
+    "fixture/ListModelsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListModels)
+
+responseListSensorStatistics :: ListSensorStatisticsResponse -> TestTree
+responseListSensorStatistics =
+  res
+    "ListSensorStatisticsResponse"
+    "fixture/ListSensorStatisticsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSensorStatistics)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseStartDataIngestionJob :: StartDataIngestionJobResponse -> TestTree
+responseStartDataIngestionJob =
+  res
+    "StartDataIngestionJobResponse"
+    "fixture/StartDataIngestionJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartDataIngestionJob)
+
+responseStartInferenceScheduler :: StartInferenceSchedulerResponse -> TestTree
+responseStartInferenceScheduler =
+  res
+    "StartInferenceSchedulerResponse"
+    "fixture/StartInferenceSchedulerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartInferenceScheduler)
+
+responseStopInferenceScheduler :: StopInferenceSchedulerResponse -> TestTree
+responseStopInferenceScheduler =
+  res
+    "StopInferenceSchedulerResponse"
+    "fixture/StopInferenceSchedulerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopInferenceScheduler)
+
+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)
+
+responseUpdateInferenceScheduler :: UpdateInferenceSchedulerResponse -> TestTree
+responseUpdateInferenceScheduler =
+  res
+    "UpdateInferenceSchedulerResponse"
+    "fixture/UpdateInferenceSchedulerResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateInferenceScheduler)
+
+responseUpdateLabelGroup :: UpdateLabelGroupResponse -> TestTree
+responseUpdateLabelGroup =
+  res
+    "UpdateLabelGroupResponse"
+    "fixture/UpdateLabelGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateLabelGroup)
diff --git a/test/Test/Amazonka/LookoutEquipment.hs b/test/Test/Amazonka/LookoutEquipment.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/LookoutEquipment.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.LookoutEquipment
+-- Copyright   : (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.LookoutEquipment
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/LookoutEquipment/Internal.hs b/test/Test/Amazonka/LookoutEquipment/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/LookoutEquipment/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.LookoutEquipment.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.LookoutEquipment.Internal where
