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 Braket SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2019-09-01@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-braket)
+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.Braket](http://hackage.haskell.org/package/amazonka-braket/docs/Amazonka-Braket.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-braket` 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-braket.cabal b/amazonka-braket.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-braket.cabal
@@ -0,0 +1,124 @@
+cabal-version:      2.2
+name:               amazonka-braket
+version:            2.0
+synopsis:           Amazon Braket 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 @2019-09-01@ 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.Braket.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.Braket" 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-braket
+
+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.Braket
+    Amazonka.Braket.CancelJob
+    Amazonka.Braket.CancelQuantumTask
+    Amazonka.Braket.CreateJob
+    Amazonka.Braket.CreateQuantumTask
+    Amazonka.Braket.GetDevice
+    Amazonka.Braket.GetJob
+    Amazonka.Braket.GetQuantumTask
+    Amazonka.Braket.Lens
+    Amazonka.Braket.ListTagsForResource
+    Amazonka.Braket.SearchDevices
+    Amazonka.Braket.SearchJobs
+    Amazonka.Braket.SearchQuantumTasks
+    Amazonka.Braket.TagResource
+    Amazonka.Braket.Types
+    Amazonka.Braket.Types.AlgorithmSpecification
+    Amazonka.Braket.Types.CancellationStatus
+    Amazonka.Braket.Types.CompressionType
+    Amazonka.Braket.Types.ContainerImage
+    Amazonka.Braket.Types.DataSource
+    Amazonka.Braket.Types.DeviceConfig
+    Amazonka.Braket.Types.DeviceStatus
+    Amazonka.Braket.Types.DeviceSummary
+    Amazonka.Braket.Types.DeviceType
+    Amazonka.Braket.Types.InputFileConfig
+    Amazonka.Braket.Types.InstanceConfig
+    Amazonka.Braket.Types.InstanceType
+    Amazonka.Braket.Types.JobCheckpointConfig
+    Amazonka.Braket.Types.JobEventDetails
+    Amazonka.Braket.Types.JobEventType
+    Amazonka.Braket.Types.JobOutputDataConfig
+    Amazonka.Braket.Types.JobPrimaryStatus
+    Amazonka.Braket.Types.JobStoppingCondition
+    Amazonka.Braket.Types.JobSummary
+    Amazonka.Braket.Types.QuantumTaskStatus
+    Amazonka.Braket.Types.QuantumTaskSummary
+    Amazonka.Braket.Types.S3DataSource
+    Amazonka.Braket.Types.ScriptModeConfig
+    Amazonka.Braket.Types.SearchDevicesFilter
+    Amazonka.Braket.Types.SearchJobsFilter
+    Amazonka.Braket.Types.SearchJobsFilterOperator
+    Amazonka.Braket.Types.SearchQuantumTasksFilter
+    Amazonka.Braket.Types.SearchQuantumTasksFilterOperator
+    Amazonka.Braket.UntagResource
+    Amazonka.Braket.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-braket-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.Braket
+    Test.Amazonka.Braket.Internal
+    Test.Amazonka.Gen.Braket
+
+  build-depends:
+    , amazonka-braket
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CancelJob.yaml b/fixture/CancelJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CancelJob.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CancelJobResponse.proto b/fixture/CancelJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CancelJobResponse.proto
diff --git a/fixture/CancelQuantumTask.yaml b/fixture/CancelQuantumTask.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CancelQuantumTask.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CancelQuantumTaskResponse.proto b/fixture/CancelQuantumTaskResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CancelQuantumTaskResponse.proto
diff --git a/fixture/CreateJob.yaml b/fixture/CreateJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateJobResponse.proto b/fixture/CreateJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateJobResponse.proto
diff --git a/fixture/CreateQuantumTask.yaml b/fixture/CreateQuantumTask.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateQuantumTask.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateQuantumTaskResponse.proto b/fixture/CreateQuantumTaskResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateQuantumTaskResponse.proto
diff --git a/fixture/GetDevice.yaml b/fixture/GetDevice.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDevice.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetDeviceResponse.proto b/fixture/GetDeviceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeviceResponse.proto
diff --git a/fixture/GetJob.yaml b/fixture/GetJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetJob.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetJobResponse.proto b/fixture/GetJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetJobResponse.proto
diff --git a/fixture/GetQuantumTask.yaml b/fixture/GetQuantumTask.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetQuantumTask.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetQuantumTaskResponse.proto b/fixture/GetQuantumTaskResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetQuantumTaskResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  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/SearchDevices.yaml b/fixture/SearchDevices.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchDevices.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SearchDevicesResponse.proto b/fixture/SearchDevicesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchDevicesResponse.proto
diff --git a/fixture/SearchJobs.yaml b/fixture/SearchJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SearchJobsResponse.proto b/fixture/SearchJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchJobsResponse.proto
diff --git a/fixture/SearchQuantumTasks.yaml b/fixture/SearchQuantumTasks.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchQuantumTasks.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SearchQuantumTasksResponse.proto b/fixture/SearchQuantumTasksResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchQuantumTasksResponse.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/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/braket/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  braket.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Amazonka/Braket.hs b/gen/Amazonka/Braket.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket.hs
@@ -0,0 +1,286 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.Braket
+-- 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 @2019-09-01@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- The Amazon Braket API Reference provides information about the
+-- operations and structures supported in Amazon Braket.
+--
+-- Additional Resources:
+--
+-- -   <https://docs.aws.amazon.com/braket/latest/developerguide/what-is-braket.html Amazon Braket Developer Guide>
+module Amazonka.Braket
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** DeviceOfflineException
+    _DeviceOfflineException,
+
+    -- ** DeviceRetiredException
+    _DeviceRetiredException,
+
+    -- ** InternalServiceException
+    _InternalServiceException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CancelJob
+    CancelJob (CancelJob'),
+    newCancelJob,
+    CancelJobResponse (CancelJobResponse'),
+    newCancelJobResponse,
+
+    -- ** CancelQuantumTask
+    CancelQuantumTask (CancelQuantumTask'),
+    newCancelQuantumTask,
+    CancelQuantumTaskResponse (CancelQuantumTaskResponse'),
+    newCancelQuantumTaskResponse,
+
+    -- ** CreateJob
+    CreateJob (CreateJob'),
+    newCreateJob,
+    CreateJobResponse (CreateJobResponse'),
+    newCreateJobResponse,
+
+    -- ** CreateQuantumTask
+    CreateQuantumTask (CreateQuantumTask'),
+    newCreateQuantumTask,
+    CreateQuantumTaskResponse (CreateQuantumTaskResponse'),
+    newCreateQuantumTaskResponse,
+
+    -- ** GetDevice
+    GetDevice (GetDevice'),
+    newGetDevice,
+    GetDeviceResponse (GetDeviceResponse'),
+    newGetDeviceResponse,
+
+    -- ** GetJob
+    GetJob (GetJob'),
+    newGetJob,
+    GetJobResponse (GetJobResponse'),
+    newGetJobResponse,
+
+    -- ** GetQuantumTask
+    GetQuantumTask (GetQuantumTask'),
+    newGetQuantumTask,
+    GetQuantumTaskResponse (GetQuantumTaskResponse'),
+    newGetQuantumTaskResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** SearchDevices (Paginated)
+    SearchDevices (SearchDevices'),
+    newSearchDevices,
+    SearchDevicesResponse (SearchDevicesResponse'),
+    newSearchDevicesResponse,
+
+    -- ** SearchJobs (Paginated)
+    SearchJobs (SearchJobs'),
+    newSearchJobs,
+    SearchJobsResponse (SearchJobsResponse'),
+    newSearchJobsResponse,
+
+    -- ** SearchQuantumTasks (Paginated)
+    SearchQuantumTasks (SearchQuantumTasks'),
+    newSearchQuantumTasks,
+    SearchQuantumTasksResponse (SearchQuantumTasksResponse'),
+    newSearchQuantumTasksResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- * Types
+
+    -- ** CancellationStatus
+    CancellationStatus (..),
+
+    -- ** CompressionType
+    CompressionType (..),
+
+    -- ** DeviceStatus
+    DeviceStatus (..),
+
+    -- ** DeviceType
+    DeviceType (..),
+
+    -- ** InstanceType
+    InstanceType (..),
+
+    -- ** JobEventType
+    JobEventType (..),
+
+    -- ** JobPrimaryStatus
+    JobPrimaryStatus (..),
+
+    -- ** QuantumTaskStatus
+    QuantumTaskStatus (..),
+
+    -- ** SearchJobsFilterOperator
+    SearchJobsFilterOperator (..),
+
+    -- ** SearchQuantumTasksFilterOperator
+    SearchQuantumTasksFilterOperator (..),
+
+    -- ** AlgorithmSpecification
+    AlgorithmSpecification (AlgorithmSpecification'),
+    newAlgorithmSpecification,
+
+    -- ** ContainerImage
+    ContainerImage (ContainerImage'),
+    newContainerImage,
+
+    -- ** DataSource
+    DataSource (DataSource'),
+    newDataSource,
+
+    -- ** DeviceConfig
+    DeviceConfig (DeviceConfig'),
+    newDeviceConfig,
+
+    -- ** DeviceSummary
+    DeviceSummary (DeviceSummary'),
+    newDeviceSummary,
+
+    -- ** InputFileConfig
+    InputFileConfig (InputFileConfig'),
+    newInputFileConfig,
+
+    -- ** InstanceConfig
+    InstanceConfig (InstanceConfig'),
+    newInstanceConfig,
+
+    -- ** JobCheckpointConfig
+    JobCheckpointConfig (JobCheckpointConfig'),
+    newJobCheckpointConfig,
+
+    -- ** JobEventDetails
+    JobEventDetails (JobEventDetails'),
+    newJobEventDetails,
+
+    -- ** JobOutputDataConfig
+    JobOutputDataConfig (JobOutputDataConfig'),
+    newJobOutputDataConfig,
+
+    -- ** JobStoppingCondition
+    JobStoppingCondition (JobStoppingCondition'),
+    newJobStoppingCondition,
+
+    -- ** JobSummary
+    JobSummary (JobSummary'),
+    newJobSummary,
+
+    -- ** QuantumTaskSummary
+    QuantumTaskSummary (QuantumTaskSummary'),
+    newQuantumTaskSummary,
+
+    -- ** S3DataSource
+    S3DataSource (S3DataSource'),
+    newS3DataSource,
+
+    -- ** ScriptModeConfig
+    ScriptModeConfig (ScriptModeConfig'),
+    newScriptModeConfig,
+
+    -- ** SearchDevicesFilter
+    SearchDevicesFilter (SearchDevicesFilter'),
+    newSearchDevicesFilter,
+
+    -- ** SearchJobsFilter
+    SearchJobsFilter (SearchJobsFilter'),
+    newSearchJobsFilter,
+
+    -- ** SearchQuantumTasksFilter
+    SearchQuantumTasksFilter (SearchQuantumTasksFilter'),
+    newSearchQuantumTasksFilter,
+  )
+where
+
+import Amazonka.Braket.CancelJob
+import Amazonka.Braket.CancelQuantumTask
+import Amazonka.Braket.CreateJob
+import Amazonka.Braket.CreateQuantumTask
+import Amazonka.Braket.GetDevice
+import Amazonka.Braket.GetJob
+import Amazonka.Braket.GetQuantumTask
+import Amazonka.Braket.Lens
+import Amazonka.Braket.ListTagsForResource
+import Amazonka.Braket.SearchDevices
+import Amazonka.Braket.SearchJobs
+import Amazonka.Braket.SearchQuantumTasks
+import Amazonka.Braket.TagResource
+import Amazonka.Braket.Types
+import Amazonka.Braket.UntagResource
+import Amazonka.Braket.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 'Braket'.
+
+-- $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/Braket/CancelJob.hs b/gen/Amazonka/Braket/CancelJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/CancelJob.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.CancelJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Cancels an Amazon Braket job.
+module Amazonka.Braket.CancelJob
+  ( -- * Creating a Request
+    CancelJob (..),
+    newCancelJob,
+
+    -- * Request Lenses
+    cancelJob_jobArn,
+
+    -- * Destructuring the Response
+    CancelJobResponse (..),
+    newCancelJobResponse,
+
+    -- * Response Lenses
+    cancelJobResponse_httpStatus,
+    cancelJobResponse_cancellationStatus,
+    cancelJobResponse_jobArn,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCancelJob' smart constructor.
+data CancelJob = CancelJob'
+  { -- | The ARN of the Amazon Braket job to cancel.
+    jobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'jobArn', 'cancelJob_jobArn' - The ARN of the Amazon Braket job to cancel.
+newCancelJob ::
+  -- | 'jobArn'
+  Prelude.Text ->
+  CancelJob
+newCancelJob pJobArn_ = CancelJob' {jobArn = pJobArn_}
+
+-- | The ARN of the Amazon Braket job to cancel.
+cancelJob_jobArn :: Lens.Lens' CancelJob Prelude.Text
+cancelJob_jobArn = Lens.lens (\CancelJob' {jobArn} -> jobArn) (\s@CancelJob' {} a -> s {jobArn = a} :: CancelJob)
+
+instance Core.AWSRequest CancelJob where
+  type AWSResponse CancelJob = CancelJobResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CancelJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "cancellationStatus")
+            Prelude.<*> (x Data..:> "jobArn")
+      )
+
+instance Prelude.Hashable CancelJob where
+  hashWithSalt _salt CancelJob' {..} =
+    _salt `Prelude.hashWithSalt` jobArn
+
+instance Prelude.NFData CancelJob where
+  rnf CancelJob' {..} = Prelude.rnf jobArn
+
+instance Data.ToHeaders CancelJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CancelJob where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath CancelJob where
+  toPath CancelJob' {..} =
+    Prelude.mconcat
+      ["/job/", Data.toBS jobArn, "/cancel"]
+
+instance Data.ToQuery CancelJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCancelJobResponse' smart constructor.
+data CancelJobResponse = CancelJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The status of the job cancellation request.
+    cancellationStatus :: CancellationStatus,
+    -- | The ARN of the Amazon Braket job.
+    jobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'cancelJobResponse_httpStatus' - The response's http status code.
+--
+-- 'cancellationStatus', 'cancelJobResponse_cancellationStatus' - The status of the job cancellation request.
+--
+-- 'jobArn', 'cancelJobResponse_jobArn' - The ARN of the Amazon Braket job.
+newCancelJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'cancellationStatus'
+  CancellationStatus ->
+  -- | 'jobArn'
+  Prelude.Text ->
+  CancelJobResponse
+newCancelJobResponse
+  pHttpStatus_
+  pCancellationStatus_
+  pJobArn_ =
+    CancelJobResponse'
+      { httpStatus = pHttpStatus_,
+        cancellationStatus = pCancellationStatus_,
+        jobArn = pJobArn_
+      }
+
+-- | The response's http status code.
+cancelJobResponse_httpStatus :: Lens.Lens' CancelJobResponse Prelude.Int
+cancelJobResponse_httpStatus = Lens.lens (\CancelJobResponse' {httpStatus} -> httpStatus) (\s@CancelJobResponse' {} a -> s {httpStatus = a} :: CancelJobResponse)
+
+-- | The status of the job cancellation request.
+cancelJobResponse_cancellationStatus :: Lens.Lens' CancelJobResponse CancellationStatus
+cancelJobResponse_cancellationStatus = Lens.lens (\CancelJobResponse' {cancellationStatus} -> cancellationStatus) (\s@CancelJobResponse' {} a -> s {cancellationStatus = a} :: CancelJobResponse)
+
+-- | The ARN of the Amazon Braket job.
+cancelJobResponse_jobArn :: Lens.Lens' CancelJobResponse Prelude.Text
+cancelJobResponse_jobArn = Lens.lens (\CancelJobResponse' {jobArn} -> jobArn) (\s@CancelJobResponse' {} a -> s {jobArn = a} :: CancelJobResponse)
+
+instance Prelude.NFData CancelJobResponse where
+  rnf CancelJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf cancellationStatus
+      `Prelude.seq` Prelude.rnf jobArn
diff --git a/gen/Amazonka/Braket/CancelQuantumTask.hs b/gen/Amazonka/Braket/CancelQuantumTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/CancelQuantumTask.hs
@@ -0,0 +1,206 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.CancelQuantumTask
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Cancels the specified task.
+module Amazonka.Braket.CancelQuantumTask
+  ( -- * Creating a Request
+    CancelQuantumTask (..),
+    newCancelQuantumTask,
+
+    -- * Request Lenses
+    cancelQuantumTask_clientToken,
+    cancelQuantumTask_quantumTaskArn,
+
+    -- * Destructuring the Response
+    CancelQuantumTaskResponse (..),
+    newCancelQuantumTaskResponse,
+
+    -- * Response Lenses
+    cancelQuantumTaskResponse_httpStatus,
+    cancelQuantumTaskResponse_cancellationStatus,
+    cancelQuantumTaskResponse_quantumTaskArn,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCancelQuantumTask' smart constructor.
+data CancelQuantumTask = CancelQuantumTask'
+  { -- | The client token associated with the request.
+    clientToken :: Prelude.Text,
+    -- | The ARN of the task to cancel.
+    quantumTaskArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelQuantumTask' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientToken', 'cancelQuantumTask_clientToken' - The client token associated with the request.
+--
+-- 'quantumTaskArn', 'cancelQuantumTask_quantumTaskArn' - The ARN of the task to cancel.
+newCancelQuantumTask ::
+  -- | 'clientToken'
+  Prelude.Text ->
+  -- | 'quantumTaskArn'
+  Prelude.Text ->
+  CancelQuantumTask
+newCancelQuantumTask pClientToken_ pQuantumTaskArn_ =
+  CancelQuantumTask'
+    { clientToken = pClientToken_,
+      quantumTaskArn = pQuantumTaskArn_
+    }
+
+-- | The client token associated with the request.
+cancelQuantumTask_clientToken :: Lens.Lens' CancelQuantumTask Prelude.Text
+cancelQuantumTask_clientToken = Lens.lens (\CancelQuantumTask' {clientToken} -> clientToken) (\s@CancelQuantumTask' {} a -> s {clientToken = a} :: CancelQuantumTask)
+
+-- | The ARN of the task to cancel.
+cancelQuantumTask_quantumTaskArn :: Lens.Lens' CancelQuantumTask Prelude.Text
+cancelQuantumTask_quantumTaskArn = Lens.lens (\CancelQuantumTask' {quantumTaskArn} -> quantumTaskArn) (\s@CancelQuantumTask' {} a -> s {quantumTaskArn = a} :: CancelQuantumTask)
+
+instance Core.AWSRequest CancelQuantumTask where
+  type
+    AWSResponse CancelQuantumTask =
+      CancelQuantumTaskResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CancelQuantumTaskResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "cancellationStatus")
+            Prelude.<*> (x Data..:> "quantumTaskArn")
+      )
+
+instance Prelude.Hashable CancelQuantumTask where
+  hashWithSalt _salt CancelQuantumTask' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` quantumTaskArn
+
+instance Prelude.NFData CancelQuantumTask where
+  rnf CancelQuantumTask' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf quantumTaskArn
+
+instance Data.ToHeaders CancelQuantumTask where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CancelQuantumTask where
+  toJSON CancelQuantumTask' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("clientToken" Data..= clientToken)]
+      )
+
+instance Data.ToPath CancelQuantumTask where
+  toPath CancelQuantumTask' {..} =
+    Prelude.mconcat
+      [ "/quantum-task/",
+        Data.toBS quantumTaskArn,
+        "/cancel"
+      ]
+
+instance Data.ToQuery CancelQuantumTask where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCancelQuantumTaskResponse' smart constructor.
+data CancelQuantumTaskResponse = CancelQuantumTaskResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The status of the cancellation request.
+    cancellationStatus :: CancellationStatus,
+    -- | The ARN of the task.
+    quantumTaskArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CancelQuantumTaskResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'cancelQuantumTaskResponse_httpStatus' - The response's http status code.
+--
+-- 'cancellationStatus', 'cancelQuantumTaskResponse_cancellationStatus' - The status of the cancellation request.
+--
+-- 'quantumTaskArn', 'cancelQuantumTaskResponse_quantumTaskArn' - The ARN of the task.
+newCancelQuantumTaskResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'cancellationStatus'
+  CancellationStatus ->
+  -- | 'quantumTaskArn'
+  Prelude.Text ->
+  CancelQuantumTaskResponse
+newCancelQuantumTaskResponse
+  pHttpStatus_
+  pCancellationStatus_
+  pQuantumTaskArn_ =
+    CancelQuantumTaskResponse'
+      { httpStatus =
+          pHttpStatus_,
+        cancellationStatus = pCancellationStatus_,
+        quantumTaskArn = pQuantumTaskArn_
+      }
+
+-- | The response's http status code.
+cancelQuantumTaskResponse_httpStatus :: Lens.Lens' CancelQuantumTaskResponse Prelude.Int
+cancelQuantumTaskResponse_httpStatus = Lens.lens (\CancelQuantumTaskResponse' {httpStatus} -> httpStatus) (\s@CancelQuantumTaskResponse' {} a -> s {httpStatus = a} :: CancelQuantumTaskResponse)
+
+-- | The status of the cancellation request.
+cancelQuantumTaskResponse_cancellationStatus :: Lens.Lens' CancelQuantumTaskResponse CancellationStatus
+cancelQuantumTaskResponse_cancellationStatus = Lens.lens (\CancelQuantumTaskResponse' {cancellationStatus} -> cancellationStatus) (\s@CancelQuantumTaskResponse' {} a -> s {cancellationStatus = a} :: CancelQuantumTaskResponse)
+
+-- | The ARN of the task.
+cancelQuantumTaskResponse_quantumTaskArn :: Lens.Lens' CancelQuantumTaskResponse Prelude.Text
+cancelQuantumTaskResponse_quantumTaskArn = Lens.lens (\CancelQuantumTaskResponse' {quantumTaskArn} -> quantumTaskArn) (\s@CancelQuantumTaskResponse' {} a -> s {quantumTaskArn = a} :: CancelQuantumTaskResponse)
+
+instance Prelude.NFData CancelQuantumTaskResponse where
+  rnf CancelQuantumTaskResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf cancellationStatus
+      `Prelude.seq` Prelude.rnf quantumTaskArn
diff --git a/gen/Amazonka/Braket/CreateJob.hs b/gen/Amazonka/Braket/CreateJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/CreateJob.hs
@@ -0,0 +1,378 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.CreateJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon Braket job.
+module Amazonka.Braket.CreateJob
+  ( -- * Creating a Request
+    CreateJob (..),
+    newCreateJob,
+
+    -- * Request Lenses
+    createJob_checkpointConfig,
+    createJob_hyperParameters,
+    createJob_inputDataConfig,
+    createJob_stoppingCondition,
+    createJob_tags,
+    createJob_algorithmSpecification,
+    createJob_clientToken,
+    createJob_deviceConfig,
+    createJob_instanceConfig,
+    createJob_jobName,
+    createJob_outputDataConfig,
+    createJob_roleArn,
+
+    -- * Destructuring the Response
+    CreateJobResponse (..),
+    newCreateJobResponse,
+
+    -- * Response Lenses
+    createJobResponse_httpStatus,
+    createJobResponse_jobArn,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateJob' smart constructor.
+data CreateJob = CreateJob'
+  { -- | Information about the output locations for job checkpoint data.
+    checkpointConfig :: Prelude.Maybe JobCheckpointConfig,
+    -- | Algorithm-specific parameters used by an Amazon Braket job that
+    -- influence the quality of the training job. The values are set with a
+    -- string of JSON key:value pairs, where the key is the name of the
+    -- hyperparameter and the value is the value of th hyperparameter.
+    hyperParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | A list of parameters that specify the name and type of input data and
+    -- where it is located.
+    inputDataConfig :: Prelude.Maybe [InputFileConfig],
+    -- | The user-defined criteria that specifies when a job stops running.
+    stoppingCondition :: Prelude.Maybe JobStoppingCondition,
+    -- | A tag object that consists of a key and an optional value, used to
+    -- manage metadata for Amazon Braket resources.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Definition of the Amazon Braket job to be created. Specifies the
+    -- container image the job uses and information about the Python scripts
+    -- used for entry and training.
+    algorithmSpecification :: AlgorithmSpecification,
+    -- | A unique token that guarantees that the call to this API is idempotent.
+    clientToken :: Prelude.Text,
+    -- | The quantum processing unit (QPU) or simulator used to create an Amazon
+    -- Braket job.
+    deviceConfig :: DeviceConfig,
+    -- | Configuration of the resource instances to use while running the hybrid
+    -- job on Amazon Braket.
+    instanceConfig :: InstanceConfig,
+    -- | The name of the Amazon Braket job.
+    jobName :: Prelude.Text,
+    -- | The path to the S3 location where you want to store job artifacts and
+    -- the encryption key used to store them.
+    outputDataConfig :: JobOutputDataConfig,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon Braket can
+    -- assume to perform tasks on behalf of a user. It can access user
+    -- resources, run an Amazon Braket job container on behalf of user, and
+    -- output resources to the users\' s3 buckets.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'checkpointConfig', 'createJob_checkpointConfig' - Information about the output locations for job checkpoint data.
+--
+-- 'hyperParameters', 'createJob_hyperParameters' - Algorithm-specific parameters used by an Amazon Braket job that
+-- influence the quality of the training job. The values are set with a
+-- string of JSON key:value pairs, where the key is the name of the
+-- hyperparameter and the value is the value of th hyperparameter.
+--
+-- 'inputDataConfig', 'createJob_inputDataConfig' - A list of parameters that specify the name and type of input data and
+-- where it is located.
+--
+-- 'stoppingCondition', 'createJob_stoppingCondition' - The user-defined criteria that specifies when a job stops running.
+--
+-- 'tags', 'createJob_tags' - A tag object that consists of a key and an optional value, used to
+-- manage metadata for Amazon Braket resources.
+--
+-- 'algorithmSpecification', 'createJob_algorithmSpecification' - Definition of the Amazon Braket job to be created. Specifies the
+-- container image the job uses and information about the Python scripts
+-- used for entry and training.
+--
+-- 'clientToken', 'createJob_clientToken' - A unique token that guarantees that the call to this API is idempotent.
+--
+-- 'deviceConfig', 'createJob_deviceConfig' - The quantum processing unit (QPU) or simulator used to create an Amazon
+-- Braket job.
+--
+-- 'instanceConfig', 'createJob_instanceConfig' - Configuration of the resource instances to use while running the hybrid
+-- job on Amazon Braket.
+--
+-- 'jobName', 'createJob_jobName' - The name of the Amazon Braket job.
+--
+-- 'outputDataConfig', 'createJob_outputDataConfig' - The path to the S3 location where you want to store job artifacts and
+-- the encryption key used to store them.
+--
+-- 'roleArn', 'createJob_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon Braket can
+-- assume to perform tasks on behalf of a user. It can access user
+-- resources, run an Amazon Braket job container on behalf of user, and
+-- output resources to the users\' s3 buckets.
+newCreateJob ::
+  -- | 'algorithmSpecification'
+  AlgorithmSpecification ->
+  -- | 'clientToken'
+  Prelude.Text ->
+  -- | 'deviceConfig'
+  DeviceConfig ->
+  -- | 'instanceConfig'
+  InstanceConfig ->
+  -- | 'jobName'
+  Prelude.Text ->
+  -- | 'outputDataConfig'
+  JobOutputDataConfig ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  CreateJob
+newCreateJob
+  pAlgorithmSpecification_
+  pClientToken_
+  pDeviceConfig_
+  pInstanceConfig_
+  pJobName_
+  pOutputDataConfig_
+  pRoleArn_ =
+    CreateJob'
+      { checkpointConfig = Prelude.Nothing,
+        hyperParameters = Prelude.Nothing,
+        inputDataConfig = Prelude.Nothing,
+        stoppingCondition = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        algorithmSpecification = pAlgorithmSpecification_,
+        clientToken = pClientToken_,
+        deviceConfig = pDeviceConfig_,
+        instanceConfig = pInstanceConfig_,
+        jobName = pJobName_,
+        outputDataConfig = pOutputDataConfig_,
+        roleArn = pRoleArn_
+      }
+
+-- | Information about the output locations for job checkpoint data.
+createJob_checkpointConfig :: Lens.Lens' CreateJob (Prelude.Maybe JobCheckpointConfig)
+createJob_checkpointConfig = Lens.lens (\CreateJob' {checkpointConfig} -> checkpointConfig) (\s@CreateJob' {} a -> s {checkpointConfig = a} :: CreateJob)
+
+-- | Algorithm-specific parameters used by an Amazon Braket job that
+-- influence the quality of the training job. The values are set with a
+-- string of JSON key:value pairs, where the key is the name of the
+-- hyperparameter and the value is the value of th hyperparameter.
+createJob_hyperParameters :: Lens.Lens' CreateJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createJob_hyperParameters = Lens.lens (\CreateJob' {hyperParameters} -> hyperParameters) (\s@CreateJob' {} a -> s {hyperParameters = a} :: CreateJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of parameters that specify the name and type of input data and
+-- where it is located.
+createJob_inputDataConfig :: Lens.Lens' CreateJob (Prelude.Maybe [InputFileConfig])
+createJob_inputDataConfig = Lens.lens (\CreateJob' {inputDataConfig} -> inputDataConfig) (\s@CreateJob' {} a -> s {inputDataConfig = a} :: CreateJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | The user-defined criteria that specifies when a job stops running.
+createJob_stoppingCondition :: Lens.Lens' CreateJob (Prelude.Maybe JobStoppingCondition)
+createJob_stoppingCondition = Lens.lens (\CreateJob' {stoppingCondition} -> stoppingCondition) (\s@CreateJob' {} a -> s {stoppingCondition = a} :: CreateJob)
+
+-- | A tag object that consists of a key and an optional value, used to
+-- manage metadata for Amazon Braket resources.
+createJob_tags :: Lens.Lens' CreateJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createJob_tags = Lens.lens (\CreateJob' {tags} -> tags) (\s@CreateJob' {} a -> s {tags = a} :: CreateJob) Prelude.. Lens.mapping Lens.coerced
+
+-- | Definition of the Amazon Braket job to be created. Specifies the
+-- container image the job uses and information about the Python scripts
+-- used for entry and training.
+createJob_algorithmSpecification :: Lens.Lens' CreateJob AlgorithmSpecification
+createJob_algorithmSpecification = Lens.lens (\CreateJob' {algorithmSpecification} -> algorithmSpecification) (\s@CreateJob' {} a -> s {algorithmSpecification = a} :: CreateJob)
+
+-- | A unique token that guarantees that the call to this API is idempotent.
+createJob_clientToken :: Lens.Lens' CreateJob Prelude.Text
+createJob_clientToken = Lens.lens (\CreateJob' {clientToken} -> clientToken) (\s@CreateJob' {} a -> s {clientToken = a} :: CreateJob)
+
+-- | The quantum processing unit (QPU) or simulator used to create an Amazon
+-- Braket job.
+createJob_deviceConfig :: Lens.Lens' CreateJob DeviceConfig
+createJob_deviceConfig = Lens.lens (\CreateJob' {deviceConfig} -> deviceConfig) (\s@CreateJob' {} a -> s {deviceConfig = a} :: CreateJob)
+
+-- | Configuration of the resource instances to use while running the hybrid
+-- job on Amazon Braket.
+createJob_instanceConfig :: Lens.Lens' CreateJob InstanceConfig
+createJob_instanceConfig = Lens.lens (\CreateJob' {instanceConfig} -> instanceConfig) (\s@CreateJob' {} a -> s {instanceConfig = a} :: CreateJob)
+
+-- | The name of the Amazon Braket job.
+createJob_jobName :: Lens.Lens' CreateJob Prelude.Text
+createJob_jobName = Lens.lens (\CreateJob' {jobName} -> jobName) (\s@CreateJob' {} a -> s {jobName = a} :: CreateJob)
+
+-- | The path to the S3 location where you want to store job artifacts and
+-- the encryption key used to store them.
+createJob_outputDataConfig :: Lens.Lens' CreateJob JobOutputDataConfig
+createJob_outputDataConfig = Lens.lens (\CreateJob' {outputDataConfig} -> outputDataConfig) (\s@CreateJob' {} a -> s {outputDataConfig = a} :: CreateJob)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon Braket can
+-- assume to perform tasks on behalf of a user. It can access user
+-- resources, run an Amazon Braket job container on behalf of user, and
+-- output resources to the users\' s3 buckets.
+createJob_roleArn :: Lens.Lens' CreateJob Prelude.Text
+createJob_roleArn = Lens.lens (\CreateJob' {roleArn} -> roleArn) (\s@CreateJob' {} a -> s {roleArn = a} :: CreateJob)
+
+instance Core.AWSRequest CreateJob where
+  type AWSResponse CreateJob = CreateJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "jobArn")
+      )
+
+instance Prelude.Hashable CreateJob where
+  hashWithSalt _salt CreateJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` checkpointConfig
+      `Prelude.hashWithSalt` hyperParameters
+      `Prelude.hashWithSalt` inputDataConfig
+      `Prelude.hashWithSalt` stoppingCondition
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` algorithmSpecification
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` deviceConfig
+      `Prelude.hashWithSalt` instanceConfig
+      `Prelude.hashWithSalt` jobName
+      `Prelude.hashWithSalt` outputDataConfig
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData CreateJob where
+  rnf CreateJob' {..} =
+    Prelude.rnf checkpointConfig
+      `Prelude.seq` Prelude.rnf hyperParameters
+      `Prelude.seq` Prelude.rnf inputDataConfig
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf algorithmSpecification
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf deviceConfig
+      `Prelude.seq` Prelude.rnf instanceConfig
+      `Prelude.seq` Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf outputDataConfig
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToHeaders CreateJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateJob where
+  toJSON CreateJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("checkpointConfig" Data..=)
+              Prelude.<$> checkpointConfig,
+            ("hyperParameters" Data..=)
+              Prelude.<$> hyperParameters,
+            ("inputDataConfig" Data..=)
+              Prelude.<$> inputDataConfig,
+            ("stoppingCondition" Data..=)
+              Prelude.<$> stoppingCondition,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ( "algorithmSpecification"
+                  Data..= algorithmSpecification
+              ),
+            Prelude.Just ("clientToken" Data..= clientToken),
+            Prelude.Just ("deviceConfig" Data..= deviceConfig),
+            Prelude.Just
+              ("instanceConfig" Data..= instanceConfig),
+            Prelude.Just ("jobName" Data..= jobName),
+            Prelude.Just
+              ("outputDataConfig" Data..= outputDataConfig),
+            Prelude.Just ("roleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath CreateJob where
+  toPath = Prelude.const "/job"
+
+instance Data.ToQuery CreateJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateJobResponse' smart constructor.
+data CreateJobResponse = CreateJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the Amazon Braket job created.
+    jobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createJobResponse_httpStatus' - The response's http status code.
+--
+-- 'jobArn', 'createJobResponse_jobArn' - The ARN of the Amazon Braket job created.
+newCreateJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'jobArn'
+  Prelude.Text ->
+  CreateJobResponse
+newCreateJobResponse pHttpStatus_ pJobArn_ =
+  CreateJobResponse'
+    { httpStatus = pHttpStatus_,
+      jobArn = pJobArn_
+    }
+
+-- | The response's http status code.
+createJobResponse_httpStatus :: Lens.Lens' CreateJobResponse Prelude.Int
+createJobResponse_httpStatus = Lens.lens (\CreateJobResponse' {httpStatus} -> httpStatus) (\s@CreateJobResponse' {} a -> s {httpStatus = a} :: CreateJobResponse)
+
+-- | The ARN of the Amazon Braket job created.
+createJobResponse_jobArn :: Lens.Lens' CreateJobResponse Prelude.Text
+createJobResponse_jobArn = Lens.lens (\CreateJobResponse' {jobArn} -> jobArn) (\s@CreateJobResponse' {} a -> s {jobArn = a} :: CreateJobResponse)
+
+instance Prelude.NFData CreateJobResponse where
+  rnf CreateJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobArn
diff --git a/gen/Amazonka/Braket/CreateQuantumTask.hs b/gen/Amazonka/Braket/CreateQuantumTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/CreateQuantumTask.hs
@@ -0,0 +1,303 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.CreateQuantumTask
+-- 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 quantum task.
+module Amazonka.Braket.CreateQuantumTask
+  ( -- * Creating a Request
+    CreateQuantumTask (..),
+    newCreateQuantumTask,
+
+    -- * Request Lenses
+    createQuantumTask_deviceParameters,
+    createQuantumTask_jobToken,
+    createQuantumTask_tags,
+    createQuantumTask_action,
+    createQuantumTask_clientToken,
+    createQuantumTask_deviceArn,
+    createQuantumTask_outputS3Bucket,
+    createQuantumTask_outputS3KeyPrefix,
+    createQuantumTask_shots,
+
+    -- * Destructuring the Response
+    CreateQuantumTaskResponse (..),
+    newCreateQuantumTaskResponse,
+
+    -- * Response Lenses
+    createQuantumTaskResponse_httpStatus,
+    createQuantumTaskResponse_quantumTaskArn,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateQuantumTask' smart constructor.
+data CreateQuantumTask = CreateQuantumTask'
+  { -- | The parameters for the device to run the task on.
+    deviceParameters :: Prelude.Maybe Prelude.Text,
+    -- | The token for an Amazon Braket job that associates it with the quantum
+    -- task.
+    jobToken :: Prelude.Maybe Prelude.Text,
+    -- | Tags to be added to the quantum task you\'re creating.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The action associated with the task.
+    action :: Prelude.Text,
+    -- | The client token associated with the request.
+    clientToken :: Prelude.Text,
+    -- | The ARN of the device to run the task on.
+    deviceArn :: Prelude.Text,
+    -- | The S3 bucket to store task result files in.
+    outputS3Bucket :: Prelude.Text,
+    -- | The key prefix for the location in the S3 bucket to store task results
+    -- in.
+    outputS3KeyPrefix :: Prelude.Text,
+    -- | The number of shots to use for the task.
+    shots :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateQuantumTask' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceParameters', 'createQuantumTask_deviceParameters' - The parameters for the device to run the task on.
+--
+-- 'jobToken', 'createQuantumTask_jobToken' - The token for an Amazon Braket job that associates it with the quantum
+-- task.
+--
+-- 'tags', 'createQuantumTask_tags' - Tags to be added to the quantum task you\'re creating.
+--
+-- 'action', 'createQuantumTask_action' - The action associated with the task.
+--
+-- 'clientToken', 'createQuantumTask_clientToken' - The client token associated with the request.
+--
+-- 'deviceArn', 'createQuantumTask_deviceArn' - The ARN of the device to run the task on.
+--
+-- 'outputS3Bucket', 'createQuantumTask_outputS3Bucket' - The S3 bucket to store task result files in.
+--
+-- 'outputS3KeyPrefix', 'createQuantumTask_outputS3KeyPrefix' - The key prefix for the location in the S3 bucket to store task results
+-- in.
+--
+-- 'shots', 'createQuantumTask_shots' - The number of shots to use for the task.
+newCreateQuantumTask ::
+  -- | 'action'
+  Prelude.Text ->
+  -- | 'clientToken'
+  Prelude.Text ->
+  -- | 'deviceArn'
+  Prelude.Text ->
+  -- | 'outputS3Bucket'
+  Prelude.Text ->
+  -- | 'outputS3KeyPrefix'
+  Prelude.Text ->
+  -- | 'shots'
+  Prelude.Natural ->
+  CreateQuantumTask
+newCreateQuantumTask
+  pAction_
+  pClientToken_
+  pDeviceArn_
+  pOutputS3Bucket_
+  pOutputS3KeyPrefix_
+  pShots_ =
+    CreateQuantumTask'
+      { deviceParameters =
+          Prelude.Nothing,
+        jobToken = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        action = pAction_,
+        clientToken = pClientToken_,
+        deviceArn = pDeviceArn_,
+        outputS3Bucket = pOutputS3Bucket_,
+        outputS3KeyPrefix = pOutputS3KeyPrefix_,
+        shots = pShots_
+      }
+
+-- | The parameters for the device to run the task on.
+createQuantumTask_deviceParameters :: Lens.Lens' CreateQuantumTask (Prelude.Maybe Prelude.Text)
+createQuantumTask_deviceParameters = Lens.lens (\CreateQuantumTask' {deviceParameters} -> deviceParameters) (\s@CreateQuantumTask' {} a -> s {deviceParameters = a} :: CreateQuantumTask)
+
+-- | The token for an Amazon Braket job that associates it with the quantum
+-- task.
+createQuantumTask_jobToken :: Lens.Lens' CreateQuantumTask (Prelude.Maybe Prelude.Text)
+createQuantumTask_jobToken = Lens.lens (\CreateQuantumTask' {jobToken} -> jobToken) (\s@CreateQuantumTask' {} a -> s {jobToken = a} :: CreateQuantumTask)
+
+-- | Tags to be added to the quantum task you\'re creating.
+createQuantumTask_tags :: Lens.Lens' CreateQuantumTask (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createQuantumTask_tags = Lens.lens (\CreateQuantumTask' {tags} -> tags) (\s@CreateQuantumTask' {} a -> s {tags = a} :: CreateQuantumTask) Prelude.. Lens.mapping Lens.coerced
+
+-- | The action associated with the task.
+createQuantumTask_action :: Lens.Lens' CreateQuantumTask Prelude.Text
+createQuantumTask_action = Lens.lens (\CreateQuantumTask' {action} -> action) (\s@CreateQuantumTask' {} a -> s {action = a} :: CreateQuantumTask)
+
+-- | The client token associated with the request.
+createQuantumTask_clientToken :: Lens.Lens' CreateQuantumTask Prelude.Text
+createQuantumTask_clientToken = Lens.lens (\CreateQuantumTask' {clientToken} -> clientToken) (\s@CreateQuantumTask' {} a -> s {clientToken = a} :: CreateQuantumTask)
+
+-- | The ARN of the device to run the task on.
+createQuantumTask_deviceArn :: Lens.Lens' CreateQuantumTask Prelude.Text
+createQuantumTask_deviceArn = Lens.lens (\CreateQuantumTask' {deviceArn} -> deviceArn) (\s@CreateQuantumTask' {} a -> s {deviceArn = a} :: CreateQuantumTask)
+
+-- | The S3 bucket to store task result files in.
+createQuantumTask_outputS3Bucket :: Lens.Lens' CreateQuantumTask Prelude.Text
+createQuantumTask_outputS3Bucket = Lens.lens (\CreateQuantumTask' {outputS3Bucket} -> outputS3Bucket) (\s@CreateQuantumTask' {} a -> s {outputS3Bucket = a} :: CreateQuantumTask)
+
+-- | The key prefix for the location in the S3 bucket to store task results
+-- in.
+createQuantumTask_outputS3KeyPrefix :: Lens.Lens' CreateQuantumTask Prelude.Text
+createQuantumTask_outputS3KeyPrefix = Lens.lens (\CreateQuantumTask' {outputS3KeyPrefix} -> outputS3KeyPrefix) (\s@CreateQuantumTask' {} a -> s {outputS3KeyPrefix = a} :: CreateQuantumTask)
+
+-- | The number of shots to use for the task.
+createQuantumTask_shots :: Lens.Lens' CreateQuantumTask Prelude.Natural
+createQuantumTask_shots = Lens.lens (\CreateQuantumTask' {shots} -> shots) (\s@CreateQuantumTask' {} a -> s {shots = a} :: CreateQuantumTask)
+
+instance Core.AWSRequest CreateQuantumTask where
+  type
+    AWSResponse CreateQuantumTask =
+      CreateQuantumTaskResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateQuantumTaskResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "quantumTaskArn")
+      )
+
+instance Prelude.Hashable CreateQuantumTask where
+  hashWithSalt _salt CreateQuantumTask' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceParameters
+      `Prelude.hashWithSalt` jobToken
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` action
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` deviceArn
+      `Prelude.hashWithSalt` outputS3Bucket
+      `Prelude.hashWithSalt` outputS3KeyPrefix
+      `Prelude.hashWithSalt` shots
+
+instance Prelude.NFData CreateQuantumTask where
+  rnf CreateQuantumTask' {..} =
+    Prelude.rnf deviceParameters
+      `Prelude.seq` Prelude.rnf jobToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf action
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf deviceArn
+      `Prelude.seq` Prelude.rnf outputS3Bucket
+      `Prelude.seq` Prelude.rnf outputS3KeyPrefix
+      `Prelude.seq` Prelude.rnf shots
+
+instance Data.ToHeaders CreateQuantumTask where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateQuantumTask where
+  toJSON CreateQuantumTask' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("deviceParameters" Data..=)
+              Prelude.<$> deviceParameters,
+            ("jobToken" Data..=) Prelude.<$> jobToken,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("action" Data..= action),
+            Prelude.Just ("clientToken" Data..= clientToken),
+            Prelude.Just ("deviceArn" Data..= deviceArn),
+            Prelude.Just
+              ("outputS3Bucket" Data..= outputS3Bucket),
+            Prelude.Just
+              ("outputS3KeyPrefix" Data..= outputS3KeyPrefix),
+            Prelude.Just ("shots" Data..= shots)
+          ]
+      )
+
+instance Data.ToPath CreateQuantumTask where
+  toPath = Prelude.const "/quantum-task"
+
+instance Data.ToQuery CreateQuantumTask where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateQuantumTaskResponse' smart constructor.
+data CreateQuantumTaskResponse = CreateQuantumTaskResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the task created by the request.
+    quantumTaskArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateQuantumTaskResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createQuantumTaskResponse_httpStatus' - The response's http status code.
+--
+-- 'quantumTaskArn', 'createQuantumTaskResponse_quantumTaskArn' - The ARN of the task created by the request.
+newCreateQuantumTaskResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'quantumTaskArn'
+  Prelude.Text ->
+  CreateQuantumTaskResponse
+newCreateQuantumTaskResponse
+  pHttpStatus_
+  pQuantumTaskArn_ =
+    CreateQuantumTaskResponse'
+      { httpStatus =
+          pHttpStatus_,
+        quantumTaskArn = pQuantumTaskArn_
+      }
+
+-- | The response's http status code.
+createQuantumTaskResponse_httpStatus :: Lens.Lens' CreateQuantumTaskResponse Prelude.Int
+createQuantumTaskResponse_httpStatus = Lens.lens (\CreateQuantumTaskResponse' {httpStatus} -> httpStatus) (\s@CreateQuantumTaskResponse' {} a -> s {httpStatus = a} :: CreateQuantumTaskResponse)
+
+-- | The ARN of the task created by the request.
+createQuantumTaskResponse_quantumTaskArn :: Lens.Lens' CreateQuantumTaskResponse Prelude.Text
+createQuantumTaskResponse_quantumTaskArn = Lens.lens (\CreateQuantumTaskResponse' {quantumTaskArn} -> quantumTaskArn) (\s@CreateQuantumTaskResponse' {} a -> s {quantumTaskArn = a} :: CreateQuantumTaskResponse)
+
+instance Prelude.NFData CreateQuantumTaskResponse where
+  rnf CreateQuantumTaskResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf quantumTaskArn
diff --git a/gen/Amazonka/Braket/GetDevice.hs b/gen/Amazonka/Braket/GetDevice.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/GetDevice.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.GetDevice
+-- 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 the devices available in Amazon Braket.
+--
+-- For backwards compatibility with older versions of BraketSchemas,
+-- OpenQASM information is omitted from GetDevice API calls. To get this
+-- information the user-agent needs to present a recent version of the
+-- BraketSchemas (1.8.0 or later). The Braket SDK automatically reports
+-- this for you. If you do not see OpenQASM results in the GetDevice
+-- response when using a Braket SDK, you may need to set AWS_EXECUTION_ENV
+-- environment variable to configure user-agent. See the code examples
+-- provided below for how to do this for the AWS CLI, Boto3, and the Go,
+-- Java, and JavaScript\/TypeScript SDKs.
+module Amazonka.Braket.GetDevice
+  ( -- * Creating a Request
+    GetDevice (..),
+    newGetDevice,
+
+    -- * Request Lenses
+    getDevice_deviceArn,
+
+    -- * Destructuring the Response
+    GetDeviceResponse (..),
+    newGetDeviceResponse,
+
+    -- * Response Lenses
+    getDeviceResponse_httpStatus,
+    getDeviceResponse_deviceArn,
+    getDeviceResponse_deviceCapabilities,
+    getDeviceResponse_deviceName,
+    getDeviceResponse_deviceStatus,
+    getDeviceResponse_deviceType,
+    getDeviceResponse_providerName,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetDevice' smart constructor.
+data GetDevice = GetDevice'
+  { -- | The ARN of the device to retrieve.
+    deviceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDevice' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceArn', 'getDevice_deviceArn' - The ARN of the device to retrieve.
+newGetDevice ::
+  -- | 'deviceArn'
+  Prelude.Text ->
+  GetDevice
+newGetDevice pDeviceArn_ =
+  GetDevice' {deviceArn = pDeviceArn_}
+
+-- | The ARN of the device to retrieve.
+getDevice_deviceArn :: Lens.Lens' GetDevice Prelude.Text
+getDevice_deviceArn = Lens.lens (\GetDevice' {deviceArn} -> deviceArn) (\s@GetDevice' {} a -> s {deviceArn = a} :: GetDevice)
+
+instance Core.AWSRequest GetDevice where
+  type AWSResponse GetDevice = GetDeviceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDeviceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "deviceArn")
+            Prelude.<*> (x Data..:> "deviceCapabilities")
+            Prelude.<*> (x Data..:> "deviceName")
+            Prelude.<*> (x Data..:> "deviceStatus")
+            Prelude.<*> (x Data..:> "deviceType")
+            Prelude.<*> (x Data..:> "providerName")
+      )
+
+instance Prelude.Hashable GetDevice where
+  hashWithSalt _salt GetDevice' {..} =
+    _salt `Prelude.hashWithSalt` deviceArn
+
+instance Prelude.NFData GetDevice where
+  rnf GetDevice' {..} = Prelude.rnf deviceArn
+
+instance Data.ToHeaders GetDevice where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetDevice where
+  toPath GetDevice' {..} =
+    Prelude.mconcat ["/device/", Data.toBS deviceArn]
+
+instance Data.ToQuery GetDevice where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetDeviceResponse' smart constructor.
+data GetDeviceResponse = GetDeviceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The ARN of the device.
+    deviceArn :: Prelude.Text,
+    -- | Details about the capabilities of the device.
+    deviceCapabilities :: Prelude.Text,
+    -- | The name of the device.
+    deviceName :: Prelude.Text,
+    -- | The status of the device.
+    deviceStatus :: DeviceStatus,
+    -- | The type of the device.
+    deviceType :: DeviceType,
+    -- | The name of the partner company for the device.
+    providerName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDeviceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getDeviceResponse_httpStatus' - The response's http status code.
+--
+-- 'deviceArn', 'getDeviceResponse_deviceArn' - The ARN of the device.
+--
+-- 'deviceCapabilities', 'getDeviceResponse_deviceCapabilities' - Details about the capabilities of the device.
+--
+-- 'deviceName', 'getDeviceResponse_deviceName' - The name of the device.
+--
+-- 'deviceStatus', 'getDeviceResponse_deviceStatus' - The status of the device.
+--
+-- 'deviceType', 'getDeviceResponse_deviceType' - The type of the device.
+--
+-- 'providerName', 'getDeviceResponse_providerName' - The name of the partner company for the device.
+newGetDeviceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'deviceArn'
+  Prelude.Text ->
+  -- | 'deviceCapabilities'
+  Prelude.Text ->
+  -- | 'deviceName'
+  Prelude.Text ->
+  -- | 'deviceStatus'
+  DeviceStatus ->
+  -- | 'deviceType'
+  DeviceType ->
+  -- | 'providerName'
+  Prelude.Text ->
+  GetDeviceResponse
+newGetDeviceResponse
+  pHttpStatus_
+  pDeviceArn_
+  pDeviceCapabilities_
+  pDeviceName_
+  pDeviceStatus_
+  pDeviceType_
+  pProviderName_ =
+    GetDeviceResponse'
+      { httpStatus = pHttpStatus_,
+        deviceArn = pDeviceArn_,
+        deviceCapabilities = pDeviceCapabilities_,
+        deviceName = pDeviceName_,
+        deviceStatus = pDeviceStatus_,
+        deviceType = pDeviceType_,
+        providerName = pProviderName_
+      }
+
+-- | The response's http status code.
+getDeviceResponse_httpStatus :: Lens.Lens' GetDeviceResponse Prelude.Int
+getDeviceResponse_httpStatus = Lens.lens (\GetDeviceResponse' {httpStatus} -> httpStatus) (\s@GetDeviceResponse' {} a -> s {httpStatus = a} :: GetDeviceResponse)
+
+-- | The ARN of the device.
+getDeviceResponse_deviceArn :: Lens.Lens' GetDeviceResponse Prelude.Text
+getDeviceResponse_deviceArn = Lens.lens (\GetDeviceResponse' {deviceArn} -> deviceArn) (\s@GetDeviceResponse' {} a -> s {deviceArn = a} :: GetDeviceResponse)
+
+-- | Details about the capabilities of the device.
+getDeviceResponse_deviceCapabilities :: Lens.Lens' GetDeviceResponse Prelude.Text
+getDeviceResponse_deviceCapabilities = Lens.lens (\GetDeviceResponse' {deviceCapabilities} -> deviceCapabilities) (\s@GetDeviceResponse' {} a -> s {deviceCapabilities = a} :: GetDeviceResponse)
+
+-- | The name of the device.
+getDeviceResponse_deviceName :: Lens.Lens' GetDeviceResponse Prelude.Text
+getDeviceResponse_deviceName = Lens.lens (\GetDeviceResponse' {deviceName} -> deviceName) (\s@GetDeviceResponse' {} a -> s {deviceName = a} :: GetDeviceResponse)
+
+-- | The status of the device.
+getDeviceResponse_deviceStatus :: Lens.Lens' GetDeviceResponse DeviceStatus
+getDeviceResponse_deviceStatus = Lens.lens (\GetDeviceResponse' {deviceStatus} -> deviceStatus) (\s@GetDeviceResponse' {} a -> s {deviceStatus = a} :: GetDeviceResponse)
+
+-- | The type of the device.
+getDeviceResponse_deviceType :: Lens.Lens' GetDeviceResponse DeviceType
+getDeviceResponse_deviceType = Lens.lens (\GetDeviceResponse' {deviceType} -> deviceType) (\s@GetDeviceResponse' {} a -> s {deviceType = a} :: GetDeviceResponse)
+
+-- | The name of the partner company for the device.
+getDeviceResponse_providerName :: Lens.Lens' GetDeviceResponse Prelude.Text
+getDeviceResponse_providerName = Lens.lens (\GetDeviceResponse' {providerName} -> providerName) (\s@GetDeviceResponse' {} a -> s {providerName = a} :: GetDeviceResponse)
+
+instance Prelude.NFData GetDeviceResponse where
+  rnf GetDeviceResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf deviceArn
+      `Prelude.seq` Prelude.rnf deviceCapabilities
+      `Prelude.seq` Prelude.rnf deviceName
+      `Prelude.seq` Prelude.rnf deviceStatus
+      `Prelude.seq` Prelude.rnf deviceType
+      `Prelude.seq` Prelude.rnf providerName
diff --git a/gen/Amazonka/Braket/GetJob.hs b/gen/Amazonka/Braket/GetJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/GetJob.hs
@@ -0,0 +1,446 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.GetJob
+-- 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 the specified Amazon Braket job.
+module Amazonka.Braket.GetJob
+  ( -- * Creating a Request
+    GetJob (..),
+    newGetJob,
+
+    -- * Request Lenses
+    getJob_jobArn,
+
+    -- * Destructuring the Response
+    GetJobResponse (..),
+    newGetJobResponse,
+
+    -- * Response Lenses
+    getJobResponse_billableDuration,
+    getJobResponse_checkpointConfig,
+    getJobResponse_deviceConfig,
+    getJobResponse_endedAt,
+    getJobResponse_events,
+    getJobResponse_failureReason,
+    getJobResponse_hyperParameters,
+    getJobResponse_inputDataConfig,
+    getJobResponse_startedAt,
+    getJobResponse_stoppingCondition,
+    getJobResponse_tags,
+    getJobResponse_httpStatus,
+    getJobResponse_algorithmSpecification,
+    getJobResponse_createdAt,
+    getJobResponse_instanceConfig,
+    getJobResponse_jobArn,
+    getJobResponse_jobName,
+    getJobResponse_outputDataConfig,
+    getJobResponse_roleArn,
+    getJobResponse_status,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetJob' smart constructor.
+data GetJob = GetJob'
+  { -- | The ARN of the job to retrieve.
+    jobArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'jobArn', 'getJob_jobArn' - The ARN of the job to retrieve.
+newGetJob ::
+  -- | 'jobArn'
+  Prelude.Text ->
+  GetJob
+newGetJob pJobArn_ = GetJob' {jobArn = pJobArn_}
+
+-- | The ARN of the job to retrieve.
+getJob_jobArn :: Lens.Lens' GetJob Prelude.Text
+getJob_jobArn = Lens.lens (\GetJob' {jobArn} -> jobArn) (\s@GetJob' {} a -> s {jobArn = a} :: GetJob)
+
+instance Core.AWSRequest GetJob where
+  type AWSResponse GetJob = GetJobResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetJobResponse'
+            Prelude.<$> (x Data..?> "billableDuration")
+            Prelude.<*> (x Data..?> "checkpointConfig")
+            Prelude.<*> (x Data..?> "deviceConfig")
+            Prelude.<*> (x Data..?> "endedAt")
+            Prelude.<*> (x Data..?> "events" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "failureReason")
+            Prelude.<*> ( x
+                            Data..?> "hyperParameters"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..?> "inputDataConfig"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "startedAt")
+            Prelude.<*> (x Data..?> "stoppingCondition")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "algorithmSpecification")
+            Prelude.<*> (x Data..:> "createdAt")
+            Prelude.<*> (x Data..:> "instanceConfig")
+            Prelude.<*> (x Data..:> "jobArn")
+            Prelude.<*> (x Data..:> "jobName")
+            Prelude.<*> (x Data..:> "outputDataConfig")
+            Prelude.<*> (x Data..:> "roleArn")
+            Prelude.<*> (x Data..:> "status")
+      )
+
+instance Prelude.Hashable GetJob where
+  hashWithSalt _salt GetJob' {..} =
+    _salt `Prelude.hashWithSalt` jobArn
+
+instance Prelude.NFData GetJob where
+  rnf GetJob' {..} = Prelude.rnf jobArn
+
+instance Data.ToHeaders GetJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetJob where
+  toPath GetJob' {..} =
+    Prelude.mconcat ["/job/", Data.toBS jobArn]
+
+instance Data.ToQuery GetJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetJobResponse' smart constructor.
+data GetJobResponse = GetJobResponse'
+  { -- | The billable time the Amazon Braket job used to complete.
+    billableDuration :: Prelude.Maybe Prelude.Int,
+    -- | Information about the output locations for job checkpoint data.
+    checkpointConfig :: Prelude.Maybe JobCheckpointConfig,
+    -- | The quantum processing unit (QPU) or simulator used to run the Amazon
+    -- Braket job.
+    deviceConfig :: Prelude.Maybe DeviceConfig,
+    -- | The date and time that the Amazon Braket job ended.
+    endedAt :: Prelude.Maybe Data.ISO8601,
+    -- | Details about the type and time events occurred related to the Amazon
+    -- Braket job.
+    events :: Prelude.Maybe [JobEventDetails],
+    -- | A description of the reason why an Amazon Braket job failed, if it
+    -- failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | Algorithm-specific parameters used by an Amazon Braket job that
+    -- influence the quality of the traiing job. The values are set with a
+    -- string of JSON key:value pairs, where the key is the name of the
+    -- hyperparameter and the value is the value of th hyperparameter.
+    hyperParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | A list of parameters that specify the name and type of input data and
+    -- where it is located.
+    inputDataConfig :: Prelude.Maybe [InputFileConfig],
+    -- | The date and time that the Amazon Braket job was started.
+    startedAt :: Prelude.Maybe Data.ISO8601,
+    -- | The user-defined criteria that specifies when to stop a job running.
+    stoppingCondition :: Prelude.Maybe JobStoppingCondition,
+    -- | A tag object that consists of a key and an optional value, used to
+    -- manage metadata for Amazon Braket resources.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Definition of the Amazon Braket job created. Specifies the container
+    -- image the job uses, information about the Python scripts used for entry
+    -- and training, and the user-defined metrics used to evaluation the job.
+    algorithmSpecification :: AlgorithmSpecification,
+    -- | The date and time that the Amazon Braket job was created.
+    createdAt :: Data.ISO8601,
+    -- | The resource instances to use while running the hybrid job on Amazon
+    -- Braket.
+    instanceConfig :: InstanceConfig,
+    -- | The ARN of the Amazon Braket job.
+    jobArn :: Prelude.Text,
+    -- | The name of the Amazon Braket job.
+    jobName :: Prelude.Text,
+    -- | The path to the S3 location where job artifacts are stored and the
+    -- encryption key used to store them there.
+    outputDataConfig :: JobOutputDataConfig,
+    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon Braket can
+    -- assume to perform tasks on behalf of a user. It can access user
+    -- resources, run an Amazon Braket job container on behalf of user, and
+    -- output resources to the s3 buckets of a user.
+    roleArn :: Prelude.Text,
+    -- | The status of the Amazon Braket job.
+    status :: JobPrimaryStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'billableDuration', 'getJobResponse_billableDuration' - The billable time the Amazon Braket job used to complete.
+--
+-- 'checkpointConfig', 'getJobResponse_checkpointConfig' - Information about the output locations for job checkpoint data.
+--
+-- 'deviceConfig', 'getJobResponse_deviceConfig' - The quantum processing unit (QPU) or simulator used to run the Amazon
+-- Braket job.
+--
+-- 'endedAt', 'getJobResponse_endedAt' - The date and time that the Amazon Braket job ended.
+--
+-- 'events', 'getJobResponse_events' - Details about the type and time events occurred related to the Amazon
+-- Braket job.
+--
+-- 'failureReason', 'getJobResponse_failureReason' - A description of the reason why an Amazon Braket job failed, if it
+-- failed.
+--
+-- 'hyperParameters', 'getJobResponse_hyperParameters' - Algorithm-specific parameters used by an Amazon Braket job that
+-- influence the quality of the traiing job. The values are set with a
+-- string of JSON key:value pairs, where the key is the name of the
+-- hyperparameter and the value is the value of th hyperparameter.
+--
+-- 'inputDataConfig', 'getJobResponse_inputDataConfig' - A list of parameters that specify the name and type of input data and
+-- where it is located.
+--
+-- 'startedAt', 'getJobResponse_startedAt' - The date and time that the Amazon Braket job was started.
+--
+-- 'stoppingCondition', 'getJobResponse_stoppingCondition' - The user-defined criteria that specifies when to stop a job running.
+--
+-- 'tags', 'getJobResponse_tags' - A tag object that consists of a key and an optional value, used to
+-- manage metadata for Amazon Braket resources.
+--
+-- 'httpStatus', 'getJobResponse_httpStatus' - The response's http status code.
+--
+-- 'algorithmSpecification', 'getJobResponse_algorithmSpecification' - Definition of the Amazon Braket job created. Specifies the container
+-- image the job uses, information about the Python scripts used for entry
+-- and training, and the user-defined metrics used to evaluation the job.
+--
+-- 'createdAt', 'getJobResponse_createdAt' - The date and time that the Amazon Braket job was created.
+--
+-- 'instanceConfig', 'getJobResponse_instanceConfig' - The resource instances to use while running the hybrid job on Amazon
+-- Braket.
+--
+-- 'jobArn', 'getJobResponse_jobArn' - The ARN of the Amazon Braket job.
+--
+-- 'jobName', 'getJobResponse_jobName' - The name of the Amazon Braket job.
+--
+-- 'outputDataConfig', 'getJobResponse_outputDataConfig' - The path to the S3 location where job artifacts are stored and the
+-- encryption key used to store them there.
+--
+-- 'roleArn', 'getJobResponse_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon Braket can
+-- assume to perform tasks on behalf of a user. It can access user
+-- resources, run an Amazon Braket job container on behalf of user, and
+-- output resources to the s3 buckets of a user.
+--
+-- 'status', 'getJobResponse_status' - The status of the Amazon Braket job.
+newGetJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'algorithmSpecification'
+  AlgorithmSpecification ->
+  -- | 'createdAt'
+  Prelude.UTCTime ->
+  -- | 'instanceConfig'
+  InstanceConfig ->
+  -- | 'jobArn'
+  Prelude.Text ->
+  -- | 'jobName'
+  Prelude.Text ->
+  -- | 'outputDataConfig'
+  JobOutputDataConfig ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'status'
+  JobPrimaryStatus ->
+  GetJobResponse
+newGetJobResponse
+  pHttpStatus_
+  pAlgorithmSpecification_
+  pCreatedAt_
+  pInstanceConfig_
+  pJobArn_
+  pJobName_
+  pOutputDataConfig_
+  pRoleArn_
+  pStatus_ =
+    GetJobResponse'
+      { billableDuration = Prelude.Nothing,
+        checkpointConfig = Prelude.Nothing,
+        deviceConfig = Prelude.Nothing,
+        endedAt = Prelude.Nothing,
+        events = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        hyperParameters = Prelude.Nothing,
+        inputDataConfig = Prelude.Nothing,
+        startedAt = Prelude.Nothing,
+        stoppingCondition = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        algorithmSpecification = pAlgorithmSpecification_,
+        createdAt = Data._Time Lens.# pCreatedAt_,
+        instanceConfig = pInstanceConfig_,
+        jobArn = pJobArn_,
+        jobName = pJobName_,
+        outputDataConfig = pOutputDataConfig_,
+        roleArn = pRoleArn_,
+        status = pStatus_
+      }
+
+-- | The billable time the Amazon Braket job used to complete.
+getJobResponse_billableDuration :: Lens.Lens' GetJobResponse (Prelude.Maybe Prelude.Int)
+getJobResponse_billableDuration = Lens.lens (\GetJobResponse' {billableDuration} -> billableDuration) (\s@GetJobResponse' {} a -> s {billableDuration = a} :: GetJobResponse)
+
+-- | Information about the output locations for job checkpoint data.
+getJobResponse_checkpointConfig :: Lens.Lens' GetJobResponse (Prelude.Maybe JobCheckpointConfig)
+getJobResponse_checkpointConfig = Lens.lens (\GetJobResponse' {checkpointConfig} -> checkpointConfig) (\s@GetJobResponse' {} a -> s {checkpointConfig = a} :: GetJobResponse)
+
+-- | The quantum processing unit (QPU) or simulator used to run the Amazon
+-- Braket job.
+getJobResponse_deviceConfig :: Lens.Lens' GetJobResponse (Prelude.Maybe DeviceConfig)
+getJobResponse_deviceConfig = Lens.lens (\GetJobResponse' {deviceConfig} -> deviceConfig) (\s@GetJobResponse' {} a -> s {deviceConfig = a} :: GetJobResponse)
+
+-- | The date and time that the Amazon Braket job ended.
+getJobResponse_endedAt :: Lens.Lens' GetJobResponse (Prelude.Maybe Prelude.UTCTime)
+getJobResponse_endedAt = Lens.lens (\GetJobResponse' {endedAt} -> endedAt) (\s@GetJobResponse' {} a -> s {endedAt = a} :: GetJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Details about the type and time events occurred related to the Amazon
+-- Braket job.
+getJobResponse_events :: Lens.Lens' GetJobResponse (Prelude.Maybe [JobEventDetails])
+getJobResponse_events = Lens.lens (\GetJobResponse' {events} -> events) (\s@GetJobResponse' {} a -> s {events = a} :: GetJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A description of the reason why an Amazon Braket job failed, if it
+-- failed.
+getJobResponse_failureReason :: Lens.Lens' GetJobResponse (Prelude.Maybe Prelude.Text)
+getJobResponse_failureReason = Lens.lens (\GetJobResponse' {failureReason} -> failureReason) (\s@GetJobResponse' {} a -> s {failureReason = a} :: GetJobResponse)
+
+-- | Algorithm-specific parameters used by an Amazon Braket job that
+-- influence the quality of the traiing job. The values are set with a
+-- string of JSON key:value pairs, where the key is the name of the
+-- hyperparameter and the value is the value of th hyperparameter.
+getJobResponse_hyperParameters :: Lens.Lens' GetJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getJobResponse_hyperParameters = Lens.lens (\GetJobResponse' {hyperParameters} -> hyperParameters) (\s@GetJobResponse' {} a -> s {hyperParameters = a} :: GetJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of parameters that specify the name and type of input data and
+-- where it is located.
+getJobResponse_inputDataConfig :: Lens.Lens' GetJobResponse (Prelude.Maybe [InputFileConfig])
+getJobResponse_inputDataConfig = Lens.lens (\GetJobResponse' {inputDataConfig} -> inputDataConfig) (\s@GetJobResponse' {} a -> s {inputDataConfig = a} :: GetJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The date and time that the Amazon Braket job was started.
+getJobResponse_startedAt :: Lens.Lens' GetJobResponse (Prelude.Maybe Prelude.UTCTime)
+getJobResponse_startedAt = Lens.lens (\GetJobResponse' {startedAt} -> startedAt) (\s@GetJobResponse' {} a -> s {startedAt = a} :: GetJobResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The user-defined criteria that specifies when to stop a job running.
+getJobResponse_stoppingCondition :: Lens.Lens' GetJobResponse (Prelude.Maybe JobStoppingCondition)
+getJobResponse_stoppingCondition = Lens.lens (\GetJobResponse' {stoppingCondition} -> stoppingCondition) (\s@GetJobResponse' {} a -> s {stoppingCondition = a} :: GetJobResponse)
+
+-- | A tag object that consists of a key and an optional value, used to
+-- manage metadata for Amazon Braket resources.
+getJobResponse_tags :: Lens.Lens' GetJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getJobResponse_tags = Lens.lens (\GetJobResponse' {tags} -> tags) (\s@GetJobResponse' {} a -> s {tags = a} :: GetJobResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getJobResponse_httpStatus :: Lens.Lens' GetJobResponse Prelude.Int
+getJobResponse_httpStatus = Lens.lens (\GetJobResponse' {httpStatus} -> httpStatus) (\s@GetJobResponse' {} a -> s {httpStatus = a} :: GetJobResponse)
+
+-- | Definition of the Amazon Braket job created. Specifies the container
+-- image the job uses, information about the Python scripts used for entry
+-- and training, and the user-defined metrics used to evaluation the job.
+getJobResponse_algorithmSpecification :: Lens.Lens' GetJobResponse AlgorithmSpecification
+getJobResponse_algorithmSpecification = Lens.lens (\GetJobResponse' {algorithmSpecification} -> algorithmSpecification) (\s@GetJobResponse' {} a -> s {algorithmSpecification = a} :: GetJobResponse)
+
+-- | The date and time that the Amazon Braket job was created.
+getJobResponse_createdAt :: Lens.Lens' GetJobResponse Prelude.UTCTime
+getJobResponse_createdAt = Lens.lens (\GetJobResponse' {createdAt} -> createdAt) (\s@GetJobResponse' {} a -> s {createdAt = a} :: GetJobResponse) Prelude.. Data._Time
+
+-- | The resource instances to use while running the hybrid job on Amazon
+-- Braket.
+getJobResponse_instanceConfig :: Lens.Lens' GetJobResponse InstanceConfig
+getJobResponse_instanceConfig = Lens.lens (\GetJobResponse' {instanceConfig} -> instanceConfig) (\s@GetJobResponse' {} a -> s {instanceConfig = a} :: GetJobResponse)
+
+-- | The ARN of the Amazon Braket job.
+getJobResponse_jobArn :: Lens.Lens' GetJobResponse Prelude.Text
+getJobResponse_jobArn = Lens.lens (\GetJobResponse' {jobArn} -> jobArn) (\s@GetJobResponse' {} a -> s {jobArn = a} :: GetJobResponse)
+
+-- | The name of the Amazon Braket job.
+getJobResponse_jobName :: Lens.Lens' GetJobResponse Prelude.Text
+getJobResponse_jobName = Lens.lens (\GetJobResponse' {jobName} -> jobName) (\s@GetJobResponse' {} a -> s {jobName = a} :: GetJobResponse)
+
+-- | The path to the S3 location where job artifacts are stored and the
+-- encryption key used to store them there.
+getJobResponse_outputDataConfig :: Lens.Lens' GetJobResponse JobOutputDataConfig
+getJobResponse_outputDataConfig = Lens.lens (\GetJobResponse' {outputDataConfig} -> outputDataConfig) (\s@GetJobResponse' {} a -> s {outputDataConfig = a} :: GetJobResponse)
+
+-- | The Amazon Resource Name (ARN) of an IAM role that Amazon Braket can
+-- assume to perform tasks on behalf of a user. It can access user
+-- resources, run an Amazon Braket job container on behalf of user, and
+-- output resources to the s3 buckets of a user.
+getJobResponse_roleArn :: Lens.Lens' GetJobResponse Prelude.Text
+getJobResponse_roleArn = Lens.lens (\GetJobResponse' {roleArn} -> roleArn) (\s@GetJobResponse' {} a -> s {roleArn = a} :: GetJobResponse)
+
+-- | The status of the Amazon Braket job.
+getJobResponse_status :: Lens.Lens' GetJobResponse JobPrimaryStatus
+getJobResponse_status = Lens.lens (\GetJobResponse' {status} -> status) (\s@GetJobResponse' {} a -> s {status = a} :: GetJobResponse)
+
+instance Prelude.NFData GetJobResponse where
+  rnf GetJobResponse' {..} =
+    Prelude.rnf billableDuration
+      `Prelude.seq` Prelude.rnf checkpointConfig
+      `Prelude.seq` Prelude.rnf deviceConfig
+      `Prelude.seq` Prelude.rnf endedAt
+      `Prelude.seq` Prelude.rnf events
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf hyperParameters
+      `Prelude.seq` Prelude.rnf inputDataConfig
+      `Prelude.seq` Prelude.rnf startedAt
+      `Prelude.seq` Prelude.rnf stoppingCondition
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf algorithmSpecification
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf instanceConfig
+      `Prelude.seq` Prelude.rnf jobArn
+      `Prelude.seq` Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf outputDataConfig
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/Braket/GetQuantumTask.hs b/gen/Amazonka/Braket/GetQuantumTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/GetQuantumTask.hs
@@ -0,0 +1,315 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.GetQuantumTask
+-- 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 the specified quantum task.
+module Amazonka.Braket.GetQuantumTask
+  ( -- * Creating a Request
+    GetQuantumTask (..),
+    newGetQuantumTask,
+
+    -- * Request Lenses
+    getQuantumTask_quantumTaskArn,
+
+    -- * Destructuring the Response
+    GetQuantumTaskResponse (..),
+    newGetQuantumTaskResponse,
+
+    -- * Response Lenses
+    getQuantumTaskResponse_endedAt,
+    getQuantumTaskResponse_failureReason,
+    getQuantumTaskResponse_jobArn,
+    getQuantumTaskResponse_tags,
+    getQuantumTaskResponse_httpStatus,
+    getQuantumTaskResponse_createdAt,
+    getQuantumTaskResponse_deviceArn,
+    getQuantumTaskResponse_deviceParameters,
+    getQuantumTaskResponse_outputS3Bucket,
+    getQuantumTaskResponse_outputS3Directory,
+    getQuantumTaskResponse_quantumTaskArn,
+    getQuantumTaskResponse_shots,
+    getQuantumTaskResponse_status,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetQuantumTask' smart constructor.
+data GetQuantumTask = GetQuantumTask'
+  { -- | the ARN of the task to retrieve.
+    quantumTaskArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetQuantumTask' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'quantumTaskArn', 'getQuantumTask_quantumTaskArn' - the ARN of the task to retrieve.
+newGetQuantumTask ::
+  -- | 'quantumTaskArn'
+  Prelude.Text ->
+  GetQuantumTask
+newGetQuantumTask pQuantumTaskArn_ =
+  GetQuantumTask' {quantumTaskArn = pQuantumTaskArn_}
+
+-- | the ARN of the task to retrieve.
+getQuantumTask_quantumTaskArn :: Lens.Lens' GetQuantumTask Prelude.Text
+getQuantumTask_quantumTaskArn = Lens.lens (\GetQuantumTask' {quantumTaskArn} -> quantumTaskArn) (\s@GetQuantumTask' {} a -> s {quantumTaskArn = a} :: GetQuantumTask)
+
+instance Core.AWSRequest GetQuantumTask where
+  type
+    AWSResponse GetQuantumTask =
+      GetQuantumTaskResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetQuantumTaskResponse'
+            Prelude.<$> (x Data..?> "endedAt")
+            Prelude.<*> (x Data..?> "failureReason")
+            Prelude.<*> (x Data..?> "jobArn")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "createdAt")
+            Prelude.<*> (x Data..:> "deviceArn")
+            Prelude.<*> (x Data..:> "deviceParameters")
+            Prelude.<*> (x Data..:> "outputS3Bucket")
+            Prelude.<*> (x Data..:> "outputS3Directory")
+            Prelude.<*> (x Data..:> "quantumTaskArn")
+            Prelude.<*> (x Data..:> "shots")
+            Prelude.<*> (x Data..:> "status")
+      )
+
+instance Prelude.Hashable GetQuantumTask where
+  hashWithSalt _salt GetQuantumTask' {..} =
+    _salt `Prelude.hashWithSalt` quantumTaskArn
+
+instance Prelude.NFData GetQuantumTask where
+  rnf GetQuantumTask' {..} = Prelude.rnf quantumTaskArn
+
+instance Data.ToHeaders GetQuantumTask where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetQuantumTask where
+  toPath GetQuantumTask' {..} =
+    Prelude.mconcat
+      ["/quantum-task/", Data.toBS quantumTaskArn]
+
+instance Data.ToQuery GetQuantumTask where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetQuantumTaskResponse' smart constructor.
+data GetQuantumTaskResponse = GetQuantumTaskResponse'
+  { -- | The time at which the task ended.
+    endedAt :: Prelude.Maybe Data.ISO8601,
+    -- | The reason that a task failed.
+    failureReason :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the Amazon Braket job associated with the quantum task.
+    jobArn :: Prelude.Maybe Prelude.Text,
+    -- | The tags that belong to this task.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The time at which the task was created.
+    createdAt :: Data.ISO8601,
+    -- | The ARN of the device the task was run on.
+    deviceArn :: Prelude.Text,
+    -- | The parameters for the device on which the task ran.
+    deviceParameters :: Prelude.Text,
+    -- | The S3 bucket where task results are stored.
+    outputS3Bucket :: Prelude.Text,
+    -- | The folder in the S3 bucket where task results are stored.
+    outputS3Directory :: Prelude.Text,
+    -- | The ARN of the task.
+    quantumTaskArn :: Prelude.Text,
+    -- | The number of shots used in the task.
+    shots :: Prelude.Integer,
+    -- | The status of the task.
+    status :: QuantumTaskStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetQuantumTaskResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'endedAt', 'getQuantumTaskResponse_endedAt' - The time at which the task ended.
+--
+-- 'failureReason', 'getQuantumTaskResponse_failureReason' - The reason that a task failed.
+--
+-- 'jobArn', 'getQuantumTaskResponse_jobArn' - The ARN of the Amazon Braket job associated with the quantum task.
+--
+-- 'tags', 'getQuantumTaskResponse_tags' - The tags that belong to this task.
+--
+-- 'httpStatus', 'getQuantumTaskResponse_httpStatus' - The response's http status code.
+--
+-- 'createdAt', 'getQuantumTaskResponse_createdAt' - The time at which the task was created.
+--
+-- 'deviceArn', 'getQuantumTaskResponse_deviceArn' - The ARN of the device the task was run on.
+--
+-- 'deviceParameters', 'getQuantumTaskResponse_deviceParameters' - The parameters for the device on which the task ran.
+--
+-- 'outputS3Bucket', 'getQuantumTaskResponse_outputS3Bucket' - The S3 bucket where task results are stored.
+--
+-- 'outputS3Directory', 'getQuantumTaskResponse_outputS3Directory' - The folder in the S3 bucket where task results are stored.
+--
+-- 'quantumTaskArn', 'getQuantumTaskResponse_quantumTaskArn' - The ARN of the task.
+--
+-- 'shots', 'getQuantumTaskResponse_shots' - The number of shots used in the task.
+--
+-- 'status', 'getQuantumTaskResponse_status' - The status of the task.
+newGetQuantumTaskResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'createdAt'
+  Prelude.UTCTime ->
+  -- | 'deviceArn'
+  Prelude.Text ->
+  -- | 'deviceParameters'
+  Prelude.Text ->
+  -- | 'outputS3Bucket'
+  Prelude.Text ->
+  -- | 'outputS3Directory'
+  Prelude.Text ->
+  -- | 'quantumTaskArn'
+  Prelude.Text ->
+  -- | 'shots'
+  Prelude.Integer ->
+  -- | 'status'
+  QuantumTaskStatus ->
+  GetQuantumTaskResponse
+newGetQuantumTaskResponse
+  pHttpStatus_
+  pCreatedAt_
+  pDeviceArn_
+  pDeviceParameters_
+  pOutputS3Bucket_
+  pOutputS3Directory_
+  pQuantumTaskArn_
+  pShots_
+  pStatus_ =
+    GetQuantumTaskResponse'
+      { endedAt = Prelude.Nothing,
+        failureReason = Prelude.Nothing,
+        jobArn = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        createdAt = Data._Time Lens.# pCreatedAt_,
+        deviceArn = pDeviceArn_,
+        deviceParameters = pDeviceParameters_,
+        outputS3Bucket = pOutputS3Bucket_,
+        outputS3Directory = pOutputS3Directory_,
+        quantumTaskArn = pQuantumTaskArn_,
+        shots = pShots_,
+        status = pStatus_
+      }
+
+-- | The time at which the task ended.
+getQuantumTaskResponse_endedAt :: Lens.Lens' GetQuantumTaskResponse (Prelude.Maybe Prelude.UTCTime)
+getQuantumTaskResponse_endedAt = Lens.lens (\GetQuantumTaskResponse' {endedAt} -> endedAt) (\s@GetQuantumTaskResponse' {} a -> s {endedAt = a} :: GetQuantumTaskResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The reason that a task failed.
+getQuantumTaskResponse_failureReason :: Lens.Lens' GetQuantumTaskResponse (Prelude.Maybe Prelude.Text)
+getQuantumTaskResponse_failureReason = Lens.lens (\GetQuantumTaskResponse' {failureReason} -> failureReason) (\s@GetQuantumTaskResponse' {} a -> s {failureReason = a} :: GetQuantumTaskResponse)
+
+-- | The ARN of the Amazon Braket job associated with the quantum task.
+getQuantumTaskResponse_jobArn :: Lens.Lens' GetQuantumTaskResponse (Prelude.Maybe Prelude.Text)
+getQuantumTaskResponse_jobArn = Lens.lens (\GetQuantumTaskResponse' {jobArn} -> jobArn) (\s@GetQuantumTaskResponse' {} a -> s {jobArn = a} :: GetQuantumTaskResponse)
+
+-- | The tags that belong to this task.
+getQuantumTaskResponse_tags :: Lens.Lens' GetQuantumTaskResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getQuantumTaskResponse_tags = Lens.lens (\GetQuantumTaskResponse' {tags} -> tags) (\s@GetQuantumTaskResponse' {} a -> s {tags = a} :: GetQuantumTaskResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getQuantumTaskResponse_httpStatus :: Lens.Lens' GetQuantumTaskResponse Prelude.Int
+getQuantumTaskResponse_httpStatus = Lens.lens (\GetQuantumTaskResponse' {httpStatus} -> httpStatus) (\s@GetQuantumTaskResponse' {} a -> s {httpStatus = a} :: GetQuantumTaskResponse)
+
+-- | The time at which the task was created.
+getQuantumTaskResponse_createdAt :: Lens.Lens' GetQuantumTaskResponse Prelude.UTCTime
+getQuantumTaskResponse_createdAt = Lens.lens (\GetQuantumTaskResponse' {createdAt} -> createdAt) (\s@GetQuantumTaskResponse' {} a -> s {createdAt = a} :: GetQuantumTaskResponse) Prelude.. Data._Time
+
+-- | The ARN of the device the task was run on.
+getQuantumTaskResponse_deviceArn :: Lens.Lens' GetQuantumTaskResponse Prelude.Text
+getQuantumTaskResponse_deviceArn = Lens.lens (\GetQuantumTaskResponse' {deviceArn} -> deviceArn) (\s@GetQuantumTaskResponse' {} a -> s {deviceArn = a} :: GetQuantumTaskResponse)
+
+-- | The parameters for the device on which the task ran.
+getQuantumTaskResponse_deviceParameters :: Lens.Lens' GetQuantumTaskResponse Prelude.Text
+getQuantumTaskResponse_deviceParameters = Lens.lens (\GetQuantumTaskResponse' {deviceParameters} -> deviceParameters) (\s@GetQuantumTaskResponse' {} a -> s {deviceParameters = a} :: GetQuantumTaskResponse)
+
+-- | The S3 bucket where task results are stored.
+getQuantumTaskResponse_outputS3Bucket :: Lens.Lens' GetQuantumTaskResponse Prelude.Text
+getQuantumTaskResponse_outputS3Bucket = Lens.lens (\GetQuantumTaskResponse' {outputS3Bucket} -> outputS3Bucket) (\s@GetQuantumTaskResponse' {} a -> s {outputS3Bucket = a} :: GetQuantumTaskResponse)
+
+-- | The folder in the S3 bucket where task results are stored.
+getQuantumTaskResponse_outputS3Directory :: Lens.Lens' GetQuantumTaskResponse Prelude.Text
+getQuantumTaskResponse_outputS3Directory = Lens.lens (\GetQuantumTaskResponse' {outputS3Directory} -> outputS3Directory) (\s@GetQuantumTaskResponse' {} a -> s {outputS3Directory = a} :: GetQuantumTaskResponse)
+
+-- | The ARN of the task.
+getQuantumTaskResponse_quantumTaskArn :: Lens.Lens' GetQuantumTaskResponse Prelude.Text
+getQuantumTaskResponse_quantumTaskArn = Lens.lens (\GetQuantumTaskResponse' {quantumTaskArn} -> quantumTaskArn) (\s@GetQuantumTaskResponse' {} a -> s {quantumTaskArn = a} :: GetQuantumTaskResponse)
+
+-- | The number of shots used in the task.
+getQuantumTaskResponse_shots :: Lens.Lens' GetQuantumTaskResponse Prelude.Integer
+getQuantumTaskResponse_shots = Lens.lens (\GetQuantumTaskResponse' {shots} -> shots) (\s@GetQuantumTaskResponse' {} a -> s {shots = a} :: GetQuantumTaskResponse)
+
+-- | The status of the task.
+getQuantumTaskResponse_status :: Lens.Lens' GetQuantumTaskResponse QuantumTaskStatus
+getQuantumTaskResponse_status = Lens.lens (\GetQuantumTaskResponse' {status} -> status) (\s@GetQuantumTaskResponse' {} a -> s {status = a} :: GetQuantumTaskResponse)
+
+instance Prelude.NFData GetQuantumTaskResponse where
+  rnf GetQuantumTaskResponse' {..} =
+    Prelude.rnf endedAt
+      `Prelude.seq` Prelude.rnf failureReason
+      `Prelude.seq` Prelude.rnf jobArn
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf deviceArn
+      `Prelude.seq` Prelude.rnf deviceParameters
+      `Prelude.seq` Prelude.rnf outputS3Bucket
+      `Prelude.seq` Prelude.rnf outputS3Directory
+      `Prelude.seq` Prelude.rnf quantumTaskArn
+      `Prelude.seq` Prelude.rnf shots
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/Braket/Lens.hs b/gen/Amazonka/Braket/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Lens.hs
@@ -0,0 +1,270 @@
+{-# 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.Braket.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.Braket.Lens
+  ( -- * Operations
+
+    -- ** CancelJob
+    cancelJob_jobArn,
+    cancelJobResponse_httpStatus,
+    cancelJobResponse_cancellationStatus,
+    cancelJobResponse_jobArn,
+
+    -- ** CancelQuantumTask
+    cancelQuantumTask_clientToken,
+    cancelQuantumTask_quantumTaskArn,
+    cancelQuantumTaskResponse_httpStatus,
+    cancelQuantumTaskResponse_cancellationStatus,
+    cancelQuantumTaskResponse_quantumTaskArn,
+
+    -- ** CreateJob
+    createJob_checkpointConfig,
+    createJob_hyperParameters,
+    createJob_inputDataConfig,
+    createJob_stoppingCondition,
+    createJob_tags,
+    createJob_algorithmSpecification,
+    createJob_clientToken,
+    createJob_deviceConfig,
+    createJob_instanceConfig,
+    createJob_jobName,
+    createJob_outputDataConfig,
+    createJob_roleArn,
+    createJobResponse_httpStatus,
+    createJobResponse_jobArn,
+
+    -- ** CreateQuantumTask
+    createQuantumTask_deviceParameters,
+    createQuantumTask_jobToken,
+    createQuantumTask_tags,
+    createQuantumTask_action,
+    createQuantumTask_clientToken,
+    createQuantumTask_deviceArn,
+    createQuantumTask_outputS3Bucket,
+    createQuantumTask_outputS3KeyPrefix,
+    createQuantumTask_shots,
+    createQuantumTaskResponse_httpStatus,
+    createQuantumTaskResponse_quantumTaskArn,
+
+    -- ** GetDevice
+    getDevice_deviceArn,
+    getDeviceResponse_httpStatus,
+    getDeviceResponse_deviceArn,
+    getDeviceResponse_deviceCapabilities,
+    getDeviceResponse_deviceName,
+    getDeviceResponse_deviceStatus,
+    getDeviceResponse_deviceType,
+    getDeviceResponse_providerName,
+
+    -- ** GetJob
+    getJob_jobArn,
+    getJobResponse_billableDuration,
+    getJobResponse_checkpointConfig,
+    getJobResponse_deviceConfig,
+    getJobResponse_endedAt,
+    getJobResponse_events,
+    getJobResponse_failureReason,
+    getJobResponse_hyperParameters,
+    getJobResponse_inputDataConfig,
+    getJobResponse_startedAt,
+    getJobResponse_stoppingCondition,
+    getJobResponse_tags,
+    getJobResponse_httpStatus,
+    getJobResponse_algorithmSpecification,
+    getJobResponse_createdAt,
+    getJobResponse_instanceConfig,
+    getJobResponse_jobArn,
+    getJobResponse_jobName,
+    getJobResponse_outputDataConfig,
+    getJobResponse_roleArn,
+    getJobResponse_status,
+
+    -- ** GetQuantumTask
+    getQuantumTask_quantumTaskArn,
+    getQuantumTaskResponse_endedAt,
+    getQuantumTaskResponse_failureReason,
+    getQuantumTaskResponse_jobArn,
+    getQuantumTaskResponse_tags,
+    getQuantumTaskResponse_httpStatus,
+    getQuantumTaskResponse_createdAt,
+    getQuantumTaskResponse_deviceArn,
+    getQuantumTaskResponse_deviceParameters,
+    getQuantumTaskResponse_outputS3Bucket,
+    getQuantumTaskResponse_outputS3Directory,
+    getQuantumTaskResponse_quantumTaskArn,
+    getQuantumTaskResponse_shots,
+    getQuantumTaskResponse_status,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** SearchDevices
+    searchDevices_maxResults,
+    searchDevices_nextToken,
+    searchDevices_filters,
+    searchDevicesResponse_nextToken,
+    searchDevicesResponse_httpStatus,
+    searchDevicesResponse_devices,
+
+    -- ** SearchJobs
+    searchJobs_maxResults,
+    searchJobs_nextToken,
+    searchJobs_filters,
+    searchJobsResponse_nextToken,
+    searchJobsResponse_httpStatus,
+    searchJobsResponse_jobs,
+
+    -- ** SearchQuantumTasks
+    searchQuantumTasks_maxResults,
+    searchQuantumTasks_nextToken,
+    searchQuantumTasks_filters,
+    searchQuantumTasksResponse_nextToken,
+    searchQuantumTasksResponse_httpStatus,
+    searchQuantumTasksResponse_quantumTasks,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- * Types
+
+    -- ** AlgorithmSpecification
+    algorithmSpecification_containerImage,
+    algorithmSpecification_scriptModeConfig,
+
+    -- ** ContainerImage
+    containerImage_uri,
+
+    -- ** DataSource
+    dataSource_s3DataSource,
+
+    -- ** DeviceConfig
+    deviceConfig_device,
+
+    -- ** DeviceSummary
+    deviceSummary_deviceArn,
+    deviceSummary_deviceName,
+    deviceSummary_deviceStatus,
+    deviceSummary_deviceType,
+    deviceSummary_providerName,
+
+    -- ** InputFileConfig
+    inputFileConfig_contentType,
+    inputFileConfig_channelName,
+    inputFileConfig_dataSource,
+
+    -- ** InstanceConfig
+    instanceConfig_instanceCount,
+    instanceConfig_instanceType,
+    instanceConfig_volumeSizeInGb,
+
+    -- ** JobCheckpointConfig
+    jobCheckpointConfig_localPath,
+    jobCheckpointConfig_s3Uri,
+
+    -- ** JobEventDetails
+    jobEventDetails_eventType,
+    jobEventDetails_message,
+    jobEventDetails_timeOfEvent,
+
+    -- ** JobOutputDataConfig
+    jobOutputDataConfig_kmsKeyId,
+    jobOutputDataConfig_s3Path,
+
+    -- ** JobStoppingCondition
+    jobStoppingCondition_maxRuntimeInSeconds,
+
+    -- ** JobSummary
+    jobSummary_endedAt,
+    jobSummary_startedAt,
+    jobSummary_tags,
+    jobSummary_createdAt,
+    jobSummary_device,
+    jobSummary_jobArn,
+    jobSummary_jobName,
+    jobSummary_status,
+
+    -- ** QuantumTaskSummary
+    quantumTaskSummary_endedAt,
+    quantumTaskSummary_tags,
+    quantumTaskSummary_createdAt,
+    quantumTaskSummary_deviceArn,
+    quantumTaskSummary_outputS3Bucket,
+    quantumTaskSummary_outputS3Directory,
+    quantumTaskSummary_quantumTaskArn,
+    quantumTaskSummary_shots,
+    quantumTaskSummary_status,
+
+    -- ** S3DataSource
+    s3DataSource_s3Uri,
+
+    -- ** ScriptModeConfig
+    scriptModeConfig_compressionType,
+    scriptModeConfig_entryPoint,
+    scriptModeConfig_s3Uri,
+
+    -- ** SearchDevicesFilter
+    searchDevicesFilter_name,
+    searchDevicesFilter_values,
+
+    -- ** SearchJobsFilter
+    searchJobsFilter_name,
+    searchJobsFilter_operator,
+    searchJobsFilter_values,
+
+    -- ** SearchQuantumTasksFilter
+    searchQuantumTasksFilter_name,
+    searchQuantumTasksFilter_operator,
+    searchQuantumTasksFilter_values,
+  )
+where
+
+import Amazonka.Braket.CancelJob
+import Amazonka.Braket.CancelQuantumTask
+import Amazonka.Braket.CreateJob
+import Amazonka.Braket.CreateQuantumTask
+import Amazonka.Braket.GetDevice
+import Amazonka.Braket.GetJob
+import Amazonka.Braket.GetQuantumTask
+import Amazonka.Braket.ListTagsForResource
+import Amazonka.Braket.SearchDevices
+import Amazonka.Braket.SearchJobs
+import Amazonka.Braket.SearchQuantumTasks
+import Amazonka.Braket.TagResource
+import Amazonka.Braket.Types.AlgorithmSpecification
+import Amazonka.Braket.Types.ContainerImage
+import Amazonka.Braket.Types.DataSource
+import Amazonka.Braket.Types.DeviceConfig
+import Amazonka.Braket.Types.DeviceSummary
+import Amazonka.Braket.Types.InputFileConfig
+import Amazonka.Braket.Types.InstanceConfig
+import Amazonka.Braket.Types.JobCheckpointConfig
+import Amazonka.Braket.Types.JobEventDetails
+import Amazonka.Braket.Types.JobOutputDataConfig
+import Amazonka.Braket.Types.JobStoppingCondition
+import Amazonka.Braket.Types.JobSummary
+import Amazonka.Braket.Types.QuantumTaskSummary
+import Amazonka.Braket.Types.S3DataSource
+import Amazonka.Braket.Types.ScriptModeConfig
+import Amazonka.Braket.Types.SearchDevicesFilter
+import Amazonka.Braket.Types.SearchJobsFilter
+import Amazonka.Braket.Types.SearchQuantumTasksFilter
+import Amazonka.Braket.UntagResource
diff --git a/gen/Amazonka/Braket/ListTagsForResource.hs b/gen/Amazonka/Braket/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/ListTagsForResource.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.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)
+--
+-- Shows the tags associated with this resource.
+module Amazonka.Braket.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | Specify the @resourceArn@ for the resource whose tags to display.
+    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' - Specify the @resourceArn@ for the resource whose tags to display.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | Specify the @resourceArn@ for the resource whose tags to display.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | Displays the key, value pairs of tags associated with this resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - Displays the key, value pairs of tags associated with this resource.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Displays the key, value pairs of tags associated with this resource.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Braket/SearchDevices.hs b/gen/Amazonka/Braket/SearchDevices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/SearchDevices.hs
@@ -0,0 +1,240 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.SearchDevices
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Searches for devices using the specified filters.
+--
+-- This operation returns paginated results.
+module Amazonka.Braket.SearchDevices
+  ( -- * Creating a Request
+    SearchDevices (..),
+    newSearchDevices,
+
+    -- * Request Lenses
+    searchDevices_maxResults,
+    searchDevices_nextToken,
+    searchDevices_filters,
+
+    -- * Destructuring the Response
+    SearchDevicesResponse (..),
+    newSearchDevicesResponse,
+
+    -- * Response Lenses
+    searchDevicesResponse_nextToken,
+    searchDevicesResponse_httpStatus,
+    searchDevicesResponse_devices,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearchDevices' smart constructor.
+data SearchDevices = SearchDevices'
+  { -- | The maximum number of results to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A token used for pagination of results returned in the response. Use the
+    -- token returned from the previous request continue results where the
+    -- previous request ended.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The filter values to use to search for a device.
+    filters :: [SearchDevicesFilter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchDevices' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchDevices_maxResults' - The maximum number of results to return in the response.
+--
+-- 'nextToken', 'searchDevices_nextToken' - A token used for pagination of results returned in the response. Use the
+-- token returned from the previous request continue results where the
+-- previous request ended.
+--
+-- 'filters', 'searchDevices_filters' - The filter values to use to search for a device.
+newSearchDevices ::
+  SearchDevices
+newSearchDevices =
+  SearchDevices'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      filters = Prelude.mempty
+    }
+
+-- | The maximum number of results to return in the response.
+searchDevices_maxResults :: Lens.Lens' SearchDevices (Prelude.Maybe Prelude.Natural)
+searchDevices_maxResults = Lens.lens (\SearchDevices' {maxResults} -> maxResults) (\s@SearchDevices' {} a -> s {maxResults = a} :: SearchDevices)
+
+-- | A token used for pagination of results returned in the response. Use the
+-- token returned from the previous request continue results where the
+-- previous request ended.
+searchDevices_nextToken :: Lens.Lens' SearchDevices (Prelude.Maybe Prelude.Text)
+searchDevices_nextToken = Lens.lens (\SearchDevices' {nextToken} -> nextToken) (\s@SearchDevices' {} a -> s {nextToken = a} :: SearchDevices)
+
+-- | The filter values to use to search for a device.
+searchDevices_filters :: Lens.Lens' SearchDevices [SearchDevicesFilter]
+searchDevices_filters = Lens.lens (\SearchDevices' {filters} -> filters) (\s@SearchDevices' {} a -> s {filters = a} :: SearchDevices) Prelude.. Lens.coerced
+
+instance Core.AWSPager SearchDevices where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? searchDevicesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        (rs Lens.^. searchDevicesResponse_devices) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& searchDevices_nextToken
+          Lens..~ rs
+          Lens.^? searchDevicesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest SearchDevices where
+  type
+    AWSResponse SearchDevices =
+      SearchDevicesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchDevicesResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "devices" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable SearchDevices where
+  hashWithSalt _salt SearchDevices' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData SearchDevices where
+  rnf SearchDevices' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf filters
+
+instance Data.ToHeaders SearchDevices where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SearchDevices where
+  toJSON SearchDevices' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("filters" Data..= filters)
+          ]
+      )
+
+instance Data.ToPath SearchDevices where
+  toPath = Prelude.const "/devices"
+
+instance Data.ToQuery SearchDevices where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchDevicesResponse' smart constructor.
+data SearchDevicesResponse = SearchDevicesResponse'
+  { -- | A token used for pagination of results, or null if there are no
+    -- additional results. Use the token value in a subsequent request to
+    -- continue results where the previous request ended.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @DeviceSummary@ objects for devices that match the specified
+    -- filter values.
+    devices :: [DeviceSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchDevicesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchDevicesResponse_nextToken' - A token used for pagination of results, or null if there are no
+-- additional results. Use the token value in a subsequent request to
+-- continue results where the previous request ended.
+--
+-- 'httpStatus', 'searchDevicesResponse_httpStatus' - The response's http status code.
+--
+-- 'devices', 'searchDevicesResponse_devices' - An array of @DeviceSummary@ objects for devices that match the specified
+-- filter values.
+newSearchDevicesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SearchDevicesResponse
+newSearchDevicesResponse pHttpStatus_ =
+  SearchDevicesResponse'
+    { nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      devices = Prelude.mempty
+    }
+
+-- | A token used for pagination of results, or null if there are no
+-- additional results. Use the token value in a subsequent request to
+-- continue results where the previous request ended.
+searchDevicesResponse_nextToken :: Lens.Lens' SearchDevicesResponse (Prelude.Maybe Prelude.Text)
+searchDevicesResponse_nextToken = Lens.lens (\SearchDevicesResponse' {nextToken} -> nextToken) (\s@SearchDevicesResponse' {} a -> s {nextToken = a} :: SearchDevicesResponse)
+
+-- | The response's http status code.
+searchDevicesResponse_httpStatus :: Lens.Lens' SearchDevicesResponse Prelude.Int
+searchDevicesResponse_httpStatus = Lens.lens (\SearchDevicesResponse' {httpStatus} -> httpStatus) (\s@SearchDevicesResponse' {} a -> s {httpStatus = a} :: SearchDevicesResponse)
+
+-- | An array of @DeviceSummary@ objects for devices that match the specified
+-- filter values.
+searchDevicesResponse_devices :: Lens.Lens' SearchDevicesResponse [DeviceSummary]
+searchDevicesResponse_devices = Lens.lens (\SearchDevicesResponse' {devices} -> devices) (\s@SearchDevicesResponse' {} a -> s {devices = a} :: SearchDevicesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData SearchDevicesResponse where
+  rnf SearchDevicesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf devices
diff --git a/gen/Amazonka/Braket/SearchJobs.hs b/gen/Amazonka/Braket/SearchJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/SearchJobs.hs
@@ -0,0 +1,237 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.SearchJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Searches for Amazon Braket jobs that match the specified filter values.
+--
+-- This operation returns paginated results.
+module Amazonka.Braket.SearchJobs
+  ( -- * Creating a Request
+    SearchJobs (..),
+    newSearchJobs,
+
+    -- * Request Lenses
+    searchJobs_maxResults,
+    searchJobs_nextToken,
+    searchJobs_filters,
+
+    -- * Destructuring the Response
+    SearchJobsResponse (..),
+    newSearchJobsResponse,
+
+    -- * Response Lenses
+    searchJobsResponse_nextToken,
+    searchJobsResponse_httpStatus,
+    searchJobsResponse_jobs,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearchJobs' smart constructor.
+data SearchJobs = SearchJobs'
+  { -- | The maximum number of results to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A token used for pagination of results returned in the response. Use the
+    -- token returned from the previous request to continue results where the
+    -- previous request ended.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The filter values to use when searching for a job.
+    filters :: [SearchJobsFilter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchJobs' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchJobs_maxResults' - The maximum number of results to return in the response.
+--
+-- 'nextToken', 'searchJobs_nextToken' - A token used for pagination of results returned in the response. Use the
+-- token returned from the previous request to continue results where the
+-- previous request ended.
+--
+-- 'filters', 'searchJobs_filters' - The filter values to use when searching for a job.
+newSearchJobs ::
+  SearchJobs
+newSearchJobs =
+  SearchJobs'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      filters = Prelude.mempty
+    }
+
+-- | The maximum number of results to return in the response.
+searchJobs_maxResults :: Lens.Lens' SearchJobs (Prelude.Maybe Prelude.Natural)
+searchJobs_maxResults = Lens.lens (\SearchJobs' {maxResults} -> maxResults) (\s@SearchJobs' {} a -> s {maxResults = a} :: SearchJobs)
+
+-- | A token used for pagination of results returned in the response. Use the
+-- token returned from the previous request to continue results where the
+-- previous request ended.
+searchJobs_nextToken :: Lens.Lens' SearchJobs (Prelude.Maybe Prelude.Text)
+searchJobs_nextToken = Lens.lens (\SearchJobs' {nextToken} -> nextToken) (\s@SearchJobs' {} a -> s {nextToken = a} :: SearchJobs)
+
+-- | The filter values to use when searching for a job.
+searchJobs_filters :: Lens.Lens' SearchJobs [SearchJobsFilter]
+searchJobs_filters = Lens.lens (\SearchJobs' {filters} -> filters) (\s@SearchJobs' {} a -> s {filters = a} :: SearchJobs) Prelude.. Lens.coerced
+
+instance Core.AWSPager SearchJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? searchJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop (rs Lens.^. searchJobsResponse_jobs) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& searchJobs_nextToken
+          Lens..~ rs
+          Lens.^? searchJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest SearchJobs where
+  type AWSResponse SearchJobs = SearchJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchJobsResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "jobs" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable SearchJobs where
+  hashWithSalt _salt SearchJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData SearchJobs where
+  rnf SearchJobs' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf filters
+
+instance Data.ToHeaders SearchJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SearchJobs where
+  toJSON SearchJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("filters" Data..= filters)
+          ]
+      )
+
+instance Data.ToPath SearchJobs where
+  toPath = Prelude.const "/jobs"
+
+instance Data.ToQuery SearchJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchJobsResponse' smart constructor.
+data SearchJobsResponse = SearchJobsResponse'
+  { -- | A token used for pagination of results, or @null@ if there are no
+    -- additional results. Use the token value in a subsequent request to
+    -- continue results where the previous request ended.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @JobSummary@ objects for devices that match the specified
+    -- filter values.
+    jobs :: [JobSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchJobsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchJobsResponse_nextToken' - A token used for pagination of results, or @null@ if there are no
+-- additional results. Use the token value in a subsequent request to
+-- continue results where the previous request ended.
+--
+-- 'httpStatus', 'searchJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'jobs', 'searchJobsResponse_jobs' - An array of @JobSummary@ objects for devices that match the specified
+-- filter values.
+newSearchJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SearchJobsResponse
+newSearchJobsResponse pHttpStatus_ =
+  SearchJobsResponse'
+    { nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      jobs = Prelude.mempty
+    }
+
+-- | A token used for pagination of results, or @null@ if there are no
+-- additional results. Use the token value in a subsequent request to
+-- continue results where the previous request ended.
+searchJobsResponse_nextToken :: Lens.Lens' SearchJobsResponse (Prelude.Maybe Prelude.Text)
+searchJobsResponse_nextToken = Lens.lens (\SearchJobsResponse' {nextToken} -> nextToken) (\s@SearchJobsResponse' {} a -> s {nextToken = a} :: SearchJobsResponse)
+
+-- | The response's http status code.
+searchJobsResponse_httpStatus :: Lens.Lens' SearchJobsResponse Prelude.Int
+searchJobsResponse_httpStatus = Lens.lens (\SearchJobsResponse' {httpStatus} -> httpStatus) (\s@SearchJobsResponse' {} a -> s {httpStatus = a} :: SearchJobsResponse)
+
+-- | An array of @JobSummary@ objects for devices that match the specified
+-- filter values.
+searchJobsResponse_jobs :: Lens.Lens' SearchJobsResponse [JobSummary]
+searchJobsResponse_jobs = Lens.lens (\SearchJobsResponse' {jobs} -> jobs) (\s@SearchJobsResponse' {} a -> s {jobs = a} :: SearchJobsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData SearchJobsResponse where
+  rnf SearchJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobs
diff --git a/gen/Amazonka/Braket/SearchQuantumTasks.hs b/gen/Amazonka/Braket/SearchQuantumTasks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/SearchQuantumTasks.hs
@@ -0,0 +1,241 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.SearchQuantumTasks
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Searches for tasks that match the specified filter values.
+--
+-- This operation returns paginated results.
+module Amazonka.Braket.SearchQuantumTasks
+  ( -- * Creating a Request
+    SearchQuantumTasks (..),
+    newSearchQuantumTasks,
+
+    -- * Request Lenses
+    searchQuantumTasks_maxResults,
+    searchQuantumTasks_nextToken,
+    searchQuantumTasks_filters,
+
+    -- * Destructuring the Response
+    SearchQuantumTasksResponse (..),
+    newSearchQuantumTasksResponse,
+
+    -- * Response Lenses
+    searchQuantumTasksResponse_nextToken,
+    searchQuantumTasksResponse_httpStatus,
+    searchQuantumTasksResponse_quantumTasks,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newSearchQuantumTasks' smart constructor.
+data SearchQuantumTasks = SearchQuantumTasks'
+  { -- | Maximum number of results to return in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A token used for pagination of results returned in the response. Use the
+    -- token returned from the previous request continue results where the
+    -- previous request ended.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Array of @SearchQuantumTasksFilter@ objects.
+    filters :: [SearchQuantumTasksFilter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchQuantumTasks' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchQuantumTasks_maxResults' - Maximum number of results to return in the response.
+--
+-- 'nextToken', 'searchQuantumTasks_nextToken' - A token used for pagination of results returned in the response. Use the
+-- token returned from the previous request continue results where the
+-- previous request ended.
+--
+-- 'filters', 'searchQuantumTasks_filters' - Array of @SearchQuantumTasksFilter@ objects.
+newSearchQuantumTasks ::
+  SearchQuantumTasks
+newSearchQuantumTasks =
+  SearchQuantumTasks'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      filters = Prelude.mempty
+    }
+
+-- | Maximum number of results to return in the response.
+searchQuantumTasks_maxResults :: Lens.Lens' SearchQuantumTasks (Prelude.Maybe Prelude.Natural)
+searchQuantumTasks_maxResults = Lens.lens (\SearchQuantumTasks' {maxResults} -> maxResults) (\s@SearchQuantumTasks' {} a -> s {maxResults = a} :: SearchQuantumTasks)
+
+-- | A token used for pagination of results returned in the response. Use the
+-- token returned from the previous request continue results where the
+-- previous request ended.
+searchQuantumTasks_nextToken :: Lens.Lens' SearchQuantumTasks (Prelude.Maybe Prelude.Text)
+searchQuantumTasks_nextToken = Lens.lens (\SearchQuantumTasks' {nextToken} -> nextToken) (\s@SearchQuantumTasks' {} a -> s {nextToken = a} :: SearchQuantumTasks)
+
+-- | Array of @SearchQuantumTasksFilter@ objects.
+searchQuantumTasks_filters :: Lens.Lens' SearchQuantumTasks [SearchQuantumTasksFilter]
+searchQuantumTasks_filters = Lens.lens (\SearchQuantumTasks' {filters} -> filters) (\s@SearchQuantumTasks' {} a -> s {filters = a} :: SearchQuantumTasks) Prelude.. Lens.coerced
+
+instance Core.AWSPager SearchQuantumTasks where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? searchQuantumTasksResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        (rs Lens.^. searchQuantumTasksResponse_quantumTasks) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& searchQuantumTasks_nextToken
+          Lens..~ rs
+          Lens.^? searchQuantumTasksResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest SearchQuantumTasks where
+  type
+    AWSResponse SearchQuantumTasks =
+      SearchQuantumTasksResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchQuantumTasksResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "quantumTasks" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable SearchQuantumTasks where
+  hashWithSalt _salt SearchQuantumTasks' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData SearchQuantumTasks where
+  rnf SearchQuantumTasks' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf filters
+
+instance Data.ToHeaders SearchQuantumTasks where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SearchQuantumTasks where
+  toJSON SearchQuantumTasks' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("filters" Data..= filters)
+          ]
+      )
+
+instance Data.ToPath SearchQuantumTasks where
+  toPath = Prelude.const "/quantum-tasks"
+
+instance Data.ToQuery SearchQuantumTasks where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSearchQuantumTasksResponse' smart constructor.
+data SearchQuantumTasksResponse = SearchQuantumTasksResponse'
+  { -- | A token used for pagination of results, or null if there are no
+    -- additional results. Use the token value in a subsequent request to
+    -- continue results where the previous request ended.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | An array of @QuantumTaskSummary@ objects for tasks that match the
+    -- specified filters.
+    quantumTasks :: [QuantumTaskSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchQuantumTasksResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchQuantumTasksResponse_nextToken' - A token used for pagination of results, or null if there are no
+-- additional results. Use the token value in a subsequent request to
+-- continue results where the previous request ended.
+--
+-- 'httpStatus', 'searchQuantumTasksResponse_httpStatus' - The response's http status code.
+--
+-- 'quantumTasks', 'searchQuantumTasksResponse_quantumTasks' - An array of @QuantumTaskSummary@ objects for tasks that match the
+-- specified filters.
+newSearchQuantumTasksResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SearchQuantumTasksResponse
+newSearchQuantumTasksResponse pHttpStatus_ =
+  SearchQuantumTasksResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      quantumTasks = Prelude.mempty
+    }
+
+-- | A token used for pagination of results, or null if there are no
+-- additional results. Use the token value in a subsequent request to
+-- continue results where the previous request ended.
+searchQuantumTasksResponse_nextToken :: Lens.Lens' SearchQuantumTasksResponse (Prelude.Maybe Prelude.Text)
+searchQuantumTasksResponse_nextToken = Lens.lens (\SearchQuantumTasksResponse' {nextToken} -> nextToken) (\s@SearchQuantumTasksResponse' {} a -> s {nextToken = a} :: SearchQuantumTasksResponse)
+
+-- | The response's http status code.
+searchQuantumTasksResponse_httpStatus :: Lens.Lens' SearchQuantumTasksResponse Prelude.Int
+searchQuantumTasksResponse_httpStatus = Lens.lens (\SearchQuantumTasksResponse' {httpStatus} -> httpStatus) (\s@SearchQuantumTasksResponse' {} a -> s {httpStatus = a} :: SearchQuantumTasksResponse)
+
+-- | An array of @QuantumTaskSummary@ objects for tasks that match the
+-- specified filters.
+searchQuantumTasksResponse_quantumTasks :: Lens.Lens' SearchQuantumTasksResponse [QuantumTaskSummary]
+searchQuantumTasksResponse_quantumTasks = Lens.lens (\SearchQuantumTasksResponse' {quantumTasks} -> quantumTasks) (\s@SearchQuantumTasksResponse' {} a -> s {quantumTasks = a} :: SearchQuantumTasksResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData SearchQuantumTasksResponse where
+  rnf SearchQuantumTasksResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf quantumTasks
diff --git a/gen/Amazonka/Braket/TagResource.hs b/gen/Amazonka/Braket/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/TagResource.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.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)
+--
+-- Add a tag to the specified resource.
+module Amazonka.Braket.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | Specify the @resourceArn@ of the resource to which a tag will be added.
+    resourceArn :: Prelude.Text,
+    -- | Specify the tags to add to the resource.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - Specify the @resourceArn@ of the resource to which a tag will be added.
+--
+-- 'tags', 'tagResource_tags' - Specify the tags to add to the resource.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | Specify the @resourceArn@ of the resource to which a tag will be added.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | Specify the tags to add to the resource.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.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
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Braket/Types.hs b/gen/Amazonka/Braket/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types.hs
@@ -0,0 +1,362 @@
+{-# 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.Braket.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.Braket.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _DeviceOfflineException,
+    _DeviceRetiredException,
+    _InternalServiceException,
+    _ResourceNotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * CancellationStatus
+    CancellationStatus (..),
+
+    -- * CompressionType
+    CompressionType (..),
+
+    -- * DeviceStatus
+    DeviceStatus (..),
+
+    -- * DeviceType
+    DeviceType (..),
+
+    -- * InstanceType
+    InstanceType (..),
+
+    -- * JobEventType
+    JobEventType (..),
+
+    -- * JobPrimaryStatus
+    JobPrimaryStatus (..),
+
+    -- * QuantumTaskStatus
+    QuantumTaskStatus (..),
+
+    -- * SearchJobsFilterOperator
+    SearchJobsFilterOperator (..),
+
+    -- * SearchQuantumTasksFilterOperator
+    SearchQuantumTasksFilterOperator (..),
+
+    -- * AlgorithmSpecification
+    AlgorithmSpecification (..),
+    newAlgorithmSpecification,
+    algorithmSpecification_containerImage,
+    algorithmSpecification_scriptModeConfig,
+
+    -- * ContainerImage
+    ContainerImage (..),
+    newContainerImage,
+    containerImage_uri,
+
+    -- * DataSource
+    DataSource (..),
+    newDataSource,
+    dataSource_s3DataSource,
+
+    -- * DeviceConfig
+    DeviceConfig (..),
+    newDeviceConfig,
+    deviceConfig_device,
+
+    -- * DeviceSummary
+    DeviceSummary (..),
+    newDeviceSummary,
+    deviceSummary_deviceArn,
+    deviceSummary_deviceName,
+    deviceSummary_deviceStatus,
+    deviceSummary_deviceType,
+    deviceSummary_providerName,
+
+    -- * InputFileConfig
+    InputFileConfig (..),
+    newInputFileConfig,
+    inputFileConfig_contentType,
+    inputFileConfig_channelName,
+    inputFileConfig_dataSource,
+
+    -- * InstanceConfig
+    InstanceConfig (..),
+    newInstanceConfig,
+    instanceConfig_instanceCount,
+    instanceConfig_instanceType,
+    instanceConfig_volumeSizeInGb,
+
+    -- * JobCheckpointConfig
+    JobCheckpointConfig (..),
+    newJobCheckpointConfig,
+    jobCheckpointConfig_localPath,
+    jobCheckpointConfig_s3Uri,
+
+    -- * JobEventDetails
+    JobEventDetails (..),
+    newJobEventDetails,
+    jobEventDetails_eventType,
+    jobEventDetails_message,
+    jobEventDetails_timeOfEvent,
+
+    -- * JobOutputDataConfig
+    JobOutputDataConfig (..),
+    newJobOutputDataConfig,
+    jobOutputDataConfig_kmsKeyId,
+    jobOutputDataConfig_s3Path,
+
+    -- * JobStoppingCondition
+    JobStoppingCondition (..),
+    newJobStoppingCondition,
+    jobStoppingCondition_maxRuntimeInSeconds,
+
+    -- * JobSummary
+    JobSummary (..),
+    newJobSummary,
+    jobSummary_endedAt,
+    jobSummary_startedAt,
+    jobSummary_tags,
+    jobSummary_createdAt,
+    jobSummary_device,
+    jobSummary_jobArn,
+    jobSummary_jobName,
+    jobSummary_status,
+
+    -- * QuantumTaskSummary
+    QuantumTaskSummary (..),
+    newQuantumTaskSummary,
+    quantumTaskSummary_endedAt,
+    quantumTaskSummary_tags,
+    quantumTaskSummary_createdAt,
+    quantumTaskSummary_deviceArn,
+    quantumTaskSummary_outputS3Bucket,
+    quantumTaskSummary_outputS3Directory,
+    quantumTaskSummary_quantumTaskArn,
+    quantumTaskSummary_shots,
+    quantumTaskSummary_status,
+
+    -- * S3DataSource
+    S3DataSource (..),
+    newS3DataSource,
+    s3DataSource_s3Uri,
+
+    -- * ScriptModeConfig
+    ScriptModeConfig (..),
+    newScriptModeConfig,
+    scriptModeConfig_compressionType,
+    scriptModeConfig_entryPoint,
+    scriptModeConfig_s3Uri,
+
+    -- * SearchDevicesFilter
+    SearchDevicesFilter (..),
+    newSearchDevicesFilter,
+    searchDevicesFilter_name,
+    searchDevicesFilter_values,
+
+    -- * SearchJobsFilter
+    SearchJobsFilter (..),
+    newSearchJobsFilter,
+    searchJobsFilter_name,
+    searchJobsFilter_operator,
+    searchJobsFilter_values,
+
+    -- * SearchQuantumTasksFilter
+    SearchQuantumTasksFilter (..),
+    newSearchQuantumTasksFilter,
+    searchQuantumTasksFilter_name,
+    searchQuantumTasksFilter_operator,
+    searchQuantumTasksFilter_values,
+  )
+where
+
+import Amazonka.Braket.Types.AlgorithmSpecification
+import Amazonka.Braket.Types.CancellationStatus
+import Amazonka.Braket.Types.CompressionType
+import Amazonka.Braket.Types.ContainerImage
+import Amazonka.Braket.Types.DataSource
+import Amazonka.Braket.Types.DeviceConfig
+import Amazonka.Braket.Types.DeviceStatus
+import Amazonka.Braket.Types.DeviceSummary
+import Amazonka.Braket.Types.DeviceType
+import Amazonka.Braket.Types.InputFileConfig
+import Amazonka.Braket.Types.InstanceConfig
+import Amazonka.Braket.Types.InstanceType
+import Amazonka.Braket.Types.JobCheckpointConfig
+import Amazonka.Braket.Types.JobEventDetails
+import Amazonka.Braket.Types.JobEventType
+import Amazonka.Braket.Types.JobOutputDataConfig
+import Amazonka.Braket.Types.JobPrimaryStatus
+import Amazonka.Braket.Types.JobStoppingCondition
+import Amazonka.Braket.Types.JobSummary
+import Amazonka.Braket.Types.QuantumTaskStatus
+import Amazonka.Braket.Types.QuantumTaskSummary
+import Amazonka.Braket.Types.S3DataSource
+import Amazonka.Braket.Types.ScriptModeConfig
+import Amazonka.Braket.Types.SearchDevicesFilter
+import Amazonka.Braket.Types.SearchJobsFilter
+import Amazonka.Braket.Types.SearchJobsFilterOperator
+import Amazonka.Braket.Types.SearchQuantumTasksFilter
+import Amazonka.Braket.Types.SearchQuantumTasksFilterOperator
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2019-09-01@ of the Amazon Braket SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "Braket",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "braket",
+      Core.signingName = "braket",
+      Core.version = "2019-09-01",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "Braket",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | You do not have sufficient access to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | An error occurred due to a conflict.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | The specified device is currently offline.
+_DeviceOfflineException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DeviceOfflineException =
+  Core._MatchServiceError
+    defaultService
+    "DeviceOfflineException"
+    Prelude.. Core.hasStatus 424
+
+-- | The specified device has been retired.
+_DeviceRetiredException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DeviceRetiredException =
+  Core._MatchServiceError
+    defaultService
+    "DeviceRetiredException"
+    Prelude.. Core.hasStatus 410
+
+-- | The request processing has failed because of an unknown error,
+-- exception, or failure.
+_InternalServiceException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServiceException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServiceException"
+    Prelude.. Core.hasStatus 500
+
+-- | The specified resource was not found.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The request failed because a service quota is exceeded.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | The throttling rate limit is met.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | The input fails to satisfy the constraints specified by an AWS service.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/Braket/Types/AlgorithmSpecification.hs b/gen/Amazonka/Braket/Types/AlgorithmSpecification.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/AlgorithmSpecification.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.AlgorithmSpecification
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.AlgorithmSpecification where
+
+import Amazonka.Braket.Types.ContainerImage
+import Amazonka.Braket.Types.ScriptModeConfig
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Defines the Amazon Braket job to be created. Specifies the container
+-- image the job uses and the paths to the Python scripts used for entry
+-- and training.
+--
+-- /See:/ 'newAlgorithmSpecification' smart constructor.
+data AlgorithmSpecification = AlgorithmSpecification'
+  { -- | The container image used to create an Amazon Braket job.
+    containerImage :: Prelude.Maybe ContainerImage,
+    -- | Configures the paths to the Python scripts used for entry and training.
+    scriptModeConfig :: Prelude.Maybe ScriptModeConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AlgorithmSpecification' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'containerImage', 'algorithmSpecification_containerImage' - The container image used to create an Amazon Braket job.
+--
+-- 'scriptModeConfig', 'algorithmSpecification_scriptModeConfig' - Configures the paths to the Python scripts used for entry and training.
+newAlgorithmSpecification ::
+  AlgorithmSpecification
+newAlgorithmSpecification =
+  AlgorithmSpecification'
+    { containerImage =
+        Prelude.Nothing,
+      scriptModeConfig = Prelude.Nothing
+    }
+
+-- | The container image used to create an Amazon Braket job.
+algorithmSpecification_containerImage :: Lens.Lens' AlgorithmSpecification (Prelude.Maybe ContainerImage)
+algorithmSpecification_containerImage = Lens.lens (\AlgorithmSpecification' {containerImage} -> containerImage) (\s@AlgorithmSpecification' {} a -> s {containerImage = a} :: AlgorithmSpecification)
+
+-- | Configures the paths to the Python scripts used for entry and training.
+algorithmSpecification_scriptModeConfig :: Lens.Lens' AlgorithmSpecification (Prelude.Maybe ScriptModeConfig)
+algorithmSpecification_scriptModeConfig = Lens.lens (\AlgorithmSpecification' {scriptModeConfig} -> scriptModeConfig) (\s@AlgorithmSpecification' {} a -> s {scriptModeConfig = a} :: AlgorithmSpecification)
+
+instance Data.FromJSON AlgorithmSpecification where
+  parseJSON =
+    Data.withObject
+      "AlgorithmSpecification"
+      ( \x ->
+          AlgorithmSpecification'
+            Prelude.<$> (x Data..:? "containerImage")
+            Prelude.<*> (x Data..:? "scriptModeConfig")
+      )
+
+instance Prelude.Hashable AlgorithmSpecification where
+  hashWithSalt _salt AlgorithmSpecification' {..} =
+    _salt
+      `Prelude.hashWithSalt` containerImage
+      `Prelude.hashWithSalt` scriptModeConfig
+
+instance Prelude.NFData AlgorithmSpecification where
+  rnf AlgorithmSpecification' {..} =
+    Prelude.rnf containerImage
+      `Prelude.seq` Prelude.rnf scriptModeConfig
+
+instance Data.ToJSON AlgorithmSpecification where
+  toJSON AlgorithmSpecification' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("containerImage" Data..=)
+              Prelude.<$> containerImage,
+            ("scriptModeConfig" Data..=)
+              Prelude.<$> scriptModeConfig
+          ]
+      )
diff --git a/gen/Amazonka/Braket/Types/CancellationStatus.hs b/gen/Amazonka/Braket/Types/CancellationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/CancellationStatus.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.Braket.Types.CancellationStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.CancellationStatus
+  ( CancellationStatus
+      ( ..,
+        CancellationStatus_CANCELLED,
+        CancellationStatus_CANCELLING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CancellationStatus = CancellationStatus'
+  { fromCancellationStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CancellationStatus_CANCELLED :: CancellationStatus
+pattern CancellationStatus_CANCELLED = CancellationStatus' "CANCELLED"
+
+pattern CancellationStatus_CANCELLING :: CancellationStatus
+pattern CancellationStatus_CANCELLING = CancellationStatus' "CANCELLING"
+
+{-# COMPLETE
+  CancellationStatus_CANCELLED,
+  CancellationStatus_CANCELLING,
+  CancellationStatus'
+  #-}
diff --git a/gen/Amazonka/Braket/Types/CompressionType.hs b/gen/Amazonka/Braket/Types/CompressionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/CompressionType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.CompressionType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.CompressionType
+  ( CompressionType
+      ( ..,
+        CompressionType_GZIP,
+        CompressionType_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CompressionType = CompressionType'
+  { fromCompressionType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CompressionType_GZIP :: CompressionType
+pattern CompressionType_GZIP = CompressionType' "GZIP"
+
+pattern CompressionType_NONE :: CompressionType
+pattern CompressionType_NONE = CompressionType' "NONE"
+
+{-# COMPLETE
+  CompressionType_GZIP,
+  CompressionType_NONE,
+  CompressionType'
+  #-}
diff --git a/gen/Amazonka/Braket/Types/ContainerImage.hs b/gen/Amazonka/Braket/Types/ContainerImage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/ContainerImage.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.ContainerImage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.ContainerImage where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The container image used to create an Amazon Braket job.
+--
+-- /See:/ 'newContainerImage' smart constructor.
+data ContainerImage = ContainerImage'
+  { -- | The URI locating the container image.
+    uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContainerImage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'uri', 'containerImage_uri' - The URI locating the container image.
+newContainerImage ::
+  -- | 'uri'
+  Prelude.Text ->
+  ContainerImage
+newContainerImage pUri_ =
+  ContainerImage' {uri = pUri_}
+
+-- | The URI locating the container image.
+containerImage_uri :: Lens.Lens' ContainerImage Prelude.Text
+containerImage_uri = Lens.lens (\ContainerImage' {uri} -> uri) (\s@ContainerImage' {} a -> s {uri = a} :: ContainerImage)
+
+instance Data.FromJSON ContainerImage where
+  parseJSON =
+    Data.withObject
+      "ContainerImage"
+      ( \x ->
+          ContainerImage' Prelude.<$> (x Data..: "uri")
+      )
+
+instance Prelude.Hashable ContainerImage where
+  hashWithSalt _salt ContainerImage' {..} =
+    _salt `Prelude.hashWithSalt` uri
+
+instance Prelude.NFData ContainerImage where
+  rnf ContainerImage' {..} = Prelude.rnf uri
+
+instance Data.ToJSON ContainerImage where
+  toJSON ContainerImage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("uri" Data..= uri)]
+      )
diff --git a/gen/Amazonka/Braket/Types/DataSource.hs b/gen/Amazonka/Braket/Types/DataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/DataSource.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.Braket.Types.DataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.DataSource where
+
+import Amazonka.Braket.Types.S3DataSource
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the source of the data used by the Amazon Braket job.
+--
+-- /See:/ 'newDataSource' smart constructor.
+data DataSource = DataSource'
+  { -- | Information about the data stored in Amazon S3 used by the Amazon Braket
+    -- job.
+    s3DataSource :: S3DataSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 's3DataSource', 'dataSource_s3DataSource' - Information about the data stored in Amazon S3 used by the Amazon Braket
+-- job.
+newDataSource ::
+  -- | 's3DataSource'
+  S3DataSource ->
+  DataSource
+newDataSource pS3DataSource_ =
+  DataSource' {s3DataSource = pS3DataSource_}
+
+-- | Information about the data stored in Amazon S3 used by the Amazon Braket
+-- job.
+dataSource_s3DataSource :: Lens.Lens' DataSource S3DataSource
+dataSource_s3DataSource = Lens.lens (\DataSource' {s3DataSource} -> s3DataSource) (\s@DataSource' {} a -> s {s3DataSource = a} :: DataSource)
+
+instance Data.FromJSON DataSource where
+  parseJSON =
+    Data.withObject
+      "DataSource"
+      ( \x ->
+          DataSource' Prelude.<$> (x Data..: "s3DataSource")
+      )
+
+instance Prelude.Hashable DataSource where
+  hashWithSalt _salt DataSource' {..} =
+    _salt `Prelude.hashWithSalt` s3DataSource
+
+instance Prelude.NFData DataSource where
+  rnf DataSource' {..} = Prelude.rnf s3DataSource
+
+instance Data.ToJSON DataSource where
+  toJSON DataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("s3DataSource" Data..= s3DataSource)]
+      )
diff --git a/gen/Amazonka/Braket/Types/DeviceConfig.hs b/gen/Amazonka/Braket/Types/DeviceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/DeviceConfig.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.Braket.Types.DeviceConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.DeviceConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Configures the quantum processing units (QPUs) or simulator used to
+-- create and run an Amazon Braket job.
+--
+-- /See:/ 'newDeviceConfig' smart constructor.
+data DeviceConfig = DeviceConfig'
+  { -- | The primary quantum processing unit (QPU) or simulator used to create
+    -- and run an Amazon Braket job.
+    device :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeviceConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'device', 'deviceConfig_device' - The primary quantum processing unit (QPU) or simulator used to create
+-- and run an Amazon Braket job.
+newDeviceConfig ::
+  -- | 'device'
+  Prelude.Text ->
+  DeviceConfig
+newDeviceConfig pDevice_ =
+  DeviceConfig' {device = pDevice_}
+
+-- | The primary quantum processing unit (QPU) or simulator used to create
+-- and run an Amazon Braket job.
+deviceConfig_device :: Lens.Lens' DeviceConfig Prelude.Text
+deviceConfig_device = Lens.lens (\DeviceConfig' {device} -> device) (\s@DeviceConfig' {} a -> s {device = a} :: DeviceConfig)
+
+instance Data.FromJSON DeviceConfig where
+  parseJSON =
+    Data.withObject
+      "DeviceConfig"
+      ( \x ->
+          DeviceConfig' Prelude.<$> (x Data..: "device")
+      )
+
+instance Prelude.Hashable DeviceConfig where
+  hashWithSalt _salt DeviceConfig' {..} =
+    _salt `Prelude.hashWithSalt` device
+
+instance Prelude.NFData DeviceConfig where
+  rnf DeviceConfig' {..} = Prelude.rnf device
+
+instance Data.ToJSON DeviceConfig where
+  toJSON DeviceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("device" Data..= device)]
+      )
diff --git a/gen/Amazonka/Braket/Types/DeviceStatus.hs b/gen/Amazonka/Braket/Types/DeviceStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/DeviceStatus.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.Braket.Types.DeviceStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.DeviceStatus
+  ( DeviceStatus
+      ( ..,
+        DeviceStatus_OFFLINE,
+        DeviceStatus_ONLINE,
+        DeviceStatus_RETIRED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DeviceStatus = DeviceStatus'
+  { fromDeviceStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DeviceStatus_OFFLINE :: DeviceStatus
+pattern DeviceStatus_OFFLINE = DeviceStatus' "OFFLINE"
+
+pattern DeviceStatus_ONLINE :: DeviceStatus
+pattern DeviceStatus_ONLINE = DeviceStatus' "ONLINE"
+
+pattern DeviceStatus_RETIRED :: DeviceStatus
+pattern DeviceStatus_RETIRED = DeviceStatus' "RETIRED"
+
+{-# COMPLETE
+  DeviceStatus_OFFLINE,
+  DeviceStatus_ONLINE,
+  DeviceStatus_RETIRED,
+  DeviceStatus'
+  #-}
diff --git a/gen/Amazonka/Braket/Types/DeviceSummary.hs b/gen/Amazonka/Braket/Types/DeviceSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/DeviceSummary.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.DeviceSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.DeviceSummary where
+
+import Amazonka.Braket.Types.DeviceStatus
+import Amazonka.Braket.Types.DeviceType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Includes information about the device.
+--
+-- /See:/ 'newDeviceSummary' smart constructor.
+data DeviceSummary = DeviceSummary'
+  { -- | The ARN of the device.
+    deviceArn :: Prelude.Text,
+    -- | The name of the device.
+    deviceName :: Prelude.Text,
+    -- | The status of the device.
+    deviceStatus :: DeviceStatus,
+    -- | The type of the device.
+    deviceType :: DeviceType,
+    -- | The provider of the device.
+    providerName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeviceSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceArn', 'deviceSummary_deviceArn' - The ARN of the device.
+--
+-- 'deviceName', 'deviceSummary_deviceName' - The name of the device.
+--
+-- 'deviceStatus', 'deviceSummary_deviceStatus' - The status of the device.
+--
+-- 'deviceType', 'deviceSummary_deviceType' - The type of the device.
+--
+-- 'providerName', 'deviceSummary_providerName' - The provider of the device.
+newDeviceSummary ::
+  -- | 'deviceArn'
+  Prelude.Text ->
+  -- | 'deviceName'
+  Prelude.Text ->
+  -- | 'deviceStatus'
+  DeviceStatus ->
+  -- | 'deviceType'
+  DeviceType ->
+  -- | 'providerName'
+  Prelude.Text ->
+  DeviceSummary
+newDeviceSummary
+  pDeviceArn_
+  pDeviceName_
+  pDeviceStatus_
+  pDeviceType_
+  pProviderName_ =
+    DeviceSummary'
+      { deviceArn = pDeviceArn_,
+        deviceName = pDeviceName_,
+        deviceStatus = pDeviceStatus_,
+        deviceType = pDeviceType_,
+        providerName = pProviderName_
+      }
+
+-- | The ARN of the device.
+deviceSummary_deviceArn :: Lens.Lens' DeviceSummary Prelude.Text
+deviceSummary_deviceArn = Lens.lens (\DeviceSummary' {deviceArn} -> deviceArn) (\s@DeviceSummary' {} a -> s {deviceArn = a} :: DeviceSummary)
+
+-- | The name of the device.
+deviceSummary_deviceName :: Lens.Lens' DeviceSummary Prelude.Text
+deviceSummary_deviceName = Lens.lens (\DeviceSummary' {deviceName} -> deviceName) (\s@DeviceSummary' {} a -> s {deviceName = a} :: DeviceSummary)
+
+-- | The status of the device.
+deviceSummary_deviceStatus :: Lens.Lens' DeviceSummary DeviceStatus
+deviceSummary_deviceStatus = Lens.lens (\DeviceSummary' {deviceStatus} -> deviceStatus) (\s@DeviceSummary' {} a -> s {deviceStatus = a} :: DeviceSummary)
+
+-- | The type of the device.
+deviceSummary_deviceType :: Lens.Lens' DeviceSummary DeviceType
+deviceSummary_deviceType = Lens.lens (\DeviceSummary' {deviceType} -> deviceType) (\s@DeviceSummary' {} a -> s {deviceType = a} :: DeviceSummary)
+
+-- | The provider of the device.
+deviceSummary_providerName :: Lens.Lens' DeviceSummary Prelude.Text
+deviceSummary_providerName = Lens.lens (\DeviceSummary' {providerName} -> providerName) (\s@DeviceSummary' {} a -> s {providerName = a} :: DeviceSummary)
+
+instance Data.FromJSON DeviceSummary where
+  parseJSON =
+    Data.withObject
+      "DeviceSummary"
+      ( \x ->
+          DeviceSummary'
+            Prelude.<$> (x Data..: "deviceArn")
+            Prelude.<*> (x Data..: "deviceName")
+            Prelude.<*> (x Data..: "deviceStatus")
+            Prelude.<*> (x Data..: "deviceType")
+            Prelude.<*> (x Data..: "providerName")
+      )
+
+instance Prelude.Hashable DeviceSummary where
+  hashWithSalt _salt DeviceSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceArn
+      `Prelude.hashWithSalt` deviceName
+      `Prelude.hashWithSalt` deviceStatus
+      `Prelude.hashWithSalt` deviceType
+      `Prelude.hashWithSalt` providerName
+
+instance Prelude.NFData DeviceSummary where
+  rnf DeviceSummary' {..} =
+    Prelude.rnf deviceArn
+      `Prelude.seq` Prelude.rnf deviceName
+      `Prelude.seq` Prelude.rnf deviceStatus
+      `Prelude.seq` Prelude.rnf deviceType
+      `Prelude.seq` Prelude.rnf providerName
diff --git a/gen/Amazonka/Braket/Types/DeviceType.hs b/gen/Amazonka/Braket/Types/DeviceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/DeviceType.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.Braket.Types.DeviceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.DeviceType
+  ( DeviceType
+      ( ..,
+        DeviceType_QPU,
+        DeviceType_SIMULATOR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DeviceType = DeviceType'
+  { fromDeviceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DeviceType_QPU :: DeviceType
+pattern DeviceType_QPU = DeviceType' "QPU"
+
+pattern DeviceType_SIMULATOR :: DeviceType
+pattern DeviceType_SIMULATOR = DeviceType' "SIMULATOR"
+
+{-# COMPLETE
+  DeviceType_QPU,
+  DeviceType_SIMULATOR,
+  DeviceType'
+  #-}
diff --git a/gen/Amazonka/Braket/Types/InputFileConfig.hs b/gen/Amazonka/Braket/Types/InputFileConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/InputFileConfig.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.InputFileConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.InputFileConfig where
+
+import Amazonka.Braket.Types.DataSource
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A list of parameters that specify the input channels, type of input
+-- data, and where it is located.
+--
+-- /See:/ 'newInputFileConfig' smart constructor.
+data InputFileConfig = InputFileConfig'
+  { -- | The MIME type of the data.
+    contentType :: Prelude.Maybe Prelude.Text,
+    -- | A named input source that an Amazon Braket job can consume.
+    channelName :: Prelude.Text,
+    -- | The location of the channel data.
+    dataSource :: DataSource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputFileConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'contentType', 'inputFileConfig_contentType' - The MIME type of the data.
+--
+-- 'channelName', 'inputFileConfig_channelName' - A named input source that an Amazon Braket job can consume.
+--
+-- 'dataSource', 'inputFileConfig_dataSource' - The location of the channel data.
+newInputFileConfig ::
+  -- | 'channelName'
+  Prelude.Text ->
+  -- | 'dataSource'
+  DataSource ->
+  InputFileConfig
+newInputFileConfig pChannelName_ pDataSource_ =
+  InputFileConfig'
+    { contentType = Prelude.Nothing,
+      channelName = pChannelName_,
+      dataSource = pDataSource_
+    }
+
+-- | The MIME type of the data.
+inputFileConfig_contentType :: Lens.Lens' InputFileConfig (Prelude.Maybe Prelude.Text)
+inputFileConfig_contentType = Lens.lens (\InputFileConfig' {contentType} -> contentType) (\s@InputFileConfig' {} a -> s {contentType = a} :: InputFileConfig)
+
+-- | A named input source that an Amazon Braket job can consume.
+inputFileConfig_channelName :: Lens.Lens' InputFileConfig Prelude.Text
+inputFileConfig_channelName = Lens.lens (\InputFileConfig' {channelName} -> channelName) (\s@InputFileConfig' {} a -> s {channelName = a} :: InputFileConfig)
+
+-- | The location of the channel data.
+inputFileConfig_dataSource :: Lens.Lens' InputFileConfig DataSource
+inputFileConfig_dataSource = Lens.lens (\InputFileConfig' {dataSource} -> dataSource) (\s@InputFileConfig' {} a -> s {dataSource = a} :: InputFileConfig)
+
+instance Data.FromJSON InputFileConfig where
+  parseJSON =
+    Data.withObject
+      "InputFileConfig"
+      ( \x ->
+          InputFileConfig'
+            Prelude.<$> (x Data..:? "contentType")
+            Prelude.<*> (x Data..: "channelName")
+            Prelude.<*> (x Data..: "dataSource")
+      )
+
+instance Prelude.Hashable InputFileConfig where
+  hashWithSalt _salt InputFileConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` contentType
+      `Prelude.hashWithSalt` channelName
+      `Prelude.hashWithSalt` dataSource
+
+instance Prelude.NFData InputFileConfig where
+  rnf InputFileConfig' {..} =
+    Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf channelName
+      `Prelude.seq` Prelude.rnf dataSource
+
+instance Data.ToJSON InputFileConfig where
+  toJSON InputFileConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("contentType" Data..=) Prelude.<$> contentType,
+            Prelude.Just ("channelName" Data..= channelName),
+            Prelude.Just ("dataSource" Data..= dataSource)
+          ]
+      )
diff --git a/gen/Amazonka/Braket/Types/InstanceConfig.hs b/gen/Amazonka/Braket/Types/InstanceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/InstanceConfig.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.InstanceConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.InstanceConfig where
+
+import Amazonka.Braket.Types.InstanceType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Configures the resource instances to use while running the Amazon Braket
+-- hybrid job on Amazon Braket.
+--
+-- /See:/ 'newInstanceConfig' smart constructor.
+data InstanceConfig = InstanceConfig'
+  { -- | Configures the number of resource instances to use while running an
+    -- Amazon Braket job on Amazon Braket. The default value is 1.
+    instanceCount :: Prelude.Maybe Prelude.Natural,
+    -- | Configures the type resource instances to use while running an Amazon
+    -- Braket hybrid job.
+    instanceType :: InstanceType,
+    -- | The size of the storage volume, in GB, that user wants to provision.
+    volumeSizeInGb :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InstanceConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'instanceCount', 'instanceConfig_instanceCount' - Configures the number of resource instances to use while running an
+-- Amazon Braket job on Amazon Braket. The default value is 1.
+--
+-- 'instanceType', 'instanceConfig_instanceType' - Configures the type resource instances to use while running an Amazon
+-- Braket hybrid job.
+--
+-- 'volumeSizeInGb', 'instanceConfig_volumeSizeInGb' - The size of the storage volume, in GB, that user wants to provision.
+newInstanceConfig ::
+  -- | 'instanceType'
+  InstanceType ->
+  -- | 'volumeSizeInGb'
+  Prelude.Natural ->
+  InstanceConfig
+newInstanceConfig pInstanceType_ pVolumeSizeInGb_ =
+  InstanceConfig'
+    { instanceCount = Prelude.Nothing,
+      instanceType = pInstanceType_,
+      volumeSizeInGb = pVolumeSizeInGb_
+    }
+
+-- | Configures the number of resource instances to use while running an
+-- Amazon Braket job on Amazon Braket. The default value is 1.
+instanceConfig_instanceCount :: Lens.Lens' InstanceConfig (Prelude.Maybe Prelude.Natural)
+instanceConfig_instanceCount = Lens.lens (\InstanceConfig' {instanceCount} -> instanceCount) (\s@InstanceConfig' {} a -> s {instanceCount = a} :: InstanceConfig)
+
+-- | Configures the type resource instances to use while running an Amazon
+-- Braket hybrid job.
+instanceConfig_instanceType :: Lens.Lens' InstanceConfig InstanceType
+instanceConfig_instanceType = Lens.lens (\InstanceConfig' {instanceType} -> instanceType) (\s@InstanceConfig' {} a -> s {instanceType = a} :: InstanceConfig)
+
+-- | The size of the storage volume, in GB, that user wants to provision.
+instanceConfig_volumeSizeInGb :: Lens.Lens' InstanceConfig Prelude.Natural
+instanceConfig_volumeSizeInGb = Lens.lens (\InstanceConfig' {volumeSizeInGb} -> volumeSizeInGb) (\s@InstanceConfig' {} a -> s {volumeSizeInGb = a} :: InstanceConfig)
+
+instance Data.FromJSON InstanceConfig where
+  parseJSON =
+    Data.withObject
+      "InstanceConfig"
+      ( \x ->
+          InstanceConfig'
+            Prelude.<$> (x Data..:? "instanceCount")
+            Prelude.<*> (x Data..: "instanceType")
+            Prelude.<*> (x Data..: "volumeSizeInGb")
+      )
+
+instance Prelude.Hashable InstanceConfig where
+  hashWithSalt _salt InstanceConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` instanceCount
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` volumeSizeInGb
+
+instance Prelude.NFData InstanceConfig where
+  rnf InstanceConfig' {..} =
+    Prelude.rnf instanceCount
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf volumeSizeInGb
+
+instance Data.ToJSON InstanceConfig where
+  toJSON InstanceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("instanceCount" Data..=) Prelude.<$> instanceCount,
+            Prelude.Just ("instanceType" Data..= instanceType),
+            Prelude.Just
+              ("volumeSizeInGb" Data..= volumeSizeInGb)
+          ]
+      )
diff --git a/gen/Amazonka/Braket/Types/InstanceType.hs b/gen/Amazonka/Braket/Types/InstanceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/InstanceType.hs
@@ -0,0 +1,256 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.InstanceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.InstanceType
+  ( InstanceType
+      ( ..,
+        InstanceType_Ml_c4_2xlarge,
+        InstanceType_Ml_c4_4xlarge,
+        InstanceType_Ml_c4_8xlarge,
+        InstanceType_Ml_c4_xlarge,
+        InstanceType_Ml_c5_18xlarge,
+        InstanceType_Ml_c5_2xlarge,
+        InstanceType_Ml_c5_4xlarge,
+        InstanceType_Ml_c5_9xlarge,
+        InstanceType_Ml_c5_xlarge,
+        InstanceType_Ml_c5n_18xlarge,
+        InstanceType_Ml_c5n_2xlarge,
+        InstanceType_Ml_c5n_4xlarge,
+        InstanceType_Ml_c5n_9xlarge,
+        InstanceType_Ml_c5n_xlarge,
+        InstanceType_Ml_g4dn_12xlarge,
+        InstanceType_Ml_g4dn_16xlarge,
+        InstanceType_Ml_g4dn_2xlarge,
+        InstanceType_Ml_g4dn_4xlarge,
+        InstanceType_Ml_g4dn_8xlarge,
+        InstanceType_Ml_g4dn_xlarge,
+        InstanceType_Ml_m4_10xlarge,
+        InstanceType_Ml_m4_16xlarge,
+        InstanceType_Ml_m4_2xlarge,
+        InstanceType_Ml_m4_4xlarge,
+        InstanceType_Ml_m4_xlarge,
+        InstanceType_Ml_m5_12xlarge,
+        InstanceType_Ml_m5_24xlarge,
+        InstanceType_Ml_m5_2xlarge,
+        InstanceType_Ml_m5_4xlarge,
+        InstanceType_Ml_m5_large,
+        InstanceType_Ml_m5_xlarge,
+        InstanceType_Ml_p2_16xlarge,
+        InstanceType_Ml_p2_8xlarge,
+        InstanceType_Ml_p2_xlarge,
+        InstanceType_Ml_p3_16xlarge,
+        InstanceType_Ml_p3_2xlarge,
+        InstanceType_Ml_p3_8xlarge,
+        InstanceType_Ml_p3dn_24xlarge,
+        InstanceType_Ml_p4d_24xlarge
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InstanceType = InstanceType'
+  { fromInstanceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InstanceType_Ml_c4_2xlarge :: InstanceType
+pattern InstanceType_Ml_c4_2xlarge = InstanceType' "ml.c4.2xlarge"
+
+pattern InstanceType_Ml_c4_4xlarge :: InstanceType
+pattern InstanceType_Ml_c4_4xlarge = InstanceType' "ml.c4.4xlarge"
+
+pattern InstanceType_Ml_c4_8xlarge :: InstanceType
+pattern InstanceType_Ml_c4_8xlarge = InstanceType' "ml.c4.8xlarge"
+
+pattern InstanceType_Ml_c4_xlarge :: InstanceType
+pattern InstanceType_Ml_c4_xlarge = InstanceType' "ml.c4.xlarge"
+
+pattern InstanceType_Ml_c5_18xlarge :: InstanceType
+pattern InstanceType_Ml_c5_18xlarge = InstanceType' "ml.c5.18xlarge"
+
+pattern InstanceType_Ml_c5_2xlarge :: InstanceType
+pattern InstanceType_Ml_c5_2xlarge = InstanceType' "ml.c5.2xlarge"
+
+pattern InstanceType_Ml_c5_4xlarge :: InstanceType
+pattern InstanceType_Ml_c5_4xlarge = InstanceType' "ml.c5.4xlarge"
+
+pattern InstanceType_Ml_c5_9xlarge :: InstanceType
+pattern InstanceType_Ml_c5_9xlarge = InstanceType' "ml.c5.9xlarge"
+
+pattern InstanceType_Ml_c5_xlarge :: InstanceType
+pattern InstanceType_Ml_c5_xlarge = InstanceType' "ml.c5.xlarge"
+
+pattern InstanceType_Ml_c5n_18xlarge :: InstanceType
+pattern InstanceType_Ml_c5n_18xlarge = InstanceType' "ml.c5n.18xlarge"
+
+pattern InstanceType_Ml_c5n_2xlarge :: InstanceType
+pattern InstanceType_Ml_c5n_2xlarge = InstanceType' "ml.c5n.2xlarge"
+
+pattern InstanceType_Ml_c5n_4xlarge :: InstanceType
+pattern InstanceType_Ml_c5n_4xlarge = InstanceType' "ml.c5n.4xlarge"
+
+pattern InstanceType_Ml_c5n_9xlarge :: InstanceType
+pattern InstanceType_Ml_c5n_9xlarge = InstanceType' "ml.c5n.9xlarge"
+
+pattern InstanceType_Ml_c5n_xlarge :: InstanceType
+pattern InstanceType_Ml_c5n_xlarge = InstanceType' "ml.c5n.xlarge"
+
+pattern InstanceType_Ml_g4dn_12xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_12xlarge = InstanceType' "ml.g4dn.12xlarge"
+
+pattern InstanceType_Ml_g4dn_16xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_16xlarge = InstanceType' "ml.g4dn.16xlarge"
+
+pattern InstanceType_Ml_g4dn_2xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_2xlarge = InstanceType' "ml.g4dn.2xlarge"
+
+pattern InstanceType_Ml_g4dn_4xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_4xlarge = InstanceType' "ml.g4dn.4xlarge"
+
+pattern InstanceType_Ml_g4dn_8xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_8xlarge = InstanceType' "ml.g4dn.8xlarge"
+
+pattern InstanceType_Ml_g4dn_xlarge :: InstanceType
+pattern InstanceType_Ml_g4dn_xlarge = InstanceType' "ml.g4dn.xlarge"
+
+pattern InstanceType_Ml_m4_10xlarge :: InstanceType
+pattern InstanceType_Ml_m4_10xlarge = InstanceType' "ml.m4.10xlarge"
+
+pattern InstanceType_Ml_m4_16xlarge :: InstanceType
+pattern InstanceType_Ml_m4_16xlarge = InstanceType' "ml.m4.16xlarge"
+
+pattern InstanceType_Ml_m4_2xlarge :: InstanceType
+pattern InstanceType_Ml_m4_2xlarge = InstanceType' "ml.m4.2xlarge"
+
+pattern InstanceType_Ml_m4_4xlarge :: InstanceType
+pattern InstanceType_Ml_m4_4xlarge = InstanceType' "ml.m4.4xlarge"
+
+pattern InstanceType_Ml_m4_xlarge :: InstanceType
+pattern InstanceType_Ml_m4_xlarge = InstanceType' "ml.m4.xlarge"
+
+pattern InstanceType_Ml_m5_12xlarge :: InstanceType
+pattern InstanceType_Ml_m5_12xlarge = InstanceType' "ml.m5.12xlarge"
+
+pattern InstanceType_Ml_m5_24xlarge :: InstanceType
+pattern InstanceType_Ml_m5_24xlarge = InstanceType' "ml.m5.24xlarge"
+
+pattern InstanceType_Ml_m5_2xlarge :: InstanceType
+pattern InstanceType_Ml_m5_2xlarge = InstanceType' "ml.m5.2xlarge"
+
+pattern InstanceType_Ml_m5_4xlarge :: InstanceType
+pattern InstanceType_Ml_m5_4xlarge = InstanceType' "ml.m5.4xlarge"
+
+pattern InstanceType_Ml_m5_large :: InstanceType
+pattern InstanceType_Ml_m5_large = InstanceType' "ml.m5.large"
+
+pattern InstanceType_Ml_m5_xlarge :: InstanceType
+pattern InstanceType_Ml_m5_xlarge = InstanceType' "ml.m5.xlarge"
+
+pattern InstanceType_Ml_p2_16xlarge :: InstanceType
+pattern InstanceType_Ml_p2_16xlarge = InstanceType' "ml.p2.16xlarge"
+
+pattern InstanceType_Ml_p2_8xlarge :: InstanceType
+pattern InstanceType_Ml_p2_8xlarge = InstanceType' "ml.p2.8xlarge"
+
+pattern InstanceType_Ml_p2_xlarge :: InstanceType
+pattern InstanceType_Ml_p2_xlarge = InstanceType' "ml.p2.xlarge"
+
+pattern InstanceType_Ml_p3_16xlarge :: InstanceType
+pattern InstanceType_Ml_p3_16xlarge = InstanceType' "ml.p3.16xlarge"
+
+pattern InstanceType_Ml_p3_2xlarge :: InstanceType
+pattern InstanceType_Ml_p3_2xlarge = InstanceType' "ml.p3.2xlarge"
+
+pattern InstanceType_Ml_p3_8xlarge :: InstanceType
+pattern InstanceType_Ml_p3_8xlarge = InstanceType' "ml.p3.8xlarge"
+
+pattern InstanceType_Ml_p3dn_24xlarge :: InstanceType
+pattern InstanceType_Ml_p3dn_24xlarge = InstanceType' "ml.p3dn.24xlarge"
+
+pattern InstanceType_Ml_p4d_24xlarge :: InstanceType
+pattern InstanceType_Ml_p4d_24xlarge = InstanceType' "ml.p4d.24xlarge"
+
+{-# COMPLETE
+  InstanceType_Ml_c4_2xlarge,
+  InstanceType_Ml_c4_4xlarge,
+  InstanceType_Ml_c4_8xlarge,
+  InstanceType_Ml_c4_xlarge,
+  InstanceType_Ml_c5_18xlarge,
+  InstanceType_Ml_c5_2xlarge,
+  InstanceType_Ml_c5_4xlarge,
+  InstanceType_Ml_c5_9xlarge,
+  InstanceType_Ml_c5_xlarge,
+  InstanceType_Ml_c5n_18xlarge,
+  InstanceType_Ml_c5n_2xlarge,
+  InstanceType_Ml_c5n_4xlarge,
+  InstanceType_Ml_c5n_9xlarge,
+  InstanceType_Ml_c5n_xlarge,
+  InstanceType_Ml_g4dn_12xlarge,
+  InstanceType_Ml_g4dn_16xlarge,
+  InstanceType_Ml_g4dn_2xlarge,
+  InstanceType_Ml_g4dn_4xlarge,
+  InstanceType_Ml_g4dn_8xlarge,
+  InstanceType_Ml_g4dn_xlarge,
+  InstanceType_Ml_m4_10xlarge,
+  InstanceType_Ml_m4_16xlarge,
+  InstanceType_Ml_m4_2xlarge,
+  InstanceType_Ml_m4_4xlarge,
+  InstanceType_Ml_m4_xlarge,
+  InstanceType_Ml_m5_12xlarge,
+  InstanceType_Ml_m5_24xlarge,
+  InstanceType_Ml_m5_2xlarge,
+  InstanceType_Ml_m5_4xlarge,
+  InstanceType_Ml_m5_large,
+  InstanceType_Ml_m5_xlarge,
+  InstanceType_Ml_p2_16xlarge,
+  InstanceType_Ml_p2_8xlarge,
+  InstanceType_Ml_p2_xlarge,
+  InstanceType_Ml_p3_16xlarge,
+  InstanceType_Ml_p3_2xlarge,
+  InstanceType_Ml_p3_8xlarge,
+  InstanceType_Ml_p3dn_24xlarge,
+  InstanceType_Ml_p4d_24xlarge,
+  InstanceType'
+  #-}
diff --git a/gen/Amazonka/Braket/Types/JobCheckpointConfig.hs b/gen/Amazonka/Braket/Types/JobCheckpointConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/JobCheckpointConfig.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.Braket.Types.JobCheckpointConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.JobCheckpointConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the output locations for job checkpoint data.
+--
+-- /See:/ 'newJobCheckpointConfig' smart constructor.
+data JobCheckpointConfig = JobCheckpointConfig'
+  { -- | (Optional) The local directory where checkpoints are written. The
+    -- default directory is @\/opt\/braket\/checkpoints\/@.
+    localPath :: Prelude.Maybe Prelude.Text,
+    -- | Identifies the S3 path where you want Amazon Braket to store
+    -- checkpoints. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JobCheckpointConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'localPath', 'jobCheckpointConfig_localPath' - (Optional) The local directory where checkpoints are written. The
+-- default directory is @\/opt\/braket\/checkpoints\/@.
+--
+-- 's3Uri', 'jobCheckpointConfig_s3Uri' - Identifies the S3 path where you want Amazon Braket to store
+-- checkpoints. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+newJobCheckpointConfig ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  JobCheckpointConfig
+newJobCheckpointConfig pS3Uri_ =
+  JobCheckpointConfig'
+    { localPath = Prelude.Nothing,
+      s3Uri = pS3Uri_
+    }
+
+-- | (Optional) The local directory where checkpoints are written. The
+-- default directory is @\/opt\/braket\/checkpoints\/@.
+jobCheckpointConfig_localPath :: Lens.Lens' JobCheckpointConfig (Prelude.Maybe Prelude.Text)
+jobCheckpointConfig_localPath = Lens.lens (\JobCheckpointConfig' {localPath} -> localPath) (\s@JobCheckpointConfig' {} a -> s {localPath = a} :: JobCheckpointConfig)
+
+-- | Identifies the S3 path where you want Amazon Braket to store
+-- checkpoints. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+jobCheckpointConfig_s3Uri :: Lens.Lens' JobCheckpointConfig Prelude.Text
+jobCheckpointConfig_s3Uri = Lens.lens (\JobCheckpointConfig' {s3Uri} -> s3Uri) (\s@JobCheckpointConfig' {} a -> s {s3Uri = a} :: JobCheckpointConfig)
+
+instance Data.FromJSON JobCheckpointConfig where
+  parseJSON =
+    Data.withObject
+      "JobCheckpointConfig"
+      ( \x ->
+          JobCheckpointConfig'
+            Prelude.<$> (x Data..:? "localPath")
+            Prelude.<*> (x Data..: "s3Uri")
+      )
+
+instance Prelude.Hashable JobCheckpointConfig where
+  hashWithSalt _salt JobCheckpointConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` localPath
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData JobCheckpointConfig where
+  rnf JobCheckpointConfig' {..} =
+    Prelude.rnf localPath
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON JobCheckpointConfig where
+  toJSON JobCheckpointConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("localPath" Data..=) Prelude.<$> localPath,
+            Prelude.Just ("s3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/Braket/Types/JobEventDetails.hs b/gen/Amazonka/Braket/Types/JobEventDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/JobEventDetails.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.Braket.Types.JobEventDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.JobEventDetails where
+
+import Amazonka.Braket.Types.JobEventType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Details about the type and time events occurred related to the Amazon
+-- Braket job.
+--
+-- /See:/ 'newJobEventDetails' smart constructor.
+data JobEventDetails = JobEventDetails'
+  { -- | The type of event that occurred related to the Amazon Braket job.
+    eventType :: Prelude.Maybe JobEventType,
+    -- | A message describing the event that occurred related to the Amazon
+    -- Braket job.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | TThe type of event that occurred related to the Amazon Braket job.
+    timeOfEvent :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JobEventDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eventType', 'jobEventDetails_eventType' - The type of event that occurred related to the Amazon Braket job.
+--
+-- 'message', 'jobEventDetails_message' - A message describing the event that occurred related to the Amazon
+-- Braket job.
+--
+-- 'timeOfEvent', 'jobEventDetails_timeOfEvent' - TThe type of event that occurred related to the Amazon Braket job.
+newJobEventDetails ::
+  JobEventDetails
+newJobEventDetails =
+  JobEventDetails'
+    { eventType = Prelude.Nothing,
+      message = Prelude.Nothing,
+      timeOfEvent = Prelude.Nothing
+    }
+
+-- | The type of event that occurred related to the Amazon Braket job.
+jobEventDetails_eventType :: Lens.Lens' JobEventDetails (Prelude.Maybe JobEventType)
+jobEventDetails_eventType = Lens.lens (\JobEventDetails' {eventType} -> eventType) (\s@JobEventDetails' {} a -> s {eventType = a} :: JobEventDetails)
+
+-- | A message describing the event that occurred related to the Amazon
+-- Braket job.
+jobEventDetails_message :: Lens.Lens' JobEventDetails (Prelude.Maybe Prelude.Text)
+jobEventDetails_message = Lens.lens (\JobEventDetails' {message} -> message) (\s@JobEventDetails' {} a -> s {message = a} :: JobEventDetails)
+
+-- | TThe type of event that occurred related to the Amazon Braket job.
+jobEventDetails_timeOfEvent :: Lens.Lens' JobEventDetails (Prelude.Maybe Prelude.UTCTime)
+jobEventDetails_timeOfEvent = Lens.lens (\JobEventDetails' {timeOfEvent} -> timeOfEvent) (\s@JobEventDetails' {} a -> s {timeOfEvent = a} :: JobEventDetails) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON JobEventDetails where
+  parseJSON =
+    Data.withObject
+      "JobEventDetails"
+      ( \x ->
+          JobEventDetails'
+            Prelude.<$> (x Data..:? "eventType")
+            Prelude.<*> (x Data..:? "message")
+            Prelude.<*> (x Data..:? "timeOfEvent")
+      )
+
+instance Prelude.Hashable JobEventDetails where
+  hashWithSalt _salt JobEventDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` eventType
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` timeOfEvent
+
+instance Prelude.NFData JobEventDetails where
+  rnf JobEventDetails' {..} =
+    Prelude.rnf eventType
+      `Prelude.seq` Prelude.rnf message
+      `Prelude.seq` Prelude.rnf timeOfEvent
diff --git a/gen/Amazonka/Braket/Types/JobEventType.hs b/gen/Amazonka/Braket/Types/JobEventType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/JobEventType.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.Braket.Types.JobEventType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.JobEventType
+  ( JobEventType
+      ( ..,
+        JobEventType_CANCELLED,
+        JobEventType_COMPLETED,
+        JobEventType_DEPRIORITIZED_DUE_TO_INACTIVITY,
+        JobEventType_DOWNLOADING_DATA,
+        JobEventType_FAILED,
+        JobEventType_MAX_RUNTIME_EXCEEDED,
+        JobEventType_QUEUED_FOR_EXECUTION,
+        JobEventType_RUNNING,
+        JobEventType_STARTING_INSTANCE,
+        JobEventType_UPLOADING_RESULTS,
+        JobEventType_WAITING_FOR_PRIORITY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype JobEventType = JobEventType'
+  { fromJobEventType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern JobEventType_CANCELLED :: JobEventType
+pattern JobEventType_CANCELLED = JobEventType' "CANCELLED"
+
+pattern JobEventType_COMPLETED :: JobEventType
+pattern JobEventType_COMPLETED = JobEventType' "COMPLETED"
+
+pattern JobEventType_DEPRIORITIZED_DUE_TO_INACTIVITY :: JobEventType
+pattern JobEventType_DEPRIORITIZED_DUE_TO_INACTIVITY = JobEventType' "DEPRIORITIZED_DUE_TO_INACTIVITY"
+
+pattern JobEventType_DOWNLOADING_DATA :: JobEventType
+pattern JobEventType_DOWNLOADING_DATA = JobEventType' "DOWNLOADING_DATA"
+
+pattern JobEventType_FAILED :: JobEventType
+pattern JobEventType_FAILED = JobEventType' "FAILED"
+
+pattern JobEventType_MAX_RUNTIME_EXCEEDED :: JobEventType
+pattern JobEventType_MAX_RUNTIME_EXCEEDED = JobEventType' "MAX_RUNTIME_EXCEEDED"
+
+pattern JobEventType_QUEUED_FOR_EXECUTION :: JobEventType
+pattern JobEventType_QUEUED_FOR_EXECUTION = JobEventType' "QUEUED_FOR_EXECUTION"
+
+pattern JobEventType_RUNNING :: JobEventType
+pattern JobEventType_RUNNING = JobEventType' "RUNNING"
+
+pattern JobEventType_STARTING_INSTANCE :: JobEventType
+pattern JobEventType_STARTING_INSTANCE = JobEventType' "STARTING_INSTANCE"
+
+pattern JobEventType_UPLOADING_RESULTS :: JobEventType
+pattern JobEventType_UPLOADING_RESULTS = JobEventType' "UPLOADING_RESULTS"
+
+pattern JobEventType_WAITING_FOR_PRIORITY :: JobEventType
+pattern JobEventType_WAITING_FOR_PRIORITY = JobEventType' "WAITING_FOR_PRIORITY"
+
+{-# COMPLETE
+  JobEventType_CANCELLED,
+  JobEventType_COMPLETED,
+  JobEventType_DEPRIORITIZED_DUE_TO_INACTIVITY,
+  JobEventType_DOWNLOADING_DATA,
+  JobEventType_FAILED,
+  JobEventType_MAX_RUNTIME_EXCEEDED,
+  JobEventType_QUEUED_FOR_EXECUTION,
+  JobEventType_RUNNING,
+  JobEventType_STARTING_INSTANCE,
+  JobEventType_UPLOADING_RESULTS,
+  JobEventType_WAITING_FOR_PRIORITY,
+  JobEventType'
+  #-}
diff --git a/gen/Amazonka/Braket/Types/JobOutputDataConfig.hs b/gen/Amazonka/Braket/Types/JobOutputDataConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/JobOutputDataConfig.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.JobOutputDataConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.JobOutputDataConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies the path to the S3 location where you want to store job
+-- artifacts and the encryption key used to store them.
+--
+-- /See:/ 'newJobOutputDataConfig' smart constructor.
+data JobOutputDataConfig = JobOutputDataConfig'
+  { -- | The AWS Key Management Service (AWS KMS) key that Amazon Braket uses to
+    -- encrypt the job training artifacts at rest using Amazon S3 server-side
+    -- encryption.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Identifies the S3 path where you want Amazon Braket to store the job
+    -- training artifacts. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+    s3Path :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JobOutputDataConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'jobOutputDataConfig_kmsKeyId' - The AWS Key Management Service (AWS KMS) key that Amazon Braket uses to
+-- encrypt the job training artifacts at rest using Amazon S3 server-side
+-- encryption.
+--
+-- 's3Path', 'jobOutputDataConfig_s3Path' - Identifies the S3 path where you want Amazon Braket to store the job
+-- training artifacts. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+newJobOutputDataConfig ::
+  -- | 's3Path'
+  Prelude.Text ->
+  JobOutputDataConfig
+newJobOutputDataConfig pS3Path_ =
+  JobOutputDataConfig'
+    { kmsKeyId = Prelude.Nothing,
+      s3Path = pS3Path_
+    }
+
+-- | The AWS Key Management Service (AWS KMS) key that Amazon Braket uses to
+-- encrypt the job training artifacts at rest using Amazon S3 server-side
+-- encryption.
+jobOutputDataConfig_kmsKeyId :: Lens.Lens' JobOutputDataConfig (Prelude.Maybe Prelude.Text)
+jobOutputDataConfig_kmsKeyId = Lens.lens (\JobOutputDataConfig' {kmsKeyId} -> kmsKeyId) (\s@JobOutputDataConfig' {} a -> s {kmsKeyId = a} :: JobOutputDataConfig)
+
+-- | Identifies the S3 path where you want Amazon Braket to store the job
+-- training artifacts. For example, @s3:\/\/bucket-name\/key-name-prefix@.
+jobOutputDataConfig_s3Path :: Lens.Lens' JobOutputDataConfig Prelude.Text
+jobOutputDataConfig_s3Path = Lens.lens (\JobOutputDataConfig' {s3Path} -> s3Path) (\s@JobOutputDataConfig' {} a -> s {s3Path = a} :: JobOutputDataConfig)
+
+instance Data.FromJSON JobOutputDataConfig where
+  parseJSON =
+    Data.withObject
+      "JobOutputDataConfig"
+      ( \x ->
+          JobOutputDataConfig'
+            Prelude.<$> (x Data..:? "kmsKeyId")
+            Prelude.<*> (x Data..: "s3Path")
+      )
+
+instance Prelude.Hashable JobOutputDataConfig where
+  hashWithSalt _salt JobOutputDataConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` s3Path
+
+instance Prelude.NFData JobOutputDataConfig where
+  rnf JobOutputDataConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf s3Path
+
+instance Data.ToJSON JobOutputDataConfig where
+  toJSON JobOutputDataConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("kmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just ("s3Path" Data..= s3Path)
+          ]
+      )
diff --git a/gen/Amazonka/Braket/Types/JobPrimaryStatus.hs b/gen/Amazonka/Braket/Types/JobPrimaryStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/JobPrimaryStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.JobPrimaryStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.JobPrimaryStatus
+  ( JobPrimaryStatus
+      ( ..,
+        JobPrimaryStatus_CANCELLED,
+        JobPrimaryStatus_CANCELLING,
+        JobPrimaryStatus_COMPLETED,
+        JobPrimaryStatus_FAILED,
+        JobPrimaryStatus_QUEUED,
+        JobPrimaryStatus_RUNNING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype JobPrimaryStatus = JobPrimaryStatus'
+  { fromJobPrimaryStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern JobPrimaryStatus_CANCELLED :: JobPrimaryStatus
+pattern JobPrimaryStatus_CANCELLED = JobPrimaryStatus' "CANCELLED"
+
+pattern JobPrimaryStatus_CANCELLING :: JobPrimaryStatus
+pattern JobPrimaryStatus_CANCELLING = JobPrimaryStatus' "CANCELLING"
+
+pattern JobPrimaryStatus_COMPLETED :: JobPrimaryStatus
+pattern JobPrimaryStatus_COMPLETED = JobPrimaryStatus' "COMPLETED"
+
+pattern JobPrimaryStatus_FAILED :: JobPrimaryStatus
+pattern JobPrimaryStatus_FAILED = JobPrimaryStatus' "FAILED"
+
+pattern JobPrimaryStatus_QUEUED :: JobPrimaryStatus
+pattern JobPrimaryStatus_QUEUED = JobPrimaryStatus' "QUEUED"
+
+pattern JobPrimaryStatus_RUNNING :: JobPrimaryStatus
+pattern JobPrimaryStatus_RUNNING = JobPrimaryStatus' "RUNNING"
+
+{-# COMPLETE
+  JobPrimaryStatus_CANCELLED,
+  JobPrimaryStatus_CANCELLING,
+  JobPrimaryStatus_COMPLETED,
+  JobPrimaryStatus_FAILED,
+  JobPrimaryStatus_QUEUED,
+  JobPrimaryStatus_RUNNING,
+  JobPrimaryStatus'
+  #-}
diff --git a/gen/Amazonka/Braket/Types/JobStoppingCondition.hs b/gen/Amazonka/Braket/Types/JobStoppingCondition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/JobStoppingCondition.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.JobStoppingCondition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.JobStoppingCondition where
+
+import qualified 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 limits for how long an Amazon Braket job can run.
+--
+-- /See:/ 'newJobStoppingCondition' smart constructor.
+data JobStoppingCondition = JobStoppingCondition'
+  { -- | The maximum length of time, in seconds, that an Amazon Braket job can
+    -- run.
+    maxRuntimeInSeconds :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JobStoppingCondition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxRuntimeInSeconds', 'jobStoppingCondition_maxRuntimeInSeconds' - The maximum length of time, in seconds, that an Amazon Braket job can
+-- run.
+newJobStoppingCondition ::
+  JobStoppingCondition
+newJobStoppingCondition =
+  JobStoppingCondition'
+    { maxRuntimeInSeconds =
+        Prelude.Nothing
+    }
+
+-- | The maximum length of time, in seconds, that an Amazon Braket job can
+-- run.
+jobStoppingCondition_maxRuntimeInSeconds :: Lens.Lens' JobStoppingCondition (Prelude.Maybe Prelude.Natural)
+jobStoppingCondition_maxRuntimeInSeconds = Lens.lens (\JobStoppingCondition' {maxRuntimeInSeconds} -> maxRuntimeInSeconds) (\s@JobStoppingCondition' {} a -> s {maxRuntimeInSeconds = a} :: JobStoppingCondition)
+
+instance Data.FromJSON JobStoppingCondition where
+  parseJSON =
+    Data.withObject
+      "JobStoppingCondition"
+      ( \x ->
+          JobStoppingCondition'
+            Prelude.<$> (x Data..:? "maxRuntimeInSeconds")
+      )
+
+instance Prelude.Hashable JobStoppingCondition where
+  hashWithSalt _salt JobStoppingCondition' {..} =
+    _salt `Prelude.hashWithSalt` maxRuntimeInSeconds
+
+instance Prelude.NFData JobStoppingCondition where
+  rnf JobStoppingCondition' {..} =
+    Prelude.rnf maxRuntimeInSeconds
+
+instance Data.ToJSON JobStoppingCondition where
+  toJSON JobStoppingCondition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxRuntimeInSeconds" Data..=)
+              Prelude.<$> maxRuntimeInSeconds
+          ]
+      )
diff --git a/gen/Amazonka/Braket/Types/JobSummary.hs b/gen/Amazonka/Braket/Types/JobSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/JobSummary.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.Braket.Types.JobSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.JobSummary where
+
+import Amazonka.Braket.Types.JobPrimaryStatus
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Provides summary information about an Amazon Braket job.
+--
+-- /See:/ 'newJobSummary' smart constructor.
+data JobSummary = JobSummary'
+  { -- | The date and time that the Amazon Braket job ended.
+    endedAt :: Prelude.Maybe Data.ISO8601,
+    -- | The date and time that the Amazon Braket job was started.
+    startedAt :: Prelude.Maybe Data.ISO8601,
+    -- | A tag object that consists of a key and an optional value, used to
+    -- manage metadata for Amazon Braket resources.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The date and time that the Amazon Braket job was created.
+    createdAt :: Data.ISO8601,
+    -- | Provides summary information about the primary device used by an Amazon
+    -- Braket job.
+    device :: Prelude.Text,
+    -- | The ARN of the Amazon Braket job.
+    jobArn :: Prelude.Text,
+    -- | The name of the Amazon Braket job.
+    jobName :: Prelude.Text,
+    -- | The status of the Amazon Braket job.
+    status :: JobPrimaryStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'JobSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'endedAt', 'jobSummary_endedAt' - The date and time that the Amazon Braket job ended.
+--
+-- 'startedAt', 'jobSummary_startedAt' - The date and time that the Amazon Braket job was started.
+--
+-- 'tags', 'jobSummary_tags' - A tag object that consists of a key and an optional value, used to
+-- manage metadata for Amazon Braket resources.
+--
+-- 'createdAt', 'jobSummary_createdAt' - The date and time that the Amazon Braket job was created.
+--
+-- 'device', 'jobSummary_device' - Provides summary information about the primary device used by an Amazon
+-- Braket job.
+--
+-- 'jobArn', 'jobSummary_jobArn' - The ARN of the Amazon Braket job.
+--
+-- 'jobName', 'jobSummary_jobName' - The name of the Amazon Braket job.
+--
+-- 'status', 'jobSummary_status' - The status of the Amazon Braket job.
+newJobSummary ::
+  -- | 'createdAt'
+  Prelude.UTCTime ->
+  -- | 'device'
+  Prelude.Text ->
+  -- | 'jobArn'
+  Prelude.Text ->
+  -- | 'jobName'
+  Prelude.Text ->
+  -- | 'status'
+  JobPrimaryStatus ->
+  JobSummary
+newJobSummary
+  pCreatedAt_
+  pDevice_
+  pJobArn_
+  pJobName_
+  pStatus_ =
+    JobSummary'
+      { endedAt = Prelude.Nothing,
+        startedAt = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        createdAt = Data._Time Lens.# pCreatedAt_,
+        device = pDevice_,
+        jobArn = pJobArn_,
+        jobName = pJobName_,
+        status = pStatus_
+      }
+
+-- | The date and time that the Amazon Braket job ended.
+jobSummary_endedAt :: Lens.Lens' JobSummary (Prelude.Maybe Prelude.UTCTime)
+jobSummary_endedAt = Lens.lens (\JobSummary' {endedAt} -> endedAt) (\s@JobSummary' {} a -> s {endedAt = a} :: JobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The date and time that the Amazon Braket job was started.
+jobSummary_startedAt :: Lens.Lens' JobSummary (Prelude.Maybe Prelude.UTCTime)
+jobSummary_startedAt = Lens.lens (\JobSummary' {startedAt} -> startedAt) (\s@JobSummary' {} a -> s {startedAt = a} :: JobSummary) Prelude.. Lens.mapping Data._Time
+
+-- | A tag object that consists of a key and an optional value, used to
+-- manage metadata for Amazon Braket resources.
+jobSummary_tags :: Lens.Lens' JobSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+jobSummary_tags = Lens.lens (\JobSummary' {tags} -> tags) (\s@JobSummary' {} a -> s {tags = a} :: JobSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The date and time that the Amazon Braket job was created.
+jobSummary_createdAt :: Lens.Lens' JobSummary Prelude.UTCTime
+jobSummary_createdAt = Lens.lens (\JobSummary' {createdAt} -> createdAt) (\s@JobSummary' {} a -> s {createdAt = a} :: JobSummary) Prelude.. Data._Time
+
+-- | Provides summary information about the primary device used by an Amazon
+-- Braket job.
+jobSummary_device :: Lens.Lens' JobSummary Prelude.Text
+jobSummary_device = Lens.lens (\JobSummary' {device} -> device) (\s@JobSummary' {} a -> s {device = a} :: JobSummary)
+
+-- | The ARN of the Amazon Braket job.
+jobSummary_jobArn :: Lens.Lens' JobSummary Prelude.Text
+jobSummary_jobArn = Lens.lens (\JobSummary' {jobArn} -> jobArn) (\s@JobSummary' {} a -> s {jobArn = a} :: JobSummary)
+
+-- | The name of the Amazon Braket job.
+jobSummary_jobName :: Lens.Lens' JobSummary Prelude.Text
+jobSummary_jobName = Lens.lens (\JobSummary' {jobName} -> jobName) (\s@JobSummary' {} a -> s {jobName = a} :: JobSummary)
+
+-- | The status of the Amazon Braket job.
+jobSummary_status :: Lens.Lens' JobSummary JobPrimaryStatus
+jobSummary_status = Lens.lens (\JobSummary' {status} -> status) (\s@JobSummary' {} a -> s {status = a} :: JobSummary)
+
+instance Data.FromJSON JobSummary where
+  parseJSON =
+    Data.withObject
+      "JobSummary"
+      ( \x ->
+          JobSummary'
+            Prelude.<$> (x Data..:? "endedAt")
+            Prelude.<*> (x Data..:? "startedAt")
+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "createdAt")
+            Prelude.<*> (x Data..: "device")
+            Prelude.<*> (x Data..: "jobArn")
+            Prelude.<*> (x Data..: "jobName")
+            Prelude.<*> (x Data..: "status")
+      )
+
+instance Prelude.Hashable JobSummary where
+  hashWithSalt _salt JobSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` endedAt
+      `Prelude.hashWithSalt` startedAt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` device
+      `Prelude.hashWithSalt` jobArn
+      `Prelude.hashWithSalt` jobName
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData JobSummary where
+  rnf JobSummary' {..} =
+    Prelude.rnf endedAt
+      `Prelude.seq` Prelude.rnf startedAt
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf device
+      `Prelude.seq` Prelude.rnf jobArn
+      `Prelude.seq` Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/Braket/Types/QuantumTaskStatus.hs b/gen/Amazonka/Braket/Types/QuantumTaskStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/QuantumTaskStatus.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.QuantumTaskStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.QuantumTaskStatus
+  ( QuantumTaskStatus
+      ( ..,
+        QuantumTaskStatus_CANCELLED,
+        QuantumTaskStatus_CANCELLING,
+        QuantumTaskStatus_COMPLETED,
+        QuantumTaskStatus_CREATED,
+        QuantumTaskStatus_FAILED,
+        QuantumTaskStatus_QUEUED,
+        QuantumTaskStatus_RUNNING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype QuantumTaskStatus = QuantumTaskStatus'
+  { fromQuantumTaskStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern QuantumTaskStatus_CANCELLED :: QuantumTaskStatus
+pattern QuantumTaskStatus_CANCELLED = QuantumTaskStatus' "CANCELLED"
+
+pattern QuantumTaskStatus_CANCELLING :: QuantumTaskStatus
+pattern QuantumTaskStatus_CANCELLING = QuantumTaskStatus' "CANCELLING"
+
+pattern QuantumTaskStatus_COMPLETED :: QuantumTaskStatus
+pattern QuantumTaskStatus_COMPLETED = QuantumTaskStatus' "COMPLETED"
+
+pattern QuantumTaskStatus_CREATED :: QuantumTaskStatus
+pattern QuantumTaskStatus_CREATED = QuantumTaskStatus' "CREATED"
+
+pattern QuantumTaskStatus_FAILED :: QuantumTaskStatus
+pattern QuantumTaskStatus_FAILED = QuantumTaskStatus' "FAILED"
+
+pattern QuantumTaskStatus_QUEUED :: QuantumTaskStatus
+pattern QuantumTaskStatus_QUEUED = QuantumTaskStatus' "QUEUED"
+
+pattern QuantumTaskStatus_RUNNING :: QuantumTaskStatus
+pattern QuantumTaskStatus_RUNNING = QuantumTaskStatus' "RUNNING"
+
+{-# COMPLETE
+  QuantumTaskStatus_CANCELLED,
+  QuantumTaskStatus_CANCELLING,
+  QuantumTaskStatus_COMPLETED,
+  QuantumTaskStatus_CREATED,
+  QuantumTaskStatus_FAILED,
+  QuantumTaskStatus_QUEUED,
+  QuantumTaskStatus_RUNNING,
+  QuantumTaskStatus'
+  #-}
diff --git a/gen/Amazonka/Braket/Types/QuantumTaskSummary.hs b/gen/Amazonka/Braket/Types/QuantumTaskSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/QuantumTaskSummary.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.QuantumTaskSummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.QuantumTaskSummary where
+
+import Amazonka.Braket.Types.QuantumTaskStatus
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Includes information about a quantum task.
+--
+-- /See:/ 'newQuantumTaskSummary' smart constructor.
+data QuantumTaskSummary = QuantumTaskSummary'
+  { -- | The time at which the task finished.
+    endedAt :: Prelude.Maybe Data.ISO8601,
+    -- | Displays the key, value pairs of tags associated with this quantum task.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The time at which the task was created.
+    createdAt :: Data.ISO8601,
+    -- | The ARN of the device the task ran on.
+    deviceArn :: Prelude.Text,
+    -- | The S3 bucket where the task result file is stored..
+    outputS3Bucket :: Prelude.Text,
+    -- | The folder in the S3 bucket where the task result file is stored.
+    outputS3Directory :: Prelude.Text,
+    -- | The ARN of the task.
+    quantumTaskArn :: Prelude.Text,
+    -- | The shots used for the task.
+    shots :: Prelude.Integer,
+    -- | The status of the task.
+    status :: QuantumTaskStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'QuantumTaskSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'endedAt', 'quantumTaskSummary_endedAt' - The time at which the task finished.
+--
+-- 'tags', 'quantumTaskSummary_tags' - Displays the key, value pairs of tags associated with this quantum task.
+--
+-- 'createdAt', 'quantumTaskSummary_createdAt' - The time at which the task was created.
+--
+-- 'deviceArn', 'quantumTaskSummary_deviceArn' - The ARN of the device the task ran on.
+--
+-- 'outputS3Bucket', 'quantumTaskSummary_outputS3Bucket' - The S3 bucket where the task result file is stored..
+--
+-- 'outputS3Directory', 'quantumTaskSummary_outputS3Directory' - The folder in the S3 bucket where the task result file is stored.
+--
+-- 'quantumTaskArn', 'quantumTaskSummary_quantumTaskArn' - The ARN of the task.
+--
+-- 'shots', 'quantumTaskSummary_shots' - The shots used for the task.
+--
+-- 'status', 'quantumTaskSummary_status' - The status of the task.
+newQuantumTaskSummary ::
+  -- | 'createdAt'
+  Prelude.UTCTime ->
+  -- | 'deviceArn'
+  Prelude.Text ->
+  -- | 'outputS3Bucket'
+  Prelude.Text ->
+  -- | 'outputS3Directory'
+  Prelude.Text ->
+  -- | 'quantumTaskArn'
+  Prelude.Text ->
+  -- | 'shots'
+  Prelude.Integer ->
+  -- | 'status'
+  QuantumTaskStatus ->
+  QuantumTaskSummary
+newQuantumTaskSummary
+  pCreatedAt_
+  pDeviceArn_
+  pOutputS3Bucket_
+  pOutputS3Directory_
+  pQuantumTaskArn_
+  pShots_
+  pStatus_ =
+    QuantumTaskSummary'
+      { endedAt = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        createdAt = Data._Time Lens.# pCreatedAt_,
+        deviceArn = pDeviceArn_,
+        outputS3Bucket = pOutputS3Bucket_,
+        outputS3Directory = pOutputS3Directory_,
+        quantumTaskArn = pQuantumTaskArn_,
+        shots = pShots_,
+        status = pStatus_
+      }
+
+-- | The time at which the task finished.
+quantumTaskSummary_endedAt :: Lens.Lens' QuantumTaskSummary (Prelude.Maybe Prelude.UTCTime)
+quantumTaskSummary_endedAt = Lens.lens (\QuantumTaskSummary' {endedAt} -> endedAt) (\s@QuantumTaskSummary' {} a -> s {endedAt = a} :: QuantumTaskSummary) Prelude.. Lens.mapping Data._Time
+
+-- | Displays the key, value pairs of tags associated with this quantum task.
+quantumTaskSummary_tags :: Lens.Lens' QuantumTaskSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+quantumTaskSummary_tags = Lens.lens (\QuantumTaskSummary' {tags} -> tags) (\s@QuantumTaskSummary' {} a -> s {tags = a} :: QuantumTaskSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The time at which the task was created.
+quantumTaskSummary_createdAt :: Lens.Lens' QuantumTaskSummary Prelude.UTCTime
+quantumTaskSummary_createdAt = Lens.lens (\QuantumTaskSummary' {createdAt} -> createdAt) (\s@QuantumTaskSummary' {} a -> s {createdAt = a} :: QuantumTaskSummary) Prelude.. Data._Time
+
+-- | The ARN of the device the task ran on.
+quantumTaskSummary_deviceArn :: Lens.Lens' QuantumTaskSummary Prelude.Text
+quantumTaskSummary_deviceArn = Lens.lens (\QuantumTaskSummary' {deviceArn} -> deviceArn) (\s@QuantumTaskSummary' {} a -> s {deviceArn = a} :: QuantumTaskSummary)
+
+-- | The S3 bucket where the task result file is stored..
+quantumTaskSummary_outputS3Bucket :: Lens.Lens' QuantumTaskSummary Prelude.Text
+quantumTaskSummary_outputS3Bucket = Lens.lens (\QuantumTaskSummary' {outputS3Bucket} -> outputS3Bucket) (\s@QuantumTaskSummary' {} a -> s {outputS3Bucket = a} :: QuantumTaskSummary)
+
+-- | The folder in the S3 bucket where the task result file is stored.
+quantumTaskSummary_outputS3Directory :: Lens.Lens' QuantumTaskSummary Prelude.Text
+quantumTaskSummary_outputS3Directory = Lens.lens (\QuantumTaskSummary' {outputS3Directory} -> outputS3Directory) (\s@QuantumTaskSummary' {} a -> s {outputS3Directory = a} :: QuantumTaskSummary)
+
+-- | The ARN of the task.
+quantumTaskSummary_quantumTaskArn :: Lens.Lens' QuantumTaskSummary Prelude.Text
+quantumTaskSummary_quantumTaskArn = Lens.lens (\QuantumTaskSummary' {quantumTaskArn} -> quantumTaskArn) (\s@QuantumTaskSummary' {} a -> s {quantumTaskArn = a} :: QuantumTaskSummary)
+
+-- | The shots used for the task.
+quantumTaskSummary_shots :: Lens.Lens' QuantumTaskSummary Prelude.Integer
+quantumTaskSummary_shots = Lens.lens (\QuantumTaskSummary' {shots} -> shots) (\s@QuantumTaskSummary' {} a -> s {shots = a} :: QuantumTaskSummary)
+
+-- | The status of the task.
+quantumTaskSummary_status :: Lens.Lens' QuantumTaskSummary QuantumTaskStatus
+quantumTaskSummary_status = Lens.lens (\QuantumTaskSummary' {status} -> status) (\s@QuantumTaskSummary' {} a -> s {status = a} :: QuantumTaskSummary)
+
+instance Data.FromJSON QuantumTaskSummary where
+  parseJSON =
+    Data.withObject
+      "QuantumTaskSummary"
+      ( \x ->
+          QuantumTaskSummary'
+            Prelude.<$> (x Data..:? "endedAt")
+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "createdAt")
+            Prelude.<*> (x Data..: "deviceArn")
+            Prelude.<*> (x Data..: "outputS3Bucket")
+            Prelude.<*> (x Data..: "outputS3Directory")
+            Prelude.<*> (x Data..: "quantumTaskArn")
+            Prelude.<*> (x Data..: "shots")
+            Prelude.<*> (x Data..: "status")
+      )
+
+instance Prelude.Hashable QuantumTaskSummary where
+  hashWithSalt _salt QuantumTaskSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` endedAt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` deviceArn
+      `Prelude.hashWithSalt` outputS3Bucket
+      `Prelude.hashWithSalt` outputS3Directory
+      `Prelude.hashWithSalt` quantumTaskArn
+      `Prelude.hashWithSalt` shots
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData QuantumTaskSummary where
+  rnf QuantumTaskSummary' {..} =
+    Prelude.rnf endedAt
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf deviceArn
+      `Prelude.seq` Prelude.rnf outputS3Bucket
+      `Prelude.seq` Prelude.rnf outputS3Directory
+      `Prelude.seq` Prelude.rnf quantumTaskArn
+      `Prelude.seq` Prelude.rnf shots
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/Braket/Types/S3DataSource.hs b/gen/Amazonka/Braket/Types/S3DataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/S3DataSource.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.Braket.Types.S3DataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.S3DataSource where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the data stored in Amazon S3 used by the Amazon Braket
+-- job.
+--
+-- /See:/ 'newS3DataSource' smart constructor.
+data S3DataSource = S3DataSource'
+  { -- | Depending on the value specified for the @S3DataType@, identifies either
+    -- a key name prefix or a manifest that locates the S3 data source.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3DataSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 's3Uri', 's3DataSource_s3Uri' - Depending on the value specified for the @S3DataType@, identifies either
+-- a key name prefix or a manifest that locates the S3 data source.
+newS3DataSource ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  S3DataSource
+newS3DataSource pS3Uri_ =
+  S3DataSource' {s3Uri = pS3Uri_}
+
+-- | Depending on the value specified for the @S3DataType@, identifies either
+-- a key name prefix or a manifest that locates the S3 data source.
+s3DataSource_s3Uri :: Lens.Lens' S3DataSource Prelude.Text
+s3DataSource_s3Uri = Lens.lens (\S3DataSource' {s3Uri} -> s3Uri) (\s@S3DataSource' {} a -> s {s3Uri = a} :: S3DataSource)
+
+instance Data.FromJSON S3DataSource where
+  parseJSON =
+    Data.withObject
+      "S3DataSource"
+      ( \x ->
+          S3DataSource' Prelude.<$> (x Data..: "s3Uri")
+      )
+
+instance Prelude.Hashable S3DataSource where
+  hashWithSalt _salt S3DataSource' {..} =
+    _salt `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData S3DataSource where
+  rnf S3DataSource' {..} = Prelude.rnf s3Uri
+
+instance Data.ToJSON S3DataSource where
+  toJSON S3DataSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("s3Uri" Data..= s3Uri)]
+      )
diff --git a/gen/Amazonka/Braket/Types/ScriptModeConfig.hs b/gen/Amazonka/Braket/Types/ScriptModeConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/ScriptModeConfig.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.Braket.Types.ScriptModeConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.ScriptModeConfig where
+
+import Amazonka.Braket.Types.CompressionType
+import qualified 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 Python scripts used for entry and by an
+-- Amazon Braket job.
+--
+-- /See:/ 'newScriptModeConfig' smart constructor.
+data ScriptModeConfig = ScriptModeConfig'
+  { -- | The type of compression used by the Python scripts for an Amazon Braket
+    -- job.
+    compressionType :: Prelude.Maybe CompressionType,
+    -- | The path to the Python script that serves as the entry point for an
+    -- Amazon Braket job.
+    entryPoint :: Prelude.Text,
+    -- | The URI that specifies the S3 path to the Python script module that
+    -- contains the training script used by an Amazon Braket job.
+    s3Uri :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ScriptModeConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'compressionType', 'scriptModeConfig_compressionType' - The type of compression used by the Python scripts for an Amazon Braket
+-- job.
+--
+-- 'entryPoint', 'scriptModeConfig_entryPoint' - The path to the Python script that serves as the entry point for an
+-- Amazon Braket job.
+--
+-- 's3Uri', 'scriptModeConfig_s3Uri' - The URI that specifies the S3 path to the Python script module that
+-- contains the training script used by an Amazon Braket job.
+newScriptModeConfig ::
+  -- | 'entryPoint'
+  Prelude.Text ->
+  -- | 's3Uri'
+  Prelude.Text ->
+  ScriptModeConfig
+newScriptModeConfig pEntryPoint_ pS3Uri_ =
+  ScriptModeConfig'
+    { compressionType =
+        Prelude.Nothing,
+      entryPoint = pEntryPoint_,
+      s3Uri = pS3Uri_
+    }
+
+-- | The type of compression used by the Python scripts for an Amazon Braket
+-- job.
+scriptModeConfig_compressionType :: Lens.Lens' ScriptModeConfig (Prelude.Maybe CompressionType)
+scriptModeConfig_compressionType = Lens.lens (\ScriptModeConfig' {compressionType} -> compressionType) (\s@ScriptModeConfig' {} a -> s {compressionType = a} :: ScriptModeConfig)
+
+-- | The path to the Python script that serves as the entry point for an
+-- Amazon Braket job.
+scriptModeConfig_entryPoint :: Lens.Lens' ScriptModeConfig Prelude.Text
+scriptModeConfig_entryPoint = Lens.lens (\ScriptModeConfig' {entryPoint} -> entryPoint) (\s@ScriptModeConfig' {} a -> s {entryPoint = a} :: ScriptModeConfig)
+
+-- | The URI that specifies the S3 path to the Python script module that
+-- contains the training script used by an Amazon Braket job.
+scriptModeConfig_s3Uri :: Lens.Lens' ScriptModeConfig Prelude.Text
+scriptModeConfig_s3Uri = Lens.lens (\ScriptModeConfig' {s3Uri} -> s3Uri) (\s@ScriptModeConfig' {} a -> s {s3Uri = a} :: ScriptModeConfig)
+
+instance Data.FromJSON ScriptModeConfig where
+  parseJSON =
+    Data.withObject
+      "ScriptModeConfig"
+      ( \x ->
+          ScriptModeConfig'
+            Prelude.<$> (x Data..:? "compressionType")
+            Prelude.<*> (x Data..: "entryPoint")
+            Prelude.<*> (x Data..: "s3Uri")
+      )
+
+instance Prelude.Hashable ScriptModeConfig where
+  hashWithSalt _salt ScriptModeConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` compressionType
+      `Prelude.hashWithSalt` entryPoint
+      `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData ScriptModeConfig where
+  rnf ScriptModeConfig' {..} =
+    Prelude.rnf compressionType
+      `Prelude.seq` Prelude.rnf entryPoint
+      `Prelude.seq` Prelude.rnf s3Uri
+
+instance Data.ToJSON ScriptModeConfig where
+  toJSON ScriptModeConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("compressionType" Data..=)
+              Prelude.<$> compressionType,
+            Prelude.Just ("entryPoint" Data..= entryPoint),
+            Prelude.Just ("s3Uri" Data..= s3Uri)
+          ]
+      )
diff --git a/gen/Amazonka/Braket/Types/SearchDevicesFilter.hs b/gen/Amazonka/Braket/Types/SearchDevicesFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/SearchDevicesFilter.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.SearchDevicesFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.SearchDevicesFilter where
+
+import qualified 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 filter to use for searching devices.
+--
+-- /See:/ 'newSearchDevicesFilter' smart constructor.
+data SearchDevicesFilter = SearchDevicesFilter'
+  { -- | The name to use to filter results.
+    name :: Prelude.Text,
+    -- | The values to use to filter results.
+    values :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchDevicesFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'searchDevicesFilter_name' - The name to use to filter results.
+--
+-- 'values', 'searchDevicesFilter_values' - The values to use to filter results.
+newSearchDevicesFilter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'values'
+  Prelude.NonEmpty Prelude.Text ->
+  SearchDevicesFilter
+newSearchDevicesFilter pName_ pValues_ =
+  SearchDevicesFilter'
+    { name = pName_,
+      values = Lens.coerced Lens.# pValues_
+    }
+
+-- | The name to use to filter results.
+searchDevicesFilter_name :: Lens.Lens' SearchDevicesFilter Prelude.Text
+searchDevicesFilter_name = Lens.lens (\SearchDevicesFilter' {name} -> name) (\s@SearchDevicesFilter' {} a -> s {name = a} :: SearchDevicesFilter)
+
+-- | The values to use to filter results.
+searchDevicesFilter_values :: Lens.Lens' SearchDevicesFilter (Prelude.NonEmpty Prelude.Text)
+searchDevicesFilter_values = Lens.lens (\SearchDevicesFilter' {values} -> values) (\s@SearchDevicesFilter' {} a -> s {values = a} :: SearchDevicesFilter) Prelude.. Lens.coerced
+
+instance Prelude.Hashable SearchDevicesFilter where
+  hashWithSalt _salt SearchDevicesFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData SearchDevicesFilter where
+  rnf SearchDevicesFilter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON SearchDevicesFilter where
+  toJSON SearchDevicesFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("name" Data..= name),
+            Prelude.Just ("values" Data..= values)
+          ]
+      )
diff --git a/gen/Amazonka/Braket/Types/SearchJobsFilter.hs b/gen/Amazonka/Braket/Types/SearchJobsFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/SearchJobsFilter.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.SearchJobsFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.SearchJobsFilter where
+
+import Amazonka.Braket.Types.SearchJobsFilterOperator
+import qualified 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 filter used to search for Amazon Braket jobs.
+--
+-- /See:/ 'newSearchJobsFilter' smart constructor.
+data SearchJobsFilter = SearchJobsFilter'
+  { -- | The name to use for the jobs filter.
+    name :: Prelude.Text,
+    -- | An operator to use for the jobs filter.
+    operator :: SearchJobsFilterOperator,
+    -- | The values to use for the jobs filter.
+    values :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchJobsFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'searchJobsFilter_name' - The name to use for the jobs filter.
+--
+-- 'operator', 'searchJobsFilter_operator' - An operator to use for the jobs filter.
+--
+-- 'values', 'searchJobsFilter_values' - The values to use for the jobs filter.
+newSearchJobsFilter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'operator'
+  SearchJobsFilterOperator ->
+  -- | 'values'
+  Prelude.NonEmpty Prelude.Text ->
+  SearchJobsFilter
+newSearchJobsFilter pName_ pOperator_ pValues_ =
+  SearchJobsFilter'
+    { name = pName_,
+      operator = pOperator_,
+      values = Lens.coerced Lens.# pValues_
+    }
+
+-- | The name to use for the jobs filter.
+searchJobsFilter_name :: Lens.Lens' SearchJobsFilter Prelude.Text
+searchJobsFilter_name = Lens.lens (\SearchJobsFilter' {name} -> name) (\s@SearchJobsFilter' {} a -> s {name = a} :: SearchJobsFilter)
+
+-- | An operator to use for the jobs filter.
+searchJobsFilter_operator :: Lens.Lens' SearchJobsFilter SearchJobsFilterOperator
+searchJobsFilter_operator = Lens.lens (\SearchJobsFilter' {operator} -> operator) (\s@SearchJobsFilter' {} a -> s {operator = a} :: SearchJobsFilter)
+
+-- | The values to use for the jobs filter.
+searchJobsFilter_values :: Lens.Lens' SearchJobsFilter (Prelude.NonEmpty Prelude.Text)
+searchJobsFilter_values = Lens.lens (\SearchJobsFilter' {values} -> values) (\s@SearchJobsFilter' {} a -> s {values = a} :: SearchJobsFilter) Prelude.. Lens.coerced
+
+instance Prelude.Hashable SearchJobsFilter where
+  hashWithSalt _salt SearchJobsFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` operator
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData SearchJobsFilter where
+  rnf SearchJobsFilter' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf operator
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON SearchJobsFilter where
+  toJSON SearchJobsFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("name" Data..= name),
+            Prelude.Just ("operator" Data..= operator),
+            Prelude.Just ("values" Data..= values)
+          ]
+      )
diff --git a/gen/Amazonka/Braket/Types/SearchJobsFilterOperator.hs b/gen/Amazonka/Braket/Types/SearchJobsFilterOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/SearchJobsFilterOperator.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.SearchJobsFilterOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.SearchJobsFilterOperator
+  ( SearchJobsFilterOperator
+      ( ..,
+        SearchJobsFilterOperator_BETWEEN,
+        SearchJobsFilterOperator_CONTAINS,
+        SearchJobsFilterOperator_EQUAL,
+        SearchJobsFilterOperator_GT,
+        SearchJobsFilterOperator_GTE,
+        SearchJobsFilterOperator_LT,
+        SearchJobsFilterOperator_LTE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SearchJobsFilterOperator = SearchJobsFilterOperator'
+  { fromSearchJobsFilterOperator ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SearchJobsFilterOperator_BETWEEN :: SearchJobsFilterOperator
+pattern SearchJobsFilterOperator_BETWEEN = SearchJobsFilterOperator' "BETWEEN"
+
+pattern SearchJobsFilterOperator_CONTAINS :: SearchJobsFilterOperator
+pattern SearchJobsFilterOperator_CONTAINS = SearchJobsFilterOperator' "CONTAINS"
+
+pattern SearchJobsFilterOperator_EQUAL :: SearchJobsFilterOperator
+pattern SearchJobsFilterOperator_EQUAL = SearchJobsFilterOperator' "EQUAL"
+
+pattern SearchJobsFilterOperator_GT :: SearchJobsFilterOperator
+pattern SearchJobsFilterOperator_GT = SearchJobsFilterOperator' "GT"
+
+pattern SearchJobsFilterOperator_GTE :: SearchJobsFilterOperator
+pattern SearchJobsFilterOperator_GTE = SearchJobsFilterOperator' "GTE"
+
+pattern SearchJobsFilterOperator_LT :: SearchJobsFilterOperator
+pattern SearchJobsFilterOperator_LT = SearchJobsFilterOperator' "LT"
+
+pattern SearchJobsFilterOperator_LTE :: SearchJobsFilterOperator
+pattern SearchJobsFilterOperator_LTE = SearchJobsFilterOperator' "LTE"
+
+{-# COMPLETE
+  SearchJobsFilterOperator_BETWEEN,
+  SearchJobsFilterOperator_CONTAINS,
+  SearchJobsFilterOperator_EQUAL,
+  SearchJobsFilterOperator_GT,
+  SearchJobsFilterOperator_GTE,
+  SearchJobsFilterOperator_LT,
+  SearchJobsFilterOperator_LTE,
+  SearchJobsFilterOperator'
+  #-}
diff --git a/gen/Amazonka/Braket/Types/SearchQuantumTasksFilter.hs b/gen/Amazonka/Braket/Types/SearchQuantumTasksFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/SearchQuantumTasksFilter.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.SearchQuantumTasksFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.SearchQuantumTasksFilter where
+
+import Amazonka.Braket.Types.SearchQuantumTasksFilterOperator
+import qualified 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 filter to use to search for tasks.
+--
+-- /See:/ 'newSearchQuantumTasksFilter' smart constructor.
+data SearchQuantumTasksFilter = SearchQuantumTasksFilter'
+  { -- | The name of the device used for the task.
+    name :: Prelude.Text,
+    -- | An operator to use in the filter.
+    operator :: SearchQuantumTasksFilterOperator,
+    -- | The values to use for the filter.
+    values :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchQuantumTasksFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'searchQuantumTasksFilter_name' - The name of the device used for the task.
+--
+-- 'operator', 'searchQuantumTasksFilter_operator' - An operator to use in the filter.
+--
+-- 'values', 'searchQuantumTasksFilter_values' - The values to use for the filter.
+newSearchQuantumTasksFilter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'operator'
+  SearchQuantumTasksFilterOperator ->
+  -- | 'values'
+  Prelude.NonEmpty Prelude.Text ->
+  SearchQuantumTasksFilter
+newSearchQuantumTasksFilter
+  pName_
+  pOperator_
+  pValues_ =
+    SearchQuantumTasksFilter'
+      { name = pName_,
+        operator = pOperator_,
+        values = Lens.coerced Lens.# pValues_
+      }
+
+-- | The name of the device used for the task.
+searchQuantumTasksFilter_name :: Lens.Lens' SearchQuantumTasksFilter Prelude.Text
+searchQuantumTasksFilter_name = Lens.lens (\SearchQuantumTasksFilter' {name} -> name) (\s@SearchQuantumTasksFilter' {} a -> s {name = a} :: SearchQuantumTasksFilter)
+
+-- | An operator to use in the filter.
+searchQuantumTasksFilter_operator :: Lens.Lens' SearchQuantumTasksFilter SearchQuantumTasksFilterOperator
+searchQuantumTasksFilter_operator = Lens.lens (\SearchQuantumTasksFilter' {operator} -> operator) (\s@SearchQuantumTasksFilter' {} a -> s {operator = a} :: SearchQuantumTasksFilter)
+
+-- | The values to use for the filter.
+searchQuantumTasksFilter_values :: Lens.Lens' SearchQuantumTasksFilter (Prelude.NonEmpty Prelude.Text)
+searchQuantumTasksFilter_values = Lens.lens (\SearchQuantumTasksFilter' {values} -> values) (\s@SearchQuantumTasksFilter' {} a -> s {values = a} :: SearchQuantumTasksFilter) Prelude.. Lens.coerced
+
+instance Prelude.Hashable SearchQuantumTasksFilter where
+  hashWithSalt _salt SearchQuantumTasksFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` operator
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData SearchQuantumTasksFilter where
+  rnf SearchQuantumTasksFilter' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf operator
+      `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON SearchQuantumTasksFilter where
+  toJSON SearchQuantumTasksFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("name" Data..= name),
+            Prelude.Just ("operator" Data..= operator),
+            Prelude.Just ("values" Data..= values)
+          ]
+      )
diff --git a/gen/Amazonka/Braket/Types/SearchQuantumTasksFilterOperator.hs b/gen/Amazonka/Braket/Types/SearchQuantumTasksFilterOperator.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/Types/SearchQuantumTasksFilterOperator.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Braket.Types.SearchQuantumTasksFilterOperator
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Braket.Types.SearchQuantumTasksFilterOperator
+  ( SearchQuantumTasksFilterOperator
+      ( ..,
+        SearchQuantumTasksFilterOperator_BETWEEN,
+        SearchQuantumTasksFilterOperator_EQUAL,
+        SearchQuantumTasksFilterOperator_GT,
+        SearchQuantumTasksFilterOperator_GTE,
+        SearchQuantumTasksFilterOperator_LT,
+        SearchQuantumTasksFilterOperator_LTE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SearchQuantumTasksFilterOperator = SearchQuantumTasksFilterOperator'
+  { fromSearchQuantumTasksFilterOperator ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SearchQuantumTasksFilterOperator_BETWEEN :: SearchQuantumTasksFilterOperator
+pattern SearchQuantumTasksFilterOperator_BETWEEN = SearchQuantumTasksFilterOperator' "BETWEEN"
+
+pattern SearchQuantumTasksFilterOperator_EQUAL :: SearchQuantumTasksFilterOperator
+pattern SearchQuantumTasksFilterOperator_EQUAL = SearchQuantumTasksFilterOperator' "EQUAL"
+
+pattern SearchQuantumTasksFilterOperator_GT :: SearchQuantumTasksFilterOperator
+pattern SearchQuantumTasksFilterOperator_GT = SearchQuantumTasksFilterOperator' "GT"
+
+pattern SearchQuantumTasksFilterOperator_GTE :: SearchQuantumTasksFilterOperator
+pattern SearchQuantumTasksFilterOperator_GTE = SearchQuantumTasksFilterOperator' "GTE"
+
+pattern SearchQuantumTasksFilterOperator_LT :: SearchQuantumTasksFilterOperator
+pattern SearchQuantumTasksFilterOperator_LT = SearchQuantumTasksFilterOperator' "LT"
+
+pattern SearchQuantumTasksFilterOperator_LTE :: SearchQuantumTasksFilterOperator
+pattern SearchQuantumTasksFilterOperator_LTE = SearchQuantumTasksFilterOperator' "LTE"
+
+{-# COMPLETE
+  SearchQuantumTasksFilterOperator_BETWEEN,
+  SearchQuantumTasksFilterOperator_EQUAL,
+  SearchQuantumTasksFilterOperator_GT,
+  SearchQuantumTasksFilterOperator_GTE,
+  SearchQuantumTasksFilterOperator_LT,
+  SearchQuantumTasksFilterOperator_LTE,
+  SearchQuantumTasksFilterOperator'
+  #-}
diff --git a/gen/Amazonka/Braket/UntagResource.hs b/gen/Amazonka/Braket/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/UntagResource.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.Braket.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)
+--
+-- Remove tags from a resource.
+module Amazonka.Braket.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | Specify the @resourceArn@ for the resource from which to remove the
+    -- tags.
+    resourceArn :: Prelude.Text,
+    -- | Specify the keys for the tags to remove from the 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' - Specify the @resourceArn@ for the resource from which to remove the
+-- tags.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - Specify the keys for the tags to remove from the resource.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | Specify the @resourceArn@ for the resource from which to remove the
+-- tags.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | Specify the keys for the tags to remove from the 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.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Braket/Waiters.hs b/gen/Amazonka/Braket/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Braket/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.Braket.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.Braket.Waiters where
+
+import Amazonka.Braket.Lens
+import Amazonka.Braket.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
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.Braket
+import Test.Amazonka.Braket.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "Braket"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Braket.hs b/test/Test/Amazonka/Braket.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Braket.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.Braket
+-- Copyright   : (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.Braket
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/Braket/Internal.hs b/test/Test/Amazonka/Braket/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Braket/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.Braket.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.Braket.Internal where
diff --git a/test/Test/Amazonka/Gen/Braket.hs b/test/Test/Amazonka/Gen/Braket.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/Braket.hs
@@ -0,0 +1,298 @@
+{-# 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.Braket
+-- Copyright   : (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.Braket where
+
+import Amazonka.Braket
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Braket.Internal
+import Test.Amazonka.Fixture
+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"
+--         [ requestCancelJob $
+--             newCancelJob
+--
+--         , requestCancelQuantumTask $
+--             newCancelQuantumTask
+--
+--         , requestCreateJob $
+--             newCreateJob
+--
+--         , requestCreateQuantumTask $
+--             newCreateQuantumTask
+--
+--         , requestGetDevice $
+--             newGetDevice
+--
+--         , requestGetJob $
+--             newGetJob
+--
+--         , requestGetQuantumTask $
+--             newGetQuantumTask
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestSearchDevices $
+--             newSearchDevices
+--
+--         , requestSearchJobs $
+--             newSearchJobs
+--
+--         , requestSearchQuantumTasks $
+--             newSearchQuantumTasks
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCancelJob $
+--             newCancelJobResponse
+--
+--         , responseCancelQuantumTask $
+--             newCancelQuantumTaskResponse
+--
+--         , responseCreateJob $
+--             newCreateJobResponse
+--
+--         , responseCreateQuantumTask $
+--             newCreateQuantumTaskResponse
+--
+--         , responseGetDevice $
+--             newGetDeviceResponse
+--
+--         , responseGetJob $
+--             newGetJobResponse
+--
+--         , responseGetQuantumTask $
+--             newGetQuantumTaskResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseSearchDevices $
+--             newSearchDevicesResponse
+--
+--         , responseSearchJobs $
+--             newSearchJobsResponse
+--
+--         , responseSearchQuantumTasks $
+--             newSearchQuantumTasksResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCancelJob :: CancelJob -> TestTree
+requestCancelJob =
+  req
+    "CancelJob"
+    "fixture/CancelJob.yaml"
+
+requestCancelQuantumTask :: CancelQuantumTask -> TestTree
+requestCancelQuantumTask =
+  req
+    "CancelQuantumTask"
+    "fixture/CancelQuantumTask.yaml"
+
+requestCreateJob :: CreateJob -> TestTree
+requestCreateJob =
+  req
+    "CreateJob"
+    "fixture/CreateJob.yaml"
+
+requestCreateQuantumTask :: CreateQuantumTask -> TestTree
+requestCreateQuantumTask =
+  req
+    "CreateQuantumTask"
+    "fixture/CreateQuantumTask.yaml"
+
+requestGetDevice :: GetDevice -> TestTree
+requestGetDevice =
+  req
+    "GetDevice"
+    "fixture/GetDevice.yaml"
+
+requestGetJob :: GetJob -> TestTree
+requestGetJob =
+  req
+    "GetJob"
+    "fixture/GetJob.yaml"
+
+requestGetQuantumTask :: GetQuantumTask -> TestTree
+requestGetQuantumTask =
+  req
+    "GetQuantumTask"
+    "fixture/GetQuantumTask.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestSearchDevices :: SearchDevices -> TestTree
+requestSearchDevices =
+  req
+    "SearchDevices"
+    "fixture/SearchDevices.yaml"
+
+requestSearchJobs :: SearchJobs -> TestTree
+requestSearchJobs =
+  req
+    "SearchJobs"
+    "fixture/SearchJobs.yaml"
+
+requestSearchQuantumTasks :: SearchQuantumTasks -> TestTree
+requestSearchQuantumTasks =
+  req
+    "SearchQuantumTasks"
+    "fixture/SearchQuantumTasks.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+-- Responses
+
+responseCancelJob :: CancelJobResponse -> TestTree
+responseCancelJob =
+  res
+    "CancelJobResponse"
+    "fixture/CancelJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CancelJob)
+
+responseCancelQuantumTask :: CancelQuantumTaskResponse -> TestTree
+responseCancelQuantumTask =
+  res
+    "CancelQuantumTaskResponse"
+    "fixture/CancelQuantumTaskResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CancelQuantumTask)
+
+responseCreateJob :: CreateJobResponse -> TestTree
+responseCreateJob =
+  res
+    "CreateJobResponse"
+    "fixture/CreateJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateJob)
+
+responseCreateQuantumTask :: CreateQuantumTaskResponse -> TestTree
+responseCreateQuantumTask =
+  res
+    "CreateQuantumTaskResponse"
+    "fixture/CreateQuantumTaskResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateQuantumTask)
+
+responseGetDevice :: GetDeviceResponse -> TestTree
+responseGetDevice =
+  res
+    "GetDeviceResponse"
+    "fixture/GetDeviceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDevice)
+
+responseGetJob :: GetJobResponse -> TestTree
+responseGetJob =
+  res
+    "GetJobResponse"
+    "fixture/GetJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetJob)
+
+responseGetQuantumTask :: GetQuantumTaskResponse -> TestTree
+responseGetQuantumTask =
+  res
+    "GetQuantumTaskResponse"
+    "fixture/GetQuantumTaskResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetQuantumTask)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseSearchDevices :: SearchDevicesResponse -> TestTree
+responseSearchDevices =
+  res
+    "SearchDevicesResponse"
+    "fixture/SearchDevicesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchDevices)
+
+responseSearchJobs :: SearchJobsResponse -> TestTree
+responseSearchJobs =
+  res
+    "SearchJobsResponse"
+    "fixture/SearchJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchJobs)
+
+responseSearchQuantumTasks :: SearchQuantumTasksResponse -> TestTree
+responseSearchQuantumTasks =
+  res
+    "SearchQuantumTasksResponse"
+    "fixture/SearchQuantumTasksResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchQuantumTasks)
+
+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)
