packages feed

amazonka-voice-id (empty) → 2.0

raw patch · 113 files changed

+11406/−0 lines, 113 filesdep +amazonka-coredep +amazonka-testdep +amazonka-voice-id

Dependencies added: amazonka-core, amazonka-test, amazonka-voice-id, base, bytestring, case-insensitive, tasty, tasty-hunit, text, time, unordered-containers

Files

+ LICENSE view
@@ -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.
+ README.md view
@@ -0,0 +1,44 @@+# Amazon Voice ID SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2021-09-27@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-voice-id)+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.VoiceId](http://hackage.haskell.org/package/amazonka-voice-id/docs/Amazonka-VoiceId.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-voice-id` 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.
+ amazonka-voice-id.cabal view
@@ -0,0 +1,142 @@+cabal-version:      2.2+name:               amazonka-voice-id+version:            2.0+synopsis:           Amazon Voice ID 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 @2021-09-27@ of the AWS service descriptions, licensed under Apache 2.0.+  .+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.+  .+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.+  .+  Generated lenses can be found in "Amazonka.VoiceId.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.VoiceId" 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-voice-id++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.VoiceId+    Amazonka.VoiceId.CreateDomain+    Amazonka.VoiceId.DeleteDomain+    Amazonka.VoiceId.DeleteFraudster+    Amazonka.VoiceId.DeleteSpeaker+    Amazonka.VoiceId.DescribeDomain+    Amazonka.VoiceId.DescribeFraudster+    Amazonka.VoiceId.DescribeFraudsterRegistrationJob+    Amazonka.VoiceId.DescribeSpeaker+    Amazonka.VoiceId.DescribeSpeakerEnrollmentJob+    Amazonka.VoiceId.EvaluateSession+    Amazonka.VoiceId.Lens+    Amazonka.VoiceId.ListDomains+    Amazonka.VoiceId.ListFraudsterRegistrationJobs+    Amazonka.VoiceId.ListSpeakerEnrollmentJobs+    Amazonka.VoiceId.ListSpeakers+    Amazonka.VoiceId.ListTagsForResource+    Amazonka.VoiceId.OptOutSpeaker+    Amazonka.VoiceId.StartFraudsterRegistrationJob+    Amazonka.VoiceId.StartSpeakerEnrollmentJob+    Amazonka.VoiceId.TagResource+    Amazonka.VoiceId.Types+    Amazonka.VoiceId.Types.AuthenticationConfiguration+    Amazonka.VoiceId.Types.AuthenticationDecision+    Amazonka.VoiceId.Types.AuthenticationResult+    Amazonka.VoiceId.Types.Domain+    Amazonka.VoiceId.Types.DomainStatus+    Amazonka.VoiceId.Types.DomainSummary+    Amazonka.VoiceId.Types.DuplicateRegistrationAction+    Amazonka.VoiceId.Types.EnrollmentConfig+    Amazonka.VoiceId.Types.EnrollmentJobFraudDetectionConfig+    Amazonka.VoiceId.Types.ExistingEnrollmentAction+    Amazonka.VoiceId.Types.FailureDetails+    Amazonka.VoiceId.Types.FraudDetectionAction+    Amazonka.VoiceId.Types.FraudDetectionConfiguration+    Amazonka.VoiceId.Types.FraudDetectionDecision+    Amazonka.VoiceId.Types.FraudDetectionReason+    Amazonka.VoiceId.Types.FraudDetectionResult+    Amazonka.VoiceId.Types.FraudRiskDetails+    Amazonka.VoiceId.Types.Fraudster+    Amazonka.VoiceId.Types.FraudsterRegistrationJob+    Amazonka.VoiceId.Types.FraudsterRegistrationJobStatus+    Amazonka.VoiceId.Types.FraudsterRegistrationJobSummary+    Amazonka.VoiceId.Types.InputDataConfig+    Amazonka.VoiceId.Types.JobProgress+    Amazonka.VoiceId.Types.KnownFraudsterRisk+    Amazonka.VoiceId.Types.OutputDataConfig+    Amazonka.VoiceId.Types.RegistrationConfig+    Amazonka.VoiceId.Types.ServerSideEncryptionConfiguration+    Amazonka.VoiceId.Types.ServerSideEncryptionUpdateDetails+    Amazonka.VoiceId.Types.ServerSideEncryptionUpdateStatus+    Amazonka.VoiceId.Types.Speaker+    Amazonka.VoiceId.Types.SpeakerEnrollmentJob+    Amazonka.VoiceId.Types.SpeakerEnrollmentJobStatus+    Amazonka.VoiceId.Types.SpeakerEnrollmentJobSummary+    Amazonka.VoiceId.Types.SpeakerStatus+    Amazonka.VoiceId.Types.SpeakerSummary+    Amazonka.VoiceId.Types.StreamingStatus+    Amazonka.VoiceId.Types.Tag+    Amazonka.VoiceId.Types.VoiceSpoofingRisk+    Amazonka.VoiceId.UntagResource+    Amazonka.VoiceId.UpdateDomain+    Amazonka.VoiceId.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-voice-id-test+  type:             exitcode-stdio-1.0+  default-language: Haskell2010+  hs-source-dirs:   test+  main-is:          Main.hs+  ghc-options:      -Wall -threaded++  -- This section is encoded by the template and any modules added by+  -- hand outside these namespaces will not correctly be added to the+  -- distribution package.+  other-modules:+    Test.Amazonka.Gen.VoiceId+    Test.Amazonka.VoiceId+    Test.Amazonka.VoiceId.Internal++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-test         >=2.0 && <2.1+    , amazonka-voice-id+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/CreateDomain.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateDomainResponse.proto view
+ fixture/DeleteDomain.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteDomainResponse.proto view
+ fixture/DeleteFraudster.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteFraudsterResponse.proto view
+ fixture/DeleteSpeaker.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteSpeakerResponse.proto view
+ fixture/DescribeDomain.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeDomainResponse.proto view
+ fixture/DescribeFraudster.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeFraudsterRegistrationJob.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeFraudsterRegistrationJobResponse.proto view
+ fixture/DescribeFraudsterResponse.proto view
+ fixture/DescribeSpeaker.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeSpeakerEnrollmentJob.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeSpeakerEnrollmentJobResponse.proto view
+ fixture/DescribeSpeakerResponse.proto view
+ fixture/EvaluateSession.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/EvaluateSessionResponse.proto view
+ fixture/ListDomains.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListDomainsResponse.proto view
+ fixture/ListFraudsterRegistrationJobs.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListFraudsterRegistrationJobsResponse.proto view
+ fixture/ListSpeakerEnrollmentJobs.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListSpeakerEnrollmentJobsResponse.proto view
+ fixture/ListSpeakers.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListSpeakersResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListTagsForResourceResponse.proto view
+ fixture/OptOutSpeaker.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/OptOutSpeakerResponse.proto view
+ fixture/StartFraudsterRegistrationJob.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/StartFraudsterRegistrationJobResponse.proto view
+ fixture/StartSpeakerEnrollmentJob.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/StartSpeakerEnrollmentJobResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/TagResourceResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UntagResourceResponse.proto view
+ fixture/UpdateDomain.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/voiceid/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  voiceid.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateDomainResponse.proto view
+ gen/Amazonka/VoiceId.hs view
@@ -0,0 +1,370 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.VoiceId+-- 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 @2021-09-27@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Amazon Connect Voice ID provides real-time caller authentication and+-- fraud screening. This guide describes the APIs used for this service.+module Amazonka.VoiceId+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** ConflictException+    _ConflictException,++    -- ** InternalServerException+    _InternalServerException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceQuotaExceededException+    _ServiceQuotaExceededException,++    -- ** ThrottlingException+    _ThrottlingException,++    -- ** ValidationException+    _ValidationException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** CreateDomain+    CreateDomain (CreateDomain'),+    newCreateDomain,+    CreateDomainResponse (CreateDomainResponse'),+    newCreateDomainResponse,++    -- ** DeleteDomain+    DeleteDomain (DeleteDomain'),+    newDeleteDomain,+    DeleteDomainResponse (DeleteDomainResponse'),+    newDeleteDomainResponse,++    -- ** DeleteFraudster+    DeleteFraudster (DeleteFraudster'),+    newDeleteFraudster,+    DeleteFraudsterResponse (DeleteFraudsterResponse'),+    newDeleteFraudsterResponse,++    -- ** DeleteSpeaker+    DeleteSpeaker (DeleteSpeaker'),+    newDeleteSpeaker,+    DeleteSpeakerResponse (DeleteSpeakerResponse'),+    newDeleteSpeakerResponse,++    -- ** DescribeDomain+    DescribeDomain (DescribeDomain'),+    newDescribeDomain,+    DescribeDomainResponse (DescribeDomainResponse'),+    newDescribeDomainResponse,++    -- ** DescribeFraudster+    DescribeFraudster (DescribeFraudster'),+    newDescribeFraudster,+    DescribeFraudsterResponse (DescribeFraudsterResponse'),+    newDescribeFraudsterResponse,++    -- ** DescribeFraudsterRegistrationJob+    DescribeFraudsterRegistrationJob (DescribeFraudsterRegistrationJob'),+    newDescribeFraudsterRegistrationJob,+    DescribeFraudsterRegistrationJobResponse (DescribeFraudsterRegistrationJobResponse'),+    newDescribeFraudsterRegistrationJobResponse,++    -- ** DescribeSpeaker+    DescribeSpeaker (DescribeSpeaker'),+    newDescribeSpeaker,+    DescribeSpeakerResponse (DescribeSpeakerResponse'),+    newDescribeSpeakerResponse,++    -- ** DescribeSpeakerEnrollmentJob+    DescribeSpeakerEnrollmentJob (DescribeSpeakerEnrollmentJob'),+    newDescribeSpeakerEnrollmentJob,+    DescribeSpeakerEnrollmentJobResponse (DescribeSpeakerEnrollmentJobResponse'),+    newDescribeSpeakerEnrollmentJobResponse,++    -- ** EvaluateSession+    EvaluateSession (EvaluateSession'),+    newEvaluateSession,+    EvaluateSessionResponse (EvaluateSessionResponse'),+    newEvaluateSessionResponse,++    -- ** ListDomains (Paginated)+    ListDomains (ListDomains'),+    newListDomains,+    ListDomainsResponse (ListDomainsResponse'),+    newListDomainsResponse,++    -- ** ListFraudsterRegistrationJobs (Paginated)+    ListFraudsterRegistrationJobs (ListFraudsterRegistrationJobs'),+    newListFraudsterRegistrationJobs,+    ListFraudsterRegistrationJobsResponse (ListFraudsterRegistrationJobsResponse'),+    newListFraudsterRegistrationJobsResponse,++    -- ** ListSpeakerEnrollmentJobs (Paginated)+    ListSpeakerEnrollmentJobs (ListSpeakerEnrollmentJobs'),+    newListSpeakerEnrollmentJobs,+    ListSpeakerEnrollmentJobsResponse (ListSpeakerEnrollmentJobsResponse'),+    newListSpeakerEnrollmentJobsResponse,++    -- ** ListSpeakers (Paginated)+    ListSpeakers (ListSpeakers'),+    newListSpeakers,+    ListSpeakersResponse (ListSpeakersResponse'),+    newListSpeakersResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** OptOutSpeaker+    OptOutSpeaker (OptOutSpeaker'),+    newOptOutSpeaker,+    OptOutSpeakerResponse (OptOutSpeakerResponse'),+    newOptOutSpeakerResponse,++    -- ** StartFraudsterRegistrationJob+    StartFraudsterRegistrationJob (StartFraudsterRegistrationJob'),+    newStartFraudsterRegistrationJob,+    StartFraudsterRegistrationJobResponse (StartFraudsterRegistrationJobResponse'),+    newStartFraudsterRegistrationJobResponse,++    -- ** StartSpeakerEnrollmentJob+    StartSpeakerEnrollmentJob (StartSpeakerEnrollmentJob'),+    newStartSpeakerEnrollmentJob,+    StartSpeakerEnrollmentJobResponse (StartSpeakerEnrollmentJobResponse'),+    newStartSpeakerEnrollmentJobResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateDomain+    UpdateDomain (UpdateDomain'),+    newUpdateDomain,+    UpdateDomainResponse (UpdateDomainResponse'),+    newUpdateDomainResponse,++    -- * Types++    -- ** AuthenticationDecision+    AuthenticationDecision (..),++    -- ** DomainStatus+    DomainStatus (..),++    -- ** DuplicateRegistrationAction+    DuplicateRegistrationAction (..),++    -- ** ExistingEnrollmentAction+    ExistingEnrollmentAction (..),++    -- ** FraudDetectionAction+    FraudDetectionAction (..),++    -- ** FraudDetectionDecision+    FraudDetectionDecision (..),++    -- ** FraudDetectionReason+    FraudDetectionReason (..),++    -- ** FraudsterRegistrationJobStatus+    FraudsterRegistrationJobStatus (..),++    -- ** ServerSideEncryptionUpdateStatus+    ServerSideEncryptionUpdateStatus (..),++    -- ** SpeakerEnrollmentJobStatus+    SpeakerEnrollmentJobStatus (..),++    -- ** SpeakerStatus+    SpeakerStatus (..),++    -- ** StreamingStatus+    StreamingStatus (..),++    -- ** AuthenticationConfiguration+    AuthenticationConfiguration (AuthenticationConfiguration'),+    newAuthenticationConfiguration,++    -- ** AuthenticationResult+    AuthenticationResult (AuthenticationResult'),+    newAuthenticationResult,++    -- ** Domain+    Domain (Domain'),+    newDomain,++    -- ** DomainSummary+    DomainSummary (DomainSummary'),+    newDomainSummary,++    -- ** EnrollmentConfig+    EnrollmentConfig (EnrollmentConfig'),+    newEnrollmentConfig,++    -- ** EnrollmentJobFraudDetectionConfig+    EnrollmentJobFraudDetectionConfig (EnrollmentJobFraudDetectionConfig'),+    newEnrollmentJobFraudDetectionConfig,++    -- ** FailureDetails+    FailureDetails (FailureDetails'),+    newFailureDetails,++    -- ** FraudDetectionConfiguration+    FraudDetectionConfiguration (FraudDetectionConfiguration'),+    newFraudDetectionConfiguration,++    -- ** FraudDetectionResult+    FraudDetectionResult (FraudDetectionResult'),+    newFraudDetectionResult,++    -- ** FraudRiskDetails+    FraudRiskDetails (FraudRiskDetails'),+    newFraudRiskDetails,++    -- ** Fraudster+    Fraudster (Fraudster'),+    newFraudster,++    -- ** FraudsterRegistrationJob+    FraudsterRegistrationJob (FraudsterRegistrationJob'),+    newFraudsterRegistrationJob,++    -- ** FraudsterRegistrationJobSummary+    FraudsterRegistrationJobSummary (FraudsterRegistrationJobSummary'),+    newFraudsterRegistrationJobSummary,++    -- ** InputDataConfig+    InputDataConfig (InputDataConfig'),+    newInputDataConfig,++    -- ** JobProgress+    JobProgress (JobProgress'),+    newJobProgress,++    -- ** KnownFraudsterRisk+    KnownFraudsterRisk (KnownFraudsterRisk'),+    newKnownFraudsterRisk,++    -- ** OutputDataConfig+    OutputDataConfig (OutputDataConfig'),+    newOutputDataConfig,++    -- ** RegistrationConfig+    RegistrationConfig (RegistrationConfig'),+    newRegistrationConfig,++    -- ** ServerSideEncryptionConfiguration+    ServerSideEncryptionConfiguration (ServerSideEncryptionConfiguration'),+    newServerSideEncryptionConfiguration,++    -- ** ServerSideEncryptionUpdateDetails+    ServerSideEncryptionUpdateDetails (ServerSideEncryptionUpdateDetails'),+    newServerSideEncryptionUpdateDetails,++    -- ** Speaker+    Speaker (Speaker'),+    newSpeaker,++    -- ** SpeakerEnrollmentJob+    SpeakerEnrollmentJob (SpeakerEnrollmentJob'),+    newSpeakerEnrollmentJob,++    -- ** SpeakerEnrollmentJobSummary+    SpeakerEnrollmentJobSummary (SpeakerEnrollmentJobSummary'),+    newSpeakerEnrollmentJobSummary,++    -- ** SpeakerSummary+    SpeakerSummary (SpeakerSummary'),+    newSpeakerSummary,++    -- ** Tag+    Tag (Tag'),+    newTag,++    -- ** VoiceSpoofingRisk+    VoiceSpoofingRisk (VoiceSpoofingRisk'),+    newVoiceSpoofingRisk,+  )+where++import Amazonka.VoiceId.CreateDomain+import Amazonka.VoiceId.DeleteDomain+import Amazonka.VoiceId.DeleteFraudster+import Amazonka.VoiceId.DeleteSpeaker+import Amazonka.VoiceId.DescribeDomain+import Amazonka.VoiceId.DescribeFraudster+import Amazonka.VoiceId.DescribeFraudsterRegistrationJob+import Amazonka.VoiceId.DescribeSpeaker+import Amazonka.VoiceId.DescribeSpeakerEnrollmentJob+import Amazonka.VoiceId.EvaluateSession+import Amazonka.VoiceId.Lens+import Amazonka.VoiceId.ListDomains+import Amazonka.VoiceId.ListFraudsterRegistrationJobs+import Amazonka.VoiceId.ListSpeakerEnrollmentJobs+import Amazonka.VoiceId.ListSpeakers+import Amazonka.VoiceId.ListTagsForResource+import Amazonka.VoiceId.OptOutSpeaker+import Amazonka.VoiceId.StartFraudsterRegistrationJob+import Amazonka.VoiceId.StartSpeakerEnrollmentJob+import Amazonka.VoiceId.TagResource+import Amazonka.VoiceId.Types+import Amazonka.VoiceId.UntagResource+import Amazonka.VoiceId.UpdateDomain+import Amazonka.VoiceId.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 'VoiceId'.++-- $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.
+ gen/Amazonka/VoiceId/CreateDomain.hs view
@@ -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.VoiceId.CreateDomain+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a domain that contains all Amazon Connect Voice ID data, such as+-- speakers, fraudsters, customer audio, and voiceprints.+module Amazonka.VoiceId.CreateDomain+  ( -- * Creating a Request+    CreateDomain (..),+    newCreateDomain,++    -- * Request Lenses+    createDomain_clientToken,+    createDomain_description,+    createDomain_tags,+    createDomain_name,+    createDomain_serverSideEncryptionConfiguration,++    -- * Destructuring the Response+    CreateDomainResponse (..),+    newCreateDomainResponse,++    -- * Response Lenses+    createDomainResponse_domain,+    createDomainResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newCreateDomain' smart constructor.+data CreateDomain = CreateDomain'+  { -- | The idempotency token for creating a new domain. If not provided, Amazon+    -- Web Services SDK populates this field.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | A brief description of the domain.+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | A list of tags you want added to the domain.+    tags :: Prelude.Maybe [Tag],+    -- | The name of the domain.+    name :: Data.Sensitive Prelude.Text,+    -- | The configuration, containing the KMS key identifier, to be used by+    -- Voice ID for the server-side encryption of your data. Refer to+    -- <https://docs.aws.amazon.com/connect/latest/adminguide/encryption-at-rest.html#encryption-at-rest-voiceid Amazon Connect Voice ID encryption at rest>+    -- for more details on how the KMS key is used.+    serverSideEncryptionConfiguration :: ServerSideEncryptionConfiguration+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDomain' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createDomain_clientToken' - The idempotency token for creating a new domain. If not provided, Amazon+-- Web Services SDK populates this field.+--+-- 'description', 'createDomain_description' - A brief description of the domain.+--+-- 'tags', 'createDomain_tags' - A list of tags you want added to the domain.+--+-- 'name', 'createDomain_name' - The name of the domain.+--+-- 'serverSideEncryptionConfiguration', 'createDomain_serverSideEncryptionConfiguration' - The configuration, containing the KMS key identifier, to be used by+-- Voice ID for the server-side encryption of your data. Refer to+-- <https://docs.aws.amazon.com/connect/latest/adminguide/encryption-at-rest.html#encryption-at-rest-voiceid Amazon Connect Voice ID encryption at rest>+-- for more details on how the KMS key is used.+newCreateDomain ::+  -- | 'name'+  Prelude.Text ->+  -- | 'serverSideEncryptionConfiguration'+  ServerSideEncryptionConfiguration ->+  CreateDomain+newCreateDomain+  pName_+  pServerSideEncryptionConfiguration_ =+    CreateDomain'+      { clientToken = Prelude.Nothing,+        description = Prelude.Nothing,+        tags = Prelude.Nothing,+        name = Data._Sensitive Lens.# pName_,+        serverSideEncryptionConfiguration =+          pServerSideEncryptionConfiguration_+      }++-- | The idempotency token for creating a new domain. If not provided, Amazon+-- Web Services SDK populates this field.+createDomain_clientToken :: Lens.Lens' CreateDomain (Prelude.Maybe Prelude.Text)+createDomain_clientToken = Lens.lens (\CreateDomain' {clientToken} -> clientToken) (\s@CreateDomain' {} a -> s {clientToken = a} :: CreateDomain)++-- | A brief description of the domain.+createDomain_description :: Lens.Lens' CreateDomain (Prelude.Maybe Prelude.Text)+createDomain_description = Lens.lens (\CreateDomain' {description} -> description) (\s@CreateDomain' {} a -> s {description = a} :: CreateDomain) Prelude.. Lens.mapping Data._Sensitive++-- | A list of tags you want added to the domain.+createDomain_tags :: Lens.Lens' CreateDomain (Prelude.Maybe [Tag])+createDomain_tags = Lens.lens (\CreateDomain' {tags} -> tags) (\s@CreateDomain' {} a -> s {tags = a} :: CreateDomain) Prelude.. Lens.mapping Lens.coerced++-- | The name of the domain.+createDomain_name :: Lens.Lens' CreateDomain Prelude.Text+createDomain_name = Lens.lens (\CreateDomain' {name} -> name) (\s@CreateDomain' {} a -> s {name = a} :: CreateDomain) Prelude.. Data._Sensitive++-- | The configuration, containing the KMS key identifier, to be used by+-- Voice ID for the server-side encryption of your data. Refer to+-- <https://docs.aws.amazon.com/connect/latest/adminguide/encryption-at-rest.html#encryption-at-rest-voiceid Amazon Connect Voice ID encryption at rest>+-- for more details on how the KMS key is used.+createDomain_serverSideEncryptionConfiguration :: Lens.Lens' CreateDomain ServerSideEncryptionConfiguration+createDomain_serverSideEncryptionConfiguration = Lens.lens (\CreateDomain' {serverSideEncryptionConfiguration} -> serverSideEncryptionConfiguration) (\s@CreateDomain' {} a -> s {serverSideEncryptionConfiguration = a} :: CreateDomain)++instance Core.AWSRequest CreateDomain where+  type AWSResponse CreateDomain = CreateDomainResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateDomainResponse'+            Prelude.<$> (x Data..?> "Domain")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateDomain where+  hashWithSalt _salt CreateDomain' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` serverSideEncryptionConfiguration++instance Prelude.NFData CreateDomain where+  rnf CreateDomain' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf serverSideEncryptionConfiguration++instance Data.ToHeaders CreateDomain where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.CreateDomain" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateDomain where+  toJSON CreateDomain' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,+            ("Description" Data..=) Prelude.<$> description,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("Name" Data..= name),+            Prelude.Just+              ( "ServerSideEncryptionConfiguration"+                  Data..= serverSideEncryptionConfiguration+              )+          ]+      )++instance Data.ToPath CreateDomain where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateDomain where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateDomainResponse' smart constructor.+data CreateDomainResponse = CreateDomainResponse'+  { -- | Information about the newly created domain.+    domain :: Prelude.Maybe Domain,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDomainResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domain', 'createDomainResponse_domain' - Information about the newly created domain.+--+-- 'httpStatus', 'createDomainResponse_httpStatus' - The response's http status code.+newCreateDomainResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateDomainResponse+newCreateDomainResponse pHttpStatus_ =+  CreateDomainResponse'+    { domain = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the newly created domain.+createDomainResponse_domain :: Lens.Lens' CreateDomainResponse (Prelude.Maybe Domain)+createDomainResponse_domain = Lens.lens (\CreateDomainResponse' {domain} -> domain) (\s@CreateDomainResponse' {} a -> s {domain = a} :: CreateDomainResponse)++-- | The response's http status code.+createDomainResponse_httpStatus :: Lens.Lens' CreateDomainResponse Prelude.Int+createDomainResponse_httpStatus = Lens.lens (\CreateDomainResponse' {httpStatus} -> httpStatus) (\s@CreateDomainResponse' {} a -> s {httpStatus = a} :: CreateDomainResponse)++instance Prelude.NFData CreateDomainResponse where+  rnf CreateDomainResponse' {..} =+    Prelude.rnf domain+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/DeleteDomain.hs view
@@ -0,0 +1,127 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.DeleteDomain+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the specified domain from Voice ID.+module Amazonka.VoiceId.DeleteDomain+  ( -- * Creating a Request+    DeleteDomain (..),+    newDeleteDomain,++    -- * Request Lenses+    deleteDomain_domainId,++    -- * Destructuring the Response+    DeleteDomainResponse (..),+    newDeleteDomainResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newDeleteDomain' smart constructor.+data DeleteDomain = DeleteDomain'+  { -- | The identifier of the domain you want to delete.+    domainId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDomain' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainId', 'deleteDomain_domainId' - The identifier of the domain you want to delete.+newDeleteDomain ::+  -- | 'domainId'+  Prelude.Text ->+  DeleteDomain+newDeleteDomain pDomainId_ =+  DeleteDomain' {domainId = pDomainId_}++-- | The identifier of the domain you want to delete.+deleteDomain_domainId :: Lens.Lens' DeleteDomain Prelude.Text+deleteDomain_domainId = Lens.lens (\DeleteDomain' {domainId} -> domainId) (\s@DeleteDomain' {} a -> s {domainId = a} :: DeleteDomain)++instance Core.AWSRequest DeleteDomain where+  type AWSResponse DeleteDomain = DeleteDomainResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response = Response.receiveNull DeleteDomainResponse'++instance Prelude.Hashable DeleteDomain where+  hashWithSalt _salt DeleteDomain' {..} =+    _salt `Prelude.hashWithSalt` domainId++instance Prelude.NFData DeleteDomain where+  rnf DeleteDomain' {..} = Prelude.rnf domainId++instance Data.ToHeaders DeleteDomain where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.DeleteDomain" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteDomain where+  toJSON DeleteDomain' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("DomainId" Data..= domainId)]+      )++instance Data.ToPath DeleteDomain where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteDomain where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteDomainResponse' smart constructor.+data DeleteDomainResponse = DeleteDomainResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDomainResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteDomainResponse ::+  DeleteDomainResponse+newDeleteDomainResponse = DeleteDomainResponse'++instance Prelude.NFData DeleteDomainResponse where+  rnf _ = ()
+ gen/Amazonka/VoiceId/DeleteFraudster.hs view
@@ -0,0 +1,150 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.DeleteFraudster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the specified fraudster from Voice ID.+module Amazonka.VoiceId.DeleteFraudster+  ( -- * Creating a Request+    DeleteFraudster (..),+    newDeleteFraudster,++    -- * Request Lenses+    deleteFraudster_domainId,+    deleteFraudster_fraudsterId,++    -- * Destructuring the Response+    DeleteFraudsterResponse (..),+    newDeleteFraudsterResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newDeleteFraudster' smart constructor.+data DeleteFraudster = DeleteFraudster'+  { -- | The identifier of the domain containing the fraudster.+    domainId :: Prelude.Text,+    -- | The identifier of the fraudster you want to delete.+    fraudsterId :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteFraudster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainId', 'deleteFraudster_domainId' - The identifier of the domain containing the fraudster.+--+-- 'fraudsterId', 'deleteFraudster_fraudsterId' - The identifier of the fraudster you want to delete.+newDeleteFraudster ::+  -- | 'domainId'+  Prelude.Text ->+  -- | 'fraudsterId'+  Prelude.Text ->+  DeleteFraudster+newDeleteFraudster pDomainId_ pFraudsterId_ =+  DeleteFraudster'+    { domainId = pDomainId_,+      fraudsterId = Data._Sensitive Lens.# pFraudsterId_+    }++-- | The identifier of the domain containing the fraudster.+deleteFraudster_domainId :: Lens.Lens' DeleteFraudster Prelude.Text+deleteFraudster_domainId = Lens.lens (\DeleteFraudster' {domainId} -> domainId) (\s@DeleteFraudster' {} a -> s {domainId = a} :: DeleteFraudster)++-- | The identifier of the fraudster you want to delete.+deleteFraudster_fraudsterId :: Lens.Lens' DeleteFraudster Prelude.Text+deleteFraudster_fraudsterId = Lens.lens (\DeleteFraudster' {fraudsterId} -> fraudsterId) (\s@DeleteFraudster' {} a -> s {fraudsterId = a} :: DeleteFraudster) Prelude.. Data._Sensitive++instance Core.AWSRequest DeleteFraudster where+  type+    AWSResponse DeleteFraudster =+      DeleteFraudsterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull DeleteFraudsterResponse'++instance Prelude.Hashable DeleteFraudster where+  hashWithSalt _salt DeleteFraudster' {..} =+    _salt+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` fraudsterId++instance Prelude.NFData DeleteFraudster where+  rnf DeleteFraudster' {..} =+    Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf fraudsterId++instance Data.ToHeaders DeleteFraudster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.DeleteFraudster" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteFraudster where+  toJSON DeleteFraudster' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just ("FraudsterId" Data..= fraudsterId)+          ]+      )++instance Data.ToPath DeleteFraudster where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteFraudster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteFraudsterResponse' smart constructor.+data DeleteFraudsterResponse = DeleteFraudsterResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteFraudsterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteFraudsterResponse ::+  DeleteFraudsterResponse+newDeleteFraudsterResponse = DeleteFraudsterResponse'++instance Prelude.NFData DeleteFraudsterResponse where+  rnf _ = ()
+ gen/Amazonka/VoiceId/DeleteSpeaker.hs view
@@ -0,0 +1,150 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.DeleteSpeaker+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the specified speaker from Voice ID.+module Amazonka.VoiceId.DeleteSpeaker+  ( -- * Creating a Request+    DeleteSpeaker (..),+    newDeleteSpeaker,++    -- * Request Lenses+    deleteSpeaker_domainId,+    deleteSpeaker_speakerId,++    -- * Destructuring the Response+    DeleteSpeakerResponse (..),+    newDeleteSpeakerResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newDeleteSpeaker' smart constructor.+data DeleteSpeaker = DeleteSpeaker'+  { -- | The identifier of the domain containing the speaker.+    domainId :: Prelude.Text,+    -- | The identifier of the speaker you want to delete.+    speakerId :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSpeaker' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainId', 'deleteSpeaker_domainId' - The identifier of the domain containing the speaker.+--+-- 'speakerId', 'deleteSpeaker_speakerId' - The identifier of the speaker you want to delete.+newDeleteSpeaker ::+  -- | 'domainId'+  Prelude.Text ->+  -- | 'speakerId'+  Prelude.Text ->+  DeleteSpeaker+newDeleteSpeaker pDomainId_ pSpeakerId_ =+  DeleteSpeaker'+    { domainId = pDomainId_,+      speakerId = Data._Sensitive Lens.# pSpeakerId_+    }++-- | The identifier of the domain containing the speaker.+deleteSpeaker_domainId :: Lens.Lens' DeleteSpeaker Prelude.Text+deleteSpeaker_domainId = Lens.lens (\DeleteSpeaker' {domainId} -> domainId) (\s@DeleteSpeaker' {} a -> s {domainId = a} :: DeleteSpeaker)++-- | The identifier of the speaker you want to delete.+deleteSpeaker_speakerId :: Lens.Lens' DeleteSpeaker Prelude.Text+deleteSpeaker_speakerId = Lens.lens (\DeleteSpeaker' {speakerId} -> speakerId) (\s@DeleteSpeaker' {} a -> s {speakerId = a} :: DeleteSpeaker) Prelude.. Data._Sensitive++instance Core.AWSRequest DeleteSpeaker where+  type+    AWSResponse DeleteSpeaker =+      DeleteSpeakerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull DeleteSpeakerResponse'++instance Prelude.Hashable DeleteSpeaker where+  hashWithSalt _salt DeleteSpeaker' {..} =+    _salt+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` speakerId++instance Prelude.NFData DeleteSpeaker where+  rnf DeleteSpeaker' {..} =+    Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf speakerId++instance Data.ToHeaders DeleteSpeaker where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.DeleteSpeaker" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteSpeaker where+  toJSON DeleteSpeaker' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just ("SpeakerId" Data..= speakerId)+          ]+      )++instance Data.ToPath DeleteSpeaker where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteSpeaker where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteSpeakerResponse' smart constructor.+data DeleteSpeakerResponse = DeleteSpeakerResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSpeakerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteSpeakerResponse ::+  DeleteSpeakerResponse+newDeleteSpeakerResponse = DeleteSpeakerResponse'++instance Prelude.NFData DeleteSpeakerResponse where+  rnf _ = ()
+ gen/Amazonka/VoiceId/DescribeDomain.hs view
@@ -0,0 +1,165 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.DescribeDomain+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes the specified domain.+module Amazonka.VoiceId.DescribeDomain+  ( -- * Creating a Request+    DescribeDomain (..),+    newDescribeDomain,++    -- * Request Lenses+    describeDomain_domainId,++    -- * Destructuring the Response+    DescribeDomainResponse (..),+    newDescribeDomainResponse,++    -- * Response Lenses+    describeDomainResponse_domain,+    describeDomainResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newDescribeDomain' smart constructor.+data DescribeDomain = DescribeDomain'+  { -- | The identifier of the domain you are describing.+    domainId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeDomain' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainId', 'describeDomain_domainId' - The identifier of the domain you are describing.+newDescribeDomain ::+  -- | 'domainId'+  Prelude.Text ->+  DescribeDomain+newDescribeDomain pDomainId_ =+  DescribeDomain' {domainId = pDomainId_}++-- | The identifier of the domain you are describing.+describeDomain_domainId :: Lens.Lens' DescribeDomain Prelude.Text+describeDomain_domainId = Lens.lens (\DescribeDomain' {domainId} -> domainId) (\s@DescribeDomain' {} a -> s {domainId = a} :: DescribeDomain)++instance Core.AWSRequest DescribeDomain where+  type+    AWSResponse DescribeDomain =+      DescribeDomainResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeDomainResponse'+            Prelude.<$> (x Data..?> "Domain")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeDomain where+  hashWithSalt _salt DescribeDomain' {..} =+    _salt `Prelude.hashWithSalt` domainId++instance Prelude.NFData DescribeDomain where+  rnf DescribeDomain' {..} = Prelude.rnf domainId++instance Data.ToHeaders DescribeDomain where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.DescribeDomain" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeDomain where+  toJSON DescribeDomain' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("DomainId" Data..= domainId)]+      )++instance Data.ToPath DescribeDomain where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeDomain where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeDomainResponse' smart constructor.+data DescribeDomainResponse = DescribeDomainResponse'+  { -- | Information about the specified domain.+    domain :: Prelude.Maybe Domain,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeDomainResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domain', 'describeDomainResponse_domain' - Information about the specified domain.+--+-- 'httpStatus', 'describeDomainResponse_httpStatus' - The response's http status code.+newDescribeDomainResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeDomainResponse+newDescribeDomainResponse pHttpStatus_ =+  DescribeDomainResponse'+    { domain = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the specified domain.+describeDomainResponse_domain :: Lens.Lens' DescribeDomainResponse (Prelude.Maybe Domain)+describeDomainResponse_domain = Lens.lens (\DescribeDomainResponse' {domain} -> domain) (\s@DescribeDomainResponse' {} a -> s {domain = a} :: DescribeDomainResponse)++-- | The response's http status code.+describeDomainResponse_httpStatus :: Lens.Lens' DescribeDomainResponse Prelude.Int+describeDomainResponse_httpStatus = Lens.lens (\DescribeDomainResponse' {httpStatus} -> httpStatus) (\s@DescribeDomainResponse' {} a -> s {httpStatus = a} :: DescribeDomainResponse)++instance Prelude.NFData DescribeDomainResponse where+  rnf DescribeDomainResponse' {..} =+    Prelude.rnf domain+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/DescribeFraudster.hs view
@@ -0,0 +1,186 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.DescribeFraudster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes the specified fraudster.+module Amazonka.VoiceId.DescribeFraudster+  ( -- * Creating a Request+    DescribeFraudster (..),+    newDescribeFraudster,++    -- * Request Lenses+    describeFraudster_domainId,+    describeFraudster_fraudsterId,++    -- * Destructuring the Response+    DescribeFraudsterResponse (..),+    newDescribeFraudsterResponse,++    -- * Response Lenses+    describeFraudsterResponse_fraudster,+    describeFraudsterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newDescribeFraudster' smart constructor.+data DescribeFraudster = DescribeFraudster'+  { -- | The identifier of the domain containing the fraudster.+    domainId :: Prelude.Text,+    -- | The identifier of the fraudster you are describing.+    fraudsterId :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeFraudster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainId', 'describeFraudster_domainId' - The identifier of the domain containing the fraudster.+--+-- 'fraudsterId', 'describeFraudster_fraudsterId' - The identifier of the fraudster you are describing.+newDescribeFraudster ::+  -- | 'domainId'+  Prelude.Text ->+  -- | 'fraudsterId'+  Prelude.Text ->+  DescribeFraudster+newDescribeFraudster pDomainId_ pFraudsterId_ =+  DescribeFraudster'+    { domainId = pDomainId_,+      fraudsterId = Data._Sensitive Lens.# pFraudsterId_+    }++-- | The identifier of the domain containing the fraudster.+describeFraudster_domainId :: Lens.Lens' DescribeFraudster Prelude.Text+describeFraudster_domainId = Lens.lens (\DescribeFraudster' {domainId} -> domainId) (\s@DescribeFraudster' {} a -> s {domainId = a} :: DescribeFraudster)++-- | The identifier of the fraudster you are describing.+describeFraudster_fraudsterId :: Lens.Lens' DescribeFraudster Prelude.Text+describeFraudster_fraudsterId = Lens.lens (\DescribeFraudster' {fraudsterId} -> fraudsterId) (\s@DescribeFraudster' {} a -> s {fraudsterId = a} :: DescribeFraudster) Prelude.. Data._Sensitive++instance Core.AWSRequest DescribeFraudster where+  type+    AWSResponse DescribeFraudster =+      DescribeFraudsterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeFraudsterResponse'+            Prelude.<$> (x Data..?> "Fraudster")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeFraudster where+  hashWithSalt _salt DescribeFraudster' {..} =+    _salt+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` fraudsterId++instance Prelude.NFData DescribeFraudster where+  rnf DescribeFraudster' {..} =+    Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf fraudsterId++instance Data.ToHeaders DescribeFraudster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.DescribeFraudster" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeFraudster where+  toJSON DescribeFraudster' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just ("FraudsterId" Data..= fraudsterId)+          ]+      )++instance Data.ToPath DescribeFraudster where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeFraudster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeFraudsterResponse' smart constructor.+data DescribeFraudsterResponse = DescribeFraudsterResponse'+  { -- | Information about the specified fraudster.+    fraudster :: Prelude.Maybe Fraudster,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeFraudsterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fraudster', 'describeFraudsterResponse_fraudster' - Information about the specified fraudster.+--+-- 'httpStatus', 'describeFraudsterResponse_httpStatus' - The response's http status code.+newDescribeFraudsterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeFraudsterResponse+newDescribeFraudsterResponse pHttpStatus_ =+  DescribeFraudsterResponse'+    { fraudster =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the specified fraudster.+describeFraudsterResponse_fraudster :: Lens.Lens' DescribeFraudsterResponse (Prelude.Maybe Fraudster)+describeFraudsterResponse_fraudster = Lens.lens (\DescribeFraudsterResponse' {fraudster} -> fraudster) (\s@DescribeFraudsterResponse' {} a -> s {fraudster = a} :: DescribeFraudsterResponse)++-- | The response's http status code.+describeFraudsterResponse_httpStatus :: Lens.Lens' DescribeFraudsterResponse Prelude.Int+describeFraudsterResponse_httpStatus = Lens.lens (\DescribeFraudsterResponse' {httpStatus} -> httpStatus) (\s@DescribeFraudsterResponse' {} a -> s {httpStatus = a} :: DescribeFraudsterResponse)++instance Prelude.NFData DescribeFraudsterResponse where+  rnf DescribeFraudsterResponse' {..} =+    Prelude.rnf fraudster+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/DescribeFraudsterRegistrationJob.hs view
@@ -0,0 +1,212 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.DescribeFraudsterRegistrationJob+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes the specified fraudster registration job.+module Amazonka.VoiceId.DescribeFraudsterRegistrationJob+  ( -- * Creating a Request+    DescribeFraudsterRegistrationJob (..),+    newDescribeFraudsterRegistrationJob,++    -- * Request Lenses+    describeFraudsterRegistrationJob_domainId,+    describeFraudsterRegistrationJob_jobId,++    -- * Destructuring the Response+    DescribeFraudsterRegistrationJobResponse (..),+    newDescribeFraudsterRegistrationJobResponse,++    -- * Response Lenses+    describeFraudsterRegistrationJobResponse_job,+    describeFraudsterRegistrationJobResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newDescribeFraudsterRegistrationJob' smart constructor.+data DescribeFraudsterRegistrationJob = DescribeFraudsterRegistrationJob'+  { -- | The identifier for the domain containing the fraudster registration job.+    domainId :: Prelude.Text,+    -- | The identifier for the fraudster registration job you are describing.+    jobId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeFraudsterRegistrationJob' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainId', 'describeFraudsterRegistrationJob_domainId' - The identifier for the domain containing the fraudster registration job.+--+-- 'jobId', 'describeFraudsterRegistrationJob_jobId' - The identifier for the fraudster registration job you are describing.+newDescribeFraudsterRegistrationJob ::+  -- | 'domainId'+  Prelude.Text ->+  -- | 'jobId'+  Prelude.Text ->+  DescribeFraudsterRegistrationJob+newDescribeFraudsterRegistrationJob+  pDomainId_+  pJobId_ =+    DescribeFraudsterRegistrationJob'+      { domainId =+          pDomainId_,+        jobId = pJobId_+      }++-- | The identifier for the domain containing the fraudster registration job.+describeFraudsterRegistrationJob_domainId :: Lens.Lens' DescribeFraudsterRegistrationJob Prelude.Text+describeFraudsterRegistrationJob_domainId = Lens.lens (\DescribeFraudsterRegistrationJob' {domainId} -> domainId) (\s@DescribeFraudsterRegistrationJob' {} a -> s {domainId = a} :: DescribeFraudsterRegistrationJob)++-- | The identifier for the fraudster registration job you are describing.+describeFraudsterRegistrationJob_jobId :: Lens.Lens' DescribeFraudsterRegistrationJob Prelude.Text+describeFraudsterRegistrationJob_jobId = Lens.lens (\DescribeFraudsterRegistrationJob' {jobId} -> jobId) (\s@DescribeFraudsterRegistrationJob' {} a -> s {jobId = a} :: DescribeFraudsterRegistrationJob)++instance+  Core.AWSRequest+    DescribeFraudsterRegistrationJob+  where+  type+    AWSResponse DescribeFraudsterRegistrationJob =+      DescribeFraudsterRegistrationJobResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeFraudsterRegistrationJobResponse'+            Prelude.<$> (x Data..?> "Job")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeFraudsterRegistrationJob+  where+  hashWithSalt+    _salt+    DescribeFraudsterRegistrationJob' {..} =+      _salt+        `Prelude.hashWithSalt` domainId+        `Prelude.hashWithSalt` jobId++instance+  Prelude.NFData+    DescribeFraudsterRegistrationJob+  where+  rnf DescribeFraudsterRegistrationJob' {..} =+    Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf jobId++instance+  Data.ToHeaders+    DescribeFraudsterRegistrationJob+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "VoiceID.DescribeFraudsterRegistrationJob" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeFraudsterRegistrationJob where+  toJSON DescribeFraudsterRegistrationJob' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just ("JobId" Data..= jobId)+          ]+      )++instance Data.ToPath DescribeFraudsterRegistrationJob where+  toPath = Prelude.const "/"++instance+  Data.ToQuery+    DescribeFraudsterRegistrationJob+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeFraudsterRegistrationJobResponse' smart constructor.+data DescribeFraudsterRegistrationJobResponse = DescribeFraudsterRegistrationJobResponse'+  { -- | Contains details about the specified fraudster registration job.+    job :: Prelude.Maybe FraudsterRegistrationJob,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeFraudsterRegistrationJobResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'job', 'describeFraudsterRegistrationJobResponse_job' - Contains details about the specified fraudster registration job.+--+-- 'httpStatus', 'describeFraudsterRegistrationJobResponse_httpStatus' - The response's http status code.+newDescribeFraudsterRegistrationJobResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeFraudsterRegistrationJobResponse+newDescribeFraudsterRegistrationJobResponse+  pHttpStatus_ =+    DescribeFraudsterRegistrationJobResponse'+      { job =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | Contains details about the specified fraudster registration job.+describeFraudsterRegistrationJobResponse_job :: Lens.Lens' DescribeFraudsterRegistrationJobResponse (Prelude.Maybe FraudsterRegistrationJob)+describeFraudsterRegistrationJobResponse_job = Lens.lens (\DescribeFraudsterRegistrationJobResponse' {job} -> job) (\s@DescribeFraudsterRegistrationJobResponse' {} a -> s {job = a} :: DescribeFraudsterRegistrationJobResponse)++-- | The response's http status code.+describeFraudsterRegistrationJobResponse_httpStatus :: Lens.Lens' DescribeFraudsterRegistrationJobResponse Prelude.Int+describeFraudsterRegistrationJobResponse_httpStatus = Lens.lens (\DescribeFraudsterRegistrationJobResponse' {httpStatus} -> httpStatus) (\s@DescribeFraudsterRegistrationJobResponse' {} a -> s {httpStatus = a} :: DescribeFraudsterRegistrationJobResponse)++instance+  Prelude.NFData+    DescribeFraudsterRegistrationJobResponse+  where+  rnf DescribeFraudsterRegistrationJobResponse' {..} =+    Prelude.rnf job+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/DescribeSpeaker.hs view
@@ -0,0 +1,185 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.DescribeSpeaker+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes the specified speaker.+module Amazonka.VoiceId.DescribeSpeaker+  ( -- * Creating a Request+    DescribeSpeaker (..),+    newDescribeSpeaker,++    -- * Request Lenses+    describeSpeaker_domainId,+    describeSpeaker_speakerId,++    -- * Destructuring the Response+    DescribeSpeakerResponse (..),+    newDescribeSpeakerResponse,++    -- * Response Lenses+    describeSpeakerResponse_speaker,+    describeSpeakerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newDescribeSpeaker' smart constructor.+data DescribeSpeaker = DescribeSpeaker'+  { -- | The identifier of the domain that contains the speaker.+    domainId :: Prelude.Text,+    -- | The identifier of the speaker you are describing.+    speakerId :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSpeaker' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainId', 'describeSpeaker_domainId' - The identifier of the domain that contains the speaker.+--+-- 'speakerId', 'describeSpeaker_speakerId' - The identifier of the speaker you are describing.+newDescribeSpeaker ::+  -- | 'domainId'+  Prelude.Text ->+  -- | 'speakerId'+  Prelude.Text ->+  DescribeSpeaker+newDescribeSpeaker pDomainId_ pSpeakerId_ =+  DescribeSpeaker'+    { domainId = pDomainId_,+      speakerId = Data._Sensitive Lens.# pSpeakerId_+    }++-- | The identifier of the domain that contains the speaker.+describeSpeaker_domainId :: Lens.Lens' DescribeSpeaker Prelude.Text+describeSpeaker_domainId = Lens.lens (\DescribeSpeaker' {domainId} -> domainId) (\s@DescribeSpeaker' {} a -> s {domainId = a} :: DescribeSpeaker)++-- | The identifier of the speaker you are describing.+describeSpeaker_speakerId :: Lens.Lens' DescribeSpeaker Prelude.Text+describeSpeaker_speakerId = Lens.lens (\DescribeSpeaker' {speakerId} -> speakerId) (\s@DescribeSpeaker' {} a -> s {speakerId = a} :: DescribeSpeaker) Prelude.. Data._Sensitive++instance Core.AWSRequest DescribeSpeaker where+  type+    AWSResponse DescribeSpeaker =+      DescribeSpeakerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeSpeakerResponse'+            Prelude.<$> (x Data..?> "Speaker")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeSpeaker where+  hashWithSalt _salt DescribeSpeaker' {..} =+    _salt+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` speakerId++instance Prelude.NFData DescribeSpeaker where+  rnf DescribeSpeaker' {..} =+    Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf speakerId++instance Data.ToHeaders DescribeSpeaker where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.DescribeSpeaker" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeSpeaker where+  toJSON DescribeSpeaker' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just ("SpeakerId" Data..= speakerId)+          ]+      )++instance Data.ToPath DescribeSpeaker where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeSpeaker where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeSpeakerResponse' smart constructor.+data DescribeSpeakerResponse = DescribeSpeakerResponse'+  { -- | Information about the specified speaker.+    speaker :: Prelude.Maybe Speaker,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSpeakerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'speaker', 'describeSpeakerResponse_speaker' - Information about the specified speaker.+--+-- 'httpStatus', 'describeSpeakerResponse_httpStatus' - The response's http status code.+newDescribeSpeakerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeSpeakerResponse+newDescribeSpeakerResponse pHttpStatus_ =+  DescribeSpeakerResponse'+    { speaker = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the specified speaker.+describeSpeakerResponse_speaker :: Lens.Lens' DescribeSpeakerResponse (Prelude.Maybe Speaker)+describeSpeakerResponse_speaker = Lens.lens (\DescribeSpeakerResponse' {speaker} -> speaker) (\s@DescribeSpeakerResponse' {} a -> s {speaker = a} :: DescribeSpeakerResponse)++-- | The response's http status code.+describeSpeakerResponse_httpStatus :: Lens.Lens' DescribeSpeakerResponse Prelude.Int+describeSpeakerResponse_httpStatus = Lens.lens (\DescribeSpeakerResponse' {httpStatus} -> httpStatus) (\s@DescribeSpeakerResponse' {} a -> s {httpStatus = a} :: DescribeSpeakerResponse)++instance Prelude.NFData DescribeSpeakerResponse where+  rnf DescribeSpeakerResponse' {..} =+    Prelude.rnf speaker+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/DescribeSpeakerEnrollmentJob.hs view
@@ -0,0 +1,195 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.DescribeSpeakerEnrollmentJob+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes the specified speaker enrollment job.+module Amazonka.VoiceId.DescribeSpeakerEnrollmentJob+  ( -- * Creating a Request+    DescribeSpeakerEnrollmentJob (..),+    newDescribeSpeakerEnrollmentJob,++    -- * Request Lenses+    describeSpeakerEnrollmentJob_domainId,+    describeSpeakerEnrollmentJob_jobId,++    -- * Destructuring the Response+    DescribeSpeakerEnrollmentJobResponse (..),+    newDescribeSpeakerEnrollmentJobResponse,++    -- * Response Lenses+    describeSpeakerEnrollmentJobResponse_job,+    describeSpeakerEnrollmentJobResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newDescribeSpeakerEnrollmentJob' smart constructor.+data DescribeSpeakerEnrollmentJob = DescribeSpeakerEnrollmentJob'+  { -- | The identifier of the domain containing the speaker enrollment job.+    domainId :: Prelude.Text,+    -- | The identifier of the speaker enrollment job you are describing.+    jobId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSpeakerEnrollmentJob' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainId', 'describeSpeakerEnrollmentJob_domainId' - The identifier of the domain containing the speaker enrollment job.+--+-- 'jobId', 'describeSpeakerEnrollmentJob_jobId' - The identifier of the speaker enrollment job you are describing.+newDescribeSpeakerEnrollmentJob ::+  -- | 'domainId'+  Prelude.Text ->+  -- | 'jobId'+  Prelude.Text ->+  DescribeSpeakerEnrollmentJob+newDescribeSpeakerEnrollmentJob pDomainId_ pJobId_ =+  DescribeSpeakerEnrollmentJob'+    { domainId =+        pDomainId_,+      jobId = pJobId_+    }++-- | The identifier of the domain containing the speaker enrollment job.+describeSpeakerEnrollmentJob_domainId :: Lens.Lens' DescribeSpeakerEnrollmentJob Prelude.Text+describeSpeakerEnrollmentJob_domainId = Lens.lens (\DescribeSpeakerEnrollmentJob' {domainId} -> domainId) (\s@DescribeSpeakerEnrollmentJob' {} a -> s {domainId = a} :: DescribeSpeakerEnrollmentJob)++-- | The identifier of the speaker enrollment job you are describing.+describeSpeakerEnrollmentJob_jobId :: Lens.Lens' DescribeSpeakerEnrollmentJob Prelude.Text+describeSpeakerEnrollmentJob_jobId = Lens.lens (\DescribeSpeakerEnrollmentJob' {jobId} -> jobId) (\s@DescribeSpeakerEnrollmentJob' {} a -> s {jobId = a} :: DescribeSpeakerEnrollmentJob)++instance Core.AWSRequest DescribeSpeakerEnrollmentJob where+  type+    AWSResponse DescribeSpeakerEnrollmentJob =+      DescribeSpeakerEnrollmentJobResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeSpeakerEnrollmentJobResponse'+            Prelude.<$> (x Data..?> "Job")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeSpeakerEnrollmentJob+  where+  hashWithSalt _salt DescribeSpeakerEnrollmentJob' {..} =+    _salt+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` jobId++instance Prelude.NFData DescribeSpeakerEnrollmentJob where+  rnf DescribeSpeakerEnrollmentJob' {..} =+    Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf jobId++instance Data.ToHeaders DescribeSpeakerEnrollmentJob where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "VoiceID.DescribeSpeakerEnrollmentJob" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeSpeakerEnrollmentJob where+  toJSON DescribeSpeakerEnrollmentJob' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just ("JobId" Data..= jobId)+          ]+      )++instance Data.ToPath DescribeSpeakerEnrollmentJob where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeSpeakerEnrollmentJob where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeSpeakerEnrollmentJobResponse' smart constructor.+data DescribeSpeakerEnrollmentJobResponse = DescribeSpeakerEnrollmentJobResponse'+  { -- | Contains details about the specified speaker enrollment job.+    job :: Prelude.Maybe SpeakerEnrollmentJob,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSpeakerEnrollmentJobResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'job', 'describeSpeakerEnrollmentJobResponse_job' - Contains details about the specified speaker enrollment job.+--+-- 'httpStatus', 'describeSpeakerEnrollmentJobResponse_httpStatus' - The response's http status code.+newDescribeSpeakerEnrollmentJobResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeSpeakerEnrollmentJobResponse+newDescribeSpeakerEnrollmentJobResponse pHttpStatus_ =+  DescribeSpeakerEnrollmentJobResponse'+    { job =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Contains details about the specified speaker enrollment job.+describeSpeakerEnrollmentJobResponse_job :: Lens.Lens' DescribeSpeakerEnrollmentJobResponse (Prelude.Maybe SpeakerEnrollmentJob)+describeSpeakerEnrollmentJobResponse_job = Lens.lens (\DescribeSpeakerEnrollmentJobResponse' {job} -> job) (\s@DescribeSpeakerEnrollmentJobResponse' {} a -> s {job = a} :: DescribeSpeakerEnrollmentJobResponse)++-- | The response's http status code.+describeSpeakerEnrollmentJobResponse_httpStatus :: Lens.Lens' DescribeSpeakerEnrollmentJobResponse Prelude.Int+describeSpeakerEnrollmentJobResponse_httpStatus = Lens.lens (\DescribeSpeakerEnrollmentJobResponse' {httpStatus} -> httpStatus) (\s@DescribeSpeakerEnrollmentJobResponse' {} a -> s {httpStatus = a} :: DescribeSpeakerEnrollmentJobResponse)++instance+  Prelude.NFData+    DescribeSpeakerEnrollmentJobResponse+  where+  rnf DescribeSpeakerEnrollmentJobResponse' {..} =+    Prelude.rnf job+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/EvaluateSession.hs view
@@ -0,0 +1,281 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.EvaluateSession+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Evaluates a specified session based on audio data accumulated during a+-- streaming Amazon Connect Voice ID call.+module Amazonka.VoiceId.EvaluateSession+  ( -- * Creating a Request+    EvaluateSession (..),+    newEvaluateSession,++    -- * Request Lenses+    evaluateSession_domainId,+    evaluateSession_sessionNameOrId,++    -- * Destructuring the Response+    EvaluateSessionResponse (..),+    newEvaluateSessionResponse,++    -- * Response Lenses+    evaluateSessionResponse_authenticationResult,+    evaluateSessionResponse_domainId,+    evaluateSessionResponse_fraudDetectionResult,+    evaluateSessionResponse_sessionId,+    evaluateSessionResponse_sessionName,+    evaluateSessionResponse_streamingStatus,+    evaluateSessionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newEvaluateSession' smart constructor.+data EvaluateSession = EvaluateSession'+  { -- | The identifier of the domain where the session started.+    domainId :: Prelude.Text,+    -- | The session identifier, or name of the session, that you want to+    -- evaluate. In Voice ID integration, this is the Contact-Id.+    sessionNameOrId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EvaluateSession' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainId', 'evaluateSession_domainId' - The identifier of the domain where the session started.+--+-- 'sessionNameOrId', 'evaluateSession_sessionNameOrId' - The session identifier, or name of the session, that you want to+-- evaluate. In Voice ID integration, this is the Contact-Id.+newEvaluateSession ::+  -- | 'domainId'+  Prelude.Text ->+  -- | 'sessionNameOrId'+  Prelude.Text ->+  EvaluateSession+newEvaluateSession pDomainId_ pSessionNameOrId_ =+  EvaluateSession'+    { domainId = pDomainId_,+      sessionNameOrId = pSessionNameOrId_+    }++-- | The identifier of the domain where the session started.+evaluateSession_domainId :: Lens.Lens' EvaluateSession Prelude.Text+evaluateSession_domainId = Lens.lens (\EvaluateSession' {domainId} -> domainId) (\s@EvaluateSession' {} a -> s {domainId = a} :: EvaluateSession)++-- | The session identifier, or name of the session, that you want to+-- evaluate. In Voice ID integration, this is the Contact-Id.+evaluateSession_sessionNameOrId :: Lens.Lens' EvaluateSession Prelude.Text+evaluateSession_sessionNameOrId = Lens.lens (\EvaluateSession' {sessionNameOrId} -> sessionNameOrId) (\s@EvaluateSession' {} a -> s {sessionNameOrId = a} :: EvaluateSession)++instance Core.AWSRequest EvaluateSession where+  type+    AWSResponse EvaluateSession =+      EvaluateSessionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          EvaluateSessionResponse'+            Prelude.<$> (x Data..?> "AuthenticationResult")+            Prelude.<*> (x Data..?> "DomainId")+            Prelude.<*> (x Data..?> "FraudDetectionResult")+            Prelude.<*> (x Data..?> "SessionId")+            Prelude.<*> (x Data..?> "SessionName")+            Prelude.<*> (x Data..?> "StreamingStatus")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable EvaluateSession where+  hashWithSalt _salt EvaluateSession' {..} =+    _salt+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` sessionNameOrId++instance Prelude.NFData EvaluateSession where+  rnf EvaluateSession' {..} =+    Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf sessionNameOrId++instance Data.ToHeaders EvaluateSession where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.EvaluateSession" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON EvaluateSession where+  toJSON EvaluateSession' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just+              ("SessionNameOrId" Data..= sessionNameOrId)+          ]+      )++instance Data.ToPath EvaluateSession where+  toPath = Prelude.const "/"++instance Data.ToQuery EvaluateSession where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newEvaluateSessionResponse' smart constructor.+data EvaluateSessionResponse = EvaluateSessionResponse'+  { -- | Details resulting from the authentication process, such as+    -- authentication decision and authentication score.+    authenticationResult :: Prelude.Maybe AuthenticationResult,+    -- | The identifier of the domain containing the session.+    domainId :: Prelude.Maybe Prelude.Text,+    -- | Details resulting from the fraud detection process, such as fraud+    -- detection decision and risk score.+    fraudDetectionResult :: Prelude.Maybe FraudDetectionResult,+    -- | The service-generated identifier of the session.+    sessionId :: Prelude.Maybe Prelude.Text,+    -- | The client-provided name of the session.+    sessionName :: Prelude.Maybe Prelude.Text,+    -- | The current status of audio streaming for this session. This field is+    -- useful to infer next steps when the Authentication or Fraud Detection+    -- results are empty or the decision is @NOT_ENOUGH_SPEECH@. In this+    -- situation, if the @StreamingStatus@ is @ONGOING\/PENDING_CONFIGURATION@,+    -- it can mean that the client should call the API again later, after Voice+    -- ID has enough audio to produce a result. If the decision remains+    -- @NOT_ENOUGH_SPEECH@ even after @StreamingStatus@ is @ENDED@, it means+    -- that the previously streamed session did not have enough speech to+    -- perform evaluation, and a new streaming session is needed to try again.+    streamingStatus :: Prelude.Maybe StreamingStatus,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EvaluateSessionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'authenticationResult', 'evaluateSessionResponse_authenticationResult' - Details resulting from the authentication process, such as+-- authentication decision and authentication score.+--+-- 'domainId', 'evaluateSessionResponse_domainId' - The identifier of the domain containing the session.+--+-- 'fraudDetectionResult', 'evaluateSessionResponse_fraudDetectionResult' - Details resulting from the fraud detection process, such as fraud+-- detection decision and risk score.+--+-- 'sessionId', 'evaluateSessionResponse_sessionId' - The service-generated identifier of the session.+--+-- 'sessionName', 'evaluateSessionResponse_sessionName' - The client-provided name of the session.+--+-- 'streamingStatus', 'evaluateSessionResponse_streamingStatus' - The current status of audio streaming for this session. This field is+-- useful to infer next steps when the Authentication or Fraud Detection+-- results are empty or the decision is @NOT_ENOUGH_SPEECH@. In this+-- situation, if the @StreamingStatus@ is @ONGOING\/PENDING_CONFIGURATION@,+-- it can mean that the client should call the API again later, after Voice+-- ID has enough audio to produce a result. If the decision remains+-- @NOT_ENOUGH_SPEECH@ even after @StreamingStatus@ is @ENDED@, it means+-- that the previously streamed session did not have enough speech to+-- perform evaluation, and a new streaming session is needed to try again.+--+-- 'httpStatus', 'evaluateSessionResponse_httpStatus' - The response's http status code.+newEvaluateSessionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  EvaluateSessionResponse+newEvaluateSessionResponse pHttpStatus_ =+  EvaluateSessionResponse'+    { authenticationResult =+        Prelude.Nothing,+      domainId = Prelude.Nothing,+      fraudDetectionResult = Prelude.Nothing,+      sessionId = Prelude.Nothing,+      sessionName = Prelude.Nothing,+      streamingStatus = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Details resulting from the authentication process, such as+-- authentication decision and authentication score.+evaluateSessionResponse_authenticationResult :: Lens.Lens' EvaluateSessionResponse (Prelude.Maybe AuthenticationResult)+evaluateSessionResponse_authenticationResult = Lens.lens (\EvaluateSessionResponse' {authenticationResult} -> authenticationResult) (\s@EvaluateSessionResponse' {} a -> s {authenticationResult = a} :: EvaluateSessionResponse)++-- | The identifier of the domain containing the session.+evaluateSessionResponse_domainId :: Lens.Lens' EvaluateSessionResponse (Prelude.Maybe Prelude.Text)+evaluateSessionResponse_domainId = Lens.lens (\EvaluateSessionResponse' {domainId} -> domainId) (\s@EvaluateSessionResponse' {} a -> s {domainId = a} :: EvaluateSessionResponse)++-- | Details resulting from the fraud detection process, such as fraud+-- detection decision and risk score.+evaluateSessionResponse_fraudDetectionResult :: Lens.Lens' EvaluateSessionResponse (Prelude.Maybe FraudDetectionResult)+evaluateSessionResponse_fraudDetectionResult = Lens.lens (\EvaluateSessionResponse' {fraudDetectionResult} -> fraudDetectionResult) (\s@EvaluateSessionResponse' {} a -> s {fraudDetectionResult = a} :: EvaluateSessionResponse)++-- | The service-generated identifier of the session.+evaluateSessionResponse_sessionId :: Lens.Lens' EvaluateSessionResponse (Prelude.Maybe Prelude.Text)+evaluateSessionResponse_sessionId = Lens.lens (\EvaluateSessionResponse' {sessionId} -> sessionId) (\s@EvaluateSessionResponse' {} a -> s {sessionId = a} :: EvaluateSessionResponse)++-- | The client-provided name of the session.+evaluateSessionResponse_sessionName :: Lens.Lens' EvaluateSessionResponse (Prelude.Maybe Prelude.Text)+evaluateSessionResponse_sessionName = Lens.lens (\EvaluateSessionResponse' {sessionName} -> sessionName) (\s@EvaluateSessionResponse' {} a -> s {sessionName = a} :: EvaluateSessionResponse)++-- | The current status of audio streaming for this session. This field is+-- useful to infer next steps when the Authentication or Fraud Detection+-- results are empty or the decision is @NOT_ENOUGH_SPEECH@. In this+-- situation, if the @StreamingStatus@ is @ONGOING\/PENDING_CONFIGURATION@,+-- it can mean that the client should call the API again later, after Voice+-- ID has enough audio to produce a result. If the decision remains+-- @NOT_ENOUGH_SPEECH@ even after @StreamingStatus@ is @ENDED@, it means+-- that the previously streamed session did not have enough speech to+-- perform evaluation, and a new streaming session is needed to try again.+evaluateSessionResponse_streamingStatus :: Lens.Lens' EvaluateSessionResponse (Prelude.Maybe StreamingStatus)+evaluateSessionResponse_streamingStatus = Lens.lens (\EvaluateSessionResponse' {streamingStatus} -> streamingStatus) (\s@EvaluateSessionResponse' {} a -> s {streamingStatus = a} :: EvaluateSessionResponse)++-- | The response's http status code.+evaluateSessionResponse_httpStatus :: Lens.Lens' EvaluateSessionResponse Prelude.Int+evaluateSessionResponse_httpStatus = Lens.lens (\EvaluateSessionResponse' {httpStatus} -> httpStatus) (\s@EvaluateSessionResponse' {} a -> s {httpStatus = a} :: EvaluateSessionResponse)++instance Prelude.NFData EvaluateSessionResponse where+  rnf EvaluateSessionResponse' {..} =+    Prelude.rnf authenticationResult+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf fraudDetectionResult+      `Prelude.seq` Prelude.rnf sessionId+      `Prelude.seq` Prelude.rnf sessionName+      `Prelude.seq` Prelude.rnf streamingStatus+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/Lens.hs view
@@ -0,0 +1,378 @@+{-# 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.VoiceId.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.VoiceId.Lens+  ( -- * Operations++    -- ** CreateDomain+    createDomain_clientToken,+    createDomain_description,+    createDomain_tags,+    createDomain_name,+    createDomain_serverSideEncryptionConfiguration,+    createDomainResponse_domain,+    createDomainResponse_httpStatus,++    -- ** DeleteDomain+    deleteDomain_domainId,++    -- ** DeleteFraudster+    deleteFraudster_domainId,+    deleteFraudster_fraudsterId,++    -- ** DeleteSpeaker+    deleteSpeaker_domainId,+    deleteSpeaker_speakerId,++    -- ** DescribeDomain+    describeDomain_domainId,+    describeDomainResponse_domain,+    describeDomainResponse_httpStatus,++    -- ** DescribeFraudster+    describeFraudster_domainId,+    describeFraudster_fraudsterId,+    describeFraudsterResponse_fraudster,+    describeFraudsterResponse_httpStatus,++    -- ** DescribeFraudsterRegistrationJob+    describeFraudsterRegistrationJob_domainId,+    describeFraudsterRegistrationJob_jobId,+    describeFraudsterRegistrationJobResponse_job,+    describeFraudsterRegistrationJobResponse_httpStatus,++    -- ** DescribeSpeaker+    describeSpeaker_domainId,+    describeSpeaker_speakerId,+    describeSpeakerResponse_speaker,+    describeSpeakerResponse_httpStatus,++    -- ** DescribeSpeakerEnrollmentJob+    describeSpeakerEnrollmentJob_domainId,+    describeSpeakerEnrollmentJob_jobId,+    describeSpeakerEnrollmentJobResponse_job,+    describeSpeakerEnrollmentJobResponse_httpStatus,++    -- ** EvaluateSession+    evaluateSession_domainId,+    evaluateSession_sessionNameOrId,+    evaluateSessionResponse_authenticationResult,+    evaluateSessionResponse_domainId,+    evaluateSessionResponse_fraudDetectionResult,+    evaluateSessionResponse_sessionId,+    evaluateSessionResponse_sessionName,+    evaluateSessionResponse_streamingStatus,+    evaluateSessionResponse_httpStatus,++    -- ** ListDomains+    listDomains_maxResults,+    listDomains_nextToken,+    listDomainsResponse_domainSummaries,+    listDomainsResponse_nextToken,+    listDomainsResponse_httpStatus,++    -- ** ListFraudsterRegistrationJobs+    listFraudsterRegistrationJobs_jobStatus,+    listFraudsterRegistrationJobs_maxResults,+    listFraudsterRegistrationJobs_nextToken,+    listFraudsterRegistrationJobs_domainId,+    listFraudsterRegistrationJobsResponse_jobSummaries,+    listFraudsterRegistrationJobsResponse_nextToken,+    listFraudsterRegistrationJobsResponse_httpStatus,++    -- ** ListSpeakerEnrollmentJobs+    listSpeakerEnrollmentJobs_jobStatus,+    listSpeakerEnrollmentJobs_maxResults,+    listSpeakerEnrollmentJobs_nextToken,+    listSpeakerEnrollmentJobs_domainId,+    listSpeakerEnrollmentJobsResponse_jobSummaries,+    listSpeakerEnrollmentJobsResponse_nextToken,+    listSpeakerEnrollmentJobsResponse_httpStatus,++    -- ** ListSpeakers+    listSpeakers_maxResults,+    listSpeakers_nextToken,+    listSpeakers_domainId,+    listSpeakersResponse_nextToken,+    listSpeakersResponse_speakerSummaries,+    listSpeakersResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** OptOutSpeaker+    optOutSpeaker_domainId,+    optOutSpeaker_speakerId,+    optOutSpeakerResponse_speaker,+    optOutSpeakerResponse_httpStatus,++    -- ** StartFraudsterRegistrationJob+    startFraudsterRegistrationJob_clientToken,+    startFraudsterRegistrationJob_jobName,+    startFraudsterRegistrationJob_registrationConfig,+    startFraudsterRegistrationJob_dataAccessRoleArn,+    startFraudsterRegistrationJob_domainId,+    startFraudsterRegistrationJob_inputDataConfig,+    startFraudsterRegistrationJob_outputDataConfig,+    startFraudsterRegistrationJobResponse_job,+    startFraudsterRegistrationJobResponse_httpStatus,++    -- ** StartSpeakerEnrollmentJob+    startSpeakerEnrollmentJob_clientToken,+    startSpeakerEnrollmentJob_enrollmentConfig,+    startSpeakerEnrollmentJob_jobName,+    startSpeakerEnrollmentJob_dataAccessRoleArn,+    startSpeakerEnrollmentJob_domainId,+    startSpeakerEnrollmentJob_inputDataConfig,+    startSpeakerEnrollmentJob_outputDataConfig,+    startSpeakerEnrollmentJobResponse_job,+    startSpeakerEnrollmentJobResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateDomain+    updateDomain_description,+    updateDomain_domainId,+    updateDomain_name,+    updateDomain_serverSideEncryptionConfiguration,+    updateDomainResponse_domain,+    updateDomainResponse_httpStatus,++    -- * Types++    -- ** AuthenticationConfiguration+    authenticationConfiguration_acceptanceThreshold,++    -- ** AuthenticationResult+    authenticationResult_audioAggregationEndedAt,+    authenticationResult_audioAggregationStartedAt,+    authenticationResult_authenticationResultId,+    authenticationResult_configuration,+    authenticationResult_customerSpeakerId,+    authenticationResult_decision,+    authenticationResult_generatedSpeakerId,+    authenticationResult_score,++    -- ** Domain+    domain_arn,+    domain_createdAt,+    domain_description,+    domain_domainId,+    domain_domainStatus,+    domain_name,+    domain_serverSideEncryptionConfiguration,+    domain_serverSideEncryptionUpdateDetails,+    domain_updatedAt,++    -- ** DomainSummary+    domainSummary_arn,+    domainSummary_createdAt,+    domainSummary_description,+    domainSummary_domainId,+    domainSummary_domainStatus,+    domainSummary_name,+    domainSummary_serverSideEncryptionConfiguration,+    domainSummary_serverSideEncryptionUpdateDetails,+    domainSummary_updatedAt,++    -- ** EnrollmentConfig+    enrollmentConfig_existingEnrollmentAction,+    enrollmentConfig_fraudDetectionConfig,++    -- ** EnrollmentJobFraudDetectionConfig+    enrollmentJobFraudDetectionConfig_fraudDetectionAction,+    enrollmentJobFraudDetectionConfig_riskThreshold,++    -- ** FailureDetails+    failureDetails_message,+    failureDetails_statusCode,++    -- ** FraudDetectionConfiguration+    fraudDetectionConfiguration_riskThreshold,++    -- ** FraudDetectionResult+    fraudDetectionResult_audioAggregationEndedAt,+    fraudDetectionResult_audioAggregationStartedAt,+    fraudDetectionResult_configuration,+    fraudDetectionResult_decision,+    fraudDetectionResult_fraudDetectionResultId,+    fraudDetectionResult_reasons,+    fraudDetectionResult_riskDetails,++    -- ** FraudRiskDetails+    fraudRiskDetails_knownFraudsterRisk,+    fraudRiskDetails_voiceSpoofingRisk,++    -- ** Fraudster+    fraudster_createdAt,+    fraudster_domainId,+    fraudster_generatedFraudsterId,++    -- ** FraudsterRegistrationJob+    fraudsterRegistrationJob_createdAt,+    fraudsterRegistrationJob_dataAccessRoleArn,+    fraudsterRegistrationJob_domainId,+    fraudsterRegistrationJob_endedAt,+    fraudsterRegistrationJob_failureDetails,+    fraudsterRegistrationJob_inputDataConfig,+    fraudsterRegistrationJob_jobId,+    fraudsterRegistrationJob_jobName,+    fraudsterRegistrationJob_jobProgress,+    fraudsterRegistrationJob_jobStatus,+    fraudsterRegistrationJob_outputDataConfig,+    fraudsterRegistrationJob_registrationConfig,++    -- ** FraudsterRegistrationJobSummary+    fraudsterRegistrationJobSummary_createdAt,+    fraudsterRegistrationJobSummary_domainId,+    fraudsterRegistrationJobSummary_endedAt,+    fraudsterRegistrationJobSummary_failureDetails,+    fraudsterRegistrationJobSummary_jobId,+    fraudsterRegistrationJobSummary_jobName,+    fraudsterRegistrationJobSummary_jobProgress,+    fraudsterRegistrationJobSummary_jobStatus,++    -- ** InputDataConfig+    inputDataConfig_s3Uri,++    -- ** JobProgress+    jobProgress_percentComplete,++    -- ** KnownFraudsterRisk+    knownFraudsterRisk_generatedFraudsterId,+    knownFraudsterRisk_riskScore,++    -- ** OutputDataConfig+    outputDataConfig_kmsKeyId,+    outputDataConfig_s3Uri,++    -- ** RegistrationConfig+    registrationConfig_duplicateRegistrationAction,+    registrationConfig_fraudsterSimilarityThreshold,++    -- ** ServerSideEncryptionConfiguration+    serverSideEncryptionConfiguration_kmsKeyId,++    -- ** ServerSideEncryptionUpdateDetails+    serverSideEncryptionUpdateDetails_message,+    serverSideEncryptionUpdateDetails_oldKmsKeyId,+    serverSideEncryptionUpdateDetails_updateStatus,++    -- ** Speaker+    speaker_createdAt,+    speaker_customerSpeakerId,+    speaker_domainId,+    speaker_generatedSpeakerId,+    speaker_lastAccessedAt,+    speaker_status,+    speaker_updatedAt,++    -- ** SpeakerEnrollmentJob+    speakerEnrollmentJob_createdAt,+    speakerEnrollmentJob_dataAccessRoleArn,+    speakerEnrollmentJob_domainId,+    speakerEnrollmentJob_endedAt,+    speakerEnrollmentJob_enrollmentConfig,+    speakerEnrollmentJob_failureDetails,+    speakerEnrollmentJob_inputDataConfig,+    speakerEnrollmentJob_jobId,+    speakerEnrollmentJob_jobName,+    speakerEnrollmentJob_jobProgress,+    speakerEnrollmentJob_jobStatus,+    speakerEnrollmentJob_outputDataConfig,++    -- ** SpeakerEnrollmentJobSummary+    speakerEnrollmentJobSummary_createdAt,+    speakerEnrollmentJobSummary_domainId,+    speakerEnrollmentJobSummary_endedAt,+    speakerEnrollmentJobSummary_failureDetails,+    speakerEnrollmentJobSummary_jobId,+    speakerEnrollmentJobSummary_jobName,+    speakerEnrollmentJobSummary_jobProgress,+    speakerEnrollmentJobSummary_jobStatus,++    -- ** SpeakerSummary+    speakerSummary_createdAt,+    speakerSummary_customerSpeakerId,+    speakerSummary_domainId,+    speakerSummary_generatedSpeakerId,+    speakerSummary_lastAccessedAt,+    speakerSummary_status,+    speakerSummary_updatedAt,++    -- ** Tag+    tag_key,+    tag_value,++    -- ** VoiceSpoofingRisk+    voiceSpoofingRisk_riskScore,+  )+where++import Amazonka.VoiceId.CreateDomain+import Amazonka.VoiceId.DeleteDomain+import Amazonka.VoiceId.DeleteFraudster+import Amazonka.VoiceId.DeleteSpeaker+import Amazonka.VoiceId.DescribeDomain+import Amazonka.VoiceId.DescribeFraudster+import Amazonka.VoiceId.DescribeFraudsterRegistrationJob+import Amazonka.VoiceId.DescribeSpeaker+import Amazonka.VoiceId.DescribeSpeakerEnrollmentJob+import Amazonka.VoiceId.EvaluateSession+import Amazonka.VoiceId.ListDomains+import Amazonka.VoiceId.ListFraudsterRegistrationJobs+import Amazonka.VoiceId.ListSpeakerEnrollmentJobs+import Amazonka.VoiceId.ListSpeakers+import Amazonka.VoiceId.ListTagsForResource+import Amazonka.VoiceId.OptOutSpeaker+import Amazonka.VoiceId.StartFraudsterRegistrationJob+import Amazonka.VoiceId.StartSpeakerEnrollmentJob+import Amazonka.VoiceId.TagResource+import Amazonka.VoiceId.Types.AuthenticationConfiguration+import Amazonka.VoiceId.Types.AuthenticationResult+import Amazonka.VoiceId.Types.Domain+import Amazonka.VoiceId.Types.DomainSummary+import Amazonka.VoiceId.Types.EnrollmentConfig+import Amazonka.VoiceId.Types.EnrollmentJobFraudDetectionConfig+import Amazonka.VoiceId.Types.FailureDetails+import Amazonka.VoiceId.Types.FraudDetectionConfiguration+import Amazonka.VoiceId.Types.FraudDetectionResult+import Amazonka.VoiceId.Types.FraudRiskDetails+import Amazonka.VoiceId.Types.Fraudster+import Amazonka.VoiceId.Types.FraudsterRegistrationJob+import Amazonka.VoiceId.Types.FraudsterRegistrationJobSummary+import Amazonka.VoiceId.Types.InputDataConfig+import Amazonka.VoiceId.Types.JobProgress+import Amazonka.VoiceId.Types.KnownFraudsterRisk+import Amazonka.VoiceId.Types.OutputDataConfig+import Amazonka.VoiceId.Types.RegistrationConfig+import Amazonka.VoiceId.Types.ServerSideEncryptionConfiguration+import Amazonka.VoiceId.Types.ServerSideEncryptionUpdateDetails+import Amazonka.VoiceId.Types.Speaker+import Amazonka.VoiceId.Types.SpeakerEnrollmentJob+import Amazonka.VoiceId.Types.SpeakerEnrollmentJobSummary+import Amazonka.VoiceId.Types.SpeakerSummary+import Amazonka.VoiceId.Types.Tag+import Amazonka.VoiceId.Types.VoiceSpoofingRisk+import Amazonka.VoiceId.UntagResource+import Amazonka.VoiceId.UpdateDomain
+ gen/Amazonka/VoiceId/ListDomains.hs view
@@ -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.VoiceId.ListDomains+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists all the domains in the Amazon Web Services account.+--+-- This operation returns paginated results.+module Amazonka.VoiceId.ListDomains+  ( -- * Creating a Request+    ListDomains (..),+    newListDomains,++    -- * Request Lenses+    listDomains_maxResults,+    listDomains_nextToken,++    -- * Destructuring the Response+    ListDomainsResponse (..),+    newListDomainsResponse,++    -- * Response Lenses+    listDomainsResponse_domainSummaries,+    listDomainsResponse_nextToken,+    listDomainsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newListDomains' smart constructor.+data ListDomains = ListDomains'+  { -- | The maximum number of domains to list per API call.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | If @NextToken@ is returned, there are more results available. The value+    -- of @NextToken@ is a unique pagination token for each page. Make the call+    -- again using the returned token to retrieve the next page. Keep all other+    -- arguments unchanged. Each pagination token expires after 24 hours.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDomains' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listDomains_maxResults' - The maximum number of domains to list per API call.+--+-- 'nextToken', 'listDomains_nextToken' - If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+newListDomains ::+  ListDomains+newListDomains =+  ListDomains'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of domains to list per API call.+listDomains_maxResults :: Lens.Lens' ListDomains (Prelude.Maybe Prelude.Natural)+listDomains_maxResults = Lens.lens (\ListDomains' {maxResults} -> maxResults) (\s@ListDomains' {} a -> s {maxResults = a} :: ListDomains)++-- | If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+listDomains_nextToken :: Lens.Lens' ListDomains (Prelude.Maybe Prelude.Text)+listDomains_nextToken = Lens.lens (\ListDomains' {nextToken} -> nextToken) (\s@ListDomains' {} a -> s {nextToken = a} :: ListDomains)++instance Core.AWSPager ListDomains where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listDomainsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listDomainsResponse_domainSummaries+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listDomains_nextToken+          Lens..~ rs+          Lens.^? listDomainsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListDomains where+  type AWSResponse ListDomains = ListDomainsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListDomainsResponse'+            Prelude.<$> ( x+                            Data..?> "DomainSummaries"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListDomains where+  hashWithSalt _salt ListDomains' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListDomains where+  rnf ListDomains' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListDomains where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.ListDomains" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListDomains where+  toJSON ListDomains' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListDomains where+  toPath = Prelude.const "/"++instance Data.ToQuery ListDomains where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListDomainsResponse' smart constructor.+data ListDomainsResponse = ListDomainsResponse'+  { -- | A list containing details about each domain in the Amazon Web Services+    -- account.+    domainSummaries :: Prelude.Maybe [DomainSummary],+    -- | If @NextToken@ is returned, there are more results available. The value+    -- of @NextToken@ is a unique pagination token for each page. Make the call+    -- again using the returned token to retrieve the next page. Keep all other+    -- arguments unchanged. Each pagination token expires after 24 hours.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDomainsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainSummaries', 'listDomainsResponse_domainSummaries' - A list containing details about each domain in the Amazon Web Services+-- account.+--+-- 'nextToken', 'listDomainsResponse_nextToken' - If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+--+-- 'httpStatus', 'listDomainsResponse_httpStatus' - The response's http status code.+newListDomainsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListDomainsResponse+newListDomainsResponse pHttpStatus_ =+  ListDomainsResponse'+    { domainSummaries =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list containing details about each domain in the Amazon Web Services+-- account.+listDomainsResponse_domainSummaries :: Lens.Lens' ListDomainsResponse (Prelude.Maybe [DomainSummary])+listDomainsResponse_domainSummaries = Lens.lens (\ListDomainsResponse' {domainSummaries} -> domainSummaries) (\s@ListDomainsResponse' {} a -> s {domainSummaries = a} :: ListDomainsResponse) Prelude.. Lens.mapping Lens.coerced++-- | If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+listDomainsResponse_nextToken :: Lens.Lens' ListDomainsResponse (Prelude.Maybe Prelude.Text)+listDomainsResponse_nextToken = Lens.lens (\ListDomainsResponse' {nextToken} -> nextToken) (\s@ListDomainsResponse' {} a -> s {nextToken = a} :: ListDomainsResponse)++-- | The response's http status code.+listDomainsResponse_httpStatus :: Lens.Lens' ListDomainsResponse Prelude.Int+listDomainsResponse_httpStatus = Lens.lens (\ListDomainsResponse' {httpStatus} -> httpStatus) (\s@ListDomainsResponse' {} a -> s {httpStatus = a} :: ListDomainsResponse)++instance Prelude.NFData ListDomainsResponse where+  rnf ListDomainsResponse' {..} =+    Prelude.rnf domainSummaries+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/ListFraudsterRegistrationJobs.hs view
@@ -0,0 +1,287 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.ListFraudsterRegistrationJobs+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists all the fraudster registration jobs in the domain with the given+-- @JobStatus@. If @JobStatus@ is not provided, this lists all fraudster+-- registration jobs in the given domain.+--+-- This operation returns paginated results.+module Amazonka.VoiceId.ListFraudsterRegistrationJobs+  ( -- * Creating a Request+    ListFraudsterRegistrationJobs (..),+    newListFraudsterRegistrationJobs,++    -- * Request Lenses+    listFraudsterRegistrationJobs_jobStatus,+    listFraudsterRegistrationJobs_maxResults,+    listFraudsterRegistrationJobs_nextToken,+    listFraudsterRegistrationJobs_domainId,++    -- * Destructuring the Response+    ListFraudsterRegistrationJobsResponse (..),+    newListFraudsterRegistrationJobsResponse,++    -- * Response Lenses+    listFraudsterRegistrationJobsResponse_jobSummaries,+    listFraudsterRegistrationJobsResponse_nextToken,+    listFraudsterRegistrationJobsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newListFraudsterRegistrationJobs' smart constructor.+data ListFraudsterRegistrationJobs = ListFraudsterRegistrationJobs'+  { -- | Provides the status of your fraudster registration job.+    jobStatus :: Prelude.Maybe FraudsterRegistrationJobStatus,+    -- | The maximum number of results that are returned per call. You can use+    -- @NextToken@ to obtain further pages of results. The default is 100; the+    -- maximum allowed page size is also 100.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | If @NextToken@ is returned, there are more results available. The value+    -- of @NextToken@ is a unique pagination token for each page. Make the call+    -- again using the returned token to retrieve the next page. Keep all other+    -- arguments unchanged. Each pagination token expires after 24 hours.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The identifier of the domain containing the fraudster registration Jobs.+    domainId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListFraudsterRegistrationJobs' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobStatus', 'listFraudsterRegistrationJobs_jobStatus' - Provides the status of your fraudster registration job.+--+-- 'maxResults', 'listFraudsterRegistrationJobs_maxResults' - The maximum number of results that are returned per call. You can use+-- @NextToken@ to obtain further pages of results. The default is 100; the+-- maximum allowed page size is also 100.+--+-- 'nextToken', 'listFraudsterRegistrationJobs_nextToken' - If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+--+-- 'domainId', 'listFraudsterRegistrationJobs_domainId' - The identifier of the domain containing the fraudster registration Jobs.+newListFraudsterRegistrationJobs ::+  -- | 'domainId'+  Prelude.Text ->+  ListFraudsterRegistrationJobs+newListFraudsterRegistrationJobs pDomainId_ =+  ListFraudsterRegistrationJobs'+    { jobStatus =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      domainId = pDomainId_+    }++-- | Provides the status of your fraudster registration job.+listFraudsterRegistrationJobs_jobStatus :: Lens.Lens' ListFraudsterRegistrationJobs (Prelude.Maybe FraudsterRegistrationJobStatus)+listFraudsterRegistrationJobs_jobStatus = Lens.lens (\ListFraudsterRegistrationJobs' {jobStatus} -> jobStatus) (\s@ListFraudsterRegistrationJobs' {} a -> s {jobStatus = a} :: ListFraudsterRegistrationJobs)++-- | The maximum number of results that are returned per call. You can use+-- @NextToken@ to obtain further pages of results. The default is 100; the+-- maximum allowed page size is also 100.+listFraudsterRegistrationJobs_maxResults :: Lens.Lens' ListFraudsterRegistrationJobs (Prelude.Maybe Prelude.Natural)+listFraudsterRegistrationJobs_maxResults = Lens.lens (\ListFraudsterRegistrationJobs' {maxResults} -> maxResults) (\s@ListFraudsterRegistrationJobs' {} a -> s {maxResults = a} :: ListFraudsterRegistrationJobs)++-- | If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+listFraudsterRegistrationJobs_nextToken :: Lens.Lens' ListFraudsterRegistrationJobs (Prelude.Maybe Prelude.Text)+listFraudsterRegistrationJobs_nextToken = Lens.lens (\ListFraudsterRegistrationJobs' {nextToken} -> nextToken) (\s@ListFraudsterRegistrationJobs' {} a -> s {nextToken = a} :: ListFraudsterRegistrationJobs)++-- | The identifier of the domain containing the fraudster registration Jobs.+listFraudsterRegistrationJobs_domainId :: Lens.Lens' ListFraudsterRegistrationJobs Prelude.Text+listFraudsterRegistrationJobs_domainId = Lens.lens (\ListFraudsterRegistrationJobs' {domainId} -> domainId) (\s@ListFraudsterRegistrationJobs' {} a -> s {domainId = a} :: ListFraudsterRegistrationJobs)++instance Core.AWSPager ListFraudsterRegistrationJobs where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listFraudsterRegistrationJobsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listFraudsterRegistrationJobsResponse_jobSummaries+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listFraudsterRegistrationJobs_nextToken+          Lens..~ rs+          Lens.^? listFraudsterRegistrationJobsResponse_nextToken+          Prelude.. Lens._Just++instance+  Core.AWSRequest+    ListFraudsterRegistrationJobs+  where+  type+    AWSResponse ListFraudsterRegistrationJobs =+      ListFraudsterRegistrationJobsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListFraudsterRegistrationJobsResponse'+            Prelude.<$> (x Data..?> "JobSummaries" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    ListFraudsterRegistrationJobs+  where+  hashWithSalt _salt ListFraudsterRegistrationJobs' {..} =+    _salt+      `Prelude.hashWithSalt` jobStatus+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` domainId++instance Prelude.NFData ListFraudsterRegistrationJobs where+  rnf ListFraudsterRegistrationJobs' {..} =+    Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf domainId++instance Data.ToHeaders ListFraudsterRegistrationJobs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "VoiceID.ListFraudsterRegistrationJobs" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListFraudsterRegistrationJobs where+  toJSON ListFraudsterRegistrationJobs' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("JobStatus" Data..=) Prelude.<$> jobStatus,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("DomainId" Data..= domainId)+          ]+      )++instance Data.ToPath ListFraudsterRegistrationJobs where+  toPath = Prelude.const "/"++instance Data.ToQuery ListFraudsterRegistrationJobs where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListFraudsterRegistrationJobsResponse' smart constructor.+data ListFraudsterRegistrationJobsResponse = ListFraudsterRegistrationJobsResponse'+  { -- | A list containing details about each specified fraudster registration+    -- job.+    jobSummaries :: Prelude.Maybe [FraudsterRegistrationJobSummary],+    -- | If @NextToken@ is returned, there are more results available. The value+    -- of @NextToken@ is a unique pagination token for each page. Make the call+    -- again using the returned token to retrieve the next page. Keep all other+    -- arguments unchanged. Each pagination token expires after 24 hours.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListFraudsterRegistrationJobsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobSummaries', 'listFraudsterRegistrationJobsResponse_jobSummaries' - A list containing details about each specified fraudster registration+-- job.+--+-- 'nextToken', 'listFraudsterRegistrationJobsResponse_nextToken' - If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+--+-- 'httpStatus', 'listFraudsterRegistrationJobsResponse_httpStatus' - The response's http status code.+newListFraudsterRegistrationJobsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListFraudsterRegistrationJobsResponse+newListFraudsterRegistrationJobsResponse pHttpStatus_ =+  ListFraudsterRegistrationJobsResponse'+    { jobSummaries =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list containing details about each specified fraudster registration+-- job.+listFraudsterRegistrationJobsResponse_jobSummaries :: Lens.Lens' ListFraudsterRegistrationJobsResponse (Prelude.Maybe [FraudsterRegistrationJobSummary])+listFraudsterRegistrationJobsResponse_jobSummaries = Lens.lens (\ListFraudsterRegistrationJobsResponse' {jobSummaries} -> jobSummaries) (\s@ListFraudsterRegistrationJobsResponse' {} a -> s {jobSummaries = a} :: ListFraudsterRegistrationJobsResponse) Prelude.. Lens.mapping Lens.coerced++-- | If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+listFraudsterRegistrationJobsResponse_nextToken :: Lens.Lens' ListFraudsterRegistrationJobsResponse (Prelude.Maybe Prelude.Text)+listFraudsterRegistrationJobsResponse_nextToken = Lens.lens (\ListFraudsterRegistrationJobsResponse' {nextToken} -> nextToken) (\s@ListFraudsterRegistrationJobsResponse' {} a -> s {nextToken = a} :: ListFraudsterRegistrationJobsResponse)++-- | The response's http status code.+listFraudsterRegistrationJobsResponse_httpStatus :: Lens.Lens' ListFraudsterRegistrationJobsResponse Prelude.Int+listFraudsterRegistrationJobsResponse_httpStatus = Lens.lens (\ListFraudsterRegistrationJobsResponse' {httpStatus} -> httpStatus) (\s@ListFraudsterRegistrationJobsResponse' {} a -> s {httpStatus = a} :: ListFraudsterRegistrationJobsResponse)++instance+  Prelude.NFData+    ListFraudsterRegistrationJobsResponse+  where+  rnf ListFraudsterRegistrationJobsResponse' {..} =+    Prelude.rnf jobSummaries+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/ListSpeakerEnrollmentJobs.hs view
@@ -0,0 +1,278 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.ListSpeakerEnrollmentJobs+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists all the speaker enrollment jobs in the domain with the specified+-- @JobStatus@. If @JobStatus@ is not provided, this lists all jobs with+-- all possible speaker enrollment job statuses.+--+-- This operation returns paginated results.+module Amazonka.VoiceId.ListSpeakerEnrollmentJobs+  ( -- * Creating a Request+    ListSpeakerEnrollmentJobs (..),+    newListSpeakerEnrollmentJobs,++    -- * Request Lenses+    listSpeakerEnrollmentJobs_jobStatus,+    listSpeakerEnrollmentJobs_maxResults,+    listSpeakerEnrollmentJobs_nextToken,+    listSpeakerEnrollmentJobs_domainId,++    -- * Destructuring the Response+    ListSpeakerEnrollmentJobsResponse (..),+    newListSpeakerEnrollmentJobsResponse,++    -- * Response Lenses+    listSpeakerEnrollmentJobsResponse_jobSummaries,+    listSpeakerEnrollmentJobsResponse_nextToken,+    listSpeakerEnrollmentJobsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newListSpeakerEnrollmentJobs' smart constructor.+data ListSpeakerEnrollmentJobs = ListSpeakerEnrollmentJobs'+  { -- | Provides the status of your speaker enrollment Job.+    jobStatus :: Prelude.Maybe SpeakerEnrollmentJobStatus,+    -- | The maximum number of results that are returned per call. You can use+    -- @NextToken@ to obtain further pages of results. The default is 100; the+    -- maximum allowed page size is also 100.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | If @NextToken@ is returned, there are more results available. The value+    -- of @NextToken@ is a unique pagination token for each page. Make the call+    -- again using the returned token to retrieve the next page. Keep all other+    -- arguments unchanged. Each pagination token expires after 24 hours.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The identifier of the domain containing the speaker enrollment jobs.+    domainId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListSpeakerEnrollmentJobs' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobStatus', 'listSpeakerEnrollmentJobs_jobStatus' - Provides the status of your speaker enrollment Job.+--+-- 'maxResults', 'listSpeakerEnrollmentJobs_maxResults' - The maximum number of results that are returned per call. You can use+-- @NextToken@ to obtain further pages of results. The default is 100; the+-- maximum allowed page size is also 100.+--+-- 'nextToken', 'listSpeakerEnrollmentJobs_nextToken' - If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+--+-- 'domainId', 'listSpeakerEnrollmentJobs_domainId' - The identifier of the domain containing the speaker enrollment jobs.+newListSpeakerEnrollmentJobs ::+  -- | 'domainId'+  Prelude.Text ->+  ListSpeakerEnrollmentJobs+newListSpeakerEnrollmentJobs pDomainId_ =+  ListSpeakerEnrollmentJobs'+    { jobStatus =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      domainId = pDomainId_+    }++-- | Provides the status of your speaker enrollment Job.+listSpeakerEnrollmentJobs_jobStatus :: Lens.Lens' ListSpeakerEnrollmentJobs (Prelude.Maybe SpeakerEnrollmentJobStatus)+listSpeakerEnrollmentJobs_jobStatus = Lens.lens (\ListSpeakerEnrollmentJobs' {jobStatus} -> jobStatus) (\s@ListSpeakerEnrollmentJobs' {} a -> s {jobStatus = a} :: ListSpeakerEnrollmentJobs)++-- | The maximum number of results that are returned per call. You can use+-- @NextToken@ to obtain further pages of results. The default is 100; the+-- maximum allowed page size is also 100.+listSpeakerEnrollmentJobs_maxResults :: Lens.Lens' ListSpeakerEnrollmentJobs (Prelude.Maybe Prelude.Natural)+listSpeakerEnrollmentJobs_maxResults = Lens.lens (\ListSpeakerEnrollmentJobs' {maxResults} -> maxResults) (\s@ListSpeakerEnrollmentJobs' {} a -> s {maxResults = a} :: ListSpeakerEnrollmentJobs)++-- | If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+listSpeakerEnrollmentJobs_nextToken :: Lens.Lens' ListSpeakerEnrollmentJobs (Prelude.Maybe Prelude.Text)+listSpeakerEnrollmentJobs_nextToken = Lens.lens (\ListSpeakerEnrollmentJobs' {nextToken} -> nextToken) (\s@ListSpeakerEnrollmentJobs' {} a -> s {nextToken = a} :: ListSpeakerEnrollmentJobs)++-- | The identifier of the domain containing the speaker enrollment jobs.+listSpeakerEnrollmentJobs_domainId :: Lens.Lens' ListSpeakerEnrollmentJobs Prelude.Text+listSpeakerEnrollmentJobs_domainId = Lens.lens (\ListSpeakerEnrollmentJobs' {domainId} -> domainId) (\s@ListSpeakerEnrollmentJobs' {} a -> s {domainId = a} :: ListSpeakerEnrollmentJobs)++instance Core.AWSPager ListSpeakerEnrollmentJobs where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listSpeakerEnrollmentJobsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listSpeakerEnrollmentJobsResponse_jobSummaries+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listSpeakerEnrollmentJobs_nextToken+          Lens..~ rs+          Lens.^? listSpeakerEnrollmentJobsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListSpeakerEnrollmentJobs where+  type+    AWSResponse ListSpeakerEnrollmentJobs =+      ListSpeakerEnrollmentJobsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListSpeakerEnrollmentJobsResponse'+            Prelude.<$> (x Data..?> "JobSummaries" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListSpeakerEnrollmentJobs where+  hashWithSalt _salt ListSpeakerEnrollmentJobs' {..} =+    _salt+      `Prelude.hashWithSalt` jobStatus+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` domainId++instance Prelude.NFData ListSpeakerEnrollmentJobs where+  rnf ListSpeakerEnrollmentJobs' {..} =+    Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf domainId++instance Data.ToHeaders ListSpeakerEnrollmentJobs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "VoiceID.ListSpeakerEnrollmentJobs" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListSpeakerEnrollmentJobs where+  toJSON ListSpeakerEnrollmentJobs' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("JobStatus" Data..=) Prelude.<$> jobStatus,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("DomainId" Data..= domainId)+          ]+      )++instance Data.ToPath ListSpeakerEnrollmentJobs where+  toPath = Prelude.const "/"++instance Data.ToQuery ListSpeakerEnrollmentJobs where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListSpeakerEnrollmentJobsResponse' smart constructor.+data ListSpeakerEnrollmentJobsResponse = ListSpeakerEnrollmentJobsResponse'+  { -- | A list containing details about each specified speaker enrollment job.+    jobSummaries :: Prelude.Maybe [SpeakerEnrollmentJobSummary],+    -- | If @NextToken@ is returned, there are more results available. The value+    -- of @NextToken@ is a unique pagination token for each page. Make the call+    -- again using the returned token to retrieve the next page. Keep all other+    -- arguments unchanged. Each pagination token expires after 24 hours.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListSpeakerEnrollmentJobsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobSummaries', 'listSpeakerEnrollmentJobsResponse_jobSummaries' - A list containing details about each specified speaker enrollment job.+--+-- 'nextToken', 'listSpeakerEnrollmentJobsResponse_nextToken' - If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+--+-- 'httpStatus', 'listSpeakerEnrollmentJobsResponse_httpStatus' - The response's http status code.+newListSpeakerEnrollmentJobsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListSpeakerEnrollmentJobsResponse+newListSpeakerEnrollmentJobsResponse pHttpStatus_ =+  ListSpeakerEnrollmentJobsResponse'+    { jobSummaries =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list containing details about each specified speaker enrollment job.+listSpeakerEnrollmentJobsResponse_jobSummaries :: Lens.Lens' ListSpeakerEnrollmentJobsResponse (Prelude.Maybe [SpeakerEnrollmentJobSummary])+listSpeakerEnrollmentJobsResponse_jobSummaries = Lens.lens (\ListSpeakerEnrollmentJobsResponse' {jobSummaries} -> jobSummaries) (\s@ListSpeakerEnrollmentJobsResponse' {} a -> s {jobSummaries = a} :: ListSpeakerEnrollmentJobsResponse) Prelude.. Lens.mapping Lens.coerced++-- | If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+listSpeakerEnrollmentJobsResponse_nextToken :: Lens.Lens' ListSpeakerEnrollmentJobsResponse (Prelude.Maybe Prelude.Text)+listSpeakerEnrollmentJobsResponse_nextToken = Lens.lens (\ListSpeakerEnrollmentJobsResponse' {nextToken} -> nextToken) (\s@ListSpeakerEnrollmentJobsResponse' {} a -> s {nextToken = a} :: ListSpeakerEnrollmentJobsResponse)++-- | The response's http status code.+listSpeakerEnrollmentJobsResponse_httpStatus :: Lens.Lens' ListSpeakerEnrollmentJobsResponse Prelude.Int+listSpeakerEnrollmentJobsResponse_httpStatus = Lens.lens (\ListSpeakerEnrollmentJobsResponse' {httpStatus} -> httpStatus) (\s@ListSpeakerEnrollmentJobsResponse' {} a -> s {httpStatus = a} :: ListSpeakerEnrollmentJobsResponse)++instance+  Prelude.NFData+    ListSpeakerEnrollmentJobsResponse+  where+  rnf ListSpeakerEnrollmentJobsResponse' {..} =+    Prelude.rnf jobSummaries+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/ListSpeakers.hs view
@@ -0,0 +1,260 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.ListSpeakers+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists all speakers in a specified domain.+--+-- This operation returns paginated results.+module Amazonka.VoiceId.ListSpeakers+  ( -- * Creating a Request+    ListSpeakers (..),+    newListSpeakers,++    -- * Request Lenses+    listSpeakers_maxResults,+    listSpeakers_nextToken,+    listSpeakers_domainId,++    -- * Destructuring the Response+    ListSpeakersResponse (..),+    newListSpeakersResponse,++    -- * Response Lenses+    listSpeakersResponse_nextToken,+    listSpeakersResponse_speakerSummaries,+    listSpeakersResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newListSpeakers' smart constructor.+data ListSpeakers = ListSpeakers'+  { -- | The maximum number of results that are returned per call. You can use+    -- @NextToken@ to obtain further pages of results. The default is 100; the+    -- maximum allowed page size is also 100.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | If @NextToken@ is returned, there are more results available. The value+    -- of @NextToken@ is a unique pagination token for each page. Make the call+    -- again using the returned token to retrieve the next page. Keep all other+    -- arguments unchanged. Each pagination token expires after 24 hours.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The identifier of the domain.+    domainId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListSpeakers' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSpeakers_maxResults' - The maximum number of results that are returned per call. You can use+-- @NextToken@ to obtain further pages of results. The default is 100; the+-- maximum allowed page size is also 100.+--+-- 'nextToken', 'listSpeakers_nextToken' - If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+--+-- 'domainId', 'listSpeakers_domainId' - The identifier of the domain.+newListSpeakers ::+  -- | 'domainId'+  Prelude.Text ->+  ListSpeakers+newListSpeakers pDomainId_ =+  ListSpeakers'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      domainId = pDomainId_+    }++-- | The maximum number of results that are returned per call. You can use+-- @NextToken@ to obtain further pages of results. The default is 100; the+-- maximum allowed page size is also 100.+listSpeakers_maxResults :: Lens.Lens' ListSpeakers (Prelude.Maybe Prelude.Natural)+listSpeakers_maxResults = Lens.lens (\ListSpeakers' {maxResults} -> maxResults) (\s@ListSpeakers' {} a -> s {maxResults = a} :: ListSpeakers)++-- | If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+listSpeakers_nextToken :: Lens.Lens' ListSpeakers (Prelude.Maybe Prelude.Text)+listSpeakers_nextToken = Lens.lens (\ListSpeakers' {nextToken} -> nextToken) (\s@ListSpeakers' {} a -> s {nextToken = a} :: ListSpeakers)++-- | The identifier of the domain.+listSpeakers_domainId :: Lens.Lens' ListSpeakers Prelude.Text+listSpeakers_domainId = Lens.lens (\ListSpeakers' {domainId} -> domainId) (\s@ListSpeakers' {} a -> s {domainId = a} :: ListSpeakers)++instance Core.AWSPager ListSpeakers where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listSpeakersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listSpeakersResponse_speakerSummaries+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listSpeakers_nextToken+          Lens..~ rs+          Lens.^? listSpeakersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListSpeakers where+  type AWSResponse ListSpeakers = ListSpeakersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListSpeakersResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "SpeakerSummaries"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListSpeakers where+  hashWithSalt _salt ListSpeakers' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` domainId++instance Prelude.NFData ListSpeakers where+  rnf ListSpeakers' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf domainId++instance Data.ToHeaders ListSpeakers where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.ListSpeakers" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListSpeakers where+  toJSON ListSpeakers' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("DomainId" Data..= domainId)+          ]+      )++instance Data.ToPath ListSpeakers where+  toPath = Prelude.const "/"++instance Data.ToQuery ListSpeakers where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListSpeakersResponse' smart constructor.+data ListSpeakersResponse = ListSpeakersResponse'+  { -- | If @NextToken@ is returned, there are more results available. The value+    -- of @NextToken@ is a unique pagination token for each page. Make the call+    -- again using the returned token to retrieve the next page. Keep all other+    -- arguments unchanged. Each pagination token expires after 24 hours.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list containing details about each speaker in the Amazon Web Services+    -- account.+    speakerSummaries :: Prelude.Maybe [SpeakerSummary],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListSpeakersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSpeakersResponse_nextToken' - If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+--+-- 'speakerSummaries', 'listSpeakersResponse_speakerSummaries' - A list containing details about each speaker in the Amazon Web Services+-- account.+--+-- 'httpStatus', 'listSpeakersResponse_httpStatus' - The response's http status code.+newListSpeakersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListSpeakersResponse+newListSpeakersResponse pHttpStatus_ =+  ListSpeakersResponse'+    { nextToken = Prelude.Nothing,+      speakerSummaries = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | If @NextToken@ is returned, there are more results available. The value+-- of @NextToken@ is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged. Each pagination token expires after 24 hours.+listSpeakersResponse_nextToken :: Lens.Lens' ListSpeakersResponse (Prelude.Maybe Prelude.Text)+listSpeakersResponse_nextToken = Lens.lens (\ListSpeakersResponse' {nextToken} -> nextToken) (\s@ListSpeakersResponse' {} a -> s {nextToken = a} :: ListSpeakersResponse)++-- | A list containing details about each speaker in the Amazon Web Services+-- account.+listSpeakersResponse_speakerSummaries :: Lens.Lens' ListSpeakersResponse (Prelude.Maybe [SpeakerSummary])+listSpeakersResponse_speakerSummaries = Lens.lens (\ListSpeakersResponse' {speakerSummaries} -> speakerSummaries) (\s@ListSpeakersResponse' {} a -> s {speakerSummaries = a} :: ListSpeakersResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listSpeakersResponse_httpStatus :: Lens.Lens' ListSpeakersResponse Prelude.Int+listSpeakersResponse_httpStatus = Lens.lens (\ListSpeakersResponse' {httpStatus} -> httpStatus) (\s@ListSpeakersResponse' {} a -> s {httpStatus = a} :: ListSpeakersResponse)++instance Prelude.NFData ListSpeakersResponse where+  rnf ListSpeakersResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf speakerSummaries+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/ListTagsForResource.hs view
@@ -0,0 +1,172 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.ListTagsForResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists all tags associated with a specified Voice ID resource.+module Amazonka.VoiceId.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newListTagsForResource' smart constructor.+data ListTagsForResource = ListTagsForResource'+  { -- | The Amazon Resource Name (ARN) of the Voice ID resource for which you+    -- want to list the tags.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the Voice ID resource for which you+-- want to list the tags.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) of the Voice ID resource for which you+-- want to list the tags.+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)++instance Core.AWSRequest ListTagsForResource where+  type+    AWSResponse ListTagsForResource =+      ListTagsForResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTagsForResourceResponse'+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTagsForResource where+  hashWithSalt _salt ListTagsForResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTagsForResource where+  rnf ListTagsForResource' {..} =+    Prelude.rnf resourceArn++instance Data.ToHeaders ListTagsForResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "VoiceID.ListTagsForResource" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListTagsForResource where+  toJSON ListTagsForResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ResourceArn" Data..= resourceArn)]+      )++instance Data.ToPath ListTagsForResource where+  toPath = Prelude.const "/"++instance Data.ToQuery ListTagsForResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | The list of tags associated with the specified resource.+    tags :: Prelude.Maybe [Tag],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, 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' - The list of tags associated with the specified resource.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of tags associated with the specified resource.+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe [Tag])+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/OptOutSpeaker.hs view
@@ -0,0 +1,191 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.OptOutSpeaker+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Opts out a speaker from Voice ID. A speaker can be opted out regardless+-- of whether or not they already exist in Voice ID. If they don\'t yet+-- exist, a new speaker is created in an opted out state. If they already+-- exist, their existing status is overridden and they are opted out.+-- Enrollment and evaluation authentication requests are rejected for opted+-- out speakers, and opted out speakers have no voice embeddings stored in+-- Voice ID.+module Amazonka.VoiceId.OptOutSpeaker+  ( -- * Creating a Request+    OptOutSpeaker (..),+    newOptOutSpeaker,++    -- * Request Lenses+    optOutSpeaker_domainId,+    optOutSpeaker_speakerId,++    -- * Destructuring the Response+    OptOutSpeakerResponse (..),+    newOptOutSpeakerResponse,++    -- * Response Lenses+    optOutSpeakerResponse_speaker,+    optOutSpeakerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newOptOutSpeaker' smart constructor.+data OptOutSpeaker = OptOutSpeaker'+  { -- | The identifier of the domain containing the speaker.+    domainId :: Prelude.Text,+    -- | The identifier of the speaker you want opted-out.+    speakerId :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OptOutSpeaker' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domainId', 'optOutSpeaker_domainId' - The identifier of the domain containing the speaker.+--+-- 'speakerId', 'optOutSpeaker_speakerId' - The identifier of the speaker you want opted-out.+newOptOutSpeaker ::+  -- | 'domainId'+  Prelude.Text ->+  -- | 'speakerId'+  Prelude.Text ->+  OptOutSpeaker+newOptOutSpeaker pDomainId_ pSpeakerId_ =+  OptOutSpeaker'+    { domainId = pDomainId_,+      speakerId = Data._Sensitive Lens.# pSpeakerId_+    }++-- | The identifier of the domain containing the speaker.+optOutSpeaker_domainId :: Lens.Lens' OptOutSpeaker Prelude.Text+optOutSpeaker_domainId = Lens.lens (\OptOutSpeaker' {domainId} -> domainId) (\s@OptOutSpeaker' {} a -> s {domainId = a} :: OptOutSpeaker)++-- | The identifier of the speaker you want opted-out.+optOutSpeaker_speakerId :: Lens.Lens' OptOutSpeaker Prelude.Text+optOutSpeaker_speakerId = Lens.lens (\OptOutSpeaker' {speakerId} -> speakerId) (\s@OptOutSpeaker' {} a -> s {speakerId = a} :: OptOutSpeaker) Prelude.. Data._Sensitive++instance Core.AWSRequest OptOutSpeaker where+  type+    AWSResponse OptOutSpeaker =+      OptOutSpeakerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          OptOutSpeakerResponse'+            Prelude.<$> (x Data..?> "Speaker")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable OptOutSpeaker where+  hashWithSalt _salt OptOutSpeaker' {..} =+    _salt+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` speakerId++instance Prelude.NFData OptOutSpeaker where+  rnf OptOutSpeaker' {..} =+    Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf speakerId++instance Data.ToHeaders OptOutSpeaker where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.OptOutSpeaker" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON OptOutSpeaker where+  toJSON OptOutSpeaker' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just ("SpeakerId" Data..= speakerId)+          ]+      )++instance Data.ToPath OptOutSpeaker where+  toPath = Prelude.const "/"++instance Data.ToQuery OptOutSpeaker where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newOptOutSpeakerResponse' smart constructor.+data OptOutSpeakerResponse = OptOutSpeakerResponse'+  { -- | Details about the opted-out speaker.+    speaker :: Prelude.Maybe Speaker,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OptOutSpeakerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'speaker', 'optOutSpeakerResponse_speaker' - Details about the opted-out speaker.+--+-- 'httpStatus', 'optOutSpeakerResponse_httpStatus' - The response's http status code.+newOptOutSpeakerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  OptOutSpeakerResponse+newOptOutSpeakerResponse pHttpStatus_ =+  OptOutSpeakerResponse'+    { speaker = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Details about the opted-out speaker.+optOutSpeakerResponse_speaker :: Lens.Lens' OptOutSpeakerResponse (Prelude.Maybe Speaker)+optOutSpeakerResponse_speaker = Lens.lens (\OptOutSpeakerResponse' {speaker} -> speaker) (\s@OptOutSpeakerResponse' {} a -> s {speaker = a} :: OptOutSpeakerResponse)++-- | The response's http status code.+optOutSpeakerResponse_httpStatus :: Lens.Lens' OptOutSpeakerResponse Prelude.Int+optOutSpeakerResponse_httpStatus = Lens.lens (\OptOutSpeakerResponse' {httpStatus} -> httpStatus) (\s@OptOutSpeakerResponse' {} a -> s {httpStatus = a} :: OptOutSpeakerResponse)++instance Prelude.NFData OptOutSpeakerResponse where+  rnf OptOutSpeakerResponse' {..} =+    Prelude.rnf speaker+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/StartFraudsterRegistrationJob.hs view
@@ -0,0 +1,308 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.StartFraudsterRegistrationJob+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Starts a new batch fraudster registration job using provided details.+module Amazonka.VoiceId.StartFraudsterRegistrationJob+  ( -- * Creating a Request+    StartFraudsterRegistrationJob (..),+    newStartFraudsterRegistrationJob,++    -- * Request Lenses+    startFraudsterRegistrationJob_clientToken,+    startFraudsterRegistrationJob_jobName,+    startFraudsterRegistrationJob_registrationConfig,+    startFraudsterRegistrationJob_dataAccessRoleArn,+    startFraudsterRegistrationJob_domainId,+    startFraudsterRegistrationJob_inputDataConfig,+    startFraudsterRegistrationJob_outputDataConfig,++    -- * Destructuring the Response+    StartFraudsterRegistrationJobResponse (..),+    newStartFraudsterRegistrationJobResponse,++    -- * Response Lenses+    startFraudsterRegistrationJobResponse_job,+    startFraudsterRegistrationJobResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newStartFraudsterRegistrationJob' smart constructor.+data StartFraudsterRegistrationJob = StartFraudsterRegistrationJob'+  { -- | The idempotency token for starting a new fraudster registration job. If+    -- not provided, Amazon Web Services SDK populates this field.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the new fraudster registration job.+    jobName :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The registration config containing details such as the action to take+    -- when a duplicate fraudster is detected, and the similarity threshold to+    -- use for detecting a duplicate fraudster.+    registrationConfig :: Prelude.Maybe RegistrationConfig,+    -- | The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+    -- to access customer\'s buckets to read the input manifest file and write+    -- the Job output file. Refer to the+    -- <https://docs.aws.amazon.com/connect/latest/adminguide/voiceid-fraudster-watchlist.html Create and edit a fraudster watchlist>+    -- documentation for the permissions needed in this role.+    dataAccessRoleArn :: Prelude.Text,+    -- | The identifier of the domain containing the fraudster registration job+    -- and in which the fraudsters are registered.+    domainId :: Prelude.Text,+    -- | The input data config containing an S3 URI for the input manifest file+    -- that contains the list of fraudster registration requests.+    inputDataConfig :: InputDataConfig,+    -- | The output data config containing the S3 location where Voice ID writes+    -- the job output file; you must also include a KMS key ID to encrypt the+    -- file.+    outputDataConfig :: OutputDataConfig+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartFraudsterRegistrationJob' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startFraudsterRegistrationJob_clientToken' - The idempotency token for starting a new fraudster registration job. If+-- not provided, Amazon Web Services SDK populates this field.+--+-- 'jobName', 'startFraudsterRegistrationJob_jobName' - The name of the new fraudster registration job.+--+-- 'registrationConfig', 'startFraudsterRegistrationJob_registrationConfig' - The registration config containing details such as the action to take+-- when a duplicate fraudster is detected, and the similarity threshold to+-- use for detecting a duplicate fraudster.+--+-- 'dataAccessRoleArn', 'startFraudsterRegistrationJob_dataAccessRoleArn' - The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+-- to access customer\'s buckets to read the input manifest file and write+-- the Job output file. Refer to the+-- <https://docs.aws.amazon.com/connect/latest/adminguide/voiceid-fraudster-watchlist.html Create and edit a fraudster watchlist>+-- documentation for the permissions needed in this role.+--+-- 'domainId', 'startFraudsterRegistrationJob_domainId' - The identifier of the domain containing the fraudster registration job+-- and in which the fraudsters are registered.+--+-- 'inputDataConfig', 'startFraudsterRegistrationJob_inputDataConfig' - The input data config containing an S3 URI for the input manifest file+-- that contains the list of fraudster registration requests.+--+-- 'outputDataConfig', 'startFraudsterRegistrationJob_outputDataConfig' - The output data config containing the S3 location where Voice ID writes+-- the job output file; you must also include a KMS key ID to encrypt the+-- file.+newStartFraudsterRegistrationJob ::+  -- | 'dataAccessRoleArn'+  Prelude.Text ->+  -- | 'domainId'+  Prelude.Text ->+  -- | 'inputDataConfig'+  InputDataConfig ->+  -- | 'outputDataConfig'+  OutputDataConfig ->+  StartFraudsterRegistrationJob+newStartFraudsterRegistrationJob+  pDataAccessRoleArn_+  pDomainId_+  pInputDataConfig_+  pOutputDataConfig_ =+    StartFraudsterRegistrationJob'+      { clientToken =+          Prelude.Nothing,+        jobName = Prelude.Nothing,+        registrationConfig = Prelude.Nothing,+        dataAccessRoleArn = pDataAccessRoleArn_,+        domainId = pDomainId_,+        inputDataConfig = pInputDataConfig_,+        outputDataConfig = pOutputDataConfig_+      }++-- | The idempotency token for starting a new fraudster registration job. If+-- not provided, Amazon Web Services SDK populates this field.+startFraudsterRegistrationJob_clientToken :: Lens.Lens' StartFraudsterRegistrationJob (Prelude.Maybe Prelude.Text)+startFraudsterRegistrationJob_clientToken = Lens.lens (\StartFraudsterRegistrationJob' {clientToken} -> clientToken) (\s@StartFraudsterRegistrationJob' {} a -> s {clientToken = a} :: StartFraudsterRegistrationJob)++-- | The name of the new fraudster registration job.+startFraudsterRegistrationJob_jobName :: Lens.Lens' StartFraudsterRegistrationJob (Prelude.Maybe Prelude.Text)+startFraudsterRegistrationJob_jobName = Lens.lens (\StartFraudsterRegistrationJob' {jobName} -> jobName) (\s@StartFraudsterRegistrationJob' {} a -> s {jobName = a} :: StartFraudsterRegistrationJob) Prelude.. Lens.mapping Data._Sensitive++-- | The registration config containing details such as the action to take+-- when a duplicate fraudster is detected, and the similarity threshold to+-- use for detecting a duplicate fraudster.+startFraudsterRegistrationJob_registrationConfig :: Lens.Lens' StartFraudsterRegistrationJob (Prelude.Maybe RegistrationConfig)+startFraudsterRegistrationJob_registrationConfig = Lens.lens (\StartFraudsterRegistrationJob' {registrationConfig} -> registrationConfig) (\s@StartFraudsterRegistrationJob' {} a -> s {registrationConfig = a} :: StartFraudsterRegistrationJob)++-- | The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+-- to access customer\'s buckets to read the input manifest file and write+-- the Job output file. Refer to the+-- <https://docs.aws.amazon.com/connect/latest/adminguide/voiceid-fraudster-watchlist.html Create and edit a fraudster watchlist>+-- documentation for the permissions needed in this role.+startFraudsterRegistrationJob_dataAccessRoleArn :: Lens.Lens' StartFraudsterRegistrationJob Prelude.Text+startFraudsterRegistrationJob_dataAccessRoleArn = Lens.lens (\StartFraudsterRegistrationJob' {dataAccessRoleArn} -> dataAccessRoleArn) (\s@StartFraudsterRegistrationJob' {} a -> s {dataAccessRoleArn = a} :: StartFraudsterRegistrationJob)++-- | The identifier of the domain containing the fraudster registration job+-- and in which the fraudsters are registered.+startFraudsterRegistrationJob_domainId :: Lens.Lens' StartFraudsterRegistrationJob Prelude.Text+startFraudsterRegistrationJob_domainId = Lens.lens (\StartFraudsterRegistrationJob' {domainId} -> domainId) (\s@StartFraudsterRegistrationJob' {} a -> s {domainId = a} :: StartFraudsterRegistrationJob)++-- | The input data config containing an S3 URI for the input manifest file+-- that contains the list of fraudster registration requests.+startFraudsterRegistrationJob_inputDataConfig :: Lens.Lens' StartFraudsterRegistrationJob InputDataConfig+startFraudsterRegistrationJob_inputDataConfig = Lens.lens (\StartFraudsterRegistrationJob' {inputDataConfig} -> inputDataConfig) (\s@StartFraudsterRegistrationJob' {} a -> s {inputDataConfig = a} :: StartFraudsterRegistrationJob)++-- | The output data config containing the S3 location where Voice ID writes+-- the job output file; you must also include a KMS key ID to encrypt the+-- file.+startFraudsterRegistrationJob_outputDataConfig :: Lens.Lens' StartFraudsterRegistrationJob OutputDataConfig+startFraudsterRegistrationJob_outputDataConfig = Lens.lens (\StartFraudsterRegistrationJob' {outputDataConfig} -> outputDataConfig) (\s@StartFraudsterRegistrationJob' {} a -> s {outputDataConfig = a} :: StartFraudsterRegistrationJob)++instance+  Core.AWSRequest+    StartFraudsterRegistrationJob+  where+  type+    AWSResponse StartFraudsterRegistrationJob =+      StartFraudsterRegistrationJobResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartFraudsterRegistrationJobResponse'+            Prelude.<$> (x Data..?> "Job")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    StartFraudsterRegistrationJob+  where+  hashWithSalt _salt StartFraudsterRegistrationJob' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` jobName+      `Prelude.hashWithSalt` registrationConfig+      `Prelude.hashWithSalt` dataAccessRoleArn+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` inputDataConfig+      `Prelude.hashWithSalt` outputDataConfig++instance Prelude.NFData StartFraudsterRegistrationJob where+  rnf StartFraudsterRegistrationJob' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf jobName+      `Prelude.seq` Prelude.rnf registrationConfig+      `Prelude.seq` Prelude.rnf dataAccessRoleArn+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf inputDataConfig+      `Prelude.seq` Prelude.rnf outputDataConfig++instance Data.ToHeaders StartFraudsterRegistrationJob where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "VoiceID.StartFraudsterRegistrationJob" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartFraudsterRegistrationJob where+  toJSON StartFraudsterRegistrationJob' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,+            ("JobName" Data..=) Prelude.<$> jobName,+            ("RegistrationConfig" Data..=)+              Prelude.<$> registrationConfig,+            Prelude.Just+              ("DataAccessRoleArn" Data..= dataAccessRoleArn),+            Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just+              ("InputDataConfig" Data..= inputDataConfig),+            Prelude.Just+              ("OutputDataConfig" Data..= outputDataConfig)+          ]+      )++instance Data.ToPath StartFraudsterRegistrationJob where+  toPath = Prelude.const "/"++instance Data.ToQuery StartFraudsterRegistrationJob where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartFraudsterRegistrationJobResponse' smart constructor.+data StartFraudsterRegistrationJobResponse = StartFraudsterRegistrationJobResponse'+  { -- | Details about the started fraudster registration job.+    job :: Prelude.Maybe FraudsterRegistrationJob,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartFraudsterRegistrationJobResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'job', 'startFraudsterRegistrationJobResponse_job' - Details about the started fraudster registration job.+--+-- 'httpStatus', 'startFraudsterRegistrationJobResponse_httpStatus' - The response's http status code.+newStartFraudsterRegistrationJobResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartFraudsterRegistrationJobResponse+newStartFraudsterRegistrationJobResponse pHttpStatus_ =+  StartFraudsterRegistrationJobResponse'+    { job =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Details about the started fraudster registration job.+startFraudsterRegistrationJobResponse_job :: Lens.Lens' StartFraudsterRegistrationJobResponse (Prelude.Maybe FraudsterRegistrationJob)+startFraudsterRegistrationJobResponse_job = Lens.lens (\StartFraudsterRegistrationJobResponse' {job} -> job) (\s@StartFraudsterRegistrationJobResponse' {} a -> s {job = a} :: StartFraudsterRegistrationJobResponse)++-- | The response's http status code.+startFraudsterRegistrationJobResponse_httpStatus :: Lens.Lens' StartFraudsterRegistrationJobResponse Prelude.Int+startFraudsterRegistrationJobResponse_httpStatus = Lens.lens (\StartFraudsterRegistrationJobResponse' {httpStatus} -> httpStatus) (\s@StartFraudsterRegistrationJobResponse' {} a -> s {httpStatus = a} :: StartFraudsterRegistrationJobResponse)++instance+  Prelude.NFData+    StartFraudsterRegistrationJobResponse+  where+  rnf StartFraudsterRegistrationJobResponse' {..} =+    Prelude.rnf job+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/StartSpeakerEnrollmentJob.hs view
@@ -0,0 +1,302 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.StartSpeakerEnrollmentJob+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Starts a new batch speaker enrollment job using specified details.+module Amazonka.VoiceId.StartSpeakerEnrollmentJob+  ( -- * Creating a Request+    StartSpeakerEnrollmentJob (..),+    newStartSpeakerEnrollmentJob,++    -- * Request Lenses+    startSpeakerEnrollmentJob_clientToken,+    startSpeakerEnrollmentJob_enrollmentConfig,+    startSpeakerEnrollmentJob_jobName,+    startSpeakerEnrollmentJob_dataAccessRoleArn,+    startSpeakerEnrollmentJob_domainId,+    startSpeakerEnrollmentJob_inputDataConfig,+    startSpeakerEnrollmentJob_outputDataConfig,++    -- * Destructuring the Response+    StartSpeakerEnrollmentJobResponse (..),+    newStartSpeakerEnrollmentJobResponse,++    -- * Response Lenses+    startSpeakerEnrollmentJobResponse_job,+    startSpeakerEnrollmentJobResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newStartSpeakerEnrollmentJob' smart constructor.+data StartSpeakerEnrollmentJob = StartSpeakerEnrollmentJob'+  { -- | The idempotency token for starting a new speaker enrollment Job. If not+    -- provided, Amazon Web Services SDK populates this field.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The enrollment config that contains details such as the action to take+    -- when a speaker is already enrolled in Voice ID or when a speaker is+    -- identified as a fraudster.+    enrollmentConfig :: Prelude.Maybe EnrollmentConfig,+    -- | A name for your speaker enrollment job.+    jobName :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+    -- to access customer\'s buckets to read the input manifest file and write+    -- the job output file. Refer to+    -- <https://docs.aws.amazon.com/connect/latest/adminguide/voiceid-batch-enrollment.html Batch enrollment using audio data from prior calls>+    -- for the permissions needed in this role.+    dataAccessRoleArn :: Prelude.Text,+    -- | The identifier of the domain that contains the speaker enrollment job+    -- and in which the speakers are enrolled.+    domainId :: Prelude.Text,+    -- | The input data config containing the S3 location for the input manifest+    -- file that contains the list of speaker enrollment requests.+    inputDataConfig :: InputDataConfig,+    -- | The output data config containing the S3 location where Voice ID writes+    -- the job output file; you must also include a KMS key ID to encrypt the+    -- file.+    outputDataConfig :: OutputDataConfig+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartSpeakerEnrollmentJob' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startSpeakerEnrollmentJob_clientToken' - The idempotency token for starting a new speaker enrollment Job. If not+-- provided, Amazon Web Services SDK populates this field.+--+-- 'enrollmentConfig', 'startSpeakerEnrollmentJob_enrollmentConfig' - The enrollment config that contains details such as the action to take+-- when a speaker is already enrolled in Voice ID or when a speaker is+-- identified as a fraudster.+--+-- 'jobName', 'startSpeakerEnrollmentJob_jobName' - A name for your speaker enrollment job.+--+-- 'dataAccessRoleArn', 'startSpeakerEnrollmentJob_dataAccessRoleArn' - The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+-- to access customer\'s buckets to read the input manifest file and write+-- the job output file. Refer to+-- <https://docs.aws.amazon.com/connect/latest/adminguide/voiceid-batch-enrollment.html Batch enrollment using audio data from prior calls>+-- for the permissions needed in this role.+--+-- 'domainId', 'startSpeakerEnrollmentJob_domainId' - The identifier of the domain that contains the speaker enrollment job+-- and in which the speakers are enrolled.+--+-- 'inputDataConfig', 'startSpeakerEnrollmentJob_inputDataConfig' - The input data config containing the S3 location for the input manifest+-- file that contains the list of speaker enrollment requests.+--+-- 'outputDataConfig', 'startSpeakerEnrollmentJob_outputDataConfig' - The output data config containing the S3 location where Voice ID writes+-- the job output file; you must also include a KMS key ID to encrypt the+-- file.+newStartSpeakerEnrollmentJob ::+  -- | 'dataAccessRoleArn'+  Prelude.Text ->+  -- | 'domainId'+  Prelude.Text ->+  -- | 'inputDataConfig'+  InputDataConfig ->+  -- | 'outputDataConfig'+  OutputDataConfig ->+  StartSpeakerEnrollmentJob+newStartSpeakerEnrollmentJob+  pDataAccessRoleArn_+  pDomainId_+  pInputDataConfig_+  pOutputDataConfig_ =+    StartSpeakerEnrollmentJob'+      { clientToken =+          Prelude.Nothing,+        enrollmentConfig = Prelude.Nothing,+        jobName = Prelude.Nothing,+        dataAccessRoleArn = pDataAccessRoleArn_,+        domainId = pDomainId_,+        inputDataConfig = pInputDataConfig_,+        outputDataConfig = pOutputDataConfig_+      }++-- | The idempotency token for starting a new speaker enrollment Job. If not+-- provided, Amazon Web Services SDK populates this field.+startSpeakerEnrollmentJob_clientToken :: Lens.Lens' StartSpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)+startSpeakerEnrollmentJob_clientToken = Lens.lens (\StartSpeakerEnrollmentJob' {clientToken} -> clientToken) (\s@StartSpeakerEnrollmentJob' {} a -> s {clientToken = a} :: StartSpeakerEnrollmentJob)++-- | The enrollment config that contains details such as the action to take+-- when a speaker is already enrolled in Voice ID or when a speaker is+-- identified as a fraudster.+startSpeakerEnrollmentJob_enrollmentConfig :: Lens.Lens' StartSpeakerEnrollmentJob (Prelude.Maybe EnrollmentConfig)+startSpeakerEnrollmentJob_enrollmentConfig = Lens.lens (\StartSpeakerEnrollmentJob' {enrollmentConfig} -> enrollmentConfig) (\s@StartSpeakerEnrollmentJob' {} a -> s {enrollmentConfig = a} :: StartSpeakerEnrollmentJob)++-- | A name for your speaker enrollment job.+startSpeakerEnrollmentJob_jobName :: Lens.Lens' StartSpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)+startSpeakerEnrollmentJob_jobName = Lens.lens (\StartSpeakerEnrollmentJob' {jobName} -> jobName) (\s@StartSpeakerEnrollmentJob' {} a -> s {jobName = a} :: StartSpeakerEnrollmentJob) Prelude.. Lens.mapping Data._Sensitive++-- | The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+-- to access customer\'s buckets to read the input manifest file and write+-- the job output file. Refer to+-- <https://docs.aws.amazon.com/connect/latest/adminguide/voiceid-batch-enrollment.html Batch enrollment using audio data from prior calls>+-- for the permissions needed in this role.+startSpeakerEnrollmentJob_dataAccessRoleArn :: Lens.Lens' StartSpeakerEnrollmentJob Prelude.Text+startSpeakerEnrollmentJob_dataAccessRoleArn = Lens.lens (\StartSpeakerEnrollmentJob' {dataAccessRoleArn} -> dataAccessRoleArn) (\s@StartSpeakerEnrollmentJob' {} a -> s {dataAccessRoleArn = a} :: StartSpeakerEnrollmentJob)++-- | The identifier of the domain that contains the speaker enrollment job+-- and in which the speakers are enrolled.+startSpeakerEnrollmentJob_domainId :: Lens.Lens' StartSpeakerEnrollmentJob Prelude.Text+startSpeakerEnrollmentJob_domainId = Lens.lens (\StartSpeakerEnrollmentJob' {domainId} -> domainId) (\s@StartSpeakerEnrollmentJob' {} a -> s {domainId = a} :: StartSpeakerEnrollmentJob)++-- | The input data config containing the S3 location for the input manifest+-- file that contains the list of speaker enrollment requests.+startSpeakerEnrollmentJob_inputDataConfig :: Lens.Lens' StartSpeakerEnrollmentJob InputDataConfig+startSpeakerEnrollmentJob_inputDataConfig = Lens.lens (\StartSpeakerEnrollmentJob' {inputDataConfig} -> inputDataConfig) (\s@StartSpeakerEnrollmentJob' {} a -> s {inputDataConfig = a} :: StartSpeakerEnrollmentJob)++-- | The output data config containing the S3 location where Voice ID writes+-- the job output file; you must also include a KMS key ID to encrypt the+-- file.+startSpeakerEnrollmentJob_outputDataConfig :: Lens.Lens' StartSpeakerEnrollmentJob OutputDataConfig+startSpeakerEnrollmentJob_outputDataConfig = Lens.lens (\StartSpeakerEnrollmentJob' {outputDataConfig} -> outputDataConfig) (\s@StartSpeakerEnrollmentJob' {} a -> s {outputDataConfig = a} :: StartSpeakerEnrollmentJob)++instance Core.AWSRequest StartSpeakerEnrollmentJob where+  type+    AWSResponse StartSpeakerEnrollmentJob =+      StartSpeakerEnrollmentJobResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartSpeakerEnrollmentJobResponse'+            Prelude.<$> (x Data..?> "Job")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartSpeakerEnrollmentJob where+  hashWithSalt _salt StartSpeakerEnrollmentJob' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` enrollmentConfig+      `Prelude.hashWithSalt` jobName+      `Prelude.hashWithSalt` dataAccessRoleArn+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` inputDataConfig+      `Prelude.hashWithSalt` outputDataConfig++instance Prelude.NFData StartSpeakerEnrollmentJob where+  rnf StartSpeakerEnrollmentJob' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf enrollmentConfig+      `Prelude.seq` Prelude.rnf jobName+      `Prelude.seq` Prelude.rnf dataAccessRoleArn+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf inputDataConfig+      `Prelude.seq` Prelude.rnf outputDataConfig++instance Data.ToHeaders StartSpeakerEnrollmentJob where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "VoiceID.StartSpeakerEnrollmentJob" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartSpeakerEnrollmentJob where+  toJSON StartSpeakerEnrollmentJob' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,+            ("EnrollmentConfig" Data..=)+              Prelude.<$> enrollmentConfig,+            ("JobName" Data..=) Prelude.<$> jobName,+            Prelude.Just+              ("DataAccessRoleArn" Data..= dataAccessRoleArn),+            Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just+              ("InputDataConfig" Data..= inputDataConfig),+            Prelude.Just+              ("OutputDataConfig" Data..= outputDataConfig)+          ]+      )++instance Data.ToPath StartSpeakerEnrollmentJob where+  toPath = Prelude.const "/"++instance Data.ToQuery StartSpeakerEnrollmentJob where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartSpeakerEnrollmentJobResponse' smart constructor.+data StartSpeakerEnrollmentJobResponse = StartSpeakerEnrollmentJobResponse'+  { -- | Details about the started speaker enrollment job.+    job :: Prelude.Maybe SpeakerEnrollmentJob,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartSpeakerEnrollmentJobResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'job', 'startSpeakerEnrollmentJobResponse_job' - Details about the started speaker enrollment job.+--+-- 'httpStatus', 'startSpeakerEnrollmentJobResponse_httpStatus' - The response's http status code.+newStartSpeakerEnrollmentJobResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartSpeakerEnrollmentJobResponse+newStartSpeakerEnrollmentJobResponse pHttpStatus_ =+  StartSpeakerEnrollmentJobResponse'+    { job =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Details about the started speaker enrollment job.+startSpeakerEnrollmentJobResponse_job :: Lens.Lens' StartSpeakerEnrollmentJobResponse (Prelude.Maybe SpeakerEnrollmentJob)+startSpeakerEnrollmentJobResponse_job = Lens.lens (\StartSpeakerEnrollmentJobResponse' {job} -> job) (\s@StartSpeakerEnrollmentJobResponse' {} a -> s {job = a} :: StartSpeakerEnrollmentJobResponse)++-- | The response's http status code.+startSpeakerEnrollmentJobResponse_httpStatus :: Lens.Lens' StartSpeakerEnrollmentJobResponse Prelude.Int+startSpeakerEnrollmentJobResponse_httpStatus = Lens.lens (\StartSpeakerEnrollmentJobResponse' {httpStatus} -> httpStatus) (\s@StartSpeakerEnrollmentJobResponse' {} a -> s {httpStatus = a} :: StartSpeakerEnrollmentJobResponse)++instance+  Prelude.NFData+    StartSpeakerEnrollmentJobResponse+  where+  rnf StartSpeakerEnrollmentJobResponse' {..} =+    Prelude.rnf job+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/TagResource.hs view
@@ -0,0 +1,166 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.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)+--+-- Tags a Voice ID resource with the provided list of tags.+module Amazonka.VoiceId.TagResource+  ( -- * Creating a Request+    TagResource (..),+    newTagResource,++    -- * Request Lenses+    tagResource_resourceArn,+    tagResource_tags,++    -- * Destructuring the Response+    TagResourceResponse (..),+    newTagResourceResponse,++    -- * Response Lenses+    tagResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the Voice ID resource you want to tag.+    resourceArn :: Prelude.Text,+    -- | The list of tags to assign to the specified resource.+    tags :: [Tag]+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the Voice ID resource you want to tag.+--+-- 'tags', 'tagResource_tags' - The list of tags to assign to the specified resource.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the Voice ID resource you want to tag.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | The list of tags to assign to the specified resource.+tagResource_tags :: Lens.Lens' TagResource [Tag]+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced++instance Core.AWSRequest TagResource where+  type AWSResponse TagResource = TagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          TagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TagResource where+  hashWithSalt _salt TagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData TagResource where+  rnf TagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders TagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.TagResource" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),+            Prelude.Just ("Tags" Data..= tags)+          ]+      )++instance Data.ToPath TagResource where+  toPath = Prelude.const "/"++instance Data.ToQuery TagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/Types.hs view
@@ -0,0 +1,455 @@+{-# 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.VoiceId.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.VoiceId.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _ConflictException,+    _InternalServerException,+    _ResourceNotFoundException,+    _ServiceQuotaExceededException,+    _ThrottlingException,+    _ValidationException,++    -- * AuthenticationDecision+    AuthenticationDecision (..),++    -- * DomainStatus+    DomainStatus (..),++    -- * DuplicateRegistrationAction+    DuplicateRegistrationAction (..),++    -- * ExistingEnrollmentAction+    ExistingEnrollmentAction (..),++    -- * FraudDetectionAction+    FraudDetectionAction (..),++    -- * FraudDetectionDecision+    FraudDetectionDecision (..),++    -- * FraudDetectionReason+    FraudDetectionReason (..),++    -- * FraudsterRegistrationJobStatus+    FraudsterRegistrationJobStatus (..),++    -- * ServerSideEncryptionUpdateStatus+    ServerSideEncryptionUpdateStatus (..),++    -- * SpeakerEnrollmentJobStatus+    SpeakerEnrollmentJobStatus (..),++    -- * SpeakerStatus+    SpeakerStatus (..),++    -- * StreamingStatus+    StreamingStatus (..),++    -- * AuthenticationConfiguration+    AuthenticationConfiguration (..),+    newAuthenticationConfiguration,+    authenticationConfiguration_acceptanceThreshold,++    -- * AuthenticationResult+    AuthenticationResult (..),+    newAuthenticationResult,+    authenticationResult_audioAggregationEndedAt,+    authenticationResult_audioAggregationStartedAt,+    authenticationResult_authenticationResultId,+    authenticationResult_configuration,+    authenticationResult_customerSpeakerId,+    authenticationResult_decision,+    authenticationResult_generatedSpeakerId,+    authenticationResult_score,++    -- * Domain+    Domain (..),+    newDomain,+    domain_arn,+    domain_createdAt,+    domain_description,+    domain_domainId,+    domain_domainStatus,+    domain_name,+    domain_serverSideEncryptionConfiguration,+    domain_serverSideEncryptionUpdateDetails,+    domain_updatedAt,++    -- * DomainSummary+    DomainSummary (..),+    newDomainSummary,+    domainSummary_arn,+    domainSummary_createdAt,+    domainSummary_description,+    domainSummary_domainId,+    domainSummary_domainStatus,+    domainSummary_name,+    domainSummary_serverSideEncryptionConfiguration,+    domainSummary_serverSideEncryptionUpdateDetails,+    domainSummary_updatedAt,++    -- * EnrollmentConfig+    EnrollmentConfig (..),+    newEnrollmentConfig,+    enrollmentConfig_existingEnrollmentAction,+    enrollmentConfig_fraudDetectionConfig,++    -- * EnrollmentJobFraudDetectionConfig+    EnrollmentJobFraudDetectionConfig (..),+    newEnrollmentJobFraudDetectionConfig,+    enrollmentJobFraudDetectionConfig_fraudDetectionAction,+    enrollmentJobFraudDetectionConfig_riskThreshold,++    -- * FailureDetails+    FailureDetails (..),+    newFailureDetails,+    failureDetails_message,+    failureDetails_statusCode,++    -- * FraudDetectionConfiguration+    FraudDetectionConfiguration (..),+    newFraudDetectionConfiguration,+    fraudDetectionConfiguration_riskThreshold,++    -- * FraudDetectionResult+    FraudDetectionResult (..),+    newFraudDetectionResult,+    fraudDetectionResult_audioAggregationEndedAt,+    fraudDetectionResult_audioAggregationStartedAt,+    fraudDetectionResult_configuration,+    fraudDetectionResult_decision,+    fraudDetectionResult_fraudDetectionResultId,+    fraudDetectionResult_reasons,+    fraudDetectionResult_riskDetails,++    -- * FraudRiskDetails+    FraudRiskDetails (..),+    newFraudRiskDetails,+    fraudRiskDetails_knownFraudsterRisk,+    fraudRiskDetails_voiceSpoofingRisk,++    -- * Fraudster+    Fraudster (..),+    newFraudster,+    fraudster_createdAt,+    fraudster_domainId,+    fraudster_generatedFraudsterId,++    -- * FraudsterRegistrationJob+    FraudsterRegistrationJob (..),+    newFraudsterRegistrationJob,+    fraudsterRegistrationJob_createdAt,+    fraudsterRegistrationJob_dataAccessRoleArn,+    fraudsterRegistrationJob_domainId,+    fraudsterRegistrationJob_endedAt,+    fraudsterRegistrationJob_failureDetails,+    fraudsterRegistrationJob_inputDataConfig,+    fraudsterRegistrationJob_jobId,+    fraudsterRegistrationJob_jobName,+    fraudsterRegistrationJob_jobProgress,+    fraudsterRegistrationJob_jobStatus,+    fraudsterRegistrationJob_outputDataConfig,+    fraudsterRegistrationJob_registrationConfig,++    -- * FraudsterRegistrationJobSummary+    FraudsterRegistrationJobSummary (..),+    newFraudsterRegistrationJobSummary,+    fraudsterRegistrationJobSummary_createdAt,+    fraudsterRegistrationJobSummary_domainId,+    fraudsterRegistrationJobSummary_endedAt,+    fraudsterRegistrationJobSummary_failureDetails,+    fraudsterRegistrationJobSummary_jobId,+    fraudsterRegistrationJobSummary_jobName,+    fraudsterRegistrationJobSummary_jobProgress,+    fraudsterRegistrationJobSummary_jobStatus,++    -- * InputDataConfig+    InputDataConfig (..),+    newInputDataConfig,+    inputDataConfig_s3Uri,++    -- * JobProgress+    JobProgress (..),+    newJobProgress,+    jobProgress_percentComplete,++    -- * KnownFraudsterRisk+    KnownFraudsterRisk (..),+    newKnownFraudsterRisk,+    knownFraudsterRisk_generatedFraudsterId,+    knownFraudsterRisk_riskScore,++    -- * OutputDataConfig+    OutputDataConfig (..),+    newOutputDataConfig,+    outputDataConfig_kmsKeyId,+    outputDataConfig_s3Uri,++    -- * RegistrationConfig+    RegistrationConfig (..),+    newRegistrationConfig,+    registrationConfig_duplicateRegistrationAction,+    registrationConfig_fraudsterSimilarityThreshold,++    -- * ServerSideEncryptionConfiguration+    ServerSideEncryptionConfiguration (..),+    newServerSideEncryptionConfiguration,+    serverSideEncryptionConfiguration_kmsKeyId,++    -- * ServerSideEncryptionUpdateDetails+    ServerSideEncryptionUpdateDetails (..),+    newServerSideEncryptionUpdateDetails,+    serverSideEncryptionUpdateDetails_message,+    serverSideEncryptionUpdateDetails_oldKmsKeyId,+    serverSideEncryptionUpdateDetails_updateStatus,++    -- * Speaker+    Speaker (..),+    newSpeaker,+    speaker_createdAt,+    speaker_customerSpeakerId,+    speaker_domainId,+    speaker_generatedSpeakerId,+    speaker_lastAccessedAt,+    speaker_status,+    speaker_updatedAt,++    -- * SpeakerEnrollmentJob+    SpeakerEnrollmentJob (..),+    newSpeakerEnrollmentJob,+    speakerEnrollmentJob_createdAt,+    speakerEnrollmentJob_dataAccessRoleArn,+    speakerEnrollmentJob_domainId,+    speakerEnrollmentJob_endedAt,+    speakerEnrollmentJob_enrollmentConfig,+    speakerEnrollmentJob_failureDetails,+    speakerEnrollmentJob_inputDataConfig,+    speakerEnrollmentJob_jobId,+    speakerEnrollmentJob_jobName,+    speakerEnrollmentJob_jobProgress,+    speakerEnrollmentJob_jobStatus,+    speakerEnrollmentJob_outputDataConfig,++    -- * SpeakerEnrollmentJobSummary+    SpeakerEnrollmentJobSummary (..),+    newSpeakerEnrollmentJobSummary,+    speakerEnrollmentJobSummary_createdAt,+    speakerEnrollmentJobSummary_domainId,+    speakerEnrollmentJobSummary_endedAt,+    speakerEnrollmentJobSummary_failureDetails,+    speakerEnrollmentJobSummary_jobId,+    speakerEnrollmentJobSummary_jobName,+    speakerEnrollmentJobSummary_jobProgress,+    speakerEnrollmentJobSummary_jobStatus,++    -- * SpeakerSummary+    SpeakerSummary (..),+    newSpeakerSummary,+    speakerSummary_createdAt,+    speakerSummary_customerSpeakerId,+    speakerSummary_domainId,+    speakerSummary_generatedSpeakerId,+    speakerSummary_lastAccessedAt,+    speakerSummary_status,+    speakerSummary_updatedAt,++    -- * Tag+    Tag (..),+    newTag,+    tag_key,+    tag_value,++    -- * VoiceSpoofingRisk+    VoiceSpoofingRisk (..),+    newVoiceSpoofingRisk,+    voiceSpoofingRisk_riskScore,+  )+where++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+import Amazonka.VoiceId.Types.AuthenticationConfiguration+import Amazonka.VoiceId.Types.AuthenticationDecision+import Amazonka.VoiceId.Types.AuthenticationResult+import Amazonka.VoiceId.Types.Domain+import Amazonka.VoiceId.Types.DomainStatus+import Amazonka.VoiceId.Types.DomainSummary+import Amazonka.VoiceId.Types.DuplicateRegistrationAction+import Amazonka.VoiceId.Types.EnrollmentConfig+import Amazonka.VoiceId.Types.EnrollmentJobFraudDetectionConfig+import Amazonka.VoiceId.Types.ExistingEnrollmentAction+import Amazonka.VoiceId.Types.FailureDetails+import Amazonka.VoiceId.Types.FraudDetectionAction+import Amazonka.VoiceId.Types.FraudDetectionConfiguration+import Amazonka.VoiceId.Types.FraudDetectionDecision+import Amazonka.VoiceId.Types.FraudDetectionReason+import Amazonka.VoiceId.Types.FraudDetectionResult+import Amazonka.VoiceId.Types.FraudRiskDetails+import Amazonka.VoiceId.Types.Fraudster+import Amazonka.VoiceId.Types.FraudsterRegistrationJob+import Amazonka.VoiceId.Types.FraudsterRegistrationJobStatus+import Amazonka.VoiceId.Types.FraudsterRegistrationJobSummary+import Amazonka.VoiceId.Types.InputDataConfig+import Amazonka.VoiceId.Types.JobProgress+import Amazonka.VoiceId.Types.KnownFraudsterRisk+import Amazonka.VoiceId.Types.OutputDataConfig+import Amazonka.VoiceId.Types.RegistrationConfig+import Amazonka.VoiceId.Types.ServerSideEncryptionConfiguration+import Amazonka.VoiceId.Types.ServerSideEncryptionUpdateDetails+import Amazonka.VoiceId.Types.ServerSideEncryptionUpdateStatus+import Amazonka.VoiceId.Types.Speaker+import Amazonka.VoiceId.Types.SpeakerEnrollmentJob+import Amazonka.VoiceId.Types.SpeakerEnrollmentJobStatus+import Amazonka.VoiceId.Types.SpeakerEnrollmentJobSummary+import Amazonka.VoiceId.Types.SpeakerStatus+import Amazonka.VoiceId.Types.SpeakerSummary+import Amazonka.VoiceId.Types.StreamingStatus+import Amazonka.VoiceId.Types.Tag+import Amazonka.VoiceId.Types.VoiceSpoofingRisk++-- | API version @2021-09-27@ of the Amazon Voice ID SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "VoiceId",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "voiceid",+      Core.signingName = "voiceid",+      Core.version = "2021-09-27",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "VoiceId",+      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 permissions to perform this action. Check the+-- error message and try again.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"++-- | The request failed due to a conflict. Check the @ConflictType@ and error+-- message for more details.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"++-- | The request failed due to an unknown error on the server side.+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerException =+  Core._MatchServiceError+    defaultService+    "InternalServerException"++-- | The specified resource cannot be found. Check the @ResourceType@ and+-- error message for more details.+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"++-- | The request exceeded the service quota. Refer to+-- <https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html#voiceid-quotas Voice ID Service Quotas>+-- and try your request again.+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "ServiceQuotaExceededException"++-- | The request was denied due to request throttling. Please slow down your+-- request rate. Refer to+-- <https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html##voiceid-api-quotas Amazon Connect Voice ID Service API throttling quotas>+-- and try your request again.+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"++-- | The request failed one or more validations; check the error message for+-- more details.+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ValidationException =+  Core._MatchServiceError+    defaultService+    "ValidationException"
+ gen/Amazonka/VoiceId/Types/AuthenticationConfiguration.hs view
@@ -0,0 +1,74 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.AuthenticationConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.AuthenticationConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The configuration used to authenticate a speaker during a session.+--+-- /See:/ 'newAuthenticationConfiguration' smart constructor.+data AuthenticationConfiguration = AuthenticationConfiguration'+  { -- | The minimum threshold needed to successfully authenticate a speaker.+    acceptanceThreshold :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AuthenticationConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceptanceThreshold', 'authenticationConfiguration_acceptanceThreshold' - The minimum threshold needed to successfully authenticate a speaker.+newAuthenticationConfiguration ::+  -- | 'acceptanceThreshold'+  Prelude.Natural ->+  AuthenticationConfiguration+newAuthenticationConfiguration pAcceptanceThreshold_ =+  AuthenticationConfiguration'+    { acceptanceThreshold =+        pAcceptanceThreshold_+    }++-- | The minimum threshold needed to successfully authenticate a speaker.+authenticationConfiguration_acceptanceThreshold :: Lens.Lens' AuthenticationConfiguration Prelude.Natural+authenticationConfiguration_acceptanceThreshold = Lens.lens (\AuthenticationConfiguration' {acceptanceThreshold} -> acceptanceThreshold) (\s@AuthenticationConfiguration' {} a -> s {acceptanceThreshold = a} :: AuthenticationConfiguration)++instance Data.FromJSON AuthenticationConfiguration where+  parseJSON =+    Data.withObject+      "AuthenticationConfiguration"+      ( \x ->+          AuthenticationConfiguration'+            Prelude.<$> (x Data..: "AcceptanceThreshold")+      )++instance Prelude.Hashable AuthenticationConfiguration where+  hashWithSalt _salt AuthenticationConfiguration' {..} =+    _salt `Prelude.hashWithSalt` acceptanceThreshold++instance Prelude.NFData AuthenticationConfiguration where+  rnf AuthenticationConfiguration' {..} =+    Prelude.rnf acceptanceThreshold
+ gen/Amazonka/VoiceId/Types/AuthenticationDecision.hs view
@@ -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.VoiceId.Types.AuthenticationDecision+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.AuthenticationDecision+  ( AuthenticationDecision+      ( ..,+        AuthenticationDecision_ACCEPT,+        AuthenticationDecision_NOT_ENOUGH_SPEECH,+        AuthenticationDecision_REJECT,+        AuthenticationDecision_SPEAKER_EXPIRED,+        AuthenticationDecision_SPEAKER_ID_NOT_PROVIDED,+        AuthenticationDecision_SPEAKER_NOT_ENROLLED,+        AuthenticationDecision_SPEAKER_OPTED_OUT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AuthenticationDecision = AuthenticationDecision'+  { fromAuthenticationDecision ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern AuthenticationDecision_ACCEPT :: AuthenticationDecision+pattern AuthenticationDecision_ACCEPT = AuthenticationDecision' "ACCEPT"++pattern AuthenticationDecision_NOT_ENOUGH_SPEECH :: AuthenticationDecision+pattern AuthenticationDecision_NOT_ENOUGH_SPEECH = AuthenticationDecision' "NOT_ENOUGH_SPEECH"++pattern AuthenticationDecision_REJECT :: AuthenticationDecision+pattern AuthenticationDecision_REJECT = AuthenticationDecision' "REJECT"++pattern AuthenticationDecision_SPEAKER_EXPIRED :: AuthenticationDecision+pattern AuthenticationDecision_SPEAKER_EXPIRED = AuthenticationDecision' "SPEAKER_EXPIRED"++pattern AuthenticationDecision_SPEAKER_ID_NOT_PROVIDED :: AuthenticationDecision+pattern AuthenticationDecision_SPEAKER_ID_NOT_PROVIDED = AuthenticationDecision' "SPEAKER_ID_NOT_PROVIDED"++pattern AuthenticationDecision_SPEAKER_NOT_ENROLLED :: AuthenticationDecision+pattern AuthenticationDecision_SPEAKER_NOT_ENROLLED = AuthenticationDecision' "SPEAKER_NOT_ENROLLED"++pattern AuthenticationDecision_SPEAKER_OPTED_OUT :: AuthenticationDecision+pattern AuthenticationDecision_SPEAKER_OPTED_OUT = AuthenticationDecision' "SPEAKER_OPTED_OUT"++{-# COMPLETE+  AuthenticationDecision_ACCEPT,+  AuthenticationDecision_NOT_ENOUGH_SPEECH,+  AuthenticationDecision_REJECT,+  AuthenticationDecision_SPEAKER_EXPIRED,+  AuthenticationDecision_SPEAKER_ID_NOT_PROVIDED,+  AuthenticationDecision_SPEAKER_NOT_ENROLLED,+  AuthenticationDecision_SPEAKER_OPTED_OUT,+  AuthenticationDecision'+  #-}
+ gen/Amazonka/VoiceId/Types/AuthenticationResult.hs view
@@ -0,0 +1,202 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.AuthenticationResult+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.AuthenticationResult where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.AuthenticationConfiguration+import Amazonka.VoiceId.Types.AuthenticationDecision++-- | The authentication result produced by Voice ID, processed against the+-- current session state and streamed audio of the speaker.+--+-- /See:/ 'newAuthenticationResult' smart constructor.+data AuthenticationResult = AuthenticationResult'+  { -- | A timestamp indicating when audio aggregation ended for this+    -- authentication result.+    audioAggregationEndedAt :: Prelude.Maybe Data.POSIX,+    -- | A timestamp indicating when audio aggregation started for this+    -- authentication result.+    audioAggregationStartedAt :: Prelude.Maybe Data.POSIX,+    -- | The unique identifier for this authentication result. Because there can+    -- be multiple authentications for a given session, this field helps to+    -- identify if the returned result is from a previous streaming activity or+    -- a new result. Note that in absence of any new streaming activity,+    -- @AcceptanceThreshold@ changes, or @SpeakerId@ changes, Voice ID always+    -- returns cached Authentication Result for this API.+    authenticationResultId :: Prelude.Maybe Prelude.Text,+    -- | The @AuthenticationConfiguration@ used to generate this authentication+    -- result.+    configuration :: Prelude.Maybe AuthenticationConfiguration,+    -- | The client-provided identifier for the speaker whose authentication+    -- result is produced. Only present if a @SpeakerId@ is provided for the+    -- session.+    customerSpeakerId :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The authentication decision produced by Voice ID, processed against the+    -- current session state and streamed audio of the speaker.+    decision :: Prelude.Maybe AuthenticationDecision,+    -- | The service-generated identifier for the speaker whose authentication+    -- result is produced.+    generatedSpeakerId :: Prelude.Maybe Prelude.Text,+    -- | The authentication score for the speaker whose authentication result is+    -- produced. This value is only present if the authentication decision is+    -- either @ACCEPT@ or @REJECT@.+    score :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AuthenticationResult' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'audioAggregationEndedAt', 'authenticationResult_audioAggregationEndedAt' - A timestamp indicating when audio aggregation ended for this+-- authentication result.+--+-- 'audioAggregationStartedAt', 'authenticationResult_audioAggregationStartedAt' - A timestamp indicating when audio aggregation started for this+-- authentication result.+--+-- 'authenticationResultId', 'authenticationResult_authenticationResultId' - The unique identifier for this authentication result. Because there can+-- be multiple authentications for a given session, this field helps to+-- identify if the returned result is from a previous streaming activity or+-- a new result. Note that in absence of any new streaming activity,+-- @AcceptanceThreshold@ changes, or @SpeakerId@ changes, Voice ID always+-- returns cached Authentication Result for this API.+--+-- 'configuration', 'authenticationResult_configuration' - The @AuthenticationConfiguration@ used to generate this authentication+-- result.+--+-- 'customerSpeakerId', 'authenticationResult_customerSpeakerId' - The client-provided identifier for the speaker whose authentication+-- result is produced. Only present if a @SpeakerId@ is provided for the+-- session.+--+-- 'decision', 'authenticationResult_decision' - The authentication decision produced by Voice ID, processed against the+-- current session state and streamed audio of the speaker.+--+-- 'generatedSpeakerId', 'authenticationResult_generatedSpeakerId' - The service-generated identifier for the speaker whose authentication+-- result is produced.+--+-- 'score', 'authenticationResult_score' - The authentication score for the speaker whose authentication result is+-- produced. This value is only present if the authentication decision is+-- either @ACCEPT@ or @REJECT@.+newAuthenticationResult ::+  AuthenticationResult+newAuthenticationResult =+  AuthenticationResult'+    { audioAggregationEndedAt =+        Prelude.Nothing,+      audioAggregationStartedAt = Prelude.Nothing,+      authenticationResultId = Prelude.Nothing,+      configuration = Prelude.Nothing,+      customerSpeakerId = Prelude.Nothing,+      decision = Prelude.Nothing,+      generatedSpeakerId = Prelude.Nothing,+      score = Prelude.Nothing+    }++-- | A timestamp indicating when audio aggregation ended for this+-- authentication result.+authenticationResult_audioAggregationEndedAt :: Lens.Lens' AuthenticationResult (Prelude.Maybe Prelude.UTCTime)+authenticationResult_audioAggregationEndedAt = Lens.lens (\AuthenticationResult' {audioAggregationEndedAt} -> audioAggregationEndedAt) (\s@AuthenticationResult' {} a -> s {audioAggregationEndedAt = a} :: AuthenticationResult) Prelude.. Lens.mapping Data._Time++-- | A timestamp indicating when audio aggregation started for this+-- authentication result.+authenticationResult_audioAggregationStartedAt :: Lens.Lens' AuthenticationResult (Prelude.Maybe Prelude.UTCTime)+authenticationResult_audioAggregationStartedAt = Lens.lens (\AuthenticationResult' {audioAggregationStartedAt} -> audioAggregationStartedAt) (\s@AuthenticationResult' {} a -> s {audioAggregationStartedAt = a} :: AuthenticationResult) Prelude.. Lens.mapping Data._Time++-- | The unique identifier for this authentication result. Because there can+-- be multiple authentications for a given session, this field helps to+-- identify if the returned result is from a previous streaming activity or+-- a new result. Note that in absence of any new streaming activity,+-- @AcceptanceThreshold@ changes, or @SpeakerId@ changes, Voice ID always+-- returns cached Authentication Result for this API.+authenticationResult_authenticationResultId :: Lens.Lens' AuthenticationResult (Prelude.Maybe Prelude.Text)+authenticationResult_authenticationResultId = Lens.lens (\AuthenticationResult' {authenticationResultId} -> authenticationResultId) (\s@AuthenticationResult' {} a -> s {authenticationResultId = a} :: AuthenticationResult)++-- | The @AuthenticationConfiguration@ used to generate this authentication+-- result.+authenticationResult_configuration :: Lens.Lens' AuthenticationResult (Prelude.Maybe AuthenticationConfiguration)+authenticationResult_configuration = Lens.lens (\AuthenticationResult' {configuration} -> configuration) (\s@AuthenticationResult' {} a -> s {configuration = a} :: AuthenticationResult)++-- | The client-provided identifier for the speaker whose authentication+-- result is produced. Only present if a @SpeakerId@ is provided for the+-- session.+authenticationResult_customerSpeakerId :: Lens.Lens' AuthenticationResult (Prelude.Maybe Prelude.Text)+authenticationResult_customerSpeakerId = Lens.lens (\AuthenticationResult' {customerSpeakerId} -> customerSpeakerId) (\s@AuthenticationResult' {} a -> s {customerSpeakerId = a} :: AuthenticationResult) Prelude.. Lens.mapping Data._Sensitive++-- | The authentication decision produced by Voice ID, processed against the+-- current session state and streamed audio of the speaker.+authenticationResult_decision :: Lens.Lens' AuthenticationResult (Prelude.Maybe AuthenticationDecision)+authenticationResult_decision = Lens.lens (\AuthenticationResult' {decision} -> decision) (\s@AuthenticationResult' {} a -> s {decision = a} :: AuthenticationResult)++-- | The service-generated identifier for the speaker whose authentication+-- result is produced.+authenticationResult_generatedSpeakerId :: Lens.Lens' AuthenticationResult (Prelude.Maybe Prelude.Text)+authenticationResult_generatedSpeakerId = Lens.lens (\AuthenticationResult' {generatedSpeakerId} -> generatedSpeakerId) (\s@AuthenticationResult' {} a -> s {generatedSpeakerId = a} :: AuthenticationResult)++-- | The authentication score for the speaker whose authentication result is+-- produced. This value is only present if the authentication decision is+-- either @ACCEPT@ or @REJECT@.+authenticationResult_score :: Lens.Lens' AuthenticationResult (Prelude.Maybe Prelude.Natural)+authenticationResult_score = Lens.lens (\AuthenticationResult' {score} -> score) (\s@AuthenticationResult' {} a -> s {score = a} :: AuthenticationResult)++instance Data.FromJSON AuthenticationResult where+  parseJSON =+    Data.withObject+      "AuthenticationResult"+      ( \x ->+          AuthenticationResult'+            Prelude.<$> (x Data..:? "AudioAggregationEndedAt")+            Prelude.<*> (x Data..:? "AudioAggregationStartedAt")+            Prelude.<*> (x Data..:? "AuthenticationResultId")+            Prelude.<*> (x Data..:? "Configuration")+            Prelude.<*> (x Data..:? "CustomerSpeakerId")+            Prelude.<*> (x Data..:? "Decision")+            Prelude.<*> (x Data..:? "GeneratedSpeakerId")+            Prelude.<*> (x Data..:? "Score")+      )++instance Prelude.Hashable AuthenticationResult where+  hashWithSalt _salt AuthenticationResult' {..} =+    _salt+      `Prelude.hashWithSalt` audioAggregationEndedAt+      `Prelude.hashWithSalt` audioAggregationStartedAt+      `Prelude.hashWithSalt` authenticationResultId+      `Prelude.hashWithSalt` configuration+      `Prelude.hashWithSalt` customerSpeakerId+      `Prelude.hashWithSalt` decision+      `Prelude.hashWithSalt` generatedSpeakerId+      `Prelude.hashWithSalt` score++instance Prelude.NFData AuthenticationResult where+  rnf AuthenticationResult' {..} =+    Prelude.rnf audioAggregationEndedAt+      `Prelude.seq` Prelude.rnf audioAggregationStartedAt+      `Prelude.seq` Prelude.rnf authenticationResultId+      `Prelude.seq` Prelude.rnf configuration+      `Prelude.seq` Prelude.rnf customerSpeakerId+      `Prelude.seq` Prelude.rnf decision+      `Prelude.seq` Prelude.rnf generatedSpeakerId+      `Prelude.seq` Prelude.rnf score
+ gen/Amazonka/VoiceId/Types/Domain.hs view
@@ -0,0 +1,186 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.Domain+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.Domain where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.DomainStatus+import Amazonka.VoiceId.Types.ServerSideEncryptionConfiguration+import Amazonka.VoiceId.Types.ServerSideEncryptionUpdateDetails++-- | Contains all the information about a domain.+--+-- /See:/ 'newDomain' smart constructor.+data Domain = Domain'+  { -- | The Amazon Resource Name (ARN) for the domain.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The timestamp at which the domain is created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The client-provided description of the domain.+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The service-generated identifier for the domain.+    domainId :: Prelude.Maybe Prelude.Text,+    -- | The current status of the domain.+    domainStatus :: Prelude.Maybe DomainStatus,+    -- | The client-provided name for the domain.+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The server-side encryption configuration containing the KMS key+    -- identifier you want Voice ID to use to encrypt your data.+    serverSideEncryptionConfiguration :: Prelude.Maybe ServerSideEncryptionConfiguration,+    -- | Details about the most recent server-side encryption configuration+    -- update. When the server-side encryption configuration is changed,+    -- dependency on the old KMS key is removed through an asynchronous+    -- process. When this update is complete, the domain\'s data can only be+    -- accessed using the new KMS key.+    serverSideEncryptionUpdateDetails :: Prelude.Maybe ServerSideEncryptionUpdateDetails,+    -- | The timestamp showing the domain\'s last update.+    updatedAt :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Domain' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'domain_arn' - The Amazon Resource Name (ARN) for the domain.+--+-- 'createdAt', 'domain_createdAt' - The timestamp at which the domain is created.+--+-- 'description', 'domain_description' - The client-provided description of the domain.+--+-- 'domainId', 'domain_domainId' - The service-generated identifier for the domain.+--+-- 'domainStatus', 'domain_domainStatus' - The current status of the domain.+--+-- 'name', 'domain_name' - The client-provided name for the domain.+--+-- 'serverSideEncryptionConfiguration', 'domain_serverSideEncryptionConfiguration' - The server-side encryption configuration containing the KMS key+-- identifier you want Voice ID to use to encrypt your data.+--+-- 'serverSideEncryptionUpdateDetails', 'domain_serverSideEncryptionUpdateDetails' - Details about the most recent server-side encryption configuration+-- update. When the server-side encryption configuration is changed,+-- dependency on the old KMS key is removed through an asynchronous+-- process. When this update is complete, the domain\'s data can only be+-- accessed using the new KMS key.+--+-- 'updatedAt', 'domain_updatedAt' - The timestamp showing the domain\'s last update.+newDomain ::+  Domain+newDomain =+  Domain'+    { arn = Prelude.Nothing,+      createdAt = Prelude.Nothing,+      description = Prelude.Nothing,+      domainId = Prelude.Nothing,+      domainStatus = Prelude.Nothing,+      name = Prelude.Nothing,+      serverSideEncryptionConfiguration = Prelude.Nothing,+      serverSideEncryptionUpdateDetails = Prelude.Nothing,+      updatedAt = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) for the domain.+domain_arn :: Lens.Lens' Domain (Prelude.Maybe Prelude.Text)+domain_arn = Lens.lens (\Domain' {arn} -> arn) (\s@Domain' {} a -> s {arn = a} :: Domain)++-- | The timestamp at which the domain is created.+domain_createdAt :: Lens.Lens' Domain (Prelude.Maybe Prelude.UTCTime)+domain_createdAt = Lens.lens (\Domain' {createdAt} -> createdAt) (\s@Domain' {} a -> s {createdAt = a} :: Domain) Prelude.. Lens.mapping Data._Time++-- | The client-provided description of the domain.+domain_description :: Lens.Lens' Domain (Prelude.Maybe Prelude.Text)+domain_description = Lens.lens (\Domain' {description} -> description) (\s@Domain' {} a -> s {description = a} :: Domain) Prelude.. Lens.mapping Data._Sensitive++-- | The service-generated identifier for the domain.+domain_domainId :: Lens.Lens' Domain (Prelude.Maybe Prelude.Text)+domain_domainId = Lens.lens (\Domain' {domainId} -> domainId) (\s@Domain' {} a -> s {domainId = a} :: Domain)++-- | The current status of the domain.+domain_domainStatus :: Lens.Lens' Domain (Prelude.Maybe DomainStatus)+domain_domainStatus = Lens.lens (\Domain' {domainStatus} -> domainStatus) (\s@Domain' {} a -> s {domainStatus = a} :: Domain)++-- | The client-provided name for the domain.+domain_name :: Lens.Lens' Domain (Prelude.Maybe Prelude.Text)+domain_name = Lens.lens (\Domain' {name} -> name) (\s@Domain' {} a -> s {name = a} :: Domain) Prelude.. Lens.mapping Data._Sensitive++-- | The server-side encryption configuration containing the KMS key+-- identifier you want Voice ID to use to encrypt your data.+domain_serverSideEncryptionConfiguration :: Lens.Lens' Domain (Prelude.Maybe ServerSideEncryptionConfiguration)+domain_serverSideEncryptionConfiguration = Lens.lens (\Domain' {serverSideEncryptionConfiguration} -> serverSideEncryptionConfiguration) (\s@Domain' {} a -> s {serverSideEncryptionConfiguration = a} :: Domain)++-- | Details about the most recent server-side encryption configuration+-- update. When the server-side encryption configuration is changed,+-- dependency on the old KMS key is removed through an asynchronous+-- process. When this update is complete, the domain\'s data can only be+-- accessed using the new KMS key.+domain_serverSideEncryptionUpdateDetails :: Lens.Lens' Domain (Prelude.Maybe ServerSideEncryptionUpdateDetails)+domain_serverSideEncryptionUpdateDetails = Lens.lens (\Domain' {serverSideEncryptionUpdateDetails} -> serverSideEncryptionUpdateDetails) (\s@Domain' {} a -> s {serverSideEncryptionUpdateDetails = a} :: Domain)++-- | The timestamp showing the domain\'s last update.+domain_updatedAt :: Lens.Lens' Domain (Prelude.Maybe Prelude.UTCTime)+domain_updatedAt = Lens.lens (\Domain' {updatedAt} -> updatedAt) (\s@Domain' {} a -> s {updatedAt = a} :: Domain) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON Domain where+  parseJSON =+    Data.withObject+      "Domain"+      ( \x ->+          Domain'+            Prelude.<$> (x Data..:? "Arn")+            Prelude.<*> (x Data..:? "CreatedAt")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "DomainId")+            Prelude.<*> (x Data..:? "DomainStatus")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "ServerSideEncryptionConfiguration")+            Prelude.<*> (x Data..:? "ServerSideEncryptionUpdateDetails")+            Prelude.<*> (x Data..:? "UpdatedAt")+      )++instance Prelude.Hashable Domain where+  hashWithSalt _salt Domain' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` domainStatus+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` serverSideEncryptionConfiguration+      `Prelude.hashWithSalt` serverSideEncryptionUpdateDetails+      `Prelude.hashWithSalt` updatedAt++instance Prelude.NFData Domain where+  rnf Domain' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf domainStatus+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf serverSideEncryptionConfiguration+      `Prelude.seq` Prelude.rnf serverSideEncryptionUpdateDetails+      `Prelude.seq` Prelude.rnf updatedAt
+ gen/Amazonka/VoiceId/Types/DomainStatus.hs view
@@ -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.VoiceId.Types.DomainStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.DomainStatus+  ( DomainStatus+      ( ..,+        DomainStatus_ACTIVE,+        DomainStatus_PENDING,+        DomainStatus_SUSPENDED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DomainStatus = DomainStatus'+  { fromDomainStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern DomainStatus_ACTIVE :: DomainStatus+pattern DomainStatus_ACTIVE = DomainStatus' "ACTIVE"++pattern DomainStatus_PENDING :: DomainStatus+pattern DomainStatus_PENDING = DomainStatus' "PENDING"++pattern DomainStatus_SUSPENDED :: DomainStatus+pattern DomainStatus_SUSPENDED = DomainStatus' "SUSPENDED"++{-# COMPLETE+  DomainStatus_ACTIVE,+  DomainStatus_PENDING,+  DomainStatus_SUSPENDED,+  DomainStatus'+  #-}
+ gen/Amazonka/VoiceId/Types/DomainSummary.hs view
@@ -0,0 +1,186 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.DomainSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.DomainSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.DomainStatus+import Amazonka.VoiceId.Types.ServerSideEncryptionConfiguration+import Amazonka.VoiceId.Types.ServerSideEncryptionUpdateDetails++-- | Contains a summary of information about a domain.+--+-- /See:/ 'newDomainSummary' smart constructor.+data DomainSummary = DomainSummary'+  { -- | The Amazon Resource Name (ARN) for the domain.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The timestamp showing when the domain is created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The client-provided description of the domain.+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The service-generated identifier for the domain.+    domainId :: Prelude.Maybe Prelude.Text,+    -- | The current status of the domain.+    domainStatus :: Prelude.Maybe DomainStatus,+    -- | The client-provided name for the domain.+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The server-side encryption configuration containing the KMS key+    -- identifier you want Voice ID to use to encrypt your data.+    serverSideEncryptionConfiguration :: Prelude.Maybe ServerSideEncryptionConfiguration,+    -- | Details about the most recent server-side encryption configuration+    -- update. When the server-side encryption configuration is changed,+    -- dependency on the old KMS key is removed through an asynchronous+    -- process. When this update is complete, the domain\'s data can only be+    -- accessed using the new KMS key.+    serverSideEncryptionUpdateDetails :: Prelude.Maybe ServerSideEncryptionUpdateDetails,+    -- | The timestamp showing the domain\'s last update.+    updatedAt :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DomainSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'domainSummary_arn' - The Amazon Resource Name (ARN) for the domain.+--+-- 'createdAt', 'domainSummary_createdAt' - The timestamp showing when the domain is created.+--+-- 'description', 'domainSummary_description' - The client-provided description of the domain.+--+-- 'domainId', 'domainSummary_domainId' - The service-generated identifier for the domain.+--+-- 'domainStatus', 'domainSummary_domainStatus' - The current status of the domain.+--+-- 'name', 'domainSummary_name' - The client-provided name for the domain.+--+-- 'serverSideEncryptionConfiguration', 'domainSummary_serverSideEncryptionConfiguration' - The server-side encryption configuration containing the KMS key+-- identifier you want Voice ID to use to encrypt your data.+--+-- 'serverSideEncryptionUpdateDetails', 'domainSummary_serverSideEncryptionUpdateDetails' - Details about the most recent server-side encryption configuration+-- update. When the server-side encryption configuration is changed,+-- dependency on the old KMS key is removed through an asynchronous+-- process. When this update is complete, the domain\'s data can only be+-- accessed using the new KMS key.+--+-- 'updatedAt', 'domainSummary_updatedAt' - The timestamp showing the domain\'s last update.+newDomainSummary ::+  DomainSummary+newDomainSummary =+  DomainSummary'+    { arn = Prelude.Nothing,+      createdAt = Prelude.Nothing,+      description = Prelude.Nothing,+      domainId = Prelude.Nothing,+      domainStatus = Prelude.Nothing,+      name = Prelude.Nothing,+      serverSideEncryptionConfiguration = Prelude.Nothing,+      serverSideEncryptionUpdateDetails = Prelude.Nothing,+      updatedAt = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) for the domain.+domainSummary_arn :: Lens.Lens' DomainSummary (Prelude.Maybe Prelude.Text)+domainSummary_arn = Lens.lens (\DomainSummary' {arn} -> arn) (\s@DomainSummary' {} a -> s {arn = a} :: DomainSummary)++-- | The timestamp showing when the domain is created.+domainSummary_createdAt :: Lens.Lens' DomainSummary (Prelude.Maybe Prelude.UTCTime)+domainSummary_createdAt = Lens.lens (\DomainSummary' {createdAt} -> createdAt) (\s@DomainSummary' {} a -> s {createdAt = a} :: DomainSummary) Prelude.. Lens.mapping Data._Time++-- | The client-provided description of the domain.+domainSummary_description :: Lens.Lens' DomainSummary (Prelude.Maybe Prelude.Text)+domainSummary_description = Lens.lens (\DomainSummary' {description} -> description) (\s@DomainSummary' {} a -> s {description = a} :: DomainSummary) Prelude.. Lens.mapping Data._Sensitive++-- | The service-generated identifier for the domain.+domainSummary_domainId :: Lens.Lens' DomainSummary (Prelude.Maybe Prelude.Text)+domainSummary_domainId = Lens.lens (\DomainSummary' {domainId} -> domainId) (\s@DomainSummary' {} a -> s {domainId = a} :: DomainSummary)++-- | The current status of the domain.+domainSummary_domainStatus :: Lens.Lens' DomainSummary (Prelude.Maybe DomainStatus)+domainSummary_domainStatus = Lens.lens (\DomainSummary' {domainStatus} -> domainStatus) (\s@DomainSummary' {} a -> s {domainStatus = a} :: DomainSummary)++-- | The client-provided name for the domain.+domainSummary_name :: Lens.Lens' DomainSummary (Prelude.Maybe Prelude.Text)+domainSummary_name = Lens.lens (\DomainSummary' {name} -> name) (\s@DomainSummary' {} a -> s {name = a} :: DomainSummary) Prelude.. Lens.mapping Data._Sensitive++-- | The server-side encryption configuration containing the KMS key+-- identifier you want Voice ID to use to encrypt your data.+domainSummary_serverSideEncryptionConfiguration :: Lens.Lens' DomainSummary (Prelude.Maybe ServerSideEncryptionConfiguration)+domainSummary_serverSideEncryptionConfiguration = Lens.lens (\DomainSummary' {serverSideEncryptionConfiguration} -> serverSideEncryptionConfiguration) (\s@DomainSummary' {} a -> s {serverSideEncryptionConfiguration = a} :: DomainSummary)++-- | Details about the most recent server-side encryption configuration+-- update. When the server-side encryption configuration is changed,+-- dependency on the old KMS key is removed through an asynchronous+-- process. When this update is complete, the domain\'s data can only be+-- accessed using the new KMS key.+domainSummary_serverSideEncryptionUpdateDetails :: Lens.Lens' DomainSummary (Prelude.Maybe ServerSideEncryptionUpdateDetails)+domainSummary_serverSideEncryptionUpdateDetails = Lens.lens (\DomainSummary' {serverSideEncryptionUpdateDetails} -> serverSideEncryptionUpdateDetails) (\s@DomainSummary' {} a -> s {serverSideEncryptionUpdateDetails = a} :: DomainSummary)++-- | The timestamp showing the domain\'s last update.+domainSummary_updatedAt :: Lens.Lens' DomainSummary (Prelude.Maybe Prelude.UTCTime)+domainSummary_updatedAt = Lens.lens (\DomainSummary' {updatedAt} -> updatedAt) (\s@DomainSummary' {} a -> s {updatedAt = a} :: DomainSummary) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON DomainSummary where+  parseJSON =+    Data.withObject+      "DomainSummary"+      ( \x ->+          DomainSummary'+            Prelude.<$> (x Data..:? "Arn")+            Prelude.<*> (x Data..:? "CreatedAt")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "DomainId")+            Prelude.<*> (x Data..:? "DomainStatus")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "ServerSideEncryptionConfiguration")+            Prelude.<*> (x Data..:? "ServerSideEncryptionUpdateDetails")+            Prelude.<*> (x Data..:? "UpdatedAt")+      )++instance Prelude.Hashable DomainSummary where+  hashWithSalt _salt DomainSummary' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` domainStatus+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` serverSideEncryptionConfiguration+      `Prelude.hashWithSalt` serverSideEncryptionUpdateDetails+      `Prelude.hashWithSalt` updatedAt++instance Prelude.NFData DomainSummary where+  rnf DomainSummary' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf domainStatus+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf serverSideEncryptionConfiguration+      `Prelude.seq` Prelude.rnf serverSideEncryptionUpdateDetails+      `Prelude.seq` Prelude.rnf updatedAt
+ gen/Amazonka/VoiceId/Types/DuplicateRegistrationAction.hs view
@@ -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.VoiceId.Types.DuplicateRegistrationAction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.DuplicateRegistrationAction+  ( DuplicateRegistrationAction+      ( ..,+        DuplicateRegistrationAction_REGISTER_AS_NEW,+        DuplicateRegistrationAction_SKIP+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DuplicateRegistrationAction = DuplicateRegistrationAction'+  { fromDuplicateRegistrationAction ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern DuplicateRegistrationAction_REGISTER_AS_NEW :: DuplicateRegistrationAction+pattern DuplicateRegistrationAction_REGISTER_AS_NEW = DuplicateRegistrationAction' "REGISTER_AS_NEW"++pattern DuplicateRegistrationAction_SKIP :: DuplicateRegistrationAction+pattern DuplicateRegistrationAction_SKIP = DuplicateRegistrationAction' "SKIP"++{-# COMPLETE+  DuplicateRegistrationAction_REGISTER_AS_NEW,+  DuplicateRegistrationAction_SKIP,+  DuplicateRegistrationAction'+  #-}
+ gen/Amazonka/VoiceId/Types/EnrollmentConfig.hs view
@@ -0,0 +1,110 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.EnrollmentConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.EnrollmentConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.EnrollmentJobFraudDetectionConfig+import Amazonka.VoiceId.Types.ExistingEnrollmentAction++-- | Contains configurations defining enrollment behavior for the batch job.+--+-- /See:/ 'newEnrollmentConfig' smart constructor.+data EnrollmentConfig = EnrollmentConfig'+  { -- | The action to take when the specified speaker is already enrolled in the+    -- specified domain. The default value is @SKIP@, which skips the+    -- enrollment for the existing speaker. Setting the value to @OVERWRITE@+    -- replaces the existing voice prints and enrollment audio stored for that+    -- speaker with new data generated from the latest audio.+    existingEnrollmentAction :: Prelude.Maybe ExistingEnrollmentAction,+    -- | The fraud detection configuration to use for the speaker enrollment job.+    fraudDetectionConfig :: Prelude.Maybe EnrollmentJobFraudDetectionConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EnrollmentConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'existingEnrollmentAction', 'enrollmentConfig_existingEnrollmentAction' - The action to take when the specified speaker is already enrolled in the+-- specified domain. The default value is @SKIP@, which skips the+-- enrollment for the existing speaker. Setting the value to @OVERWRITE@+-- replaces the existing voice prints and enrollment audio stored for that+-- speaker with new data generated from the latest audio.+--+-- 'fraudDetectionConfig', 'enrollmentConfig_fraudDetectionConfig' - The fraud detection configuration to use for the speaker enrollment job.+newEnrollmentConfig ::+  EnrollmentConfig+newEnrollmentConfig =+  EnrollmentConfig'+    { existingEnrollmentAction =+        Prelude.Nothing,+      fraudDetectionConfig = Prelude.Nothing+    }++-- | The action to take when the specified speaker is already enrolled in the+-- specified domain. The default value is @SKIP@, which skips the+-- enrollment for the existing speaker. Setting the value to @OVERWRITE@+-- replaces the existing voice prints and enrollment audio stored for that+-- speaker with new data generated from the latest audio.+enrollmentConfig_existingEnrollmentAction :: Lens.Lens' EnrollmentConfig (Prelude.Maybe ExistingEnrollmentAction)+enrollmentConfig_existingEnrollmentAction = Lens.lens (\EnrollmentConfig' {existingEnrollmentAction} -> existingEnrollmentAction) (\s@EnrollmentConfig' {} a -> s {existingEnrollmentAction = a} :: EnrollmentConfig)++-- | The fraud detection configuration to use for the speaker enrollment job.+enrollmentConfig_fraudDetectionConfig :: Lens.Lens' EnrollmentConfig (Prelude.Maybe EnrollmentJobFraudDetectionConfig)+enrollmentConfig_fraudDetectionConfig = Lens.lens (\EnrollmentConfig' {fraudDetectionConfig} -> fraudDetectionConfig) (\s@EnrollmentConfig' {} a -> s {fraudDetectionConfig = a} :: EnrollmentConfig)++instance Data.FromJSON EnrollmentConfig where+  parseJSON =+    Data.withObject+      "EnrollmentConfig"+      ( \x ->+          EnrollmentConfig'+            Prelude.<$> (x Data..:? "ExistingEnrollmentAction")+            Prelude.<*> (x Data..:? "FraudDetectionConfig")+      )++instance Prelude.Hashable EnrollmentConfig where+  hashWithSalt _salt EnrollmentConfig' {..} =+    _salt+      `Prelude.hashWithSalt` existingEnrollmentAction+      `Prelude.hashWithSalt` fraudDetectionConfig++instance Prelude.NFData EnrollmentConfig where+  rnf EnrollmentConfig' {..} =+    Prelude.rnf existingEnrollmentAction+      `Prelude.seq` Prelude.rnf fraudDetectionConfig++instance Data.ToJSON EnrollmentConfig where+  toJSON EnrollmentConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ExistingEnrollmentAction" Data..=)+              Prelude.<$> existingEnrollmentAction,+            ("FraudDetectionConfig" Data..=)+              Prelude.<$> fraudDetectionConfig+          ]+      )
+ gen/Amazonka/VoiceId/Types/EnrollmentJobFraudDetectionConfig.hs view
@@ -0,0 +1,127 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.EnrollmentJobFraudDetectionConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.EnrollmentJobFraudDetectionConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.FraudDetectionAction++-- | The configuration defining the action to take when a speaker is flagged+-- by the fraud detection system during a batch speaker enrollment job, and+-- the risk threshold to use for identification.+--+-- /See:/ 'newEnrollmentJobFraudDetectionConfig' smart constructor.+data EnrollmentJobFraudDetectionConfig = EnrollmentJobFraudDetectionConfig'+  { -- | The action to take when the given speaker is flagged by the fraud+    -- detection system. The default value is @FAIL@, which fails the speaker+    -- enrollment. Changing this value to @IGNORE@ results in the speaker being+    -- enrolled even if they are flagged by the fraud detection system.+    fraudDetectionAction :: Prelude.Maybe FraudDetectionAction,+    -- | Threshold value for determining whether the speaker is a high risk to be+    -- fraudulent. If the detected risk score calculated by Voice ID is greater+    -- than or equal to the threshold, the speaker is considered a fraudster.+    riskThreshold :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EnrollmentJobFraudDetectionConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fraudDetectionAction', 'enrollmentJobFraudDetectionConfig_fraudDetectionAction' - The action to take when the given speaker is flagged by the fraud+-- detection system. The default value is @FAIL@, which fails the speaker+-- enrollment. Changing this value to @IGNORE@ results in the speaker being+-- enrolled even if they are flagged by the fraud detection system.+--+-- 'riskThreshold', 'enrollmentJobFraudDetectionConfig_riskThreshold' - Threshold value for determining whether the speaker is a high risk to be+-- fraudulent. If the detected risk score calculated by Voice ID is greater+-- than or equal to the threshold, the speaker is considered a fraudster.+newEnrollmentJobFraudDetectionConfig ::+  EnrollmentJobFraudDetectionConfig+newEnrollmentJobFraudDetectionConfig =+  EnrollmentJobFraudDetectionConfig'+    { fraudDetectionAction =+        Prelude.Nothing,+      riskThreshold = Prelude.Nothing+    }++-- | The action to take when the given speaker is flagged by the fraud+-- detection system. The default value is @FAIL@, which fails the speaker+-- enrollment. Changing this value to @IGNORE@ results in the speaker being+-- enrolled even if they are flagged by the fraud detection system.+enrollmentJobFraudDetectionConfig_fraudDetectionAction :: Lens.Lens' EnrollmentJobFraudDetectionConfig (Prelude.Maybe FraudDetectionAction)+enrollmentJobFraudDetectionConfig_fraudDetectionAction = Lens.lens (\EnrollmentJobFraudDetectionConfig' {fraudDetectionAction} -> fraudDetectionAction) (\s@EnrollmentJobFraudDetectionConfig' {} a -> s {fraudDetectionAction = a} :: EnrollmentJobFraudDetectionConfig)++-- | Threshold value for determining whether the speaker is a high risk to be+-- fraudulent. If the detected risk score calculated by Voice ID is greater+-- than or equal to the threshold, the speaker is considered a fraudster.+enrollmentJobFraudDetectionConfig_riskThreshold :: Lens.Lens' EnrollmentJobFraudDetectionConfig (Prelude.Maybe Prelude.Natural)+enrollmentJobFraudDetectionConfig_riskThreshold = Lens.lens (\EnrollmentJobFraudDetectionConfig' {riskThreshold} -> riskThreshold) (\s@EnrollmentJobFraudDetectionConfig' {} a -> s {riskThreshold = a} :: EnrollmentJobFraudDetectionConfig)++instance+  Data.FromJSON+    EnrollmentJobFraudDetectionConfig+  where+  parseJSON =+    Data.withObject+      "EnrollmentJobFraudDetectionConfig"+      ( \x ->+          EnrollmentJobFraudDetectionConfig'+            Prelude.<$> (x Data..:? "FraudDetectionAction")+            Prelude.<*> (x Data..:? "RiskThreshold")+      )++instance+  Prelude.Hashable+    EnrollmentJobFraudDetectionConfig+  where+  hashWithSalt+    _salt+    EnrollmentJobFraudDetectionConfig' {..} =+      _salt+        `Prelude.hashWithSalt` fraudDetectionAction+        `Prelude.hashWithSalt` riskThreshold++instance+  Prelude.NFData+    EnrollmentJobFraudDetectionConfig+  where+  rnf EnrollmentJobFraudDetectionConfig' {..} =+    Prelude.rnf fraudDetectionAction+      `Prelude.seq` Prelude.rnf riskThreshold++instance+  Data.ToJSON+    EnrollmentJobFraudDetectionConfig+  where+  toJSON EnrollmentJobFraudDetectionConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FraudDetectionAction" Data..=)+              Prelude.<$> fraudDetectionAction,+            ("RiskThreshold" Data..=) Prelude.<$> riskThreshold+          ]+      )
+ gen/Amazonka/VoiceId/Types/ExistingEnrollmentAction.hs view
@@ -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.VoiceId.Types.ExistingEnrollmentAction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.ExistingEnrollmentAction+  ( ExistingEnrollmentAction+      ( ..,+        ExistingEnrollmentAction_OVERWRITE,+        ExistingEnrollmentAction_SKIP+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ExistingEnrollmentAction = ExistingEnrollmentAction'+  { fromExistingEnrollmentAction ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ExistingEnrollmentAction_OVERWRITE :: ExistingEnrollmentAction+pattern ExistingEnrollmentAction_OVERWRITE = ExistingEnrollmentAction' "OVERWRITE"++pattern ExistingEnrollmentAction_SKIP :: ExistingEnrollmentAction+pattern ExistingEnrollmentAction_SKIP = ExistingEnrollmentAction' "SKIP"++{-# COMPLETE+  ExistingEnrollmentAction_OVERWRITE,+  ExistingEnrollmentAction_SKIP,+  ExistingEnrollmentAction'+  #-}
+ gen/Amazonka/VoiceId/Types/FailureDetails.hs view
@@ -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.VoiceId.Types.FailureDetails+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.FailureDetails where++import qualified 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 error details for a failed batch job.+--+-- /See:/ 'newFailureDetails' smart constructor.+data FailureDetails = FailureDetails'+  { -- | A description of the error that caused the batch job failure.+    message :: Prelude.Maybe Prelude.Text,+    -- | An HTTP status code representing the nature of the error.+    statusCode :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FailureDetails' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'failureDetails_message' - A description of the error that caused the batch job failure.+--+-- 'statusCode', 'failureDetails_statusCode' - An HTTP status code representing the nature of the error.+newFailureDetails ::+  FailureDetails+newFailureDetails =+  FailureDetails'+    { message = Prelude.Nothing,+      statusCode = Prelude.Nothing+    }++-- | A description of the error that caused the batch job failure.+failureDetails_message :: Lens.Lens' FailureDetails (Prelude.Maybe Prelude.Text)+failureDetails_message = Lens.lens (\FailureDetails' {message} -> message) (\s@FailureDetails' {} a -> s {message = a} :: FailureDetails)++-- | An HTTP status code representing the nature of the error.+failureDetails_statusCode :: Lens.Lens' FailureDetails (Prelude.Maybe Prelude.Int)+failureDetails_statusCode = Lens.lens (\FailureDetails' {statusCode} -> statusCode) (\s@FailureDetails' {} a -> s {statusCode = a} :: FailureDetails)++instance Data.FromJSON FailureDetails where+  parseJSON =+    Data.withObject+      "FailureDetails"+      ( \x ->+          FailureDetails'+            Prelude.<$> (x Data..:? "Message")+            Prelude.<*> (x Data..:? "StatusCode")+      )++instance Prelude.Hashable FailureDetails where+  hashWithSalt _salt FailureDetails' {..} =+    _salt+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` statusCode++instance Prelude.NFData FailureDetails where+  rnf FailureDetails' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf statusCode
+ gen/Amazonka/VoiceId/Types/FraudDetectionAction.hs view
@@ -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.VoiceId.Types.FraudDetectionAction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.FraudDetectionAction+  ( FraudDetectionAction+      ( ..,+        FraudDetectionAction_FAIL,+        FraudDetectionAction_IGNORE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FraudDetectionAction = FraudDetectionAction'+  { fromFraudDetectionAction ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern FraudDetectionAction_FAIL :: FraudDetectionAction+pattern FraudDetectionAction_FAIL = FraudDetectionAction' "FAIL"++pattern FraudDetectionAction_IGNORE :: FraudDetectionAction+pattern FraudDetectionAction_IGNORE = FraudDetectionAction' "IGNORE"++{-# COMPLETE+  FraudDetectionAction_FAIL,+  FraudDetectionAction_IGNORE,+  FraudDetectionAction'+  #-}
+ gen/Amazonka/VoiceId/Types/FraudDetectionConfiguration.hs view
@@ -0,0 +1,81 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.FraudDetectionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.FraudDetectionConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The configuration used for performing fraud detection over a speaker+-- during a session.+--+-- /See:/ 'newFraudDetectionConfiguration' smart constructor.+data FraudDetectionConfiguration = FraudDetectionConfiguration'+  { -- | Threshold value for determining whether the speaker is a fraudster. If+    -- the detected risk score calculated by Voice ID is higher than the+    -- threshold, the speaker is considered a fraudster.+    riskThreshold :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FraudDetectionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'riskThreshold', 'fraudDetectionConfiguration_riskThreshold' - Threshold value for determining whether the speaker is a fraudster. If+-- the detected risk score calculated by Voice ID is higher than the+-- threshold, the speaker is considered a fraudster.+newFraudDetectionConfiguration ::+  -- | 'riskThreshold'+  Prelude.Natural ->+  FraudDetectionConfiguration+newFraudDetectionConfiguration pRiskThreshold_ =+  FraudDetectionConfiguration'+    { riskThreshold =+        pRiskThreshold_+    }++-- | Threshold value for determining whether the speaker is a fraudster. If+-- the detected risk score calculated by Voice ID is higher than the+-- threshold, the speaker is considered a fraudster.+fraudDetectionConfiguration_riskThreshold :: Lens.Lens' FraudDetectionConfiguration Prelude.Natural+fraudDetectionConfiguration_riskThreshold = Lens.lens (\FraudDetectionConfiguration' {riskThreshold} -> riskThreshold) (\s@FraudDetectionConfiguration' {} a -> s {riskThreshold = a} :: FraudDetectionConfiguration)++instance Data.FromJSON FraudDetectionConfiguration where+  parseJSON =+    Data.withObject+      "FraudDetectionConfiguration"+      ( \x ->+          FraudDetectionConfiguration'+            Prelude.<$> (x Data..: "RiskThreshold")+      )++instance Prelude.Hashable FraudDetectionConfiguration where+  hashWithSalt _salt FraudDetectionConfiguration' {..} =+    _salt `Prelude.hashWithSalt` riskThreshold++instance Prelude.NFData FraudDetectionConfiguration where+  rnf FraudDetectionConfiguration' {..} =+    Prelude.rnf riskThreshold
+ gen/Amazonka/VoiceId/Types/FraudDetectionDecision.hs view
@@ -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.VoiceId.Types.FraudDetectionDecision+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.FraudDetectionDecision+  ( FraudDetectionDecision+      ( ..,+        FraudDetectionDecision_HIGH_RISK,+        FraudDetectionDecision_LOW_RISK,+        FraudDetectionDecision_NOT_ENOUGH_SPEECH+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FraudDetectionDecision = FraudDetectionDecision'+  { fromFraudDetectionDecision ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern FraudDetectionDecision_HIGH_RISK :: FraudDetectionDecision+pattern FraudDetectionDecision_HIGH_RISK = FraudDetectionDecision' "HIGH_RISK"++pattern FraudDetectionDecision_LOW_RISK :: FraudDetectionDecision+pattern FraudDetectionDecision_LOW_RISK = FraudDetectionDecision' "LOW_RISK"++pattern FraudDetectionDecision_NOT_ENOUGH_SPEECH :: FraudDetectionDecision+pattern FraudDetectionDecision_NOT_ENOUGH_SPEECH = FraudDetectionDecision' "NOT_ENOUGH_SPEECH"++{-# COMPLETE+  FraudDetectionDecision_HIGH_RISK,+  FraudDetectionDecision_LOW_RISK,+  FraudDetectionDecision_NOT_ENOUGH_SPEECH,+  FraudDetectionDecision'+  #-}
+ gen/Amazonka/VoiceId/Types/FraudDetectionReason.hs view
@@ -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.VoiceId.Types.FraudDetectionReason+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.FraudDetectionReason+  ( FraudDetectionReason+      ( ..,+        FraudDetectionReason_KNOWN_FRAUDSTER,+        FraudDetectionReason_VOICE_SPOOFING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FraudDetectionReason = FraudDetectionReason'+  { fromFraudDetectionReason ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern FraudDetectionReason_KNOWN_FRAUDSTER :: FraudDetectionReason+pattern FraudDetectionReason_KNOWN_FRAUDSTER = FraudDetectionReason' "KNOWN_FRAUDSTER"++pattern FraudDetectionReason_VOICE_SPOOFING :: FraudDetectionReason+pattern FraudDetectionReason_VOICE_SPOOFING = FraudDetectionReason' "VOICE_SPOOFING"++{-# COMPLETE+  FraudDetectionReason_KNOWN_FRAUDSTER,+  FraudDetectionReason_VOICE_SPOOFING,+  FraudDetectionReason'+  #-}
+ gen/Amazonka/VoiceId/Types/FraudDetectionResult.hs view
@@ -0,0 +1,186 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.FraudDetectionResult+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.FraudDetectionResult where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.FraudDetectionConfiguration+import Amazonka.VoiceId.Types.FraudDetectionDecision+import Amazonka.VoiceId.Types.FraudDetectionReason+import Amazonka.VoiceId.Types.FraudRiskDetails++-- | The fraud detection result produced by Voice ID, processed against the+-- current session state and streamed audio of the speaker.+--+-- /See:/ 'newFraudDetectionResult' smart constructor.+data FraudDetectionResult = FraudDetectionResult'+  { -- | A timestamp indicating when audio aggregation ended for this fraud+    -- detection result.+    audioAggregationEndedAt :: Prelude.Maybe Data.POSIX,+    -- | A timestamp indicating when audio aggregation started for this fraud+    -- detection result.+    audioAggregationStartedAt :: Prelude.Maybe Data.POSIX,+    -- | The @FraudDetectionConfiguration@ used to generate this fraud detection+    -- result.+    configuration :: Prelude.Maybe FraudDetectionConfiguration,+    -- | The fraud detection decision produced by Voice ID, processed against the+    -- current session state and streamed audio of the speaker.+    decision :: Prelude.Maybe FraudDetectionDecision,+    -- | The unique identifier for this fraud detection result. Given there can+    -- be multiple fraud detections for a given session, this field helps in+    -- identifying if the returned result is from previous streaming activity+    -- or a new result. Note that in the absence of any new streaming activity+    -- or risk threshold changes, Voice ID always returns cached Fraud+    -- Detection result for this API.+    fraudDetectionResultId :: Prelude.Maybe Prelude.Text,+    -- | The reason speaker was flagged by the fraud detection system. This is+    -- only be populated if fraud detection Decision is @HIGH_RISK@, and the+    -- following possible values: @KNOWN_FRAUDSTER@ and @VOICE_SPOOFING@.+    reasons :: Prelude.Maybe [FraudDetectionReason],+    -- | Details about each risk analyzed for this speaker. Currently, this+    -- contains KnownFraudsterRisk and VoiceSpoofingRisk details.+    riskDetails :: Prelude.Maybe FraudRiskDetails+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FraudDetectionResult' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'audioAggregationEndedAt', 'fraudDetectionResult_audioAggregationEndedAt' - A timestamp indicating when audio aggregation ended for this fraud+-- detection result.+--+-- 'audioAggregationStartedAt', 'fraudDetectionResult_audioAggregationStartedAt' - A timestamp indicating when audio aggregation started for this fraud+-- detection result.+--+-- 'configuration', 'fraudDetectionResult_configuration' - The @FraudDetectionConfiguration@ used to generate this fraud detection+-- result.+--+-- 'decision', 'fraudDetectionResult_decision' - The fraud detection decision produced by Voice ID, processed against the+-- current session state and streamed audio of the speaker.+--+-- 'fraudDetectionResultId', 'fraudDetectionResult_fraudDetectionResultId' - The unique identifier for this fraud detection result. Given there can+-- be multiple fraud detections for a given session, this field helps in+-- identifying if the returned result is from previous streaming activity+-- or a new result. Note that in the absence of any new streaming activity+-- or risk threshold changes, Voice ID always returns cached Fraud+-- Detection result for this API.+--+-- 'reasons', 'fraudDetectionResult_reasons' - The reason speaker was flagged by the fraud detection system. This is+-- only be populated if fraud detection Decision is @HIGH_RISK@, and the+-- following possible values: @KNOWN_FRAUDSTER@ and @VOICE_SPOOFING@.+--+-- 'riskDetails', 'fraudDetectionResult_riskDetails' - Details about each risk analyzed for this speaker. Currently, this+-- contains KnownFraudsterRisk and VoiceSpoofingRisk details.+newFraudDetectionResult ::+  FraudDetectionResult+newFraudDetectionResult =+  FraudDetectionResult'+    { audioAggregationEndedAt =+        Prelude.Nothing,+      audioAggregationStartedAt = Prelude.Nothing,+      configuration = Prelude.Nothing,+      decision = Prelude.Nothing,+      fraudDetectionResultId = Prelude.Nothing,+      reasons = Prelude.Nothing,+      riskDetails = Prelude.Nothing+    }++-- | A timestamp indicating when audio aggregation ended for this fraud+-- detection result.+fraudDetectionResult_audioAggregationEndedAt :: Lens.Lens' FraudDetectionResult (Prelude.Maybe Prelude.UTCTime)+fraudDetectionResult_audioAggregationEndedAt = Lens.lens (\FraudDetectionResult' {audioAggregationEndedAt} -> audioAggregationEndedAt) (\s@FraudDetectionResult' {} a -> s {audioAggregationEndedAt = a} :: FraudDetectionResult) Prelude.. Lens.mapping Data._Time++-- | A timestamp indicating when audio aggregation started for this fraud+-- detection result.+fraudDetectionResult_audioAggregationStartedAt :: Lens.Lens' FraudDetectionResult (Prelude.Maybe Prelude.UTCTime)+fraudDetectionResult_audioAggregationStartedAt = Lens.lens (\FraudDetectionResult' {audioAggregationStartedAt} -> audioAggregationStartedAt) (\s@FraudDetectionResult' {} a -> s {audioAggregationStartedAt = a} :: FraudDetectionResult) Prelude.. Lens.mapping Data._Time++-- | The @FraudDetectionConfiguration@ used to generate this fraud detection+-- result.+fraudDetectionResult_configuration :: Lens.Lens' FraudDetectionResult (Prelude.Maybe FraudDetectionConfiguration)+fraudDetectionResult_configuration = Lens.lens (\FraudDetectionResult' {configuration} -> configuration) (\s@FraudDetectionResult' {} a -> s {configuration = a} :: FraudDetectionResult)++-- | The fraud detection decision produced by Voice ID, processed against the+-- current session state and streamed audio of the speaker.+fraudDetectionResult_decision :: Lens.Lens' FraudDetectionResult (Prelude.Maybe FraudDetectionDecision)+fraudDetectionResult_decision = Lens.lens (\FraudDetectionResult' {decision} -> decision) (\s@FraudDetectionResult' {} a -> s {decision = a} :: FraudDetectionResult)++-- | The unique identifier for this fraud detection result. Given there can+-- be multiple fraud detections for a given session, this field helps in+-- identifying if the returned result is from previous streaming activity+-- or a new result. Note that in the absence of any new streaming activity+-- or risk threshold changes, Voice ID always returns cached Fraud+-- Detection result for this API.+fraudDetectionResult_fraudDetectionResultId :: Lens.Lens' FraudDetectionResult (Prelude.Maybe Prelude.Text)+fraudDetectionResult_fraudDetectionResultId = Lens.lens (\FraudDetectionResult' {fraudDetectionResultId} -> fraudDetectionResultId) (\s@FraudDetectionResult' {} a -> s {fraudDetectionResultId = a} :: FraudDetectionResult)++-- | The reason speaker was flagged by the fraud detection system. This is+-- only be populated if fraud detection Decision is @HIGH_RISK@, and the+-- following possible values: @KNOWN_FRAUDSTER@ and @VOICE_SPOOFING@.+fraudDetectionResult_reasons :: Lens.Lens' FraudDetectionResult (Prelude.Maybe [FraudDetectionReason])+fraudDetectionResult_reasons = Lens.lens (\FraudDetectionResult' {reasons} -> reasons) (\s@FraudDetectionResult' {} a -> s {reasons = a} :: FraudDetectionResult) Prelude.. Lens.mapping Lens.coerced++-- | Details about each risk analyzed for this speaker. Currently, this+-- contains KnownFraudsterRisk and VoiceSpoofingRisk details.+fraudDetectionResult_riskDetails :: Lens.Lens' FraudDetectionResult (Prelude.Maybe FraudRiskDetails)+fraudDetectionResult_riskDetails = Lens.lens (\FraudDetectionResult' {riskDetails} -> riskDetails) (\s@FraudDetectionResult' {} a -> s {riskDetails = a} :: FraudDetectionResult)++instance Data.FromJSON FraudDetectionResult where+  parseJSON =+    Data.withObject+      "FraudDetectionResult"+      ( \x ->+          FraudDetectionResult'+            Prelude.<$> (x Data..:? "AudioAggregationEndedAt")+            Prelude.<*> (x Data..:? "AudioAggregationStartedAt")+            Prelude.<*> (x Data..:? "Configuration")+            Prelude.<*> (x Data..:? "Decision")+            Prelude.<*> (x Data..:? "FraudDetectionResultId")+            Prelude.<*> (x Data..:? "Reasons" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "RiskDetails")+      )++instance Prelude.Hashable FraudDetectionResult where+  hashWithSalt _salt FraudDetectionResult' {..} =+    _salt+      `Prelude.hashWithSalt` audioAggregationEndedAt+      `Prelude.hashWithSalt` audioAggregationStartedAt+      `Prelude.hashWithSalt` configuration+      `Prelude.hashWithSalt` decision+      `Prelude.hashWithSalt` fraudDetectionResultId+      `Prelude.hashWithSalt` reasons+      `Prelude.hashWithSalt` riskDetails++instance Prelude.NFData FraudDetectionResult where+  rnf FraudDetectionResult' {..} =+    Prelude.rnf audioAggregationEndedAt+      `Prelude.seq` Prelude.rnf audioAggregationStartedAt+      `Prelude.seq` Prelude.rnf configuration+      `Prelude.seq` Prelude.rnf decision+      `Prelude.seq` Prelude.rnf fraudDetectionResultId+      `Prelude.seq` Prelude.rnf reasons+      `Prelude.seq` Prelude.rnf riskDetails
+ gen/Amazonka/VoiceId/Types/FraudRiskDetails.hs view
@@ -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.VoiceId.Types.FraudRiskDetails+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.FraudRiskDetails where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.KnownFraudsterRisk+import Amazonka.VoiceId.Types.VoiceSpoofingRisk++-- | Details regarding various fraud risk analyses performed against the+-- current session state and streamed audio of the speaker.+--+-- /See:/ 'newFraudRiskDetails' smart constructor.+data FraudRiskDetails = FraudRiskDetails'+  { -- | The details resulting from \'Known Fraudster Risk\' analysis of the+    -- speaker.+    knownFraudsterRisk :: KnownFraudsterRisk,+    -- | The details resulting from \'Voice Spoofing Risk\' analysis of the+    -- speaker.+    voiceSpoofingRisk :: VoiceSpoofingRisk+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FraudRiskDetails' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'knownFraudsterRisk', 'fraudRiskDetails_knownFraudsterRisk' - The details resulting from \'Known Fraudster Risk\' analysis of the+-- speaker.+--+-- 'voiceSpoofingRisk', 'fraudRiskDetails_voiceSpoofingRisk' - The details resulting from \'Voice Spoofing Risk\' analysis of the+-- speaker.+newFraudRiskDetails ::+  -- | 'knownFraudsterRisk'+  KnownFraudsterRisk ->+  -- | 'voiceSpoofingRisk'+  VoiceSpoofingRisk ->+  FraudRiskDetails+newFraudRiskDetails+  pKnownFraudsterRisk_+  pVoiceSpoofingRisk_ =+    FraudRiskDetails'+      { knownFraudsterRisk =+          pKnownFraudsterRisk_,+        voiceSpoofingRisk = pVoiceSpoofingRisk_+      }++-- | The details resulting from \'Known Fraudster Risk\' analysis of the+-- speaker.+fraudRiskDetails_knownFraudsterRisk :: Lens.Lens' FraudRiskDetails KnownFraudsterRisk+fraudRiskDetails_knownFraudsterRisk = Lens.lens (\FraudRiskDetails' {knownFraudsterRisk} -> knownFraudsterRisk) (\s@FraudRiskDetails' {} a -> s {knownFraudsterRisk = a} :: FraudRiskDetails)++-- | The details resulting from \'Voice Spoofing Risk\' analysis of the+-- speaker.+fraudRiskDetails_voiceSpoofingRisk :: Lens.Lens' FraudRiskDetails VoiceSpoofingRisk+fraudRiskDetails_voiceSpoofingRisk = Lens.lens (\FraudRiskDetails' {voiceSpoofingRisk} -> voiceSpoofingRisk) (\s@FraudRiskDetails' {} a -> s {voiceSpoofingRisk = a} :: FraudRiskDetails)++instance Data.FromJSON FraudRiskDetails where+  parseJSON =+    Data.withObject+      "FraudRiskDetails"+      ( \x ->+          FraudRiskDetails'+            Prelude.<$> (x Data..: "KnownFraudsterRisk")+            Prelude.<*> (x Data..: "VoiceSpoofingRisk")+      )++instance Prelude.Hashable FraudRiskDetails where+  hashWithSalt _salt FraudRiskDetails' {..} =+    _salt+      `Prelude.hashWithSalt` knownFraudsterRisk+      `Prelude.hashWithSalt` voiceSpoofingRisk++instance Prelude.NFData FraudRiskDetails where+  rnf FraudRiskDetails' {..} =+    Prelude.rnf knownFraudsterRisk+      `Prelude.seq` Prelude.rnf voiceSpoofingRisk
+ gen/Amazonka/VoiceId/Types/Fraudster.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.Fraudster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.Fraudster where++import qualified 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 all the information about a fraudster.+--+-- /See:/ 'newFraudster' smart constructor.+data Fraudster = Fraudster'+  { -- | The timestamp when Voice ID identified the fraudster.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The identifier for the domain containing the fraudster.+    domainId :: Prelude.Maybe Prelude.Text,+    -- | The service-generated identifier for the fraudster.+    generatedFraudsterId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Fraudster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'fraudster_createdAt' - The timestamp when Voice ID identified the fraudster.+--+-- 'domainId', 'fraudster_domainId' - The identifier for the domain containing the fraudster.+--+-- 'generatedFraudsterId', 'fraudster_generatedFraudsterId' - The service-generated identifier for the fraudster.+newFraudster ::+  Fraudster+newFraudster =+  Fraudster'+    { createdAt = Prelude.Nothing,+      domainId = Prelude.Nothing,+      generatedFraudsterId = Prelude.Nothing+    }++-- | The timestamp when Voice ID identified the fraudster.+fraudster_createdAt :: Lens.Lens' Fraudster (Prelude.Maybe Prelude.UTCTime)+fraudster_createdAt = Lens.lens (\Fraudster' {createdAt} -> createdAt) (\s@Fraudster' {} a -> s {createdAt = a} :: Fraudster) Prelude.. Lens.mapping Data._Time++-- | The identifier for the domain containing the fraudster.+fraudster_domainId :: Lens.Lens' Fraudster (Prelude.Maybe Prelude.Text)+fraudster_domainId = Lens.lens (\Fraudster' {domainId} -> domainId) (\s@Fraudster' {} a -> s {domainId = a} :: Fraudster)++-- | The service-generated identifier for the fraudster.+fraudster_generatedFraudsterId :: Lens.Lens' Fraudster (Prelude.Maybe Prelude.Text)+fraudster_generatedFraudsterId = Lens.lens (\Fraudster' {generatedFraudsterId} -> generatedFraudsterId) (\s@Fraudster' {} a -> s {generatedFraudsterId = a} :: Fraudster)++instance Data.FromJSON Fraudster where+  parseJSON =+    Data.withObject+      "Fraudster"+      ( \x ->+          Fraudster'+            Prelude.<$> (x Data..:? "CreatedAt")+            Prelude.<*> (x Data..:? "DomainId")+            Prelude.<*> (x Data..:? "GeneratedFraudsterId")+      )++instance Prelude.Hashable Fraudster where+  hashWithSalt _salt Fraudster' {..} =+    _salt+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` generatedFraudsterId++instance Prelude.NFData Fraudster where+  rnf Fraudster' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf generatedFraudsterId
+ gen/Amazonka/VoiceId/Types/FraudsterRegistrationJob.hs view
@@ -0,0 +1,247 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.FraudsterRegistrationJob+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.FraudsterRegistrationJob where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.FailureDetails+import Amazonka.VoiceId.Types.FraudsterRegistrationJobStatus+import Amazonka.VoiceId.Types.InputDataConfig+import Amazonka.VoiceId.Types.JobProgress+import Amazonka.VoiceId.Types.OutputDataConfig+import Amazonka.VoiceId.Types.RegistrationConfig++-- | Contains all the information about a fraudster registration job.+--+-- /See:/ 'newFraudsterRegistrationJob' smart constructor.+data FraudsterRegistrationJob = FraudsterRegistrationJob'+  { -- | A timestamp showing the creation time of the fraudster registration job.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+    -- to access customer\'s buckets to read the input manifest file and write+    -- the job output file.+    dataAccessRoleArn :: Prelude.Maybe Prelude.Text,+    -- | The identifier of the domain containing the fraudster registration job.+    domainId :: Prelude.Maybe Prelude.Text,+    -- | A timestamp showing when the fraudster registration job ended.+    endedAt :: Prelude.Maybe Data.POSIX,+    -- | Contains details that are populated when an entire batch job fails. In+    -- cases of individual registration job failures, the batch job as a whole+    -- doesn\'t fail; it is completed with a @JobStatus@ of+    -- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+    -- individual registration requests that failed.+    failureDetails :: Prelude.Maybe FailureDetails,+    -- | The input data config containing an S3 URI for the input manifest file+    -- that contains the list of fraudster registration job requests.+    inputDataConfig :: Prelude.Maybe InputDataConfig,+    -- | The service-generated identifier for the fraudster registration job.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The client-provided name for the fraudster registration job.+    jobName :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | Shows the completed percentage of registration requests listed in the+    -- input file.+    jobProgress :: Prelude.Maybe JobProgress,+    -- | The current status of the fraudster registration job.+    jobStatus :: Prelude.Maybe FraudsterRegistrationJobStatus,+    -- | The output data config containing the S3 location where you want Voice+    -- ID to write your job output file; you must also include a KMS key ID in+    -- order to encrypt the file.+    outputDataConfig :: Prelude.Maybe OutputDataConfig,+    -- | The registration config containing details such as the action to take+    -- when a duplicate fraudster is detected, and the similarity threshold to+    -- use for detecting a duplicate fraudster.+    registrationConfig :: Prelude.Maybe RegistrationConfig+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FraudsterRegistrationJob' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'fraudsterRegistrationJob_createdAt' - A timestamp showing the creation time of the fraudster registration job.+--+-- 'dataAccessRoleArn', 'fraudsterRegistrationJob_dataAccessRoleArn' - The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+-- to access customer\'s buckets to read the input manifest file and write+-- the job output file.+--+-- 'domainId', 'fraudsterRegistrationJob_domainId' - The identifier of the domain containing the fraudster registration job.+--+-- 'endedAt', 'fraudsterRegistrationJob_endedAt' - A timestamp showing when the fraudster registration job ended.+--+-- 'failureDetails', 'fraudsterRegistrationJob_failureDetails' - Contains details that are populated when an entire batch job fails. In+-- cases of individual registration job failures, the batch job as a whole+-- doesn\'t fail; it is completed with a @JobStatus@ of+-- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+-- individual registration requests that failed.+--+-- 'inputDataConfig', 'fraudsterRegistrationJob_inputDataConfig' - The input data config containing an S3 URI for the input manifest file+-- that contains the list of fraudster registration job requests.+--+-- 'jobId', 'fraudsterRegistrationJob_jobId' - The service-generated identifier for the fraudster registration job.+--+-- 'jobName', 'fraudsterRegistrationJob_jobName' - The client-provided name for the fraudster registration job.+--+-- 'jobProgress', 'fraudsterRegistrationJob_jobProgress' - Shows the completed percentage of registration requests listed in the+-- input file.+--+-- 'jobStatus', 'fraudsterRegistrationJob_jobStatus' - The current status of the fraudster registration job.+--+-- 'outputDataConfig', 'fraudsterRegistrationJob_outputDataConfig' - The output data config containing the S3 location where you want Voice+-- ID to write your job output file; you must also include a KMS key ID in+-- order to encrypt the file.+--+-- 'registrationConfig', 'fraudsterRegistrationJob_registrationConfig' - The registration config containing details such as the action to take+-- when a duplicate fraudster is detected, and the similarity threshold to+-- use for detecting a duplicate fraudster.+newFraudsterRegistrationJob ::+  FraudsterRegistrationJob+newFraudsterRegistrationJob =+  FraudsterRegistrationJob'+    { createdAt =+        Prelude.Nothing,+      dataAccessRoleArn = Prelude.Nothing,+      domainId = Prelude.Nothing,+      endedAt = Prelude.Nothing,+      failureDetails = Prelude.Nothing,+      inputDataConfig = Prelude.Nothing,+      jobId = Prelude.Nothing,+      jobName = Prelude.Nothing,+      jobProgress = Prelude.Nothing,+      jobStatus = Prelude.Nothing,+      outputDataConfig = Prelude.Nothing,+      registrationConfig = Prelude.Nothing+    }++-- | A timestamp showing the creation time of the fraudster registration job.+fraudsterRegistrationJob_createdAt :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe Prelude.UTCTime)+fraudsterRegistrationJob_createdAt = Lens.lens (\FraudsterRegistrationJob' {createdAt} -> createdAt) (\s@FraudsterRegistrationJob' {} a -> s {createdAt = a} :: FraudsterRegistrationJob) Prelude.. Lens.mapping Data._Time++-- | The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+-- to access customer\'s buckets to read the input manifest file and write+-- the job output file.+fraudsterRegistrationJob_dataAccessRoleArn :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe Prelude.Text)+fraudsterRegistrationJob_dataAccessRoleArn = Lens.lens (\FraudsterRegistrationJob' {dataAccessRoleArn} -> dataAccessRoleArn) (\s@FraudsterRegistrationJob' {} a -> s {dataAccessRoleArn = a} :: FraudsterRegistrationJob)++-- | The identifier of the domain containing the fraudster registration job.+fraudsterRegistrationJob_domainId :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe Prelude.Text)+fraudsterRegistrationJob_domainId = Lens.lens (\FraudsterRegistrationJob' {domainId} -> domainId) (\s@FraudsterRegistrationJob' {} a -> s {domainId = a} :: FraudsterRegistrationJob)++-- | A timestamp showing when the fraudster registration job ended.+fraudsterRegistrationJob_endedAt :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe Prelude.UTCTime)+fraudsterRegistrationJob_endedAt = Lens.lens (\FraudsterRegistrationJob' {endedAt} -> endedAt) (\s@FraudsterRegistrationJob' {} a -> s {endedAt = a} :: FraudsterRegistrationJob) Prelude.. Lens.mapping Data._Time++-- | Contains details that are populated when an entire batch job fails. In+-- cases of individual registration job failures, the batch job as a whole+-- doesn\'t fail; it is completed with a @JobStatus@ of+-- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+-- individual registration requests that failed.+fraudsterRegistrationJob_failureDetails :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe FailureDetails)+fraudsterRegistrationJob_failureDetails = Lens.lens (\FraudsterRegistrationJob' {failureDetails} -> failureDetails) (\s@FraudsterRegistrationJob' {} a -> s {failureDetails = a} :: FraudsterRegistrationJob)++-- | The input data config containing an S3 URI for the input manifest file+-- that contains the list of fraudster registration job requests.+fraudsterRegistrationJob_inputDataConfig :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe InputDataConfig)+fraudsterRegistrationJob_inputDataConfig = Lens.lens (\FraudsterRegistrationJob' {inputDataConfig} -> inputDataConfig) (\s@FraudsterRegistrationJob' {} a -> s {inputDataConfig = a} :: FraudsterRegistrationJob)++-- | The service-generated identifier for the fraudster registration job.+fraudsterRegistrationJob_jobId :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe Prelude.Text)+fraudsterRegistrationJob_jobId = Lens.lens (\FraudsterRegistrationJob' {jobId} -> jobId) (\s@FraudsterRegistrationJob' {} a -> s {jobId = a} :: FraudsterRegistrationJob)++-- | The client-provided name for the fraudster registration job.+fraudsterRegistrationJob_jobName :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe Prelude.Text)+fraudsterRegistrationJob_jobName = Lens.lens (\FraudsterRegistrationJob' {jobName} -> jobName) (\s@FraudsterRegistrationJob' {} a -> s {jobName = a} :: FraudsterRegistrationJob) Prelude.. Lens.mapping Data._Sensitive++-- | Shows the completed percentage of registration requests listed in the+-- input file.+fraudsterRegistrationJob_jobProgress :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe JobProgress)+fraudsterRegistrationJob_jobProgress = Lens.lens (\FraudsterRegistrationJob' {jobProgress} -> jobProgress) (\s@FraudsterRegistrationJob' {} a -> s {jobProgress = a} :: FraudsterRegistrationJob)++-- | The current status of the fraudster registration job.+fraudsterRegistrationJob_jobStatus :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe FraudsterRegistrationJobStatus)+fraudsterRegistrationJob_jobStatus = Lens.lens (\FraudsterRegistrationJob' {jobStatus} -> jobStatus) (\s@FraudsterRegistrationJob' {} a -> s {jobStatus = a} :: FraudsterRegistrationJob)++-- | The output data config containing the S3 location where you want Voice+-- ID to write your job output file; you must also include a KMS key ID in+-- order to encrypt the file.+fraudsterRegistrationJob_outputDataConfig :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe OutputDataConfig)+fraudsterRegistrationJob_outputDataConfig = Lens.lens (\FraudsterRegistrationJob' {outputDataConfig} -> outputDataConfig) (\s@FraudsterRegistrationJob' {} a -> s {outputDataConfig = a} :: FraudsterRegistrationJob)++-- | The registration config containing details such as the action to take+-- when a duplicate fraudster is detected, and the similarity threshold to+-- use for detecting a duplicate fraudster.+fraudsterRegistrationJob_registrationConfig :: Lens.Lens' FraudsterRegistrationJob (Prelude.Maybe RegistrationConfig)+fraudsterRegistrationJob_registrationConfig = Lens.lens (\FraudsterRegistrationJob' {registrationConfig} -> registrationConfig) (\s@FraudsterRegistrationJob' {} a -> s {registrationConfig = a} :: FraudsterRegistrationJob)++instance Data.FromJSON FraudsterRegistrationJob where+  parseJSON =+    Data.withObject+      "FraudsterRegistrationJob"+      ( \x ->+          FraudsterRegistrationJob'+            Prelude.<$> (x Data..:? "CreatedAt")+            Prelude.<*> (x Data..:? "DataAccessRoleArn")+            Prelude.<*> (x Data..:? "DomainId")+            Prelude.<*> (x Data..:? "EndedAt")+            Prelude.<*> (x Data..:? "FailureDetails")+            Prelude.<*> (x Data..:? "InputDataConfig")+            Prelude.<*> (x Data..:? "JobId")+            Prelude.<*> (x Data..:? "JobName")+            Prelude.<*> (x Data..:? "JobProgress")+            Prelude.<*> (x Data..:? "JobStatus")+            Prelude.<*> (x Data..:? "OutputDataConfig")+            Prelude.<*> (x Data..:? "RegistrationConfig")+      )++instance Prelude.Hashable FraudsterRegistrationJob where+  hashWithSalt _salt FraudsterRegistrationJob' {..} =+    _salt+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` dataAccessRoleArn+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` endedAt+      `Prelude.hashWithSalt` failureDetails+      `Prelude.hashWithSalt` inputDataConfig+      `Prelude.hashWithSalt` jobId+      `Prelude.hashWithSalt` jobName+      `Prelude.hashWithSalt` jobProgress+      `Prelude.hashWithSalt` jobStatus+      `Prelude.hashWithSalt` outputDataConfig+      `Prelude.hashWithSalt` registrationConfig++instance Prelude.NFData FraudsterRegistrationJob where+  rnf FraudsterRegistrationJob' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf dataAccessRoleArn+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf endedAt+      `Prelude.seq` Prelude.rnf failureDetails+      `Prelude.seq` Prelude.rnf inputDataConfig+      `Prelude.seq` Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf jobName+      `Prelude.seq` Prelude.rnf jobProgress+      `Prelude.seq` Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf outputDataConfig+      `Prelude.seq` Prelude.rnf registrationConfig
+ gen/Amazonka/VoiceId/Types/FraudsterRegistrationJobStatus.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.FraudsterRegistrationJobStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.FraudsterRegistrationJobStatus+  ( FraudsterRegistrationJobStatus+      ( ..,+        FraudsterRegistrationJobStatus_COMPLETED,+        FraudsterRegistrationJobStatus_COMPLETED_WITH_ERRORS,+        FraudsterRegistrationJobStatus_FAILED,+        FraudsterRegistrationJobStatus_IN_PROGRESS,+        FraudsterRegistrationJobStatus_SUBMITTED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FraudsterRegistrationJobStatus = FraudsterRegistrationJobStatus'+  { fromFraudsterRegistrationJobStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern FraudsterRegistrationJobStatus_COMPLETED :: FraudsterRegistrationJobStatus+pattern FraudsterRegistrationJobStatus_COMPLETED = FraudsterRegistrationJobStatus' "COMPLETED"++pattern FraudsterRegistrationJobStatus_COMPLETED_WITH_ERRORS :: FraudsterRegistrationJobStatus+pattern FraudsterRegistrationJobStatus_COMPLETED_WITH_ERRORS = FraudsterRegistrationJobStatus' "COMPLETED_WITH_ERRORS"++pattern FraudsterRegistrationJobStatus_FAILED :: FraudsterRegistrationJobStatus+pattern FraudsterRegistrationJobStatus_FAILED = FraudsterRegistrationJobStatus' "FAILED"++pattern FraudsterRegistrationJobStatus_IN_PROGRESS :: FraudsterRegistrationJobStatus+pattern FraudsterRegistrationJobStatus_IN_PROGRESS = FraudsterRegistrationJobStatus' "IN_PROGRESS"++pattern FraudsterRegistrationJobStatus_SUBMITTED :: FraudsterRegistrationJobStatus+pattern FraudsterRegistrationJobStatus_SUBMITTED = FraudsterRegistrationJobStatus' "SUBMITTED"++{-# COMPLETE+  FraudsterRegistrationJobStatus_COMPLETED,+  FraudsterRegistrationJobStatus_COMPLETED_WITH_ERRORS,+  FraudsterRegistrationJobStatus_FAILED,+  FraudsterRegistrationJobStatus_IN_PROGRESS,+  FraudsterRegistrationJobStatus_SUBMITTED,+  FraudsterRegistrationJobStatus'+  #-}
+ gen/Amazonka/VoiceId/Types/FraudsterRegistrationJobSummary.hs view
@@ -0,0 +1,186 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.FraudsterRegistrationJobSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.FraudsterRegistrationJobSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.FailureDetails+import Amazonka.VoiceId.Types.FraudsterRegistrationJobStatus+import Amazonka.VoiceId.Types.JobProgress++-- | Contains a summary of information about a fraudster registration job.+--+-- /See:/ 'newFraudsterRegistrationJobSummary' smart constructor.+data FraudsterRegistrationJobSummary = FraudsterRegistrationJobSummary'+  { -- | A timestamp showing when the fraudster registration job is created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The identifier of the domain containing the fraudster registration job.+    domainId :: Prelude.Maybe Prelude.Text,+    -- | A timestamp showing when the fraudster registration job ended.+    endedAt :: Prelude.Maybe Data.POSIX,+    -- | Contains details that are populated when an entire batch job fails. In+    -- cases of individual registration job failures, the batch job as a whole+    -- doesn\'t fail; it is completed with a @JobStatus@ of+    -- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+    -- individual registration requests that failed.+    failureDetails :: Prelude.Maybe FailureDetails,+    -- | The service-generated identifier for the fraudster registration job.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The client-provided name for the fraudster registration job.+    jobName :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | Shows the completed percentage of registration requests listed in the+    -- input file.+    jobProgress :: Prelude.Maybe JobProgress,+    -- | The current status of the fraudster registration job.+    jobStatus :: Prelude.Maybe FraudsterRegistrationJobStatus+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FraudsterRegistrationJobSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'fraudsterRegistrationJobSummary_createdAt' - A timestamp showing when the fraudster registration job is created.+--+-- 'domainId', 'fraudsterRegistrationJobSummary_domainId' - The identifier of the domain containing the fraudster registration job.+--+-- 'endedAt', 'fraudsterRegistrationJobSummary_endedAt' - A timestamp showing when the fraudster registration job ended.+--+-- 'failureDetails', 'fraudsterRegistrationJobSummary_failureDetails' - Contains details that are populated when an entire batch job fails. In+-- cases of individual registration job failures, the batch job as a whole+-- doesn\'t fail; it is completed with a @JobStatus@ of+-- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+-- individual registration requests that failed.+--+-- 'jobId', 'fraudsterRegistrationJobSummary_jobId' - The service-generated identifier for the fraudster registration job.+--+-- 'jobName', 'fraudsterRegistrationJobSummary_jobName' - The client-provided name for the fraudster registration job.+--+-- 'jobProgress', 'fraudsterRegistrationJobSummary_jobProgress' - Shows the completed percentage of registration requests listed in the+-- input file.+--+-- 'jobStatus', 'fraudsterRegistrationJobSummary_jobStatus' - The current status of the fraudster registration job.+newFraudsterRegistrationJobSummary ::+  FraudsterRegistrationJobSummary+newFraudsterRegistrationJobSummary =+  FraudsterRegistrationJobSummary'+    { createdAt =+        Prelude.Nothing,+      domainId = Prelude.Nothing,+      endedAt = Prelude.Nothing,+      failureDetails = Prelude.Nothing,+      jobId = Prelude.Nothing,+      jobName = Prelude.Nothing,+      jobProgress = Prelude.Nothing,+      jobStatus = Prelude.Nothing+    }++-- | A timestamp showing when the fraudster registration job is created.+fraudsterRegistrationJobSummary_createdAt :: Lens.Lens' FraudsterRegistrationJobSummary (Prelude.Maybe Prelude.UTCTime)+fraudsterRegistrationJobSummary_createdAt = Lens.lens (\FraudsterRegistrationJobSummary' {createdAt} -> createdAt) (\s@FraudsterRegistrationJobSummary' {} a -> s {createdAt = a} :: FraudsterRegistrationJobSummary) Prelude.. Lens.mapping Data._Time++-- | The identifier of the domain containing the fraudster registration job.+fraudsterRegistrationJobSummary_domainId :: Lens.Lens' FraudsterRegistrationJobSummary (Prelude.Maybe Prelude.Text)+fraudsterRegistrationJobSummary_domainId = Lens.lens (\FraudsterRegistrationJobSummary' {domainId} -> domainId) (\s@FraudsterRegistrationJobSummary' {} a -> s {domainId = a} :: FraudsterRegistrationJobSummary)++-- | A timestamp showing when the fraudster registration job ended.+fraudsterRegistrationJobSummary_endedAt :: Lens.Lens' FraudsterRegistrationJobSummary (Prelude.Maybe Prelude.UTCTime)+fraudsterRegistrationJobSummary_endedAt = Lens.lens (\FraudsterRegistrationJobSummary' {endedAt} -> endedAt) (\s@FraudsterRegistrationJobSummary' {} a -> s {endedAt = a} :: FraudsterRegistrationJobSummary) Prelude.. Lens.mapping Data._Time++-- | Contains details that are populated when an entire batch job fails. In+-- cases of individual registration job failures, the batch job as a whole+-- doesn\'t fail; it is completed with a @JobStatus@ of+-- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+-- individual registration requests that failed.+fraudsterRegistrationJobSummary_failureDetails :: Lens.Lens' FraudsterRegistrationJobSummary (Prelude.Maybe FailureDetails)+fraudsterRegistrationJobSummary_failureDetails = Lens.lens (\FraudsterRegistrationJobSummary' {failureDetails} -> failureDetails) (\s@FraudsterRegistrationJobSummary' {} a -> s {failureDetails = a} :: FraudsterRegistrationJobSummary)++-- | The service-generated identifier for the fraudster registration job.+fraudsterRegistrationJobSummary_jobId :: Lens.Lens' FraudsterRegistrationJobSummary (Prelude.Maybe Prelude.Text)+fraudsterRegistrationJobSummary_jobId = Lens.lens (\FraudsterRegistrationJobSummary' {jobId} -> jobId) (\s@FraudsterRegistrationJobSummary' {} a -> s {jobId = a} :: FraudsterRegistrationJobSummary)++-- | The client-provided name for the fraudster registration job.+fraudsterRegistrationJobSummary_jobName :: Lens.Lens' FraudsterRegistrationJobSummary (Prelude.Maybe Prelude.Text)+fraudsterRegistrationJobSummary_jobName = Lens.lens (\FraudsterRegistrationJobSummary' {jobName} -> jobName) (\s@FraudsterRegistrationJobSummary' {} a -> s {jobName = a} :: FraudsterRegistrationJobSummary) Prelude.. Lens.mapping Data._Sensitive++-- | Shows the completed percentage of registration requests listed in the+-- input file.+fraudsterRegistrationJobSummary_jobProgress :: Lens.Lens' FraudsterRegistrationJobSummary (Prelude.Maybe JobProgress)+fraudsterRegistrationJobSummary_jobProgress = Lens.lens (\FraudsterRegistrationJobSummary' {jobProgress} -> jobProgress) (\s@FraudsterRegistrationJobSummary' {} a -> s {jobProgress = a} :: FraudsterRegistrationJobSummary)++-- | The current status of the fraudster registration job.+fraudsterRegistrationJobSummary_jobStatus :: Lens.Lens' FraudsterRegistrationJobSummary (Prelude.Maybe FraudsterRegistrationJobStatus)+fraudsterRegistrationJobSummary_jobStatus = Lens.lens (\FraudsterRegistrationJobSummary' {jobStatus} -> jobStatus) (\s@FraudsterRegistrationJobSummary' {} a -> s {jobStatus = a} :: FraudsterRegistrationJobSummary)++instance+  Data.FromJSON+    FraudsterRegistrationJobSummary+  where+  parseJSON =+    Data.withObject+      "FraudsterRegistrationJobSummary"+      ( \x ->+          FraudsterRegistrationJobSummary'+            Prelude.<$> (x Data..:? "CreatedAt")+            Prelude.<*> (x Data..:? "DomainId")+            Prelude.<*> (x Data..:? "EndedAt")+            Prelude.<*> (x Data..:? "FailureDetails")+            Prelude.<*> (x Data..:? "JobId")+            Prelude.<*> (x Data..:? "JobName")+            Prelude.<*> (x Data..:? "JobProgress")+            Prelude.<*> (x Data..:? "JobStatus")+      )++instance+  Prelude.Hashable+    FraudsterRegistrationJobSummary+  where+  hashWithSalt+    _salt+    FraudsterRegistrationJobSummary' {..} =+      _salt+        `Prelude.hashWithSalt` createdAt+        `Prelude.hashWithSalt` domainId+        `Prelude.hashWithSalt` endedAt+        `Prelude.hashWithSalt` failureDetails+        `Prelude.hashWithSalt` jobId+        `Prelude.hashWithSalt` jobName+        `Prelude.hashWithSalt` jobProgress+        `Prelude.hashWithSalt` jobStatus++instance+  Prelude.NFData+    FraudsterRegistrationJobSummary+  where+  rnf FraudsterRegistrationJobSummary' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf endedAt+      `Prelude.seq` Prelude.rnf failureDetails+      `Prelude.seq` Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf jobName+      `Prelude.seq` Prelude.rnf jobProgress+      `Prelude.seq` Prelude.rnf jobStatus
+ gen/Amazonka/VoiceId/Types/InputDataConfig.hs view
@@ -0,0 +1,79 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.InputDataConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.InputDataConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The configuration containing input file information for a batch job.+--+-- /See:/ 'newInputDataConfig' smart constructor.+data InputDataConfig = InputDataConfig'+  { -- | The S3 location for the input manifest file that contains the list of+    -- individual enrollment or registration job requests.+    s3Uri :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InputDataConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'inputDataConfig_s3Uri' - The S3 location for the input manifest file that contains the list of+-- individual enrollment or registration job requests.+newInputDataConfig ::+  -- | 's3Uri'+  Prelude.Text ->+  InputDataConfig+newInputDataConfig pS3Uri_ =+  InputDataConfig' {s3Uri = pS3Uri_}++-- | The S3 location for the input manifest file that contains the list of+-- individual enrollment or registration job requests.+inputDataConfig_s3Uri :: Lens.Lens' InputDataConfig Prelude.Text+inputDataConfig_s3Uri = Lens.lens (\InputDataConfig' {s3Uri} -> s3Uri) (\s@InputDataConfig' {} a -> s {s3Uri = a} :: InputDataConfig)++instance Data.FromJSON InputDataConfig where+  parseJSON =+    Data.withObject+      "InputDataConfig"+      ( \x ->+          InputDataConfig' Prelude.<$> (x Data..: "S3Uri")+      )++instance Prelude.Hashable InputDataConfig where+  hashWithSalt _salt InputDataConfig' {..} =+    _salt `Prelude.hashWithSalt` s3Uri++instance Prelude.NFData InputDataConfig where+  rnf InputDataConfig' {..} = Prelude.rnf s3Uri++instance Data.ToJSON InputDataConfig where+  toJSON InputDataConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("S3Uri" Data..= s3Uri)]+      )
+ gen/Amazonka/VoiceId/Types/JobProgress.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.JobProgress+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.JobProgress where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Indicates the completion progress for a batch job.+--+-- /See:/ 'newJobProgress' smart constructor.+data JobProgress = JobProgress'+  { -- | Shows the completed percentage of enrollment or registration requests+    -- listed in the input file.+    percentComplete :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'JobProgress' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'percentComplete', 'jobProgress_percentComplete' - Shows the completed percentage of enrollment or registration requests+-- listed in the input file.+newJobProgress ::+  JobProgress+newJobProgress =+  JobProgress' {percentComplete = Prelude.Nothing}++-- | Shows the completed percentage of enrollment or registration requests+-- listed in the input file.+jobProgress_percentComplete :: Lens.Lens' JobProgress (Prelude.Maybe Prelude.Natural)+jobProgress_percentComplete = Lens.lens (\JobProgress' {percentComplete} -> percentComplete) (\s@JobProgress' {} a -> s {percentComplete = a} :: JobProgress)++instance Data.FromJSON JobProgress where+  parseJSON =+    Data.withObject+      "JobProgress"+      ( \x ->+          JobProgress'+            Prelude.<$> (x Data..:? "PercentComplete")+      )++instance Prelude.Hashable JobProgress where+  hashWithSalt _salt JobProgress' {..} =+    _salt `Prelude.hashWithSalt` percentComplete++instance Prelude.NFData JobProgress where+  rnf JobProgress' {..} = Prelude.rnf percentComplete
+ gen/Amazonka/VoiceId/Types/KnownFraudsterRisk.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.KnownFraudsterRisk+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.KnownFraudsterRisk where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains details produced as a result of performing known fraudster risk+-- analysis on a speaker.+--+-- /See:/ 'newKnownFraudsterRisk' smart constructor.+data KnownFraudsterRisk = KnownFraudsterRisk'+  { -- | The identifier of the fraudster that is the closest match to the+    -- speaker. If there are no fraudsters registered in a given domain, or if+    -- there are no fraudsters with a non-zero RiskScore, this value is @null@.+    generatedFraudsterId :: Prelude.Maybe Prelude.Text,+    -- | The score indicating the likelihood the speaker is a known fraudster.+    riskScore :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'KnownFraudsterRisk' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'generatedFraudsterId', 'knownFraudsterRisk_generatedFraudsterId' - The identifier of the fraudster that is the closest match to the+-- speaker. If there are no fraudsters registered in a given domain, or if+-- there are no fraudsters with a non-zero RiskScore, this value is @null@.+--+-- 'riskScore', 'knownFraudsterRisk_riskScore' - The score indicating the likelihood the speaker is a known fraudster.+newKnownFraudsterRisk ::+  -- | 'riskScore'+  Prelude.Natural ->+  KnownFraudsterRisk+newKnownFraudsterRisk pRiskScore_ =+  KnownFraudsterRisk'+    { generatedFraudsterId =+        Prelude.Nothing,+      riskScore = pRiskScore_+    }++-- | The identifier of the fraudster that is the closest match to the+-- speaker. If there are no fraudsters registered in a given domain, or if+-- there are no fraudsters with a non-zero RiskScore, this value is @null@.+knownFraudsterRisk_generatedFraudsterId :: Lens.Lens' KnownFraudsterRisk (Prelude.Maybe Prelude.Text)+knownFraudsterRisk_generatedFraudsterId = Lens.lens (\KnownFraudsterRisk' {generatedFraudsterId} -> generatedFraudsterId) (\s@KnownFraudsterRisk' {} a -> s {generatedFraudsterId = a} :: KnownFraudsterRisk)++-- | The score indicating the likelihood the speaker is a known fraudster.+knownFraudsterRisk_riskScore :: Lens.Lens' KnownFraudsterRisk Prelude.Natural+knownFraudsterRisk_riskScore = Lens.lens (\KnownFraudsterRisk' {riskScore} -> riskScore) (\s@KnownFraudsterRisk' {} a -> s {riskScore = a} :: KnownFraudsterRisk)++instance Data.FromJSON KnownFraudsterRisk where+  parseJSON =+    Data.withObject+      "KnownFraudsterRisk"+      ( \x ->+          KnownFraudsterRisk'+            Prelude.<$> (x Data..:? "GeneratedFraudsterId")+            Prelude.<*> (x Data..: "RiskScore")+      )++instance Prelude.Hashable KnownFraudsterRisk where+  hashWithSalt _salt KnownFraudsterRisk' {..} =+    _salt+      `Prelude.hashWithSalt` generatedFraudsterId+      `Prelude.hashWithSalt` riskScore++instance Prelude.NFData KnownFraudsterRisk where+  rnf KnownFraudsterRisk' {..} =+    Prelude.rnf generatedFraudsterId+      `Prelude.seq` Prelude.rnf riskScore
+ gen/Amazonka/VoiceId/Types/OutputDataConfig.hs view
@@ -0,0 +1,110 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.OutputDataConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.OutputDataConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The configuration containing output file information for a batch job.+--+-- /See:/ 'newOutputDataConfig' smart constructor.+data OutputDataConfig = OutputDataConfig'+  { -- | The identifier of the KMS key you want Voice ID to use to encrypt the+    -- output file of a speaker enrollment job\/fraudster registration job.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The S3 path of the folder where Voice ID writes the job output file. It+    -- has a @*.out@ extension. For example, if the input file name is+    -- @input-file.json@ and the output folder path is+    -- @s3:\/\/output-bucket\/output-folder@, the full output file path is+    -- @s3:\/\/output-bucket\/output-folder\/job-Id\/input-file.json.out@.+    s3Uri :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OutputDataConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'kmsKeyId', 'outputDataConfig_kmsKeyId' - The identifier of the KMS key you want Voice ID to use to encrypt the+-- output file of a speaker enrollment job\/fraudster registration job.+--+-- 's3Uri', 'outputDataConfig_s3Uri' - The S3 path of the folder where Voice ID writes the job output file. It+-- has a @*.out@ extension. For example, if the input file name is+-- @input-file.json@ and the output folder path is+-- @s3:\/\/output-bucket\/output-folder@, the full output file path is+-- @s3:\/\/output-bucket\/output-folder\/job-Id\/input-file.json.out@.+newOutputDataConfig ::+  -- | 's3Uri'+  Prelude.Text ->+  OutputDataConfig+newOutputDataConfig pS3Uri_ =+  OutputDataConfig'+    { kmsKeyId = Prelude.Nothing,+      s3Uri = pS3Uri_+    }++-- | The identifier of the KMS key you want Voice ID to use to encrypt the+-- output file of a speaker enrollment job\/fraudster registration job.+outputDataConfig_kmsKeyId :: Lens.Lens' OutputDataConfig (Prelude.Maybe Prelude.Text)+outputDataConfig_kmsKeyId = Lens.lens (\OutputDataConfig' {kmsKeyId} -> kmsKeyId) (\s@OutputDataConfig' {} a -> s {kmsKeyId = a} :: OutputDataConfig)++-- | The S3 path of the folder where Voice ID writes the job output file. It+-- has a @*.out@ extension. For example, if the input file name is+-- @input-file.json@ and the output folder path is+-- @s3:\/\/output-bucket\/output-folder@, the full output file path is+-- @s3:\/\/output-bucket\/output-folder\/job-Id\/input-file.json.out@.+outputDataConfig_s3Uri :: Lens.Lens' OutputDataConfig Prelude.Text+outputDataConfig_s3Uri = Lens.lens (\OutputDataConfig' {s3Uri} -> s3Uri) (\s@OutputDataConfig' {} a -> s {s3Uri = a} :: OutputDataConfig)++instance Data.FromJSON OutputDataConfig where+  parseJSON =+    Data.withObject+      "OutputDataConfig"+      ( \x ->+          OutputDataConfig'+            Prelude.<$> (x Data..:? "KmsKeyId")+            Prelude.<*> (x Data..: "S3Uri")+      )++instance Prelude.Hashable OutputDataConfig where+  hashWithSalt _salt OutputDataConfig' {..} =+    _salt+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` s3Uri++instance Prelude.NFData OutputDataConfig where+  rnf OutputDataConfig' {..} =+    Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf s3Uri++instance Data.ToJSON OutputDataConfig where+  toJSON OutputDataConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            Prelude.Just ("S3Uri" Data..= s3Uri)+          ]+      )
+ gen/Amazonka/VoiceId/Types/RegistrationConfig.hs view
@@ -0,0 +1,111 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.RegistrationConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.RegistrationConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.DuplicateRegistrationAction++-- | The configuration defining the action to take when a duplicate fraudster+-- is detected, and the similarity threshold to use for detecting a+-- duplicate fraudster during a batch fraudster registration job.+--+-- /See:/ 'newRegistrationConfig' smart constructor.+data RegistrationConfig = RegistrationConfig'+  { -- | The action to take when a fraudster is identified as a duplicate. The+    -- default action is @SKIP@, which skips registering the duplicate+    -- fraudster. Setting the value to @REGISTER_AS_NEW@ always registers a new+    -- fraudster into the specified domain.+    duplicateRegistrationAction :: Prelude.Maybe DuplicateRegistrationAction,+    -- | The minimum similarity score between the new and old fraudsters in order+    -- to consider the new fraudster a duplicate.+    fraudsterSimilarityThreshold :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RegistrationConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'duplicateRegistrationAction', 'registrationConfig_duplicateRegistrationAction' - The action to take when a fraudster is identified as a duplicate. The+-- default action is @SKIP@, which skips registering the duplicate+-- fraudster. Setting the value to @REGISTER_AS_NEW@ always registers a new+-- fraudster into the specified domain.+--+-- 'fraudsterSimilarityThreshold', 'registrationConfig_fraudsterSimilarityThreshold' - The minimum similarity score between the new and old fraudsters in order+-- to consider the new fraudster a duplicate.+newRegistrationConfig ::+  RegistrationConfig+newRegistrationConfig =+  RegistrationConfig'+    { duplicateRegistrationAction =+        Prelude.Nothing,+      fraudsterSimilarityThreshold = Prelude.Nothing+    }++-- | The action to take when a fraudster is identified as a duplicate. The+-- default action is @SKIP@, which skips registering the duplicate+-- fraudster. Setting the value to @REGISTER_AS_NEW@ always registers a new+-- fraudster into the specified domain.+registrationConfig_duplicateRegistrationAction :: Lens.Lens' RegistrationConfig (Prelude.Maybe DuplicateRegistrationAction)+registrationConfig_duplicateRegistrationAction = Lens.lens (\RegistrationConfig' {duplicateRegistrationAction} -> duplicateRegistrationAction) (\s@RegistrationConfig' {} a -> s {duplicateRegistrationAction = a} :: RegistrationConfig)++-- | The minimum similarity score between the new and old fraudsters in order+-- to consider the new fraudster a duplicate.+registrationConfig_fraudsterSimilarityThreshold :: Lens.Lens' RegistrationConfig (Prelude.Maybe Prelude.Natural)+registrationConfig_fraudsterSimilarityThreshold = Lens.lens (\RegistrationConfig' {fraudsterSimilarityThreshold} -> fraudsterSimilarityThreshold) (\s@RegistrationConfig' {} a -> s {fraudsterSimilarityThreshold = a} :: RegistrationConfig)++instance Data.FromJSON RegistrationConfig where+  parseJSON =+    Data.withObject+      "RegistrationConfig"+      ( \x ->+          RegistrationConfig'+            Prelude.<$> (x Data..:? "DuplicateRegistrationAction")+            Prelude.<*> (x Data..:? "FraudsterSimilarityThreshold")+      )++instance Prelude.Hashable RegistrationConfig where+  hashWithSalt _salt RegistrationConfig' {..} =+    _salt+      `Prelude.hashWithSalt` duplicateRegistrationAction+      `Prelude.hashWithSalt` fraudsterSimilarityThreshold++instance Prelude.NFData RegistrationConfig where+  rnf RegistrationConfig' {..} =+    Prelude.rnf duplicateRegistrationAction+      `Prelude.seq` Prelude.rnf fraudsterSimilarityThreshold++instance Data.ToJSON RegistrationConfig where+  toJSON RegistrationConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DuplicateRegistrationAction" Data..=)+              Prelude.<$> duplicateRegistrationAction,+            ("FraudsterSimilarityThreshold" Data..=)+              Prelude.<$> fraudsterSimilarityThreshold+          ]+      )
+ gen/Amazonka/VoiceId/Types/ServerSideEncryptionConfiguration.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.ServerSideEncryptionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.ServerSideEncryptionConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The configuration containing information about the customer managed key+-- used for encrypting customer data.+--+-- /See:/ 'newServerSideEncryptionConfiguration' smart constructor.+data ServerSideEncryptionConfiguration = ServerSideEncryptionConfiguration'+  { -- | The identifier of the KMS key to use to encrypt data stored by Voice ID.+    -- Voice ID doesn\'t support asymmetric customer managed keys.+    kmsKeyId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServerSideEncryptionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'serverSideEncryptionConfiguration_kmsKeyId' - The identifier of the KMS key to use to encrypt data stored by Voice ID.+-- Voice ID doesn\'t support asymmetric customer managed keys.+newServerSideEncryptionConfiguration ::+  -- | 'kmsKeyId'+  Prelude.Text ->+  ServerSideEncryptionConfiguration+newServerSideEncryptionConfiguration pKmsKeyId_ =+  ServerSideEncryptionConfiguration'+    { kmsKeyId =+        pKmsKeyId_+    }++-- | The identifier of the KMS key to use to encrypt data stored by Voice ID.+-- Voice ID doesn\'t support asymmetric customer managed keys.+serverSideEncryptionConfiguration_kmsKeyId :: Lens.Lens' ServerSideEncryptionConfiguration Prelude.Text+serverSideEncryptionConfiguration_kmsKeyId = Lens.lens (\ServerSideEncryptionConfiguration' {kmsKeyId} -> kmsKeyId) (\s@ServerSideEncryptionConfiguration' {} a -> s {kmsKeyId = a} :: ServerSideEncryptionConfiguration)++instance+  Data.FromJSON+    ServerSideEncryptionConfiguration+  where+  parseJSON =+    Data.withObject+      "ServerSideEncryptionConfiguration"+      ( \x ->+          ServerSideEncryptionConfiguration'+            Prelude.<$> (x Data..: "KmsKeyId")+      )++instance+  Prelude.Hashable+    ServerSideEncryptionConfiguration+  where+  hashWithSalt+    _salt+    ServerSideEncryptionConfiguration' {..} =+      _salt `Prelude.hashWithSalt` kmsKeyId++instance+  Prelude.NFData+    ServerSideEncryptionConfiguration+  where+  rnf ServerSideEncryptionConfiguration' {..} =+    Prelude.rnf kmsKeyId++instance+  Data.ToJSON+    ServerSideEncryptionConfiguration+  where+  toJSON ServerSideEncryptionConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("KmsKeyId" Data..= kmsKeyId)]+      )
+ gen/Amazonka/VoiceId/Types/ServerSideEncryptionUpdateDetails.hs view
@@ -0,0 +1,134 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.ServerSideEncryptionUpdateDetails+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.ServerSideEncryptionUpdateDetails where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.ServerSideEncryptionUpdateStatus++-- | Details about the most recent server-side encryption configuration+-- update. When the server-side encryption configuration is changed,+-- dependency on the old KMS key is removed through an asynchronous+-- process. When this update is complete, the domain’s data can only be+-- accessed using the new KMS key.+--+-- /See:/ 'newServerSideEncryptionUpdateDetails' smart constructor.+data ServerSideEncryptionUpdateDetails = ServerSideEncryptionUpdateDetails'+  { -- | Message explaining the current UpdateStatus. When the UpdateStatus is+    -- FAILED, this message explains the cause of the failure.+    message :: Prelude.Maybe Prelude.Text,+    -- | The previous KMS key ID the domain was encrypted with, before+    -- ServerSideEncryptionConfiguration was updated to a new KMS key ID.+    oldKmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | Status of the server-side encryption update. During an update, if there+    -- is an issue with the domain\'s current or old KMS key ID, such as an+    -- inaccessible or disabled key, then the status is FAILED. In order to+    -- resolve this, the key needs to be made accessible, and then an+    -- UpdateDomain call with the existing server-side encryption configuration+    -- will re-attempt this update process.+    updateStatus :: Prelude.Maybe ServerSideEncryptionUpdateStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServerSideEncryptionUpdateDetails' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'serverSideEncryptionUpdateDetails_message' - Message explaining the current UpdateStatus. When the UpdateStatus is+-- FAILED, this message explains the cause of the failure.+--+-- 'oldKmsKeyId', 'serverSideEncryptionUpdateDetails_oldKmsKeyId' - The previous KMS key ID the domain was encrypted with, before+-- ServerSideEncryptionConfiguration was updated to a new KMS key ID.+--+-- 'updateStatus', 'serverSideEncryptionUpdateDetails_updateStatus' - Status of the server-side encryption update. During an update, if there+-- is an issue with the domain\'s current or old KMS key ID, such as an+-- inaccessible or disabled key, then the status is FAILED. In order to+-- resolve this, the key needs to be made accessible, and then an+-- UpdateDomain call with the existing server-side encryption configuration+-- will re-attempt this update process.+newServerSideEncryptionUpdateDetails ::+  ServerSideEncryptionUpdateDetails+newServerSideEncryptionUpdateDetails =+  ServerSideEncryptionUpdateDetails'+    { message =+        Prelude.Nothing,+      oldKmsKeyId = Prelude.Nothing,+      updateStatus = Prelude.Nothing+    }++-- | Message explaining the current UpdateStatus. When the UpdateStatus is+-- FAILED, this message explains the cause of the failure.+serverSideEncryptionUpdateDetails_message :: Lens.Lens' ServerSideEncryptionUpdateDetails (Prelude.Maybe Prelude.Text)+serverSideEncryptionUpdateDetails_message = Lens.lens (\ServerSideEncryptionUpdateDetails' {message} -> message) (\s@ServerSideEncryptionUpdateDetails' {} a -> s {message = a} :: ServerSideEncryptionUpdateDetails)++-- | The previous KMS key ID the domain was encrypted with, before+-- ServerSideEncryptionConfiguration was updated to a new KMS key ID.+serverSideEncryptionUpdateDetails_oldKmsKeyId :: Lens.Lens' ServerSideEncryptionUpdateDetails (Prelude.Maybe Prelude.Text)+serverSideEncryptionUpdateDetails_oldKmsKeyId = Lens.lens (\ServerSideEncryptionUpdateDetails' {oldKmsKeyId} -> oldKmsKeyId) (\s@ServerSideEncryptionUpdateDetails' {} a -> s {oldKmsKeyId = a} :: ServerSideEncryptionUpdateDetails)++-- | Status of the server-side encryption update. During an update, if there+-- is an issue with the domain\'s current or old KMS key ID, such as an+-- inaccessible or disabled key, then the status is FAILED. In order to+-- resolve this, the key needs to be made accessible, and then an+-- UpdateDomain call with the existing server-side encryption configuration+-- will re-attempt this update process.+serverSideEncryptionUpdateDetails_updateStatus :: Lens.Lens' ServerSideEncryptionUpdateDetails (Prelude.Maybe ServerSideEncryptionUpdateStatus)+serverSideEncryptionUpdateDetails_updateStatus = Lens.lens (\ServerSideEncryptionUpdateDetails' {updateStatus} -> updateStatus) (\s@ServerSideEncryptionUpdateDetails' {} a -> s {updateStatus = a} :: ServerSideEncryptionUpdateDetails)++instance+  Data.FromJSON+    ServerSideEncryptionUpdateDetails+  where+  parseJSON =+    Data.withObject+      "ServerSideEncryptionUpdateDetails"+      ( \x ->+          ServerSideEncryptionUpdateDetails'+            Prelude.<$> (x Data..:? "Message")+            Prelude.<*> (x Data..:? "OldKmsKeyId")+            Prelude.<*> (x Data..:? "UpdateStatus")+      )++instance+  Prelude.Hashable+    ServerSideEncryptionUpdateDetails+  where+  hashWithSalt+    _salt+    ServerSideEncryptionUpdateDetails' {..} =+      _salt+        `Prelude.hashWithSalt` message+        `Prelude.hashWithSalt` oldKmsKeyId+        `Prelude.hashWithSalt` updateStatus++instance+  Prelude.NFData+    ServerSideEncryptionUpdateDetails+  where+  rnf ServerSideEncryptionUpdateDetails' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf oldKmsKeyId+      `Prelude.seq` Prelude.rnf updateStatus
+ gen/Amazonka/VoiceId/Types/ServerSideEncryptionUpdateStatus.hs view
@@ -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.VoiceId.Types.ServerSideEncryptionUpdateStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.ServerSideEncryptionUpdateStatus+  ( ServerSideEncryptionUpdateStatus+      ( ..,+        ServerSideEncryptionUpdateStatus_COMPLETED,+        ServerSideEncryptionUpdateStatus_FAILED,+        ServerSideEncryptionUpdateStatus_IN_PROGRESS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ServerSideEncryptionUpdateStatus = ServerSideEncryptionUpdateStatus'+  { fromServerSideEncryptionUpdateStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ServerSideEncryptionUpdateStatus_COMPLETED :: ServerSideEncryptionUpdateStatus+pattern ServerSideEncryptionUpdateStatus_COMPLETED = ServerSideEncryptionUpdateStatus' "COMPLETED"++pattern ServerSideEncryptionUpdateStatus_FAILED :: ServerSideEncryptionUpdateStatus+pattern ServerSideEncryptionUpdateStatus_FAILED = ServerSideEncryptionUpdateStatus' "FAILED"++pattern ServerSideEncryptionUpdateStatus_IN_PROGRESS :: ServerSideEncryptionUpdateStatus+pattern ServerSideEncryptionUpdateStatus_IN_PROGRESS = ServerSideEncryptionUpdateStatus' "IN_PROGRESS"++{-# COMPLETE+  ServerSideEncryptionUpdateStatus_COMPLETED,+  ServerSideEncryptionUpdateStatus_FAILED,+  ServerSideEncryptionUpdateStatus_IN_PROGRESS,+  ServerSideEncryptionUpdateStatus'+  #-}
+ gen/Amazonka/VoiceId/Types/Speaker.hs view
@@ -0,0 +1,151 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.Speaker+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.Speaker where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.SpeakerStatus++-- | Contains all the information about a speaker.+--+-- /See:/ 'newSpeaker' smart constructor.+data Speaker = Speaker'+  { -- | A timestamp showing when the speaker is created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The client-provided identifier for the speaker.+    customerSpeakerId :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The identifier of the domain that contains the speaker.+    domainId :: Prelude.Maybe Prelude.Text,+    -- | The service-generated identifier for the speaker.+    generatedSpeakerId :: Prelude.Maybe Prelude.Text,+    -- | The timestamp when the speaker was last accessed for enrollment,+    -- re-enrollment or a successful authentication. This timestamp is accurate+    -- to one hour.+    lastAccessedAt :: Prelude.Maybe Data.POSIX,+    -- | The current status of the speaker.+    status :: Prelude.Maybe SpeakerStatus,+    -- | A timestamp showing the speaker\'s last update.+    updatedAt :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Speaker' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'speaker_createdAt' - A timestamp showing when the speaker is created.+--+-- 'customerSpeakerId', 'speaker_customerSpeakerId' - The client-provided identifier for the speaker.+--+-- 'domainId', 'speaker_domainId' - The identifier of the domain that contains the speaker.+--+-- 'generatedSpeakerId', 'speaker_generatedSpeakerId' - The service-generated identifier for the speaker.+--+-- 'lastAccessedAt', 'speaker_lastAccessedAt' - The timestamp when the speaker was last accessed for enrollment,+-- re-enrollment or a successful authentication. This timestamp is accurate+-- to one hour.+--+-- 'status', 'speaker_status' - The current status of the speaker.+--+-- 'updatedAt', 'speaker_updatedAt' - A timestamp showing the speaker\'s last update.+newSpeaker ::+  Speaker+newSpeaker =+  Speaker'+    { createdAt = Prelude.Nothing,+      customerSpeakerId = Prelude.Nothing,+      domainId = Prelude.Nothing,+      generatedSpeakerId = Prelude.Nothing,+      lastAccessedAt = Prelude.Nothing,+      status = Prelude.Nothing,+      updatedAt = Prelude.Nothing+    }++-- | A timestamp showing when the speaker is created.+speaker_createdAt :: Lens.Lens' Speaker (Prelude.Maybe Prelude.UTCTime)+speaker_createdAt = Lens.lens (\Speaker' {createdAt} -> createdAt) (\s@Speaker' {} a -> s {createdAt = a} :: Speaker) Prelude.. Lens.mapping Data._Time++-- | The client-provided identifier for the speaker.+speaker_customerSpeakerId :: Lens.Lens' Speaker (Prelude.Maybe Prelude.Text)+speaker_customerSpeakerId = Lens.lens (\Speaker' {customerSpeakerId} -> customerSpeakerId) (\s@Speaker' {} a -> s {customerSpeakerId = a} :: Speaker) Prelude.. Lens.mapping Data._Sensitive++-- | The identifier of the domain that contains the speaker.+speaker_domainId :: Lens.Lens' Speaker (Prelude.Maybe Prelude.Text)+speaker_domainId = Lens.lens (\Speaker' {domainId} -> domainId) (\s@Speaker' {} a -> s {domainId = a} :: Speaker)++-- | The service-generated identifier for the speaker.+speaker_generatedSpeakerId :: Lens.Lens' Speaker (Prelude.Maybe Prelude.Text)+speaker_generatedSpeakerId = Lens.lens (\Speaker' {generatedSpeakerId} -> generatedSpeakerId) (\s@Speaker' {} a -> s {generatedSpeakerId = a} :: Speaker)++-- | The timestamp when the speaker was last accessed for enrollment,+-- re-enrollment or a successful authentication. This timestamp is accurate+-- to one hour.+speaker_lastAccessedAt :: Lens.Lens' Speaker (Prelude.Maybe Prelude.UTCTime)+speaker_lastAccessedAt = Lens.lens (\Speaker' {lastAccessedAt} -> lastAccessedAt) (\s@Speaker' {} a -> s {lastAccessedAt = a} :: Speaker) Prelude.. Lens.mapping Data._Time++-- | The current status of the speaker.+speaker_status :: Lens.Lens' Speaker (Prelude.Maybe SpeakerStatus)+speaker_status = Lens.lens (\Speaker' {status} -> status) (\s@Speaker' {} a -> s {status = a} :: Speaker)++-- | A timestamp showing the speaker\'s last update.+speaker_updatedAt :: Lens.Lens' Speaker (Prelude.Maybe Prelude.UTCTime)+speaker_updatedAt = Lens.lens (\Speaker' {updatedAt} -> updatedAt) (\s@Speaker' {} a -> s {updatedAt = a} :: Speaker) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON Speaker where+  parseJSON =+    Data.withObject+      "Speaker"+      ( \x ->+          Speaker'+            Prelude.<$> (x Data..:? "CreatedAt")+            Prelude.<*> (x Data..:? "CustomerSpeakerId")+            Prelude.<*> (x Data..:? "DomainId")+            Prelude.<*> (x Data..:? "GeneratedSpeakerId")+            Prelude.<*> (x Data..:? "LastAccessedAt")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "UpdatedAt")+      )++instance Prelude.Hashable Speaker where+  hashWithSalt _salt Speaker' {..} =+    _salt+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` customerSpeakerId+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` generatedSpeakerId+      `Prelude.hashWithSalt` lastAccessedAt+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` updatedAt++instance Prelude.NFData Speaker where+  rnf Speaker' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf customerSpeakerId+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf generatedSpeakerId+      `Prelude.seq` Prelude.rnf lastAccessedAt+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf updatedAt
+ gen/Amazonka/VoiceId/Types/SpeakerEnrollmentJob.hs view
@@ -0,0 +1,243 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.SpeakerEnrollmentJob+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.SpeakerEnrollmentJob where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.EnrollmentConfig+import Amazonka.VoiceId.Types.FailureDetails+import Amazonka.VoiceId.Types.InputDataConfig+import Amazonka.VoiceId.Types.JobProgress+import Amazonka.VoiceId.Types.OutputDataConfig+import Amazonka.VoiceId.Types.SpeakerEnrollmentJobStatus++-- | Contains all the information about a speaker enrollment job.+--+-- /See:/ 'newSpeakerEnrollmentJob' smart constructor.+data SpeakerEnrollmentJob = SpeakerEnrollmentJob'+  { -- | A timestamp showing the creation of the speaker enrollment job.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+    -- to access customer\'s buckets to read the input manifest file and write+    -- the job output file.+    dataAccessRoleArn :: Prelude.Maybe Prelude.Text,+    -- | The identifier of the domain that contains the speaker enrollment job.+    domainId :: Prelude.Maybe Prelude.Text,+    -- | A timestamp showing when the speaker enrollment job ended.+    endedAt :: Prelude.Maybe Data.POSIX,+    -- | The configuration that defines the action to take when the speaker is+    -- already enrolled in Voice ID, and the @FraudDetectionConfig@ to use.+    enrollmentConfig :: Prelude.Maybe EnrollmentConfig,+    -- | Contains details that are populated when an entire batch job fails. In+    -- cases of individual registration job failures, the batch job as a whole+    -- doesn\'t fail; it is completed with a @JobStatus@ of+    -- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+    -- individual registration requests that failed.+    failureDetails :: Prelude.Maybe FailureDetails,+    -- | The input data config containing an S3 URI for the input manifest file+    -- that contains the list of speaker enrollment job requests.+    inputDataConfig :: Prelude.Maybe InputDataConfig,+    -- | The service-generated identifier for the speaker enrollment job.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The client-provided name for the speaker enrollment job.+    jobName :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | Provides details on job progress. This field shows the completed+    -- percentage of registration requests listed in the input file.+    jobProgress :: Prelude.Maybe JobProgress,+    -- | The current status of the speaker enrollment job.+    jobStatus :: Prelude.Maybe SpeakerEnrollmentJobStatus,+    -- | The output data config containing the S3 location where Voice ID writes+    -- the job output file; you must also include a KMS key ID to encrypt the+    -- file.+    outputDataConfig :: Prelude.Maybe OutputDataConfig+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SpeakerEnrollmentJob' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'speakerEnrollmentJob_createdAt' - A timestamp showing the creation of the speaker enrollment job.+--+-- 'dataAccessRoleArn', 'speakerEnrollmentJob_dataAccessRoleArn' - The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+-- to access customer\'s buckets to read the input manifest file and write+-- the job output file.+--+-- 'domainId', 'speakerEnrollmentJob_domainId' - The identifier of the domain that contains the speaker enrollment job.+--+-- 'endedAt', 'speakerEnrollmentJob_endedAt' - A timestamp showing when the speaker enrollment job ended.+--+-- 'enrollmentConfig', 'speakerEnrollmentJob_enrollmentConfig' - The configuration that defines the action to take when the speaker is+-- already enrolled in Voice ID, and the @FraudDetectionConfig@ to use.+--+-- 'failureDetails', 'speakerEnrollmentJob_failureDetails' - Contains details that are populated when an entire batch job fails. In+-- cases of individual registration job failures, the batch job as a whole+-- doesn\'t fail; it is completed with a @JobStatus@ of+-- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+-- individual registration requests that failed.+--+-- 'inputDataConfig', 'speakerEnrollmentJob_inputDataConfig' - The input data config containing an S3 URI for the input manifest file+-- that contains the list of speaker enrollment job requests.+--+-- 'jobId', 'speakerEnrollmentJob_jobId' - The service-generated identifier for the speaker enrollment job.+--+-- 'jobName', 'speakerEnrollmentJob_jobName' - The client-provided name for the speaker enrollment job.+--+-- 'jobProgress', 'speakerEnrollmentJob_jobProgress' - Provides details on job progress. This field shows the completed+-- percentage of registration requests listed in the input file.+--+-- 'jobStatus', 'speakerEnrollmentJob_jobStatus' - The current status of the speaker enrollment job.+--+-- 'outputDataConfig', 'speakerEnrollmentJob_outputDataConfig' - The output data config containing the S3 location where Voice ID writes+-- the job output file; you must also include a KMS key ID to encrypt the+-- file.+newSpeakerEnrollmentJob ::+  SpeakerEnrollmentJob+newSpeakerEnrollmentJob =+  SpeakerEnrollmentJob'+    { createdAt = Prelude.Nothing,+      dataAccessRoleArn = Prelude.Nothing,+      domainId = Prelude.Nothing,+      endedAt = Prelude.Nothing,+      enrollmentConfig = Prelude.Nothing,+      failureDetails = Prelude.Nothing,+      inputDataConfig = Prelude.Nothing,+      jobId = Prelude.Nothing,+      jobName = Prelude.Nothing,+      jobProgress = Prelude.Nothing,+      jobStatus = Prelude.Nothing,+      outputDataConfig = Prelude.Nothing+    }++-- | A timestamp showing the creation of the speaker enrollment job.+speakerEnrollmentJob_createdAt :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.UTCTime)+speakerEnrollmentJob_createdAt = Lens.lens (\SpeakerEnrollmentJob' {createdAt} -> createdAt) (\s@SpeakerEnrollmentJob' {} a -> s {createdAt = a} :: SpeakerEnrollmentJob) Prelude.. Lens.mapping Data._Time++-- | The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions+-- to access customer\'s buckets to read the input manifest file and write+-- the job output file.+speakerEnrollmentJob_dataAccessRoleArn :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)+speakerEnrollmentJob_dataAccessRoleArn = Lens.lens (\SpeakerEnrollmentJob' {dataAccessRoleArn} -> dataAccessRoleArn) (\s@SpeakerEnrollmentJob' {} a -> s {dataAccessRoleArn = a} :: SpeakerEnrollmentJob)++-- | The identifier of the domain that contains the speaker enrollment job.+speakerEnrollmentJob_domainId :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)+speakerEnrollmentJob_domainId = Lens.lens (\SpeakerEnrollmentJob' {domainId} -> domainId) (\s@SpeakerEnrollmentJob' {} a -> s {domainId = a} :: SpeakerEnrollmentJob)++-- | A timestamp showing when the speaker enrollment job ended.+speakerEnrollmentJob_endedAt :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.UTCTime)+speakerEnrollmentJob_endedAt = Lens.lens (\SpeakerEnrollmentJob' {endedAt} -> endedAt) (\s@SpeakerEnrollmentJob' {} a -> s {endedAt = a} :: SpeakerEnrollmentJob) Prelude.. Lens.mapping Data._Time++-- | The configuration that defines the action to take when the speaker is+-- already enrolled in Voice ID, and the @FraudDetectionConfig@ to use.+speakerEnrollmentJob_enrollmentConfig :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe EnrollmentConfig)+speakerEnrollmentJob_enrollmentConfig = Lens.lens (\SpeakerEnrollmentJob' {enrollmentConfig} -> enrollmentConfig) (\s@SpeakerEnrollmentJob' {} a -> s {enrollmentConfig = a} :: SpeakerEnrollmentJob)++-- | Contains details that are populated when an entire batch job fails. In+-- cases of individual registration job failures, the batch job as a whole+-- doesn\'t fail; it is completed with a @JobStatus@ of+-- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+-- individual registration requests that failed.+speakerEnrollmentJob_failureDetails :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe FailureDetails)+speakerEnrollmentJob_failureDetails = Lens.lens (\SpeakerEnrollmentJob' {failureDetails} -> failureDetails) (\s@SpeakerEnrollmentJob' {} a -> s {failureDetails = a} :: SpeakerEnrollmentJob)++-- | The input data config containing an S3 URI for the input manifest file+-- that contains the list of speaker enrollment job requests.+speakerEnrollmentJob_inputDataConfig :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe InputDataConfig)+speakerEnrollmentJob_inputDataConfig = Lens.lens (\SpeakerEnrollmentJob' {inputDataConfig} -> inputDataConfig) (\s@SpeakerEnrollmentJob' {} a -> s {inputDataConfig = a} :: SpeakerEnrollmentJob)++-- | The service-generated identifier for the speaker enrollment job.+speakerEnrollmentJob_jobId :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)+speakerEnrollmentJob_jobId = Lens.lens (\SpeakerEnrollmentJob' {jobId} -> jobId) (\s@SpeakerEnrollmentJob' {} a -> s {jobId = a} :: SpeakerEnrollmentJob)++-- | The client-provided name for the speaker enrollment job.+speakerEnrollmentJob_jobName :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)+speakerEnrollmentJob_jobName = Lens.lens (\SpeakerEnrollmentJob' {jobName} -> jobName) (\s@SpeakerEnrollmentJob' {} a -> s {jobName = a} :: SpeakerEnrollmentJob) Prelude.. Lens.mapping Data._Sensitive++-- | Provides details on job progress. This field shows the completed+-- percentage of registration requests listed in the input file.+speakerEnrollmentJob_jobProgress :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe JobProgress)+speakerEnrollmentJob_jobProgress = Lens.lens (\SpeakerEnrollmentJob' {jobProgress} -> jobProgress) (\s@SpeakerEnrollmentJob' {} a -> s {jobProgress = a} :: SpeakerEnrollmentJob)++-- | The current status of the speaker enrollment job.+speakerEnrollmentJob_jobStatus :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe SpeakerEnrollmentJobStatus)+speakerEnrollmentJob_jobStatus = Lens.lens (\SpeakerEnrollmentJob' {jobStatus} -> jobStatus) (\s@SpeakerEnrollmentJob' {} a -> s {jobStatus = a} :: SpeakerEnrollmentJob)++-- | The output data config containing the S3 location where Voice ID writes+-- the job output file; you must also include a KMS key ID to encrypt the+-- file.+speakerEnrollmentJob_outputDataConfig :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe OutputDataConfig)+speakerEnrollmentJob_outputDataConfig = Lens.lens (\SpeakerEnrollmentJob' {outputDataConfig} -> outputDataConfig) (\s@SpeakerEnrollmentJob' {} a -> s {outputDataConfig = a} :: SpeakerEnrollmentJob)++instance Data.FromJSON SpeakerEnrollmentJob where+  parseJSON =+    Data.withObject+      "SpeakerEnrollmentJob"+      ( \x ->+          SpeakerEnrollmentJob'+            Prelude.<$> (x Data..:? "CreatedAt")+            Prelude.<*> (x Data..:? "DataAccessRoleArn")+            Prelude.<*> (x Data..:? "DomainId")+            Prelude.<*> (x Data..:? "EndedAt")+            Prelude.<*> (x Data..:? "EnrollmentConfig")+            Prelude.<*> (x Data..:? "FailureDetails")+            Prelude.<*> (x Data..:? "InputDataConfig")+            Prelude.<*> (x Data..:? "JobId")+            Prelude.<*> (x Data..:? "JobName")+            Prelude.<*> (x Data..:? "JobProgress")+            Prelude.<*> (x Data..:? "JobStatus")+            Prelude.<*> (x Data..:? "OutputDataConfig")+      )++instance Prelude.Hashable SpeakerEnrollmentJob where+  hashWithSalt _salt SpeakerEnrollmentJob' {..} =+    _salt+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` dataAccessRoleArn+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` endedAt+      `Prelude.hashWithSalt` enrollmentConfig+      `Prelude.hashWithSalt` failureDetails+      `Prelude.hashWithSalt` inputDataConfig+      `Prelude.hashWithSalt` jobId+      `Prelude.hashWithSalt` jobName+      `Prelude.hashWithSalt` jobProgress+      `Prelude.hashWithSalt` jobStatus+      `Prelude.hashWithSalt` outputDataConfig++instance Prelude.NFData SpeakerEnrollmentJob where+  rnf SpeakerEnrollmentJob' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf dataAccessRoleArn+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf endedAt+      `Prelude.seq` Prelude.rnf enrollmentConfig+      `Prelude.seq` Prelude.rnf failureDetails+      `Prelude.seq` Prelude.rnf inputDataConfig+      `Prelude.seq` Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf jobName+      `Prelude.seq` Prelude.rnf jobProgress+      `Prelude.seq` Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf outputDataConfig
+ gen/Amazonka/VoiceId/Types/SpeakerEnrollmentJobStatus.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.SpeakerEnrollmentJobStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.SpeakerEnrollmentJobStatus+  ( SpeakerEnrollmentJobStatus+      ( ..,+        SpeakerEnrollmentJobStatus_COMPLETED,+        SpeakerEnrollmentJobStatus_COMPLETED_WITH_ERRORS,+        SpeakerEnrollmentJobStatus_FAILED,+        SpeakerEnrollmentJobStatus_IN_PROGRESS,+        SpeakerEnrollmentJobStatus_SUBMITTED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype SpeakerEnrollmentJobStatus = SpeakerEnrollmentJobStatus'+  { fromSpeakerEnrollmentJobStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern SpeakerEnrollmentJobStatus_COMPLETED :: SpeakerEnrollmentJobStatus+pattern SpeakerEnrollmentJobStatus_COMPLETED = SpeakerEnrollmentJobStatus' "COMPLETED"++pattern SpeakerEnrollmentJobStatus_COMPLETED_WITH_ERRORS :: SpeakerEnrollmentJobStatus+pattern SpeakerEnrollmentJobStatus_COMPLETED_WITH_ERRORS = SpeakerEnrollmentJobStatus' "COMPLETED_WITH_ERRORS"++pattern SpeakerEnrollmentJobStatus_FAILED :: SpeakerEnrollmentJobStatus+pattern SpeakerEnrollmentJobStatus_FAILED = SpeakerEnrollmentJobStatus' "FAILED"++pattern SpeakerEnrollmentJobStatus_IN_PROGRESS :: SpeakerEnrollmentJobStatus+pattern SpeakerEnrollmentJobStatus_IN_PROGRESS = SpeakerEnrollmentJobStatus' "IN_PROGRESS"++pattern SpeakerEnrollmentJobStatus_SUBMITTED :: SpeakerEnrollmentJobStatus+pattern SpeakerEnrollmentJobStatus_SUBMITTED = SpeakerEnrollmentJobStatus' "SUBMITTED"++{-# COMPLETE+  SpeakerEnrollmentJobStatus_COMPLETED,+  SpeakerEnrollmentJobStatus_COMPLETED_WITH_ERRORS,+  SpeakerEnrollmentJobStatus_FAILED,+  SpeakerEnrollmentJobStatus_IN_PROGRESS,+  SpeakerEnrollmentJobStatus_SUBMITTED,+  SpeakerEnrollmentJobStatus'+  #-}
+ gen/Amazonka/VoiceId/Types/SpeakerEnrollmentJobSummary.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.SpeakerEnrollmentJobSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.SpeakerEnrollmentJobSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.FailureDetails+import Amazonka.VoiceId.Types.JobProgress+import Amazonka.VoiceId.Types.SpeakerEnrollmentJobStatus++-- | Contains a summary of information about a speaker enrollment job.+--+-- /See:/ 'newSpeakerEnrollmentJobSummary' smart constructor.+data SpeakerEnrollmentJobSummary = SpeakerEnrollmentJobSummary'+  { -- | A timestamp showing the creation time of the speaker enrollment job.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The identifier of the domain that contains the speaker enrollment job.+    domainId :: Prelude.Maybe Prelude.Text,+    -- | A timestamp showing when the speaker enrollment job ended.+    endedAt :: Prelude.Maybe Data.POSIX,+    -- | Contains details that are populated when an entire batch job fails. In+    -- cases of individual registration job failures, the batch job as a whole+    -- doesn\'t fail; it is completed with a @JobStatus@ of+    -- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+    -- individual registration requests that failed.+    failureDetails :: Prelude.Maybe FailureDetails,+    -- | The service-generated identifier for the speaker enrollment job.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The client-provided name for the speaker enrollment job.+    jobName :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | Provides details regarding job progress. This field shows the completed+    -- percentage of enrollment requests listed in the input file.+    jobProgress :: Prelude.Maybe JobProgress,+    -- | The current status of the speaker enrollment job.+    jobStatus :: Prelude.Maybe SpeakerEnrollmentJobStatus+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SpeakerEnrollmentJobSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'speakerEnrollmentJobSummary_createdAt' - A timestamp showing the creation time of the speaker enrollment job.+--+-- 'domainId', 'speakerEnrollmentJobSummary_domainId' - The identifier of the domain that contains the speaker enrollment job.+--+-- 'endedAt', 'speakerEnrollmentJobSummary_endedAt' - A timestamp showing when the speaker enrollment job ended.+--+-- 'failureDetails', 'speakerEnrollmentJobSummary_failureDetails' - Contains details that are populated when an entire batch job fails. In+-- cases of individual registration job failures, the batch job as a whole+-- doesn\'t fail; it is completed with a @JobStatus@ of+-- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+-- individual registration requests that failed.+--+-- 'jobId', 'speakerEnrollmentJobSummary_jobId' - The service-generated identifier for the speaker enrollment job.+--+-- 'jobName', 'speakerEnrollmentJobSummary_jobName' - The client-provided name for the speaker enrollment job.+--+-- 'jobProgress', 'speakerEnrollmentJobSummary_jobProgress' - Provides details regarding job progress. This field shows the completed+-- percentage of enrollment requests listed in the input file.+--+-- 'jobStatus', 'speakerEnrollmentJobSummary_jobStatus' - The current status of the speaker enrollment job.+newSpeakerEnrollmentJobSummary ::+  SpeakerEnrollmentJobSummary+newSpeakerEnrollmentJobSummary =+  SpeakerEnrollmentJobSummary'+    { createdAt =+        Prelude.Nothing,+      domainId = Prelude.Nothing,+      endedAt = Prelude.Nothing,+      failureDetails = Prelude.Nothing,+      jobId = Prelude.Nothing,+      jobName = Prelude.Nothing,+      jobProgress = Prelude.Nothing,+      jobStatus = Prelude.Nothing+    }++-- | A timestamp showing the creation time of the speaker enrollment job.+speakerEnrollmentJobSummary_createdAt :: Lens.Lens' SpeakerEnrollmentJobSummary (Prelude.Maybe Prelude.UTCTime)+speakerEnrollmentJobSummary_createdAt = Lens.lens (\SpeakerEnrollmentJobSummary' {createdAt} -> createdAt) (\s@SpeakerEnrollmentJobSummary' {} a -> s {createdAt = a} :: SpeakerEnrollmentJobSummary) Prelude.. Lens.mapping Data._Time++-- | The identifier of the domain that contains the speaker enrollment job.+speakerEnrollmentJobSummary_domainId :: Lens.Lens' SpeakerEnrollmentJobSummary (Prelude.Maybe Prelude.Text)+speakerEnrollmentJobSummary_domainId = Lens.lens (\SpeakerEnrollmentJobSummary' {domainId} -> domainId) (\s@SpeakerEnrollmentJobSummary' {} a -> s {domainId = a} :: SpeakerEnrollmentJobSummary)++-- | A timestamp showing when the speaker enrollment job ended.+speakerEnrollmentJobSummary_endedAt :: Lens.Lens' SpeakerEnrollmentJobSummary (Prelude.Maybe Prelude.UTCTime)+speakerEnrollmentJobSummary_endedAt = Lens.lens (\SpeakerEnrollmentJobSummary' {endedAt} -> endedAt) (\s@SpeakerEnrollmentJobSummary' {} a -> s {endedAt = a} :: SpeakerEnrollmentJobSummary) Prelude.. Lens.mapping Data._Time++-- | Contains details that are populated when an entire batch job fails. In+-- cases of individual registration job failures, the batch job as a whole+-- doesn\'t fail; it is completed with a @JobStatus@ of+-- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the+-- individual registration requests that failed.+speakerEnrollmentJobSummary_failureDetails :: Lens.Lens' SpeakerEnrollmentJobSummary (Prelude.Maybe FailureDetails)+speakerEnrollmentJobSummary_failureDetails = Lens.lens (\SpeakerEnrollmentJobSummary' {failureDetails} -> failureDetails) (\s@SpeakerEnrollmentJobSummary' {} a -> s {failureDetails = a} :: SpeakerEnrollmentJobSummary)++-- | The service-generated identifier for the speaker enrollment job.+speakerEnrollmentJobSummary_jobId :: Lens.Lens' SpeakerEnrollmentJobSummary (Prelude.Maybe Prelude.Text)+speakerEnrollmentJobSummary_jobId = Lens.lens (\SpeakerEnrollmentJobSummary' {jobId} -> jobId) (\s@SpeakerEnrollmentJobSummary' {} a -> s {jobId = a} :: SpeakerEnrollmentJobSummary)++-- | The client-provided name for the speaker enrollment job.+speakerEnrollmentJobSummary_jobName :: Lens.Lens' SpeakerEnrollmentJobSummary (Prelude.Maybe Prelude.Text)+speakerEnrollmentJobSummary_jobName = Lens.lens (\SpeakerEnrollmentJobSummary' {jobName} -> jobName) (\s@SpeakerEnrollmentJobSummary' {} a -> s {jobName = a} :: SpeakerEnrollmentJobSummary) Prelude.. Lens.mapping Data._Sensitive++-- | Provides details regarding job progress. This field shows the completed+-- percentage of enrollment requests listed in the input file.+speakerEnrollmentJobSummary_jobProgress :: Lens.Lens' SpeakerEnrollmentJobSummary (Prelude.Maybe JobProgress)+speakerEnrollmentJobSummary_jobProgress = Lens.lens (\SpeakerEnrollmentJobSummary' {jobProgress} -> jobProgress) (\s@SpeakerEnrollmentJobSummary' {} a -> s {jobProgress = a} :: SpeakerEnrollmentJobSummary)++-- | The current status of the speaker enrollment job.+speakerEnrollmentJobSummary_jobStatus :: Lens.Lens' SpeakerEnrollmentJobSummary (Prelude.Maybe SpeakerEnrollmentJobStatus)+speakerEnrollmentJobSummary_jobStatus = Lens.lens (\SpeakerEnrollmentJobSummary' {jobStatus} -> jobStatus) (\s@SpeakerEnrollmentJobSummary' {} a -> s {jobStatus = a} :: SpeakerEnrollmentJobSummary)++instance Data.FromJSON SpeakerEnrollmentJobSummary where+  parseJSON =+    Data.withObject+      "SpeakerEnrollmentJobSummary"+      ( \x ->+          SpeakerEnrollmentJobSummary'+            Prelude.<$> (x Data..:? "CreatedAt")+            Prelude.<*> (x Data..:? "DomainId")+            Prelude.<*> (x Data..:? "EndedAt")+            Prelude.<*> (x Data..:? "FailureDetails")+            Prelude.<*> (x Data..:? "JobId")+            Prelude.<*> (x Data..:? "JobName")+            Prelude.<*> (x Data..:? "JobProgress")+            Prelude.<*> (x Data..:? "JobStatus")+      )++instance Prelude.Hashable SpeakerEnrollmentJobSummary where+  hashWithSalt _salt SpeakerEnrollmentJobSummary' {..} =+    _salt+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` endedAt+      `Prelude.hashWithSalt` failureDetails+      `Prelude.hashWithSalt` jobId+      `Prelude.hashWithSalt` jobName+      `Prelude.hashWithSalt` jobProgress+      `Prelude.hashWithSalt` jobStatus++instance Prelude.NFData SpeakerEnrollmentJobSummary where+  rnf SpeakerEnrollmentJobSummary' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf endedAt+      `Prelude.seq` Prelude.rnf failureDetails+      `Prelude.seq` Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf jobName+      `Prelude.seq` Prelude.rnf jobProgress+      `Prelude.seq` Prelude.rnf jobStatus
+ gen/Amazonka/VoiceId/Types/SpeakerStatus.hs view
@@ -0,0 +1,81 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.SpeakerStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.SpeakerStatus+  ( SpeakerStatus+      ( ..,+        SpeakerStatus_ENROLLED,+        SpeakerStatus_EXPIRED,+        SpeakerStatus_OPTED_OUT,+        SpeakerStatus_PENDING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype SpeakerStatus = SpeakerStatus'+  { fromSpeakerStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern SpeakerStatus_ENROLLED :: SpeakerStatus+pattern SpeakerStatus_ENROLLED = SpeakerStatus' "ENROLLED"++pattern SpeakerStatus_EXPIRED :: SpeakerStatus+pattern SpeakerStatus_EXPIRED = SpeakerStatus' "EXPIRED"++pattern SpeakerStatus_OPTED_OUT :: SpeakerStatus+pattern SpeakerStatus_OPTED_OUT = SpeakerStatus' "OPTED_OUT"++pattern SpeakerStatus_PENDING :: SpeakerStatus+pattern SpeakerStatus_PENDING = SpeakerStatus' "PENDING"++{-# COMPLETE+  SpeakerStatus_ENROLLED,+  SpeakerStatus_EXPIRED,+  SpeakerStatus_OPTED_OUT,+  SpeakerStatus_PENDING,+  SpeakerStatus'+  #-}
+ gen/Amazonka/VoiceId/Types/SpeakerSummary.hs view
@@ -0,0 +1,151 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.SpeakerSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.SpeakerSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Types.SpeakerStatus++-- | Contains a summary of information about a speaker.+--+-- /See:/ 'newSpeakerSummary' smart constructor.+data SpeakerSummary = SpeakerSummary'+  { -- | A timestamp showing the speaker\'s creation time.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The client-provided identifier for the speaker.+    customerSpeakerId :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The identifier of the domain that contains the speaker.+    domainId :: Prelude.Maybe Prelude.Text,+    -- | The service-generated identifier for the speaker.+    generatedSpeakerId :: Prelude.Maybe Prelude.Text,+    -- | The timestamp when the speaker was last accessed for enrollment,+    -- re-enrollment or a successful authentication. This timestamp is accurate+    -- to one hour.+    lastAccessedAt :: Prelude.Maybe Data.POSIX,+    -- | The current status of the speaker.+    status :: Prelude.Maybe SpeakerStatus,+    -- | A timestamp showing the speaker\'s last update.+    updatedAt :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SpeakerSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'speakerSummary_createdAt' - A timestamp showing the speaker\'s creation time.+--+-- 'customerSpeakerId', 'speakerSummary_customerSpeakerId' - The client-provided identifier for the speaker.+--+-- 'domainId', 'speakerSummary_domainId' - The identifier of the domain that contains the speaker.+--+-- 'generatedSpeakerId', 'speakerSummary_generatedSpeakerId' - The service-generated identifier for the speaker.+--+-- 'lastAccessedAt', 'speakerSummary_lastAccessedAt' - The timestamp when the speaker was last accessed for enrollment,+-- re-enrollment or a successful authentication. This timestamp is accurate+-- to one hour.+--+-- 'status', 'speakerSummary_status' - The current status of the speaker.+--+-- 'updatedAt', 'speakerSummary_updatedAt' - A timestamp showing the speaker\'s last update.+newSpeakerSummary ::+  SpeakerSummary+newSpeakerSummary =+  SpeakerSummary'+    { createdAt = Prelude.Nothing,+      customerSpeakerId = Prelude.Nothing,+      domainId = Prelude.Nothing,+      generatedSpeakerId = Prelude.Nothing,+      lastAccessedAt = Prelude.Nothing,+      status = Prelude.Nothing,+      updatedAt = Prelude.Nothing+    }++-- | A timestamp showing the speaker\'s creation time.+speakerSummary_createdAt :: Lens.Lens' SpeakerSummary (Prelude.Maybe Prelude.UTCTime)+speakerSummary_createdAt = Lens.lens (\SpeakerSummary' {createdAt} -> createdAt) (\s@SpeakerSummary' {} a -> s {createdAt = a} :: SpeakerSummary) Prelude.. Lens.mapping Data._Time++-- | The client-provided identifier for the speaker.+speakerSummary_customerSpeakerId :: Lens.Lens' SpeakerSummary (Prelude.Maybe Prelude.Text)+speakerSummary_customerSpeakerId = Lens.lens (\SpeakerSummary' {customerSpeakerId} -> customerSpeakerId) (\s@SpeakerSummary' {} a -> s {customerSpeakerId = a} :: SpeakerSummary) Prelude.. Lens.mapping Data._Sensitive++-- | The identifier of the domain that contains the speaker.+speakerSummary_domainId :: Lens.Lens' SpeakerSummary (Prelude.Maybe Prelude.Text)+speakerSummary_domainId = Lens.lens (\SpeakerSummary' {domainId} -> domainId) (\s@SpeakerSummary' {} a -> s {domainId = a} :: SpeakerSummary)++-- | The service-generated identifier for the speaker.+speakerSummary_generatedSpeakerId :: Lens.Lens' SpeakerSummary (Prelude.Maybe Prelude.Text)+speakerSummary_generatedSpeakerId = Lens.lens (\SpeakerSummary' {generatedSpeakerId} -> generatedSpeakerId) (\s@SpeakerSummary' {} a -> s {generatedSpeakerId = a} :: SpeakerSummary)++-- | The timestamp when the speaker was last accessed for enrollment,+-- re-enrollment or a successful authentication. This timestamp is accurate+-- to one hour.+speakerSummary_lastAccessedAt :: Lens.Lens' SpeakerSummary (Prelude.Maybe Prelude.UTCTime)+speakerSummary_lastAccessedAt = Lens.lens (\SpeakerSummary' {lastAccessedAt} -> lastAccessedAt) (\s@SpeakerSummary' {} a -> s {lastAccessedAt = a} :: SpeakerSummary) Prelude.. Lens.mapping Data._Time++-- | The current status of the speaker.+speakerSummary_status :: Lens.Lens' SpeakerSummary (Prelude.Maybe SpeakerStatus)+speakerSummary_status = Lens.lens (\SpeakerSummary' {status} -> status) (\s@SpeakerSummary' {} a -> s {status = a} :: SpeakerSummary)++-- | A timestamp showing the speaker\'s last update.+speakerSummary_updatedAt :: Lens.Lens' SpeakerSummary (Prelude.Maybe Prelude.UTCTime)+speakerSummary_updatedAt = Lens.lens (\SpeakerSummary' {updatedAt} -> updatedAt) (\s@SpeakerSummary' {} a -> s {updatedAt = a} :: SpeakerSummary) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON SpeakerSummary where+  parseJSON =+    Data.withObject+      "SpeakerSummary"+      ( \x ->+          SpeakerSummary'+            Prelude.<$> (x Data..:? "CreatedAt")+            Prelude.<*> (x Data..:? "CustomerSpeakerId")+            Prelude.<*> (x Data..:? "DomainId")+            Prelude.<*> (x Data..:? "GeneratedSpeakerId")+            Prelude.<*> (x Data..:? "LastAccessedAt")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "UpdatedAt")+      )++instance Prelude.Hashable SpeakerSummary where+  hashWithSalt _salt SpeakerSummary' {..} =+    _salt+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` customerSpeakerId+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` generatedSpeakerId+      `Prelude.hashWithSalt` lastAccessedAt+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` updatedAt++instance Prelude.NFData SpeakerSummary where+  rnf SpeakerSummary' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf customerSpeakerId+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf generatedSpeakerId+      `Prelude.seq` Prelude.rnf lastAccessedAt+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf updatedAt
+ gen/Amazonka/VoiceId/Types/StreamingStatus.hs view
@@ -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.VoiceId.Types.StreamingStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.StreamingStatus+  ( StreamingStatus+      ( ..,+        StreamingStatus_ENDED,+        StreamingStatus_ONGOING,+        StreamingStatus_PENDING_CONFIGURATION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype StreamingStatus = StreamingStatus'+  { fromStreamingStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern StreamingStatus_ENDED :: StreamingStatus+pattern StreamingStatus_ENDED = StreamingStatus' "ENDED"++pattern StreamingStatus_ONGOING :: StreamingStatus+pattern StreamingStatus_ONGOING = StreamingStatus' "ONGOING"++pattern StreamingStatus_PENDING_CONFIGURATION :: StreamingStatus+pattern StreamingStatus_PENDING_CONFIGURATION = StreamingStatus' "PENDING_CONFIGURATION"++{-# COMPLETE+  StreamingStatus_ENDED,+  StreamingStatus_ONGOING,+  StreamingStatus_PENDING_CONFIGURATION,+  StreamingStatus'+  #-}
+ gen/Amazonka/VoiceId/Types/Tag.hs view
@@ -0,0 +1,109 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.Tag+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.Tag where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The tags used to organize, track, or control access for this resource.+-- For example, { \"tags\": {\"key1\":\"value1\", \"key2\":\"value2\"} }.+--+-- /See:/ 'newTag' smart constructor.+data Tag = Tag'+  { -- | The first part of a key:value pair that forms a tag associated with a+    -- given resource. For example, in the tag \'Department\':\'Sales\', the+    -- key is \'Department\'.+    key :: Data.Sensitive Prelude.Text,+    -- | The second part of a key:value pair that forms a tag associated with a+    -- given resource. For example, in the tag \'Department\':\'Sales\', the+    -- value is \'Sales\'.+    value :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Tag' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'key', 'tag_key' - The first part of a key:value pair that forms a tag associated with a+-- given resource. For example, in the tag \'Department\':\'Sales\', the+-- key is \'Department\'.+--+-- 'value', 'tag_value' - The second part of a key:value pair that forms a tag associated with a+-- given resource. For example, in the tag \'Department\':\'Sales\', the+-- value is \'Sales\'.+newTag ::+  -- | 'key'+  Prelude.Text ->+  -- | 'value'+  Prelude.Text ->+  Tag+newTag pKey_ pValue_ =+  Tag'+    { key = Data._Sensitive Lens.# pKey_,+      value = Data._Sensitive Lens.# pValue_+    }++-- | The first part of a key:value pair that forms a tag associated with a+-- given resource. For example, in the tag \'Department\':\'Sales\', the+-- key is \'Department\'.+tag_key :: Lens.Lens' Tag Prelude.Text+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag) Prelude.. Data._Sensitive++-- | The second part of a key:value pair that forms a tag associated with a+-- given resource. For example, in the tag \'Department\':\'Sales\', the+-- value is \'Sales\'.+tag_value :: Lens.Lens' Tag Prelude.Text+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag) Prelude.. Data._Sensitive++instance Data.FromJSON Tag where+  parseJSON =+    Data.withObject+      "Tag"+      ( \x ->+          Tag'+            Prelude.<$> (x Data..: "Key")+            Prelude.<*> (x Data..: "Value")+      )++instance Prelude.Hashable Tag where+  hashWithSalt _salt Tag' {..} =+    _salt+      `Prelude.hashWithSalt` key+      `Prelude.hashWithSalt` value++instance Prelude.NFData Tag where+  rnf Tag' {..} =+    Prelude.rnf key `Prelude.seq` Prelude.rnf value++instance Data.ToJSON Tag where+  toJSON Tag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Key" Data..= key),+            Prelude.Just ("Value" Data..= value)+          ]+      )
+ gen/Amazonka/VoiceId/Types/VoiceSpoofingRisk.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.Types.VoiceSpoofingRisk+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.VoiceId.Types.VoiceSpoofingRisk where++import qualified 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 details resulting from \'Voice Spoofing Risk\' analysis of the+-- speaker.+--+-- /See:/ 'newVoiceSpoofingRisk' smart constructor.+data VoiceSpoofingRisk = VoiceSpoofingRisk'+  { -- | The score indicating the likelihood of speaker’s voice being spoofed.+    riskScore :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VoiceSpoofingRisk' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'riskScore', 'voiceSpoofingRisk_riskScore' - The score indicating the likelihood of speaker’s voice being spoofed.+newVoiceSpoofingRisk ::+  -- | 'riskScore'+  Prelude.Natural ->+  VoiceSpoofingRisk+newVoiceSpoofingRisk pRiskScore_ =+  VoiceSpoofingRisk' {riskScore = pRiskScore_}++-- | The score indicating the likelihood of speaker’s voice being spoofed.+voiceSpoofingRisk_riskScore :: Lens.Lens' VoiceSpoofingRisk Prelude.Natural+voiceSpoofingRisk_riskScore = Lens.lens (\VoiceSpoofingRisk' {riskScore} -> riskScore) (\s@VoiceSpoofingRisk' {} a -> s {riskScore = a} :: VoiceSpoofingRisk)++instance Data.FromJSON VoiceSpoofingRisk where+  parseJSON =+    Data.withObject+      "VoiceSpoofingRisk"+      ( \x ->+          VoiceSpoofingRisk'+            Prelude.<$> (x Data..: "RiskScore")+      )++instance Prelude.Hashable VoiceSpoofingRisk where+  hashWithSalt _salt VoiceSpoofingRisk' {..} =+    _salt `Prelude.hashWithSalt` riskScore++instance Prelude.NFData VoiceSpoofingRisk where+  rnf VoiceSpoofingRisk' {..} = Prelude.rnf riskScore
+ gen/Amazonka/VoiceId/UntagResource.hs view
@@ -0,0 +1,173 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.UntagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Removes specified tags from a specified Amazon Connect Voice ID+-- resource.+module Amazonka.VoiceId.UntagResource+  ( -- * Creating a Request+    UntagResource (..),+    newUntagResource,++    -- * Request Lenses+    untagResource_resourceArn,+    untagResource_tagKeys,++    -- * Destructuring the Response+    UntagResourceResponse (..),+    newUntagResourceResponse,++    -- * Response Lenses+    untagResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The Amazon Resource Name (ARN) of the Voice ID resource you want to+    -- remove tags from.+    resourceArn :: Prelude.Text,+    -- | The list of tag keys you want to remove from the specified resource.+    tagKeys :: [Data.Sensitive Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the Voice ID resource you want to+-- remove tags from.+--+-- 'tagKeys', 'untagResource_tagKeys' - The list of tag keys you want to remove from the specified resource.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the Voice ID resource you want to+-- remove tags from.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The list of tag keys you want to remove from the specified resource.+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.UntagResource" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UntagResource where+  toJSON UntagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),+            Prelude.Just ("TagKeys" Data..= tagKeys)+          ]+      )++instance Data.ToPath UntagResource where+  toPath = Prelude.const "/"++instance Data.ToQuery UntagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUntagResourceResponse' smart constructor.+data UntagResourceResponse = UntagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.+newUntagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UntagResourceResponse+newUntagResourceResponse pHttpStatus_ =+  UntagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)++instance Prelude.NFData UntagResourceResponse where+  rnf UntagResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/UpdateDomain.hs view
@@ -0,0 +1,238 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.VoiceId.UpdateDomain+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the specified domain. This API has clobber behavior, and clears+-- and replaces all attributes. If an optional field, such as+-- \'Description\' is not provided, it is removed from the domain.+module Amazonka.VoiceId.UpdateDomain+  ( -- * Creating a Request+    UpdateDomain (..),+    newUpdateDomain,++    -- * Request Lenses+    updateDomain_description,+    updateDomain_domainId,+    updateDomain_name,+    updateDomain_serverSideEncryptionConfiguration,++    -- * Destructuring the Response+    UpdateDomainResponse (..),+    newUpdateDomainResponse,++    -- * Response Lenses+    updateDomainResponse_domain,+    updateDomainResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response+import Amazonka.VoiceId.Types++-- | /See:/ 'newUpdateDomain' smart constructor.+data UpdateDomain = UpdateDomain'+  { -- | A brief description of the domain.+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The identifier of the domain to be updated.+    domainId :: Prelude.Text,+    -- | The name of the domain.+    name :: Data.Sensitive Prelude.Text,+    -- | The configuration, containing the KMS key identifier, to be used by+    -- Voice ID for the server-side encryption of your data. Changing the+    -- domain\'s associated KMS key immediately triggers an asynchronous+    -- process to remove dependency on the old KMS key, such that the domain\'s+    -- data can only be accessed using the new KMS key. The domain\'s+    -- @ServerSideEncryptionUpdateDetails@ contains the details for this+    -- process.+    serverSideEncryptionConfiguration :: ServerSideEncryptionConfiguration+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateDomain' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'updateDomain_description' - A brief description of the domain.+--+-- 'domainId', 'updateDomain_domainId' - The identifier of the domain to be updated.+--+-- 'name', 'updateDomain_name' - The name of the domain.+--+-- 'serverSideEncryptionConfiguration', 'updateDomain_serverSideEncryptionConfiguration' - The configuration, containing the KMS key identifier, to be used by+-- Voice ID for the server-side encryption of your data. Changing the+-- domain\'s associated KMS key immediately triggers an asynchronous+-- process to remove dependency on the old KMS key, such that the domain\'s+-- data can only be accessed using the new KMS key. The domain\'s+-- @ServerSideEncryptionUpdateDetails@ contains the details for this+-- process.+newUpdateDomain ::+  -- | 'domainId'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'serverSideEncryptionConfiguration'+  ServerSideEncryptionConfiguration ->+  UpdateDomain+newUpdateDomain+  pDomainId_+  pName_+  pServerSideEncryptionConfiguration_ =+    UpdateDomain'+      { description = Prelude.Nothing,+        domainId = pDomainId_,+        name = Data._Sensitive Lens.# pName_,+        serverSideEncryptionConfiguration =+          pServerSideEncryptionConfiguration_+      }++-- | A brief description of the domain.+updateDomain_description :: Lens.Lens' UpdateDomain (Prelude.Maybe Prelude.Text)+updateDomain_description = Lens.lens (\UpdateDomain' {description} -> description) (\s@UpdateDomain' {} a -> s {description = a} :: UpdateDomain) Prelude.. Lens.mapping Data._Sensitive++-- | The identifier of the domain to be updated.+updateDomain_domainId :: Lens.Lens' UpdateDomain Prelude.Text+updateDomain_domainId = Lens.lens (\UpdateDomain' {domainId} -> domainId) (\s@UpdateDomain' {} a -> s {domainId = a} :: UpdateDomain)++-- | The name of the domain.+updateDomain_name :: Lens.Lens' UpdateDomain Prelude.Text+updateDomain_name = Lens.lens (\UpdateDomain' {name} -> name) (\s@UpdateDomain' {} a -> s {name = a} :: UpdateDomain) Prelude.. Data._Sensitive++-- | The configuration, containing the KMS key identifier, to be used by+-- Voice ID for the server-side encryption of your data. Changing the+-- domain\'s associated KMS key immediately triggers an asynchronous+-- process to remove dependency on the old KMS key, such that the domain\'s+-- data can only be accessed using the new KMS key. The domain\'s+-- @ServerSideEncryptionUpdateDetails@ contains the details for this+-- process.+updateDomain_serverSideEncryptionConfiguration :: Lens.Lens' UpdateDomain ServerSideEncryptionConfiguration+updateDomain_serverSideEncryptionConfiguration = Lens.lens (\UpdateDomain' {serverSideEncryptionConfiguration} -> serverSideEncryptionConfiguration) (\s@UpdateDomain' {} a -> s {serverSideEncryptionConfiguration = a} :: UpdateDomain)++instance Core.AWSRequest UpdateDomain where+  type AWSResponse UpdateDomain = UpdateDomainResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateDomainResponse'+            Prelude.<$> (x Data..?> "Domain")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateDomain where+  hashWithSalt _salt UpdateDomain' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` domainId+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` serverSideEncryptionConfiguration++instance Prelude.NFData UpdateDomain where+  rnf UpdateDomain' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf domainId+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf serverSideEncryptionConfiguration++instance Data.ToHeaders UpdateDomain where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("VoiceID.UpdateDomain" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.0" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateDomain where+  toJSON UpdateDomain' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            Prelude.Just ("DomainId" Data..= domainId),+            Prelude.Just ("Name" Data..= name),+            Prelude.Just+              ( "ServerSideEncryptionConfiguration"+                  Data..= serverSideEncryptionConfiguration+              )+          ]+      )++instance Data.ToPath UpdateDomain where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateDomain where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateDomainResponse' smart constructor.+data UpdateDomainResponse = UpdateDomainResponse'+  { -- | Details about the updated domain+    domain :: Prelude.Maybe Domain,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateDomainResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'domain', 'updateDomainResponse_domain' - Details about the updated domain+--+-- 'httpStatus', 'updateDomainResponse_httpStatus' - The response's http status code.+newUpdateDomainResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateDomainResponse+newUpdateDomainResponse pHttpStatus_ =+  UpdateDomainResponse'+    { domain = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Details about the updated domain+updateDomainResponse_domain :: Lens.Lens' UpdateDomainResponse (Prelude.Maybe Domain)+updateDomainResponse_domain = Lens.lens (\UpdateDomainResponse' {domain} -> domain) (\s@UpdateDomainResponse' {} a -> s {domain = a} :: UpdateDomainResponse)++-- | The response's http status code.+updateDomainResponse_httpStatus :: Lens.Lens' UpdateDomainResponse Prelude.Int+updateDomainResponse_httpStatus = Lens.lens (\UpdateDomainResponse' {httpStatus} -> httpStatus) (\s@UpdateDomainResponse' {} a -> s {httpStatus = a} :: UpdateDomainResponse)++instance Prelude.NFData UpdateDomainResponse where+  rnf UpdateDomainResponse' {..} =+    Prelude.rnf domain+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/VoiceId/Waiters.hs view
@@ -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.VoiceId.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.VoiceId.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.VoiceId.Lens+import Amazonka.VoiceId.Types
+ src/.gitkeep view
+ test/Main.hs view
@@ -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.VoiceId+import Test.Amazonka.VoiceId.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "VoiceId"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/VoiceId.hs view
@@ -0,0 +1,458 @@+{-# 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.VoiceId+-- Copyright   : (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.VoiceId where++import Amazonka.VoiceId+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.Prelude+import Test.Amazonka.VoiceId.Internal+import Test.Tasty++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+--     [ testGroup "request"+--         [ requestCreateDomain $+--             newCreateDomain+--+--         , requestDeleteDomain $+--             newDeleteDomain+--+--         , requestDeleteFraudster $+--             newDeleteFraudster+--+--         , requestDeleteSpeaker $+--             newDeleteSpeaker+--+--         , requestDescribeDomain $+--             newDescribeDomain+--+--         , requestDescribeFraudster $+--             newDescribeFraudster+--+--         , requestDescribeFraudsterRegistrationJob $+--             newDescribeFraudsterRegistrationJob+--+--         , requestDescribeSpeaker $+--             newDescribeSpeaker+--+--         , requestDescribeSpeakerEnrollmentJob $+--             newDescribeSpeakerEnrollmentJob+--+--         , requestEvaluateSession $+--             newEvaluateSession+--+--         , requestListDomains $+--             newListDomains+--+--         , requestListFraudsterRegistrationJobs $+--             newListFraudsterRegistrationJobs+--+--         , requestListSpeakerEnrollmentJobs $+--             newListSpeakerEnrollmentJobs+--+--         , requestListSpeakers $+--             newListSpeakers+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestOptOutSpeaker $+--             newOptOutSpeaker+--+--         , requestStartFraudsterRegistrationJob $+--             newStartFraudsterRegistrationJob+--+--         , requestStartSpeakerEnrollmentJob $+--             newStartSpeakerEnrollmentJob+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateDomain $+--             newUpdateDomain+--+--           ]++--     , testGroup "response"+--         [ responseCreateDomain $+--             newCreateDomainResponse+--+--         , responseDeleteDomain $+--             newDeleteDomainResponse+--+--         , responseDeleteFraudster $+--             newDeleteFraudsterResponse+--+--         , responseDeleteSpeaker $+--             newDeleteSpeakerResponse+--+--         , responseDescribeDomain $+--             newDescribeDomainResponse+--+--         , responseDescribeFraudster $+--             newDescribeFraudsterResponse+--+--         , responseDescribeFraudsterRegistrationJob $+--             newDescribeFraudsterRegistrationJobResponse+--+--         , responseDescribeSpeaker $+--             newDescribeSpeakerResponse+--+--         , responseDescribeSpeakerEnrollmentJob $+--             newDescribeSpeakerEnrollmentJobResponse+--+--         , responseEvaluateSession $+--             newEvaluateSessionResponse+--+--         , responseListDomains $+--             newListDomainsResponse+--+--         , responseListFraudsterRegistrationJobs $+--             newListFraudsterRegistrationJobsResponse+--+--         , responseListSpeakerEnrollmentJobs $+--             newListSpeakerEnrollmentJobsResponse+--+--         , responseListSpeakers $+--             newListSpeakersResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responseOptOutSpeaker $+--             newOptOutSpeakerResponse+--+--         , responseStartFraudsterRegistrationJob $+--             newStartFraudsterRegistrationJobResponse+--+--         , responseStartSpeakerEnrollmentJob $+--             newStartSpeakerEnrollmentJobResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateDomain $+--             newUpdateDomainResponse+--+--           ]+--     ]++-- Requests++requestCreateDomain :: CreateDomain -> TestTree+requestCreateDomain =+  req+    "CreateDomain"+    "fixture/CreateDomain.yaml"++requestDeleteDomain :: DeleteDomain -> TestTree+requestDeleteDomain =+  req+    "DeleteDomain"+    "fixture/DeleteDomain.yaml"++requestDeleteFraudster :: DeleteFraudster -> TestTree+requestDeleteFraudster =+  req+    "DeleteFraudster"+    "fixture/DeleteFraudster.yaml"++requestDeleteSpeaker :: DeleteSpeaker -> TestTree+requestDeleteSpeaker =+  req+    "DeleteSpeaker"+    "fixture/DeleteSpeaker.yaml"++requestDescribeDomain :: DescribeDomain -> TestTree+requestDescribeDomain =+  req+    "DescribeDomain"+    "fixture/DescribeDomain.yaml"++requestDescribeFraudster :: DescribeFraudster -> TestTree+requestDescribeFraudster =+  req+    "DescribeFraudster"+    "fixture/DescribeFraudster.yaml"++requestDescribeFraudsterRegistrationJob :: DescribeFraudsterRegistrationJob -> TestTree+requestDescribeFraudsterRegistrationJob =+  req+    "DescribeFraudsterRegistrationJob"+    "fixture/DescribeFraudsterRegistrationJob.yaml"++requestDescribeSpeaker :: DescribeSpeaker -> TestTree+requestDescribeSpeaker =+  req+    "DescribeSpeaker"+    "fixture/DescribeSpeaker.yaml"++requestDescribeSpeakerEnrollmentJob :: DescribeSpeakerEnrollmentJob -> TestTree+requestDescribeSpeakerEnrollmentJob =+  req+    "DescribeSpeakerEnrollmentJob"+    "fixture/DescribeSpeakerEnrollmentJob.yaml"++requestEvaluateSession :: EvaluateSession -> TestTree+requestEvaluateSession =+  req+    "EvaluateSession"+    "fixture/EvaluateSession.yaml"++requestListDomains :: ListDomains -> TestTree+requestListDomains =+  req+    "ListDomains"+    "fixture/ListDomains.yaml"++requestListFraudsterRegistrationJobs :: ListFraudsterRegistrationJobs -> TestTree+requestListFraudsterRegistrationJobs =+  req+    "ListFraudsterRegistrationJobs"+    "fixture/ListFraudsterRegistrationJobs.yaml"++requestListSpeakerEnrollmentJobs :: ListSpeakerEnrollmentJobs -> TestTree+requestListSpeakerEnrollmentJobs =+  req+    "ListSpeakerEnrollmentJobs"+    "fixture/ListSpeakerEnrollmentJobs.yaml"++requestListSpeakers :: ListSpeakers -> TestTree+requestListSpeakers =+  req+    "ListSpeakers"+    "fixture/ListSpeakers.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestOptOutSpeaker :: OptOutSpeaker -> TestTree+requestOptOutSpeaker =+  req+    "OptOutSpeaker"+    "fixture/OptOutSpeaker.yaml"++requestStartFraudsterRegistrationJob :: StartFraudsterRegistrationJob -> TestTree+requestStartFraudsterRegistrationJob =+  req+    "StartFraudsterRegistrationJob"+    "fixture/StartFraudsterRegistrationJob.yaml"++requestStartSpeakerEnrollmentJob :: StartSpeakerEnrollmentJob -> TestTree+requestStartSpeakerEnrollmentJob =+  req+    "StartSpeakerEnrollmentJob"+    "fixture/StartSpeakerEnrollmentJob.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateDomain :: UpdateDomain -> TestTree+requestUpdateDomain =+  req+    "UpdateDomain"+    "fixture/UpdateDomain.yaml"++-- Responses++responseCreateDomain :: CreateDomainResponse -> TestTree+responseCreateDomain =+  res+    "CreateDomainResponse"+    "fixture/CreateDomainResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateDomain)++responseDeleteDomain :: DeleteDomainResponse -> TestTree+responseDeleteDomain =+  res+    "DeleteDomainResponse"+    "fixture/DeleteDomainResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteDomain)++responseDeleteFraudster :: DeleteFraudsterResponse -> TestTree+responseDeleteFraudster =+  res+    "DeleteFraudsterResponse"+    "fixture/DeleteFraudsterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteFraudster)++responseDeleteSpeaker :: DeleteSpeakerResponse -> TestTree+responseDeleteSpeaker =+  res+    "DeleteSpeakerResponse"+    "fixture/DeleteSpeakerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteSpeaker)++responseDescribeDomain :: DescribeDomainResponse -> TestTree+responseDescribeDomain =+  res+    "DescribeDomainResponse"+    "fixture/DescribeDomainResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeDomain)++responseDescribeFraudster :: DescribeFraudsterResponse -> TestTree+responseDescribeFraudster =+  res+    "DescribeFraudsterResponse"+    "fixture/DescribeFraudsterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeFraudster)++responseDescribeFraudsterRegistrationJob :: DescribeFraudsterRegistrationJobResponse -> TestTree+responseDescribeFraudsterRegistrationJob =+  res+    "DescribeFraudsterRegistrationJobResponse"+    "fixture/DescribeFraudsterRegistrationJobResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeFraudsterRegistrationJob)++responseDescribeSpeaker :: DescribeSpeakerResponse -> TestTree+responseDescribeSpeaker =+  res+    "DescribeSpeakerResponse"+    "fixture/DescribeSpeakerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeSpeaker)++responseDescribeSpeakerEnrollmentJob :: DescribeSpeakerEnrollmentJobResponse -> TestTree+responseDescribeSpeakerEnrollmentJob =+  res+    "DescribeSpeakerEnrollmentJobResponse"+    "fixture/DescribeSpeakerEnrollmentJobResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeSpeakerEnrollmentJob)++responseEvaluateSession :: EvaluateSessionResponse -> TestTree+responseEvaluateSession =+  res+    "EvaluateSessionResponse"+    "fixture/EvaluateSessionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy EvaluateSession)++responseListDomains :: ListDomainsResponse -> TestTree+responseListDomains =+  res+    "ListDomainsResponse"+    "fixture/ListDomainsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListDomains)++responseListFraudsterRegistrationJobs :: ListFraudsterRegistrationJobsResponse -> TestTree+responseListFraudsterRegistrationJobs =+  res+    "ListFraudsterRegistrationJobsResponse"+    "fixture/ListFraudsterRegistrationJobsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListFraudsterRegistrationJobs)++responseListSpeakerEnrollmentJobs :: ListSpeakerEnrollmentJobsResponse -> TestTree+responseListSpeakerEnrollmentJobs =+  res+    "ListSpeakerEnrollmentJobsResponse"+    "fixture/ListSpeakerEnrollmentJobsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListSpeakerEnrollmentJobs)++responseListSpeakers :: ListSpeakersResponse -> TestTree+responseListSpeakers =+  res+    "ListSpeakersResponse"+    "fixture/ListSpeakersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListSpeakers)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responseOptOutSpeaker :: OptOutSpeakerResponse -> TestTree+responseOptOutSpeaker =+  res+    "OptOutSpeakerResponse"+    "fixture/OptOutSpeakerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy OptOutSpeaker)++responseStartFraudsterRegistrationJob :: StartFraudsterRegistrationJobResponse -> TestTree+responseStartFraudsterRegistrationJob =+  res+    "StartFraudsterRegistrationJobResponse"+    "fixture/StartFraudsterRegistrationJobResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartFraudsterRegistrationJob)++responseStartSpeakerEnrollmentJob :: StartSpeakerEnrollmentJobResponse -> TestTree+responseStartSpeakerEnrollmentJob =+  res+    "StartSpeakerEnrollmentJobResponse"+    "fixture/StartSpeakerEnrollmentJobResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartSpeakerEnrollmentJob)++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)++responseUpdateDomain :: UpdateDomainResponse -> TestTree+responseUpdateDomain =+  res+    "UpdateDomainResponse"+    "fixture/UpdateDomainResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateDomain)
+ test/Test/Amazonka/VoiceId.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.VoiceId+-- Copyright   : (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.VoiceId+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/VoiceId/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.VoiceId.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.VoiceId.Internal where