packages feed

amazonka-textract (empty) → 2.0

raw patch · 102 files changed

+11654/−0 lines, 102 filesdep +amazonka-coredep +amazonka-testdep +amazonka-textract

Dependencies added: amazonka-core, amazonka-test, amazonka-textract, 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 Textract SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2018-06-27@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-textract)+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.Textract](http://hackage.haskell.org/package/amazonka-textract/docs/Amazonka-Textract.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-textract` 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-textract.cabal view
@@ -0,0 +1,147 @@+cabal-version:      2.2+name:               amazonka-textract+version:            2.0+synopsis:           Amazon Textract 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 @2018-06-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.Textract.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.Textract" 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-textract++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.Textract+    Amazonka.Textract.AnalyzeDocument+    Amazonka.Textract.AnalyzeExpense+    Amazonka.Textract.AnalyzeID+    Amazonka.Textract.DetectDocumentText+    Amazonka.Textract.GetDocumentAnalysis+    Amazonka.Textract.GetDocumentTextDetection+    Amazonka.Textract.GetExpenseAnalysis+    Amazonka.Textract.GetLendingAnalysis+    Amazonka.Textract.GetLendingAnalysisSummary+    Amazonka.Textract.Lens+    Amazonka.Textract.StartDocumentAnalysis+    Amazonka.Textract.StartDocumentTextDetection+    Amazonka.Textract.StartExpenseAnalysis+    Amazonka.Textract.StartLendingAnalysis+    Amazonka.Textract.Types+    Amazonka.Textract.Types.AnalyzeIDDetections+    Amazonka.Textract.Types.Block+    Amazonka.Textract.Types.BlockType+    Amazonka.Textract.Types.BoundingBox+    Amazonka.Textract.Types.ContentClassifier+    Amazonka.Textract.Types.DetectedSignature+    Amazonka.Textract.Types.Document+    Amazonka.Textract.Types.DocumentGroup+    Amazonka.Textract.Types.DocumentLocation+    Amazonka.Textract.Types.DocumentMetadata+    Amazonka.Textract.Types.EntityType+    Amazonka.Textract.Types.ExpenseCurrency+    Amazonka.Textract.Types.ExpenseDetection+    Amazonka.Textract.Types.ExpenseDocument+    Amazonka.Textract.Types.ExpenseField+    Amazonka.Textract.Types.ExpenseGroupProperty+    Amazonka.Textract.Types.ExpenseType+    Amazonka.Textract.Types.Extraction+    Amazonka.Textract.Types.FeatureType+    Amazonka.Textract.Types.Geometry+    Amazonka.Textract.Types.HumanLoopActivationOutput+    Amazonka.Textract.Types.HumanLoopConfig+    Amazonka.Textract.Types.HumanLoopDataAttributes+    Amazonka.Textract.Types.IdentityDocument+    Amazonka.Textract.Types.IdentityDocumentField+    Amazonka.Textract.Types.JobStatus+    Amazonka.Textract.Types.LendingDetection+    Amazonka.Textract.Types.LendingDocument+    Amazonka.Textract.Types.LendingField+    Amazonka.Textract.Types.LendingResult+    Amazonka.Textract.Types.LendingSummary+    Amazonka.Textract.Types.LineItemFields+    Amazonka.Textract.Types.LineItemGroup+    Amazonka.Textract.Types.NormalizedValue+    Amazonka.Textract.Types.NotificationChannel+    Amazonka.Textract.Types.OutputConfig+    Amazonka.Textract.Types.PageClassification+    Amazonka.Textract.Types.Point+    Amazonka.Textract.Types.Prediction+    Amazonka.Textract.Types.QueriesConfig+    Amazonka.Textract.Types.Query+    Amazonka.Textract.Types.Relationship+    Amazonka.Textract.Types.RelationshipType+    Amazonka.Textract.Types.S3Object+    Amazonka.Textract.Types.SelectionStatus+    Amazonka.Textract.Types.SignatureDetection+    Amazonka.Textract.Types.SplitDocument+    Amazonka.Textract.Types.TextType+    Amazonka.Textract.Types.UndetectedSignature+    Amazonka.Textract.Types.ValueType+    Amazonka.Textract.Types.Warning+    Amazonka.Textract.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-textract-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.Textract+    Test.Amazonka.Textract+    Test.Amazonka.Textract.Internal++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-test         >=2.0 && <2.1+    , amazonka-textract+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/AnalyzeDocument.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/AnalyzeDocumentResponse.proto view
+ fixture/AnalyzeExpense.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/AnalyzeExpenseResponse.proto view
+ fixture/AnalyzeID.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/AnalyzeIDResponse.proto view
+ fixture/DetectDocumentText.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/DetectDocumentTextResponse.proto view
+ fixture/GetDocumentAnalysis.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/GetDocumentAnalysisResponse.proto view
+ fixture/GetDocumentTextDetection.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/GetDocumentTextDetectionResponse.proto view
+ fixture/GetExpenseAnalysis.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/GetExpenseAnalysisResponse.proto view
+ fixture/GetLendingAnalysis.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/GetLendingAnalysisResponse.proto view
+ fixture/GetLendingAnalysisSummary.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/GetLendingAnalysisSummaryResponse.proto view
+ fixture/StartDocumentAnalysis.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/StartDocumentAnalysisResponse.proto view
+ fixture/StartDocumentTextDetection.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/StartDocumentTextDetectionResponse.proto view
+ fixture/StartExpenseAnalysis.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/StartExpenseAnalysisResponse.proto view
+ fixture/StartLendingAnalysis.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/textract/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  textract.us-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/StartLendingAnalysisResponse.proto view
+ gen/Amazonka/Textract.hs view
@@ -0,0 +1,391 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.Textract+-- 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 @2018-06-27@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Amazon Textract detects and analyzes text in documents and converts it+-- into machine-readable text. This is the API reference documentation for+-- Amazon Textract.+module Amazonka.Textract+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** BadDocumentException+    _BadDocumentException,++    -- ** DocumentTooLargeException+    _DocumentTooLargeException,++    -- ** HumanLoopQuotaExceededException+    _HumanLoopQuotaExceededException,++    -- ** IdempotentParameterMismatchException+    _IdempotentParameterMismatchException,++    -- ** InternalServerError+    _InternalServerError,++    -- ** InvalidJobIdException+    _InvalidJobIdException,++    -- ** InvalidKMSKeyException+    _InvalidKMSKeyException,++    -- ** InvalidParameterException+    _InvalidParameterException,++    -- ** InvalidS3ObjectException+    _InvalidS3ObjectException,++    -- ** LimitExceededException+    _LimitExceededException,++    -- ** ProvisionedThroughputExceededException+    _ProvisionedThroughputExceededException,++    -- ** ThrottlingException+    _ThrottlingException,++    -- ** UnsupportedDocumentException+    _UnsupportedDocumentException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** AnalyzeDocument+    AnalyzeDocument (AnalyzeDocument'),+    newAnalyzeDocument,+    AnalyzeDocumentResponse (AnalyzeDocumentResponse'),+    newAnalyzeDocumentResponse,++    -- ** AnalyzeExpense+    AnalyzeExpense (AnalyzeExpense'),+    newAnalyzeExpense,+    AnalyzeExpenseResponse (AnalyzeExpenseResponse'),+    newAnalyzeExpenseResponse,++    -- ** AnalyzeID+    AnalyzeID (AnalyzeID'),+    newAnalyzeID,+    AnalyzeIDResponse (AnalyzeIDResponse'),+    newAnalyzeIDResponse,++    -- ** DetectDocumentText+    DetectDocumentText (DetectDocumentText'),+    newDetectDocumentText,+    DetectDocumentTextResponse (DetectDocumentTextResponse'),+    newDetectDocumentTextResponse,++    -- ** GetDocumentAnalysis+    GetDocumentAnalysis (GetDocumentAnalysis'),+    newGetDocumentAnalysis,+    GetDocumentAnalysisResponse (GetDocumentAnalysisResponse'),+    newGetDocumentAnalysisResponse,++    -- ** GetDocumentTextDetection+    GetDocumentTextDetection (GetDocumentTextDetection'),+    newGetDocumentTextDetection,+    GetDocumentTextDetectionResponse (GetDocumentTextDetectionResponse'),+    newGetDocumentTextDetectionResponse,++    -- ** GetExpenseAnalysis+    GetExpenseAnalysis (GetExpenseAnalysis'),+    newGetExpenseAnalysis,+    GetExpenseAnalysisResponse (GetExpenseAnalysisResponse'),+    newGetExpenseAnalysisResponse,++    -- ** GetLendingAnalysis+    GetLendingAnalysis (GetLendingAnalysis'),+    newGetLendingAnalysis,+    GetLendingAnalysisResponse (GetLendingAnalysisResponse'),+    newGetLendingAnalysisResponse,++    -- ** GetLendingAnalysisSummary+    GetLendingAnalysisSummary (GetLendingAnalysisSummary'),+    newGetLendingAnalysisSummary,+    GetLendingAnalysisSummaryResponse (GetLendingAnalysisSummaryResponse'),+    newGetLendingAnalysisSummaryResponse,++    -- ** StartDocumentAnalysis+    StartDocumentAnalysis (StartDocumentAnalysis'),+    newStartDocumentAnalysis,+    StartDocumentAnalysisResponse (StartDocumentAnalysisResponse'),+    newStartDocumentAnalysisResponse,++    -- ** StartDocumentTextDetection+    StartDocumentTextDetection (StartDocumentTextDetection'),+    newStartDocumentTextDetection,+    StartDocumentTextDetectionResponse (StartDocumentTextDetectionResponse'),+    newStartDocumentTextDetectionResponse,++    -- ** StartExpenseAnalysis+    StartExpenseAnalysis (StartExpenseAnalysis'),+    newStartExpenseAnalysis,+    StartExpenseAnalysisResponse (StartExpenseAnalysisResponse'),+    newStartExpenseAnalysisResponse,++    -- ** StartLendingAnalysis+    StartLendingAnalysis (StartLendingAnalysis'),+    newStartLendingAnalysis,+    StartLendingAnalysisResponse (StartLendingAnalysisResponse'),+    newStartLendingAnalysisResponse,++    -- * Types++    -- ** BlockType+    BlockType (..),++    -- ** ContentClassifier+    ContentClassifier (..),++    -- ** EntityType+    EntityType (..),++    -- ** FeatureType+    FeatureType (..),++    -- ** JobStatus+    JobStatus (..),++    -- ** RelationshipType+    RelationshipType (..),++    -- ** SelectionStatus+    SelectionStatus (..),++    -- ** TextType+    TextType (..),++    -- ** ValueType+    ValueType (..),++    -- ** AnalyzeIDDetections+    AnalyzeIDDetections (AnalyzeIDDetections'),+    newAnalyzeIDDetections,++    -- ** Block+    Block (Block'),+    newBlock,++    -- ** BoundingBox+    BoundingBox (BoundingBox'),+    newBoundingBox,++    -- ** DetectedSignature+    DetectedSignature (DetectedSignature'),+    newDetectedSignature,++    -- ** Document+    Document (Document'),+    newDocument,++    -- ** DocumentGroup+    DocumentGroup (DocumentGroup'),+    newDocumentGroup,++    -- ** DocumentLocation+    DocumentLocation (DocumentLocation'),+    newDocumentLocation,++    -- ** DocumentMetadata+    DocumentMetadata (DocumentMetadata'),+    newDocumentMetadata,++    -- ** ExpenseCurrency+    ExpenseCurrency (ExpenseCurrency'),+    newExpenseCurrency,++    -- ** ExpenseDetection+    ExpenseDetection (ExpenseDetection'),+    newExpenseDetection,++    -- ** ExpenseDocument+    ExpenseDocument (ExpenseDocument'),+    newExpenseDocument,++    -- ** ExpenseField+    ExpenseField (ExpenseField'),+    newExpenseField,++    -- ** ExpenseGroupProperty+    ExpenseGroupProperty (ExpenseGroupProperty'),+    newExpenseGroupProperty,++    -- ** ExpenseType+    ExpenseType (ExpenseType'),+    newExpenseType,++    -- ** Extraction+    Extraction (Extraction'),+    newExtraction,++    -- ** Geometry+    Geometry (Geometry'),+    newGeometry,++    -- ** HumanLoopActivationOutput+    HumanLoopActivationOutput (HumanLoopActivationOutput'),+    newHumanLoopActivationOutput,++    -- ** HumanLoopConfig+    HumanLoopConfig (HumanLoopConfig'),+    newHumanLoopConfig,++    -- ** HumanLoopDataAttributes+    HumanLoopDataAttributes (HumanLoopDataAttributes'),+    newHumanLoopDataAttributes,++    -- ** IdentityDocument+    IdentityDocument (IdentityDocument'),+    newIdentityDocument,++    -- ** IdentityDocumentField+    IdentityDocumentField (IdentityDocumentField'),+    newIdentityDocumentField,++    -- ** LendingDetection+    LendingDetection (LendingDetection'),+    newLendingDetection,++    -- ** LendingDocument+    LendingDocument (LendingDocument'),+    newLendingDocument,++    -- ** LendingField+    LendingField (LendingField'),+    newLendingField,++    -- ** LendingResult+    LendingResult (LendingResult'),+    newLendingResult,++    -- ** LendingSummary+    LendingSummary (LendingSummary'),+    newLendingSummary,++    -- ** LineItemFields+    LineItemFields (LineItemFields'),+    newLineItemFields,++    -- ** LineItemGroup+    LineItemGroup (LineItemGroup'),+    newLineItemGroup,++    -- ** NormalizedValue+    NormalizedValue (NormalizedValue'),+    newNormalizedValue,++    -- ** NotificationChannel+    NotificationChannel (NotificationChannel'),+    newNotificationChannel,++    -- ** OutputConfig+    OutputConfig (OutputConfig'),+    newOutputConfig,++    -- ** PageClassification+    PageClassification (PageClassification'),+    newPageClassification,++    -- ** Point+    Point (Point'),+    newPoint,++    -- ** Prediction+    Prediction (Prediction'),+    newPrediction,++    -- ** QueriesConfig+    QueriesConfig (QueriesConfig'),+    newQueriesConfig,++    -- ** Query+    Query (Query'),+    newQuery,++    -- ** Relationship+    Relationship (Relationship'),+    newRelationship,++    -- ** S3Object+    S3Object (S3Object'),+    newS3Object,++    -- ** SignatureDetection+    SignatureDetection (SignatureDetection'),+    newSignatureDetection,++    -- ** SplitDocument+    SplitDocument (SplitDocument'),+    newSplitDocument,++    -- ** UndetectedSignature+    UndetectedSignature (UndetectedSignature'),+    newUndetectedSignature,++    -- ** Warning+    Warning (Warning'),+    newWarning,+  )+where++import Amazonka.Textract.AnalyzeDocument+import Amazonka.Textract.AnalyzeExpense+import Amazonka.Textract.AnalyzeID+import Amazonka.Textract.DetectDocumentText+import Amazonka.Textract.GetDocumentAnalysis+import Amazonka.Textract.GetDocumentTextDetection+import Amazonka.Textract.GetExpenseAnalysis+import Amazonka.Textract.GetLendingAnalysis+import Amazonka.Textract.GetLendingAnalysisSummary+import Amazonka.Textract.Lens+import Amazonka.Textract.StartDocumentAnalysis+import Amazonka.Textract.StartDocumentTextDetection+import Amazonka.Textract.StartExpenseAnalysis+import Amazonka.Textract.StartLendingAnalysis+import Amazonka.Textract.Types+import Amazonka.Textract.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 'Textract'.++-- $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/Textract/AnalyzeDocument.hs view
@@ -0,0 +1,340 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.AnalyzeDocument+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Analyzes an input document for relationships between detected items.+--+-- The types of information returned are as follows:+--+-- -   Form data (key-value pairs). The related information is returned in+--     two Block objects, each of type @KEY_VALUE_SET@: a KEY @Block@+--     object and a VALUE @Block@ object. For example, /Name: Ana Silva+--     Carolina/ contains a key and value. /Name:/ is the key. /Ana Silva+--     Carolina/ is the value.+--+-- -   Table and table cell data. A TABLE @Block@ object contains+--     information about a detected table. A CELL @Block@ object is+--     returned for each cell in a table.+--+-- -   Lines and words of text. A LINE @Block@ object contains one or more+--     WORD @Block@ objects. All lines and words that are detected in the+--     document are returned (including text that doesn\'t have a+--     relationship with the value of @FeatureTypes@).+--+-- -   Signatures. A SIGNATURE @Block@ object contains the location+--     information of a signature in a document. If used in conjunction+--     with forms or tables, a signature can be given a Key-Value pairing+--     or be detected in the cell of a table.+--+-- -   Query. A QUERY Block object contains the query text, alias and link+--     to the associated Query results block object.+--+-- -   Query Result. A QUERY_RESULT Block object contains the answer to the+--     query and an ID that connects it to the query asked. This Block also+--     contains a confidence score.+--+-- Selection elements such as check boxes and option buttons (radio+-- buttons) can be detected in form data and in tables. A SELECTION_ELEMENT+-- @Block@ object contains information about a selection element, including+-- the selection status.+--+-- You can choose which type of analysis to perform by specifying the+-- @FeatureTypes@ list.+--+-- The output is returned in a list of @Block@ objects.+--+-- @AnalyzeDocument@ is a synchronous operation. To analyze documents+-- asynchronously, use StartDocumentAnalysis.+--+-- For more information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/how-it-works-analyzing.html Document Text Analysis>.+module Amazonka.Textract.AnalyzeDocument+  ( -- * Creating a Request+    AnalyzeDocument (..),+    newAnalyzeDocument,++    -- * Request Lenses+    analyzeDocument_humanLoopConfig,+    analyzeDocument_queriesConfig,+    analyzeDocument_document,+    analyzeDocument_featureTypes,++    -- * Destructuring the Response+    AnalyzeDocumentResponse (..),+    newAnalyzeDocumentResponse,++    -- * Response Lenses+    analyzeDocumentResponse_analyzeDocumentModelVersion,+    analyzeDocumentResponse_blocks,+    analyzeDocumentResponse_documentMetadata,+    analyzeDocumentResponse_humanLoopActivationOutput,+    analyzeDocumentResponse_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.Textract.Types++-- | /See:/ 'newAnalyzeDocument' smart constructor.+data AnalyzeDocument = AnalyzeDocument'+  { -- | Sets the configuration for the human in the loop workflow for analyzing+    -- documents.+    humanLoopConfig :: Prelude.Maybe HumanLoopConfig,+    -- | Contains Queries and the alias for those Queries, as determined by the+    -- input.+    queriesConfig :: Prelude.Maybe QueriesConfig,+    -- | The input document as base64-encoded bytes or an Amazon S3 object. If+    -- you use the AWS CLI to call Amazon Textract operations, you can\'t pass+    -- image bytes. The document must be an image in JPEG, PNG, PDF, or TIFF+    -- format.+    --+    -- If you\'re using an AWS SDK to call Amazon Textract, you might not need+    -- to base64-encode image bytes that are passed using the @Bytes@ field.+    document :: Document,+    -- | A list of the types of analysis to perform. Add TABLES to the list to+    -- return information about the tables that are detected in the input+    -- document. Add FORMS to return detected form data. Add SIGNATURES to+    -- return the locations of detected signatures. To perform both forms and+    -- table analysis, add TABLES and FORMS to @FeatureTypes@. To detect+    -- signatures within form data and table data, add SIGNATURES to either+    -- TABLES or FORMS. All lines and words detected in the document are+    -- included in the response (including text that isn\'t related to the+    -- value of @FeatureTypes@).+    featureTypes :: [FeatureType]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnalyzeDocument' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'humanLoopConfig', 'analyzeDocument_humanLoopConfig' - Sets the configuration for the human in the loop workflow for analyzing+-- documents.+--+-- 'queriesConfig', 'analyzeDocument_queriesConfig' - Contains Queries and the alias for those Queries, as determined by the+-- input.+--+-- 'document', 'analyzeDocument_document' - The input document as base64-encoded bytes or an Amazon S3 object. If+-- you use the AWS CLI to call Amazon Textract operations, you can\'t pass+-- image bytes. The document must be an image in JPEG, PNG, PDF, or TIFF+-- format.+--+-- If you\'re using an AWS SDK to call Amazon Textract, you might not need+-- to base64-encode image bytes that are passed using the @Bytes@ field.+--+-- 'featureTypes', 'analyzeDocument_featureTypes' - A list of the types of analysis to perform. Add TABLES to the list to+-- return information about the tables that are detected in the input+-- document. Add FORMS to return detected form data. Add SIGNATURES to+-- return the locations of detected signatures. To perform both forms and+-- table analysis, add TABLES and FORMS to @FeatureTypes@. To detect+-- signatures within form data and table data, add SIGNATURES to either+-- TABLES or FORMS. All lines and words detected in the document are+-- included in the response (including text that isn\'t related to the+-- value of @FeatureTypes@).+newAnalyzeDocument ::+  -- | 'document'+  Document ->+  AnalyzeDocument+newAnalyzeDocument pDocument_ =+  AnalyzeDocument'+    { humanLoopConfig = Prelude.Nothing,+      queriesConfig = Prelude.Nothing,+      document = pDocument_,+      featureTypes = Prelude.mempty+    }++-- | Sets the configuration for the human in the loop workflow for analyzing+-- documents.+analyzeDocument_humanLoopConfig :: Lens.Lens' AnalyzeDocument (Prelude.Maybe HumanLoopConfig)+analyzeDocument_humanLoopConfig = Lens.lens (\AnalyzeDocument' {humanLoopConfig} -> humanLoopConfig) (\s@AnalyzeDocument' {} a -> s {humanLoopConfig = a} :: AnalyzeDocument)++-- | Contains Queries and the alias for those Queries, as determined by the+-- input.+analyzeDocument_queriesConfig :: Lens.Lens' AnalyzeDocument (Prelude.Maybe QueriesConfig)+analyzeDocument_queriesConfig = Lens.lens (\AnalyzeDocument' {queriesConfig} -> queriesConfig) (\s@AnalyzeDocument' {} a -> s {queriesConfig = a} :: AnalyzeDocument)++-- | The input document as base64-encoded bytes or an Amazon S3 object. If+-- you use the AWS CLI to call Amazon Textract operations, you can\'t pass+-- image bytes. The document must be an image in JPEG, PNG, PDF, or TIFF+-- format.+--+-- If you\'re using an AWS SDK to call Amazon Textract, you might not need+-- to base64-encode image bytes that are passed using the @Bytes@ field.+analyzeDocument_document :: Lens.Lens' AnalyzeDocument Document+analyzeDocument_document = Lens.lens (\AnalyzeDocument' {document} -> document) (\s@AnalyzeDocument' {} a -> s {document = a} :: AnalyzeDocument)++-- | A list of the types of analysis to perform. Add TABLES to the list to+-- return information about the tables that are detected in the input+-- document. Add FORMS to return detected form data. Add SIGNATURES to+-- return the locations of detected signatures. To perform both forms and+-- table analysis, add TABLES and FORMS to @FeatureTypes@. To detect+-- signatures within form data and table data, add SIGNATURES to either+-- TABLES or FORMS. All lines and words detected in the document are+-- included in the response (including text that isn\'t related to the+-- value of @FeatureTypes@).+analyzeDocument_featureTypes :: Lens.Lens' AnalyzeDocument [FeatureType]+analyzeDocument_featureTypes = Lens.lens (\AnalyzeDocument' {featureTypes} -> featureTypes) (\s@AnalyzeDocument' {} a -> s {featureTypes = a} :: AnalyzeDocument) Prelude.. Lens.coerced++instance Core.AWSRequest AnalyzeDocument where+  type+    AWSResponse AnalyzeDocument =+      AnalyzeDocumentResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AnalyzeDocumentResponse'+            Prelude.<$> (x Data..?> "AnalyzeDocumentModelVersion")+            Prelude.<*> (x Data..?> "Blocks" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "DocumentMetadata")+            Prelude.<*> (x Data..?> "HumanLoopActivationOutput")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AnalyzeDocument where+  hashWithSalt _salt AnalyzeDocument' {..} =+    _salt+      `Prelude.hashWithSalt` humanLoopConfig+      `Prelude.hashWithSalt` queriesConfig+      `Prelude.hashWithSalt` document+      `Prelude.hashWithSalt` featureTypes++instance Prelude.NFData AnalyzeDocument where+  rnf AnalyzeDocument' {..} =+    Prelude.rnf humanLoopConfig+      `Prelude.seq` Prelude.rnf queriesConfig+      `Prelude.seq` Prelude.rnf document+      `Prelude.seq` Prelude.rnf featureTypes++instance Data.ToHeaders AnalyzeDocument where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("Textract.AnalyzeDocument" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AnalyzeDocument where+  toJSON AnalyzeDocument' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("HumanLoopConfig" Data..=)+              Prelude.<$> humanLoopConfig,+            ("QueriesConfig" Data..=) Prelude.<$> queriesConfig,+            Prelude.Just ("Document" Data..= document),+            Prelude.Just ("FeatureTypes" Data..= featureTypes)+          ]+      )++instance Data.ToPath AnalyzeDocument where+  toPath = Prelude.const "/"++instance Data.ToQuery AnalyzeDocument where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAnalyzeDocumentResponse' smart constructor.+data AnalyzeDocumentResponse = AnalyzeDocumentResponse'+  { -- | The version of the model used to analyze the document.+    analyzeDocumentModelVersion :: Prelude.Maybe Prelude.Text,+    -- | The items that are detected and analyzed by @AnalyzeDocument@.+    blocks :: Prelude.Maybe [Block],+    -- | Metadata about the analyzed document. An example is the number of pages.+    documentMetadata :: Prelude.Maybe DocumentMetadata,+    -- | Shows the results of the human in the loop evaluation.+    humanLoopActivationOutput :: Prelude.Maybe HumanLoopActivationOutput,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnalyzeDocumentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analyzeDocumentModelVersion', 'analyzeDocumentResponse_analyzeDocumentModelVersion' - The version of the model used to analyze the document.+--+-- 'blocks', 'analyzeDocumentResponse_blocks' - The items that are detected and analyzed by @AnalyzeDocument@.+--+-- 'documentMetadata', 'analyzeDocumentResponse_documentMetadata' - Metadata about the analyzed document. An example is the number of pages.+--+-- 'humanLoopActivationOutput', 'analyzeDocumentResponse_humanLoopActivationOutput' - Shows the results of the human in the loop evaluation.+--+-- 'httpStatus', 'analyzeDocumentResponse_httpStatus' - The response's http status code.+newAnalyzeDocumentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AnalyzeDocumentResponse+newAnalyzeDocumentResponse pHttpStatus_ =+  AnalyzeDocumentResponse'+    { analyzeDocumentModelVersion =+        Prelude.Nothing,+      blocks = Prelude.Nothing,+      documentMetadata = Prelude.Nothing,+      humanLoopActivationOutput = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The version of the model used to analyze the document.+analyzeDocumentResponse_analyzeDocumentModelVersion :: Lens.Lens' AnalyzeDocumentResponse (Prelude.Maybe Prelude.Text)+analyzeDocumentResponse_analyzeDocumentModelVersion = Lens.lens (\AnalyzeDocumentResponse' {analyzeDocumentModelVersion} -> analyzeDocumentModelVersion) (\s@AnalyzeDocumentResponse' {} a -> s {analyzeDocumentModelVersion = a} :: AnalyzeDocumentResponse)++-- | The items that are detected and analyzed by @AnalyzeDocument@.+analyzeDocumentResponse_blocks :: Lens.Lens' AnalyzeDocumentResponse (Prelude.Maybe [Block])+analyzeDocumentResponse_blocks = Lens.lens (\AnalyzeDocumentResponse' {blocks} -> blocks) (\s@AnalyzeDocumentResponse' {} a -> s {blocks = a} :: AnalyzeDocumentResponse) Prelude.. Lens.mapping Lens.coerced++-- | Metadata about the analyzed document. An example is the number of pages.+analyzeDocumentResponse_documentMetadata :: Lens.Lens' AnalyzeDocumentResponse (Prelude.Maybe DocumentMetadata)+analyzeDocumentResponse_documentMetadata = Lens.lens (\AnalyzeDocumentResponse' {documentMetadata} -> documentMetadata) (\s@AnalyzeDocumentResponse' {} a -> s {documentMetadata = a} :: AnalyzeDocumentResponse)++-- | Shows the results of the human in the loop evaluation.+analyzeDocumentResponse_humanLoopActivationOutput :: Lens.Lens' AnalyzeDocumentResponse (Prelude.Maybe HumanLoopActivationOutput)+analyzeDocumentResponse_humanLoopActivationOutput = Lens.lens (\AnalyzeDocumentResponse' {humanLoopActivationOutput} -> humanLoopActivationOutput) (\s@AnalyzeDocumentResponse' {} a -> s {humanLoopActivationOutput = a} :: AnalyzeDocumentResponse)++-- | The response's http status code.+analyzeDocumentResponse_httpStatus :: Lens.Lens' AnalyzeDocumentResponse Prelude.Int+analyzeDocumentResponse_httpStatus = Lens.lens (\AnalyzeDocumentResponse' {httpStatus} -> httpStatus) (\s@AnalyzeDocumentResponse' {} a -> s {httpStatus = a} :: AnalyzeDocumentResponse)++instance Prelude.NFData AnalyzeDocumentResponse where+  rnf AnalyzeDocumentResponse' {..} =+    Prelude.rnf analyzeDocumentModelVersion+      `Prelude.seq` Prelude.rnf blocks+      `Prelude.seq` Prelude.rnf documentMetadata+      `Prelude.seq` Prelude.rnf humanLoopActivationOutput+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/AnalyzeExpense.hs view
@@ -0,0 +1,189 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.AnalyzeExpense+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- @AnalyzeExpense@ synchronously analyzes an input document for+-- financially related relationships between text.+--+-- Information is returned as @ExpenseDocuments@ and seperated as follows:+--+-- -   @LineItemGroups@- A data set containing @LineItems@ which store+--     information about the lines of text, such as an item purchased and+--     its price on a receipt.+--+-- -   @SummaryFields@- Contains all other information a receipt, such as+--     header information or the vendors name.+module Amazonka.Textract.AnalyzeExpense+  ( -- * Creating a Request+    AnalyzeExpense (..),+    newAnalyzeExpense,++    -- * Request Lenses+    analyzeExpense_document,++    -- * Destructuring the Response+    AnalyzeExpenseResponse (..),+    newAnalyzeExpenseResponse,++    -- * Response Lenses+    analyzeExpenseResponse_documentMetadata,+    analyzeExpenseResponse_expenseDocuments,+    analyzeExpenseResponse_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.Textract.Types++-- | /See:/ 'newAnalyzeExpense' smart constructor.+data AnalyzeExpense = AnalyzeExpense'+  { document :: Document+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnalyzeExpense' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'document', 'analyzeExpense_document' - Undocumented member.+newAnalyzeExpense ::+  -- | 'document'+  Document ->+  AnalyzeExpense+newAnalyzeExpense pDocument_ =+  AnalyzeExpense' {document = pDocument_}++-- | Undocumented member.+analyzeExpense_document :: Lens.Lens' AnalyzeExpense Document+analyzeExpense_document = Lens.lens (\AnalyzeExpense' {document} -> document) (\s@AnalyzeExpense' {} a -> s {document = a} :: AnalyzeExpense)++instance Core.AWSRequest AnalyzeExpense where+  type+    AWSResponse AnalyzeExpense =+      AnalyzeExpenseResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AnalyzeExpenseResponse'+            Prelude.<$> (x Data..?> "DocumentMetadata")+            Prelude.<*> ( x+                            Data..?> "ExpenseDocuments"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AnalyzeExpense where+  hashWithSalt _salt AnalyzeExpense' {..} =+    _salt `Prelude.hashWithSalt` document++instance Prelude.NFData AnalyzeExpense where+  rnf AnalyzeExpense' {..} = Prelude.rnf document++instance Data.ToHeaders AnalyzeExpense where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("Textract.AnalyzeExpense" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AnalyzeExpense where+  toJSON AnalyzeExpense' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Document" Data..= document)]+      )++instance Data.ToPath AnalyzeExpense where+  toPath = Prelude.const "/"++instance Data.ToQuery AnalyzeExpense where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAnalyzeExpenseResponse' smart constructor.+data AnalyzeExpenseResponse = AnalyzeExpenseResponse'+  { documentMetadata :: Prelude.Maybe DocumentMetadata,+    -- | The expenses detected by Amazon Textract.+    expenseDocuments :: Prelude.Maybe [ExpenseDocument],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnalyzeExpenseResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'documentMetadata', 'analyzeExpenseResponse_documentMetadata' - Undocumented member.+--+-- 'expenseDocuments', 'analyzeExpenseResponse_expenseDocuments' - The expenses detected by Amazon Textract.+--+-- 'httpStatus', 'analyzeExpenseResponse_httpStatus' - The response's http status code.+newAnalyzeExpenseResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AnalyzeExpenseResponse+newAnalyzeExpenseResponse pHttpStatus_ =+  AnalyzeExpenseResponse'+    { documentMetadata =+        Prelude.Nothing,+      expenseDocuments = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+analyzeExpenseResponse_documentMetadata :: Lens.Lens' AnalyzeExpenseResponse (Prelude.Maybe DocumentMetadata)+analyzeExpenseResponse_documentMetadata = Lens.lens (\AnalyzeExpenseResponse' {documentMetadata} -> documentMetadata) (\s@AnalyzeExpenseResponse' {} a -> s {documentMetadata = a} :: AnalyzeExpenseResponse)++-- | The expenses detected by Amazon Textract.+analyzeExpenseResponse_expenseDocuments :: Lens.Lens' AnalyzeExpenseResponse (Prelude.Maybe [ExpenseDocument])+analyzeExpenseResponse_expenseDocuments = Lens.lens (\AnalyzeExpenseResponse' {expenseDocuments} -> expenseDocuments) (\s@AnalyzeExpenseResponse' {} a -> s {expenseDocuments = a} :: AnalyzeExpenseResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+analyzeExpenseResponse_httpStatus :: Lens.Lens' AnalyzeExpenseResponse Prelude.Int+analyzeExpenseResponse_httpStatus = Lens.lens (\AnalyzeExpenseResponse' {httpStatus} -> httpStatus) (\s@AnalyzeExpenseResponse' {} a -> s {httpStatus = a} :: AnalyzeExpenseResponse)++instance Prelude.NFData AnalyzeExpenseResponse where+  rnf AnalyzeExpenseResponse' {..} =+    Prelude.rnf documentMetadata+      `Prelude.seq` Prelude.rnf expenseDocuments+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/AnalyzeID.hs view
@@ -0,0 +1,202 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.AnalyzeID+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Analyzes identity documents for relevant information. This information+-- is extracted and returned as @IdentityDocumentFields@, which records+-- both the normalized field and value of the extracted text.Unlike other+-- Amazon Textract operations, @AnalyzeID@ doesn\'t return any Geometry+-- data.+module Amazonka.Textract.AnalyzeID+  ( -- * Creating a Request+    AnalyzeID (..),+    newAnalyzeID,++    -- * Request Lenses+    analyzeID_documentPages,++    -- * Destructuring the Response+    AnalyzeIDResponse (..),+    newAnalyzeIDResponse,++    -- * Response Lenses+    analyzeIDResponse_analyzeIDModelVersion,+    analyzeIDResponse_documentMetadata,+    analyzeIDResponse_identityDocuments,+    analyzeIDResponse_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.Textract.Types++-- | /See:/ 'newAnalyzeID' smart constructor.+data AnalyzeID = AnalyzeID'+  { -- | The document being passed to AnalyzeID.+    documentPages :: Prelude.NonEmpty Document+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnalyzeID' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'documentPages', 'analyzeID_documentPages' - The document being passed to AnalyzeID.+newAnalyzeID ::+  -- | 'documentPages'+  Prelude.NonEmpty Document ->+  AnalyzeID+newAnalyzeID pDocumentPages_ =+  AnalyzeID'+    { documentPages =+        Lens.coerced Lens.# pDocumentPages_+    }++-- | The document being passed to AnalyzeID.+analyzeID_documentPages :: Lens.Lens' AnalyzeID (Prelude.NonEmpty Document)+analyzeID_documentPages = Lens.lens (\AnalyzeID' {documentPages} -> documentPages) (\s@AnalyzeID' {} a -> s {documentPages = a} :: AnalyzeID) Prelude.. Lens.coerced++instance Core.AWSRequest AnalyzeID where+  type AWSResponse AnalyzeID = AnalyzeIDResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AnalyzeIDResponse'+            Prelude.<$> (x Data..?> "AnalyzeIDModelVersion")+            Prelude.<*> (x Data..?> "DocumentMetadata")+            Prelude.<*> ( x+                            Data..?> "IdentityDocuments"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AnalyzeID where+  hashWithSalt _salt AnalyzeID' {..} =+    _salt `Prelude.hashWithSalt` documentPages++instance Prelude.NFData AnalyzeID where+  rnf AnalyzeID' {..} = Prelude.rnf documentPages++instance Data.ToHeaders AnalyzeID where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("Textract.AnalyzeID" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AnalyzeID where+  toJSON AnalyzeID' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("DocumentPages" Data..= documentPages)+          ]+      )++instance Data.ToPath AnalyzeID where+  toPath = Prelude.const "/"++instance Data.ToQuery AnalyzeID where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAnalyzeIDResponse' smart constructor.+data AnalyzeIDResponse = AnalyzeIDResponse'+  { -- | The version of the AnalyzeIdentity API being used to process documents.+    analyzeIDModelVersion :: Prelude.Maybe Prelude.Text,+    documentMetadata :: Prelude.Maybe DocumentMetadata,+    -- | The list of documents processed by AnalyzeID. Includes a number denoting+    -- their place in the list and the response structure for the document.+    identityDocuments :: Prelude.Maybe [IdentityDocument],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnalyzeIDResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analyzeIDModelVersion', 'analyzeIDResponse_analyzeIDModelVersion' - The version of the AnalyzeIdentity API being used to process documents.+--+-- 'documentMetadata', 'analyzeIDResponse_documentMetadata' - Undocumented member.+--+-- 'identityDocuments', 'analyzeIDResponse_identityDocuments' - The list of documents processed by AnalyzeID. Includes a number denoting+-- their place in the list and the response structure for the document.+--+-- 'httpStatus', 'analyzeIDResponse_httpStatus' - The response's http status code.+newAnalyzeIDResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AnalyzeIDResponse+newAnalyzeIDResponse pHttpStatus_ =+  AnalyzeIDResponse'+    { analyzeIDModelVersion =+        Prelude.Nothing,+      documentMetadata = Prelude.Nothing,+      identityDocuments = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The version of the AnalyzeIdentity API being used to process documents.+analyzeIDResponse_analyzeIDModelVersion :: Lens.Lens' AnalyzeIDResponse (Prelude.Maybe Prelude.Text)+analyzeIDResponse_analyzeIDModelVersion = Lens.lens (\AnalyzeIDResponse' {analyzeIDModelVersion} -> analyzeIDModelVersion) (\s@AnalyzeIDResponse' {} a -> s {analyzeIDModelVersion = a} :: AnalyzeIDResponse)++-- | Undocumented member.+analyzeIDResponse_documentMetadata :: Lens.Lens' AnalyzeIDResponse (Prelude.Maybe DocumentMetadata)+analyzeIDResponse_documentMetadata = Lens.lens (\AnalyzeIDResponse' {documentMetadata} -> documentMetadata) (\s@AnalyzeIDResponse' {} a -> s {documentMetadata = a} :: AnalyzeIDResponse)++-- | The list of documents processed by AnalyzeID. Includes a number denoting+-- their place in the list and the response structure for the document.+analyzeIDResponse_identityDocuments :: Lens.Lens' AnalyzeIDResponse (Prelude.Maybe [IdentityDocument])+analyzeIDResponse_identityDocuments = Lens.lens (\AnalyzeIDResponse' {identityDocuments} -> identityDocuments) (\s@AnalyzeIDResponse' {} a -> s {identityDocuments = a} :: AnalyzeIDResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+analyzeIDResponse_httpStatus :: Lens.Lens' AnalyzeIDResponse Prelude.Int+analyzeIDResponse_httpStatus = Lens.lens (\AnalyzeIDResponse' {httpStatus} -> httpStatus) (\s@AnalyzeIDResponse' {} a -> s {httpStatus = a} :: AnalyzeIDResponse)++instance Prelude.NFData AnalyzeIDResponse where+  rnf AnalyzeIDResponse' {..} =+    Prelude.rnf analyzeIDModelVersion+      `Prelude.seq` Prelude.rnf documentMetadata+      `Prelude.seq` Prelude.rnf identityDocuments+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/DetectDocumentText.hs view
@@ -0,0 +1,228 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.DetectDocumentText+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Detects text in the input document. Amazon Textract can detect lines of+-- text and the words that make up a line of text. The input document must+-- be in one of the following image formats: JPEG, PNG, PDF, or TIFF.+-- @DetectDocumentText@ returns the detected text in an array of Block+-- objects.+--+-- Each document page has as an associated @Block@ of type PAGE. Each PAGE+-- @Block@ object is the parent of LINE @Block@ objects that represent the+-- lines of detected text on a page. A LINE @Block@ object is a parent for+-- each word that makes up the line. Words are represented by @Block@+-- objects of type WORD.+--+-- @DetectDocumentText@ is a synchronous operation. To analyze documents+-- asynchronously, use StartDocumentTextDetection.+--+-- For more information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/how-it-works-detecting.html Document Text Detection>.+module Amazonka.Textract.DetectDocumentText+  ( -- * Creating a Request+    DetectDocumentText (..),+    newDetectDocumentText,++    -- * Request Lenses+    detectDocumentText_document,++    -- * Destructuring the Response+    DetectDocumentTextResponse (..),+    newDetectDocumentTextResponse,++    -- * Response Lenses+    detectDocumentTextResponse_blocks,+    detectDocumentTextResponse_detectDocumentTextModelVersion,+    detectDocumentTextResponse_documentMetadata,+    detectDocumentTextResponse_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.Textract.Types++-- | /See:/ 'newDetectDocumentText' smart constructor.+data DetectDocumentText = DetectDocumentText'+  { -- | The input document as base64-encoded bytes or an Amazon S3 object. If+    -- you use the AWS CLI to call Amazon Textract operations, you can\'t pass+    -- image bytes. The document must be an image in JPEG or PNG format.+    --+    -- If you\'re using an AWS SDK to call Amazon Textract, you might not need+    -- to base64-encode image bytes that are passed using the @Bytes@ field.+    document :: Document+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DetectDocumentText' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'document', 'detectDocumentText_document' - The input document as base64-encoded bytes or an Amazon S3 object. If+-- you use the AWS CLI to call Amazon Textract operations, you can\'t pass+-- image bytes. The document must be an image in JPEG or PNG format.+--+-- If you\'re using an AWS SDK to call Amazon Textract, you might not need+-- to base64-encode image bytes that are passed using the @Bytes@ field.+newDetectDocumentText ::+  -- | 'document'+  Document ->+  DetectDocumentText+newDetectDocumentText pDocument_ =+  DetectDocumentText' {document = pDocument_}++-- | The input document as base64-encoded bytes or an Amazon S3 object. If+-- you use the AWS CLI to call Amazon Textract operations, you can\'t pass+-- image bytes. The document must be an image in JPEG or PNG format.+--+-- If you\'re using an AWS SDK to call Amazon Textract, you might not need+-- to base64-encode image bytes that are passed using the @Bytes@ field.+detectDocumentText_document :: Lens.Lens' DetectDocumentText Document+detectDocumentText_document = Lens.lens (\DetectDocumentText' {document} -> document) (\s@DetectDocumentText' {} a -> s {document = a} :: DetectDocumentText)++instance Core.AWSRequest DetectDocumentText where+  type+    AWSResponse DetectDocumentText =+      DetectDocumentTextResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DetectDocumentTextResponse'+            Prelude.<$> (x Data..?> "Blocks" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "DetectDocumentTextModelVersion")+            Prelude.<*> (x Data..?> "DocumentMetadata")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DetectDocumentText where+  hashWithSalt _salt DetectDocumentText' {..} =+    _salt `Prelude.hashWithSalt` document++instance Prelude.NFData DetectDocumentText where+  rnf DetectDocumentText' {..} = Prelude.rnf document++instance Data.ToHeaders DetectDocumentText where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "Textract.DetectDocumentText" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DetectDocumentText where+  toJSON DetectDocumentText' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Document" Data..= document)]+      )++instance Data.ToPath DetectDocumentText where+  toPath = Prelude.const "/"++instance Data.ToQuery DetectDocumentText where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDetectDocumentTextResponse' smart constructor.+data DetectDocumentTextResponse = DetectDocumentTextResponse'+  { -- | An array of @Block@ objects that contain the text that\'s detected in+    -- the document.+    blocks :: Prelude.Maybe [Block],+    detectDocumentTextModelVersion :: Prelude.Maybe Prelude.Text,+    -- | Metadata about the document. It contains the number of pages that are+    -- detected in the document.+    documentMetadata :: Prelude.Maybe DocumentMetadata,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DetectDocumentTextResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'blocks', 'detectDocumentTextResponse_blocks' - An array of @Block@ objects that contain the text that\'s detected in+-- the document.+--+-- 'detectDocumentTextModelVersion', 'detectDocumentTextResponse_detectDocumentTextModelVersion' -+--+-- 'documentMetadata', 'detectDocumentTextResponse_documentMetadata' - Metadata about the document. It contains the number of pages that are+-- detected in the document.+--+-- 'httpStatus', 'detectDocumentTextResponse_httpStatus' - The response's http status code.+newDetectDocumentTextResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DetectDocumentTextResponse+newDetectDocumentTextResponse pHttpStatus_ =+  DetectDocumentTextResponse'+    { blocks =+        Prelude.Nothing,+      detectDocumentTextModelVersion =+        Prelude.Nothing,+      documentMetadata = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of @Block@ objects that contain the text that\'s detected in+-- the document.+detectDocumentTextResponse_blocks :: Lens.Lens' DetectDocumentTextResponse (Prelude.Maybe [Block])+detectDocumentTextResponse_blocks = Lens.lens (\DetectDocumentTextResponse' {blocks} -> blocks) (\s@DetectDocumentTextResponse' {} a -> s {blocks = a} :: DetectDocumentTextResponse) Prelude.. Lens.mapping Lens.coerced++detectDocumentTextResponse_detectDocumentTextModelVersion :: Lens.Lens' DetectDocumentTextResponse (Prelude.Maybe Prelude.Text)+detectDocumentTextResponse_detectDocumentTextModelVersion = Lens.lens (\DetectDocumentTextResponse' {detectDocumentTextModelVersion} -> detectDocumentTextModelVersion) (\s@DetectDocumentTextResponse' {} a -> s {detectDocumentTextModelVersion = a} :: DetectDocumentTextResponse)++-- | Metadata about the document. It contains the number of pages that are+-- detected in the document.+detectDocumentTextResponse_documentMetadata :: Lens.Lens' DetectDocumentTextResponse (Prelude.Maybe DocumentMetadata)+detectDocumentTextResponse_documentMetadata = Lens.lens (\DetectDocumentTextResponse' {documentMetadata} -> documentMetadata) (\s@DetectDocumentTextResponse' {} a -> s {documentMetadata = a} :: DetectDocumentTextResponse)++-- | The response's http status code.+detectDocumentTextResponse_httpStatus :: Lens.Lens' DetectDocumentTextResponse Prelude.Int+detectDocumentTextResponse_httpStatus = Lens.lens (\DetectDocumentTextResponse' {httpStatus} -> httpStatus) (\s@DetectDocumentTextResponse' {} a -> s {httpStatus = a} :: DetectDocumentTextResponse)++instance Prelude.NFData DetectDocumentTextResponse where+  rnf DetectDocumentTextResponse' {..} =+    Prelude.rnf blocks+      `Prelude.seq` Prelude.rnf detectDocumentTextModelVersion+      `Prelude.seq` Prelude.rnf documentMetadata+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/GetDocumentAnalysis.hs view
@@ -0,0 +1,363 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.GetDocumentAnalysis+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets the results for an Amazon Textract asynchronous operation that+-- analyzes text in a document.+--+-- You start asynchronous text analysis by calling StartDocumentAnalysis,+-- which returns a job identifier (@JobId@). When the text analysis+-- operation finishes, Amazon Textract publishes a completion status to the+-- Amazon Simple Notification Service (Amazon SNS) topic that\'s registered+-- in the initial call to @StartDocumentAnalysis@. To get the results of+-- the text-detection operation, first check that the status value+-- published to the Amazon SNS topic is @SUCCEEDED@. If so, call+-- @GetDocumentAnalysis@, and pass the job identifier (@JobId@) from the+-- initial call to @StartDocumentAnalysis@.+--+-- @GetDocumentAnalysis@ returns an array of Block objects. The following+-- types of information are returned:+--+-- -   Form data (key-value pairs). The related information is returned in+--     two Block objects, each of type @KEY_VALUE_SET@: a KEY @Block@+--     object and a VALUE @Block@ object. For example, /Name: Ana Silva+--     Carolina/ contains a key and value. /Name:/ is the key. /Ana Silva+--     Carolina/ is the value.+--+-- -   Table and table cell data. A TABLE @Block@ object contains+--     information about a detected table. A CELL @Block@ object is+--     returned for each cell in a table.+--+-- -   Lines and words of text. A LINE @Block@ object contains one or more+--     WORD @Block@ objects. All lines and words that are detected in the+--     document are returned (including text that doesn\'t have a+--     relationship with the value of the @StartDocumentAnalysis@+--     @FeatureTypes@ input parameter).+--+-- -   Query. A QUERY Block object contains the query text, alias and link+--     to the associated Query results block object.+--+-- -   Query Results. A QUERY_RESULT Block object contains the answer to+--     the query and an ID that connects it to the query asked. This Block+--     also contains a confidence score.+--+-- While processing a document with queries, look out for+-- @INVALID_REQUEST_PARAMETERS@ output. This indicates that either the per+-- page query limit has been exceeded or that the operation is trying to+-- query a page in the document which doesn’t exist.+--+-- Selection elements such as check boxes and option buttons (radio+-- buttons) can be detected in form data and in tables. A SELECTION_ELEMENT+-- @Block@ object contains information about a selection element, including+-- the selection status.+--+-- Use the @MaxResults@ parameter to limit the number of blocks that are+-- returned. If there are more results than specified in @MaxResults@, the+-- value of @NextToken@ in the operation response contains a pagination+-- token for getting the next set of results. To get the next page of+-- results, call @GetDocumentAnalysis@, and populate the @NextToken@+-- request parameter with the token value that\'s returned from the+-- previous call to @GetDocumentAnalysis@.+--+-- For more information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/how-it-works-analyzing.html Document Text Analysis>.+module Amazonka.Textract.GetDocumentAnalysis+  ( -- * Creating a Request+    GetDocumentAnalysis (..),+    newGetDocumentAnalysis,++    -- * Request Lenses+    getDocumentAnalysis_maxResults,+    getDocumentAnalysis_nextToken,+    getDocumentAnalysis_jobId,++    -- * Destructuring the Response+    GetDocumentAnalysisResponse (..),+    newGetDocumentAnalysisResponse,++    -- * Response Lenses+    getDocumentAnalysisResponse_analyzeDocumentModelVersion,+    getDocumentAnalysisResponse_blocks,+    getDocumentAnalysisResponse_documentMetadata,+    getDocumentAnalysisResponse_jobStatus,+    getDocumentAnalysisResponse_nextToken,+    getDocumentAnalysisResponse_statusMessage,+    getDocumentAnalysisResponse_warnings,+    getDocumentAnalysisResponse_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.Textract.Types++-- | /See:/ 'newGetDocumentAnalysis' smart constructor.+data GetDocumentAnalysis = GetDocumentAnalysis'+  { -- | The maximum number of results to return per paginated call. The largest+    -- value that you can specify is 1,000. If you specify a value greater than+    -- 1,000, a maximum of 1,000 results is returned. The default value is+    -- 1,000.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | If the previous response was incomplete (because there are more blocks+    -- to retrieve), Amazon Textract returns a pagination token in the+    -- response. You can use this pagination token to retrieve the next set of+    -- blocks.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the text-detection job. The @JobId@ is returned+    -- from @StartDocumentAnalysis@. A @JobId@ value is only valid for 7 days.+    jobId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDocumentAnalysis' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getDocumentAnalysis_maxResults' - The maximum number of results to return per paginated call. The largest+-- value that you can specify is 1,000. If you specify a value greater than+-- 1,000, a maximum of 1,000 results is returned. The default value is+-- 1,000.+--+-- 'nextToken', 'getDocumentAnalysis_nextToken' - If the previous response was incomplete (because there are more blocks+-- to retrieve), Amazon Textract returns a pagination token in the+-- response. You can use this pagination token to retrieve the next set of+-- blocks.+--+-- 'jobId', 'getDocumentAnalysis_jobId' - A unique identifier for the text-detection job. The @JobId@ is returned+-- from @StartDocumentAnalysis@. A @JobId@ value is only valid for 7 days.+newGetDocumentAnalysis ::+  -- | 'jobId'+  Prelude.Text ->+  GetDocumentAnalysis+newGetDocumentAnalysis pJobId_ =+  GetDocumentAnalysis'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      jobId = pJobId_+    }++-- | The maximum number of results to return per paginated call. The largest+-- value that you can specify is 1,000. If you specify a value greater than+-- 1,000, a maximum of 1,000 results is returned. The default value is+-- 1,000.+getDocumentAnalysis_maxResults :: Lens.Lens' GetDocumentAnalysis (Prelude.Maybe Prelude.Natural)+getDocumentAnalysis_maxResults = Lens.lens (\GetDocumentAnalysis' {maxResults} -> maxResults) (\s@GetDocumentAnalysis' {} a -> s {maxResults = a} :: GetDocumentAnalysis)++-- | If the previous response was incomplete (because there are more blocks+-- to retrieve), Amazon Textract returns a pagination token in the+-- response. You can use this pagination token to retrieve the next set of+-- blocks.+getDocumentAnalysis_nextToken :: Lens.Lens' GetDocumentAnalysis (Prelude.Maybe Prelude.Text)+getDocumentAnalysis_nextToken = Lens.lens (\GetDocumentAnalysis' {nextToken} -> nextToken) (\s@GetDocumentAnalysis' {} a -> s {nextToken = a} :: GetDocumentAnalysis)++-- | A unique identifier for the text-detection job. The @JobId@ is returned+-- from @StartDocumentAnalysis@. A @JobId@ value is only valid for 7 days.+getDocumentAnalysis_jobId :: Lens.Lens' GetDocumentAnalysis Prelude.Text+getDocumentAnalysis_jobId = Lens.lens (\GetDocumentAnalysis' {jobId} -> jobId) (\s@GetDocumentAnalysis' {} a -> s {jobId = a} :: GetDocumentAnalysis)++instance Core.AWSRequest GetDocumentAnalysis where+  type+    AWSResponse GetDocumentAnalysis =+      GetDocumentAnalysisResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDocumentAnalysisResponse'+            Prelude.<$> (x Data..?> "AnalyzeDocumentModelVersion")+            Prelude.<*> (x Data..?> "Blocks" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "DocumentMetadata")+            Prelude.<*> (x Data..?> "JobStatus")+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "StatusMessage")+            Prelude.<*> (x Data..?> "Warnings" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetDocumentAnalysis where+  hashWithSalt _salt GetDocumentAnalysis' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` jobId++instance Prelude.NFData GetDocumentAnalysis where+  rnf GetDocumentAnalysis' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf jobId++instance Data.ToHeaders GetDocumentAnalysis where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "Textract.GetDocumentAnalysis" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetDocumentAnalysis where+  toJSON GetDocumentAnalysis' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("JobId" Data..= jobId)+          ]+      )++instance Data.ToPath GetDocumentAnalysis where+  toPath = Prelude.const "/"++instance Data.ToQuery GetDocumentAnalysis where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetDocumentAnalysisResponse' smart constructor.+data GetDocumentAnalysisResponse = GetDocumentAnalysisResponse'+  { analyzeDocumentModelVersion :: Prelude.Maybe Prelude.Text,+    -- | The results of the text-analysis operation.+    blocks :: Prelude.Maybe [Block],+    -- | Information about a document that Amazon Textract processed.+    -- @DocumentMetadata@ is returned in every page of paginated responses from+    -- an Amazon Textract video operation.+    documentMetadata :: Prelude.Maybe DocumentMetadata,+    -- | The current status of the text detection job.+    jobStatus :: Prelude.Maybe JobStatus,+    -- | If the response is truncated, Amazon Textract returns this token. You+    -- can use this token in the subsequent request to retrieve the next set of+    -- text detection results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Returns if the detection job could not be completed. Contains+    -- explanation for what error occured.+    statusMessage :: Prelude.Maybe Prelude.Text,+    -- | A list of warnings that occurred during the document-analysis operation.+    warnings :: Prelude.Maybe [Warning],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDocumentAnalysisResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analyzeDocumentModelVersion', 'getDocumentAnalysisResponse_analyzeDocumentModelVersion' -+--+-- 'blocks', 'getDocumentAnalysisResponse_blocks' - The results of the text-analysis operation.+--+-- 'documentMetadata', 'getDocumentAnalysisResponse_documentMetadata' - Information about a document that Amazon Textract processed.+-- @DocumentMetadata@ is returned in every page of paginated responses from+-- an Amazon Textract video operation.+--+-- 'jobStatus', 'getDocumentAnalysisResponse_jobStatus' - The current status of the text detection job.+--+-- 'nextToken', 'getDocumentAnalysisResponse_nextToken' - If the response is truncated, Amazon Textract returns this token. You+-- can use this token in the subsequent request to retrieve the next set of+-- text detection results.+--+-- 'statusMessage', 'getDocumentAnalysisResponse_statusMessage' - Returns if the detection job could not be completed. Contains+-- explanation for what error occured.+--+-- 'warnings', 'getDocumentAnalysisResponse_warnings' - A list of warnings that occurred during the document-analysis operation.+--+-- 'httpStatus', 'getDocumentAnalysisResponse_httpStatus' - The response's http status code.+newGetDocumentAnalysisResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetDocumentAnalysisResponse+newGetDocumentAnalysisResponse pHttpStatus_ =+  GetDocumentAnalysisResponse'+    { analyzeDocumentModelVersion =+        Prelude.Nothing,+      blocks = Prelude.Nothing,+      documentMetadata = Prelude.Nothing,+      jobStatus = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      statusMessage = Prelude.Nothing,+      warnings = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++getDocumentAnalysisResponse_analyzeDocumentModelVersion :: Lens.Lens' GetDocumentAnalysisResponse (Prelude.Maybe Prelude.Text)+getDocumentAnalysisResponse_analyzeDocumentModelVersion = Lens.lens (\GetDocumentAnalysisResponse' {analyzeDocumentModelVersion} -> analyzeDocumentModelVersion) (\s@GetDocumentAnalysisResponse' {} a -> s {analyzeDocumentModelVersion = a} :: GetDocumentAnalysisResponse)++-- | The results of the text-analysis operation.+getDocumentAnalysisResponse_blocks :: Lens.Lens' GetDocumentAnalysisResponse (Prelude.Maybe [Block])+getDocumentAnalysisResponse_blocks = Lens.lens (\GetDocumentAnalysisResponse' {blocks} -> blocks) (\s@GetDocumentAnalysisResponse' {} a -> s {blocks = a} :: GetDocumentAnalysisResponse) Prelude.. Lens.mapping Lens.coerced++-- | Information about a document that Amazon Textract processed.+-- @DocumentMetadata@ is returned in every page of paginated responses from+-- an Amazon Textract video operation.+getDocumentAnalysisResponse_documentMetadata :: Lens.Lens' GetDocumentAnalysisResponse (Prelude.Maybe DocumentMetadata)+getDocumentAnalysisResponse_documentMetadata = Lens.lens (\GetDocumentAnalysisResponse' {documentMetadata} -> documentMetadata) (\s@GetDocumentAnalysisResponse' {} a -> s {documentMetadata = a} :: GetDocumentAnalysisResponse)++-- | The current status of the text detection job.+getDocumentAnalysisResponse_jobStatus :: Lens.Lens' GetDocumentAnalysisResponse (Prelude.Maybe JobStatus)+getDocumentAnalysisResponse_jobStatus = Lens.lens (\GetDocumentAnalysisResponse' {jobStatus} -> jobStatus) (\s@GetDocumentAnalysisResponse' {} a -> s {jobStatus = a} :: GetDocumentAnalysisResponse)++-- | If the response is truncated, Amazon Textract returns this token. You+-- can use this token in the subsequent request to retrieve the next set of+-- text detection results.+getDocumentAnalysisResponse_nextToken :: Lens.Lens' GetDocumentAnalysisResponse (Prelude.Maybe Prelude.Text)+getDocumentAnalysisResponse_nextToken = Lens.lens (\GetDocumentAnalysisResponse' {nextToken} -> nextToken) (\s@GetDocumentAnalysisResponse' {} a -> s {nextToken = a} :: GetDocumentAnalysisResponse)++-- | Returns if the detection job could not be completed. Contains+-- explanation for what error occured.+getDocumentAnalysisResponse_statusMessage :: Lens.Lens' GetDocumentAnalysisResponse (Prelude.Maybe Prelude.Text)+getDocumentAnalysisResponse_statusMessage = Lens.lens (\GetDocumentAnalysisResponse' {statusMessage} -> statusMessage) (\s@GetDocumentAnalysisResponse' {} a -> s {statusMessage = a} :: GetDocumentAnalysisResponse)++-- | A list of warnings that occurred during the document-analysis operation.+getDocumentAnalysisResponse_warnings :: Lens.Lens' GetDocumentAnalysisResponse (Prelude.Maybe [Warning])+getDocumentAnalysisResponse_warnings = Lens.lens (\GetDocumentAnalysisResponse' {warnings} -> warnings) (\s@GetDocumentAnalysisResponse' {} a -> s {warnings = a} :: GetDocumentAnalysisResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getDocumentAnalysisResponse_httpStatus :: Lens.Lens' GetDocumentAnalysisResponse Prelude.Int+getDocumentAnalysisResponse_httpStatus = Lens.lens (\GetDocumentAnalysisResponse' {httpStatus} -> httpStatus) (\s@GetDocumentAnalysisResponse' {} a -> s {httpStatus = a} :: GetDocumentAnalysisResponse)++instance Prelude.NFData GetDocumentAnalysisResponse where+  rnf GetDocumentAnalysisResponse' {..} =+    Prelude.rnf analyzeDocumentModelVersion+      `Prelude.seq` Prelude.rnf blocks+      `Prelude.seq` Prelude.rnf documentMetadata+      `Prelude.seq` Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf statusMessage+      `Prelude.seq` Prelude.rnf warnings+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/GetDocumentTextDetection.hs view
@@ -0,0 +1,348 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.GetDocumentTextDetection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets the results for an Amazon Textract asynchronous operation that+-- detects text in a document. Amazon Textract can detect lines of text and+-- the words that make up a line of text.+--+-- You start asynchronous text detection by calling+-- StartDocumentTextDetection, which returns a job identifier (@JobId@).+-- When the text detection operation finishes, Amazon Textract publishes a+-- completion status to the Amazon Simple Notification Service (Amazon SNS)+-- topic that\'s registered in the initial call to+-- @StartDocumentTextDetection@. To get the results of the text-detection+-- operation, first check that the status value published to the Amazon SNS+-- topic is @SUCCEEDED@. If so, call @GetDocumentTextDetection@, and pass+-- the job identifier (@JobId@) from the initial call to+-- @StartDocumentTextDetection@.+--+-- @GetDocumentTextDetection@ returns an array of Block objects.+--+-- Each document page has as an associated @Block@ of type PAGE. Each PAGE+-- @Block@ object is the parent of LINE @Block@ objects that represent the+-- lines of detected text on a page. A LINE @Block@ object is a parent for+-- each word that makes up the line. Words are represented by @Block@+-- objects of type WORD.+--+-- Use the MaxResults parameter to limit the number of blocks that are+-- returned. If there are more results than specified in @MaxResults@, the+-- value of @NextToken@ in the operation response contains a pagination+-- token for getting the next set of results. To get the next page of+-- results, call @GetDocumentTextDetection@, and populate the @NextToken@+-- request parameter with the token value that\'s returned from the+-- previous call to @GetDocumentTextDetection@.+--+-- For more information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/how-it-works-detecting.html Document Text Detection>.+module Amazonka.Textract.GetDocumentTextDetection+  ( -- * Creating a Request+    GetDocumentTextDetection (..),+    newGetDocumentTextDetection,++    -- * Request Lenses+    getDocumentTextDetection_maxResults,+    getDocumentTextDetection_nextToken,+    getDocumentTextDetection_jobId,++    -- * Destructuring the Response+    GetDocumentTextDetectionResponse (..),+    newGetDocumentTextDetectionResponse,++    -- * Response Lenses+    getDocumentTextDetectionResponse_blocks,+    getDocumentTextDetectionResponse_detectDocumentTextModelVersion,+    getDocumentTextDetectionResponse_documentMetadata,+    getDocumentTextDetectionResponse_jobStatus,+    getDocumentTextDetectionResponse_nextToken,+    getDocumentTextDetectionResponse_statusMessage,+    getDocumentTextDetectionResponse_warnings,+    getDocumentTextDetectionResponse_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.Textract.Types++-- | /See:/ 'newGetDocumentTextDetection' smart constructor.+data GetDocumentTextDetection = GetDocumentTextDetection'+  { -- | The maximum number of results to return per paginated call. The largest+    -- value you can specify is 1,000. If you specify a value greater than+    -- 1,000, a maximum of 1,000 results is returned. The default value is+    -- 1,000.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | If the previous response was incomplete (because there are more blocks+    -- to retrieve), Amazon Textract returns a pagination token in the+    -- response. You can use this pagination token to retrieve the next set of+    -- blocks.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the text detection job. The @JobId@ is returned+    -- from @StartDocumentTextDetection@. A @JobId@ value is only valid for 7+    -- days.+    jobId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDocumentTextDetection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getDocumentTextDetection_maxResults' - The maximum number of results to return per paginated call. The largest+-- value you can specify is 1,000. If you specify a value greater than+-- 1,000, a maximum of 1,000 results is returned. The default value is+-- 1,000.+--+-- 'nextToken', 'getDocumentTextDetection_nextToken' - If the previous response was incomplete (because there are more blocks+-- to retrieve), Amazon Textract returns a pagination token in the+-- response. You can use this pagination token to retrieve the next set of+-- blocks.+--+-- 'jobId', 'getDocumentTextDetection_jobId' - A unique identifier for the text detection job. The @JobId@ is returned+-- from @StartDocumentTextDetection@. A @JobId@ value is only valid for 7+-- days.+newGetDocumentTextDetection ::+  -- | 'jobId'+  Prelude.Text ->+  GetDocumentTextDetection+newGetDocumentTextDetection pJobId_ =+  GetDocumentTextDetection'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      jobId = pJobId_+    }++-- | The maximum number of results to return per paginated call. The largest+-- value you can specify is 1,000. If you specify a value greater than+-- 1,000, a maximum of 1,000 results is returned. The default value is+-- 1,000.+getDocumentTextDetection_maxResults :: Lens.Lens' GetDocumentTextDetection (Prelude.Maybe Prelude.Natural)+getDocumentTextDetection_maxResults = Lens.lens (\GetDocumentTextDetection' {maxResults} -> maxResults) (\s@GetDocumentTextDetection' {} a -> s {maxResults = a} :: GetDocumentTextDetection)++-- | If the previous response was incomplete (because there are more blocks+-- to retrieve), Amazon Textract returns a pagination token in the+-- response. You can use this pagination token to retrieve the next set of+-- blocks.+getDocumentTextDetection_nextToken :: Lens.Lens' GetDocumentTextDetection (Prelude.Maybe Prelude.Text)+getDocumentTextDetection_nextToken = Lens.lens (\GetDocumentTextDetection' {nextToken} -> nextToken) (\s@GetDocumentTextDetection' {} a -> s {nextToken = a} :: GetDocumentTextDetection)++-- | A unique identifier for the text detection job. The @JobId@ is returned+-- from @StartDocumentTextDetection@. A @JobId@ value is only valid for 7+-- days.+getDocumentTextDetection_jobId :: Lens.Lens' GetDocumentTextDetection Prelude.Text+getDocumentTextDetection_jobId = Lens.lens (\GetDocumentTextDetection' {jobId} -> jobId) (\s@GetDocumentTextDetection' {} a -> s {jobId = a} :: GetDocumentTextDetection)++instance Core.AWSRequest GetDocumentTextDetection where+  type+    AWSResponse GetDocumentTextDetection =+      GetDocumentTextDetectionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDocumentTextDetectionResponse'+            Prelude.<$> (x Data..?> "Blocks" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "DetectDocumentTextModelVersion")+            Prelude.<*> (x Data..?> "DocumentMetadata")+            Prelude.<*> (x Data..?> "JobStatus")+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "StatusMessage")+            Prelude.<*> (x Data..?> "Warnings" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetDocumentTextDetection where+  hashWithSalt _salt GetDocumentTextDetection' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` jobId++instance Prelude.NFData GetDocumentTextDetection where+  rnf GetDocumentTextDetection' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf jobId++instance Data.ToHeaders GetDocumentTextDetection where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "Textract.GetDocumentTextDetection" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetDocumentTextDetection where+  toJSON GetDocumentTextDetection' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("JobId" Data..= jobId)+          ]+      )++instance Data.ToPath GetDocumentTextDetection where+  toPath = Prelude.const "/"++instance Data.ToQuery GetDocumentTextDetection where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetDocumentTextDetectionResponse' smart constructor.+data GetDocumentTextDetectionResponse = GetDocumentTextDetectionResponse'+  { -- | The results of the text-detection operation.+    blocks :: Prelude.Maybe [Block],+    detectDocumentTextModelVersion :: Prelude.Maybe Prelude.Text,+    -- | Information about a document that Amazon Textract processed.+    -- @DocumentMetadata@ is returned in every page of paginated responses from+    -- an Amazon Textract video operation.+    documentMetadata :: Prelude.Maybe DocumentMetadata,+    -- | The current status of the text detection job.+    jobStatus :: Prelude.Maybe JobStatus,+    -- | If the response is truncated, Amazon Textract returns this token. You+    -- can use this token in the subsequent request to retrieve the next set of+    -- text-detection results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Returns if the detection job could not be completed. Contains+    -- explanation for what error occured.+    statusMessage :: Prelude.Maybe Prelude.Text,+    -- | A list of warnings that occurred during the text-detection operation for+    -- the document.+    warnings :: Prelude.Maybe [Warning],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDocumentTextDetectionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'blocks', 'getDocumentTextDetectionResponse_blocks' - The results of the text-detection operation.+--+-- 'detectDocumentTextModelVersion', 'getDocumentTextDetectionResponse_detectDocumentTextModelVersion' -+--+-- 'documentMetadata', 'getDocumentTextDetectionResponse_documentMetadata' - Information about a document that Amazon Textract processed.+-- @DocumentMetadata@ is returned in every page of paginated responses from+-- an Amazon Textract video operation.+--+-- 'jobStatus', 'getDocumentTextDetectionResponse_jobStatus' - The current status of the text detection job.+--+-- 'nextToken', 'getDocumentTextDetectionResponse_nextToken' - If the response is truncated, Amazon Textract returns this token. You+-- can use this token in the subsequent request to retrieve the next set of+-- text-detection results.+--+-- 'statusMessage', 'getDocumentTextDetectionResponse_statusMessage' - Returns if the detection job could not be completed. Contains+-- explanation for what error occured.+--+-- 'warnings', 'getDocumentTextDetectionResponse_warnings' - A list of warnings that occurred during the text-detection operation for+-- the document.+--+-- 'httpStatus', 'getDocumentTextDetectionResponse_httpStatus' - The response's http status code.+newGetDocumentTextDetectionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetDocumentTextDetectionResponse+newGetDocumentTextDetectionResponse pHttpStatus_ =+  GetDocumentTextDetectionResponse'+    { blocks =+        Prelude.Nothing,+      detectDocumentTextModelVersion =+        Prelude.Nothing,+      documentMetadata = Prelude.Nothing,+      jobStatus = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      statusMessage = Prelude.Nothing,+      warnings = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The results of the text-detection operation.+getDocumentTextDetectionResponse_blocks :: Lens.Lens' GetDocumentTextDetectionResponse (Prelude.Maybe [Block])+getDocumentTextDetectionResponse_blocks = Lens.lens (\GetDocumentTextDetectionResponse' {blocks} -> blocks) (\s@GetDocumentTextDetectionResponse' {} a -> s {blocks = a} :: GetDocumentTextDetectionResponse) Prelude.. Lens.mapping Lens.coerced++getDocumentTextDetectionResponse_detectDocumentTextModelVersion :: Lens.Lens' GetDocumentTextDetectionResponse (Prelude.Maybe Prelude.Text)+getDocumentTextDetectionResponse_detectDocumentTextModelVersion = Lens.lens (\GetDocumentTextDetectionResponse' {detectDocumentTextModelVersion} -> detectDocumentTextModelVersion) (\s@GetDocumentTextDetectionResponse' {} a -> s {detectDocumentTextModelVersion = a} :: GetDocumentTextDetectionResponse)++-- | Information about a document that Amazon Textract processed.+-- @DocumentMetadata@ is returned in every page of paginated responses from+-- an Amazon Textract video operation.+getDocumentTextDetectionResponse_documentMetadata :: Lens.Lens' GetDocumentTextDetectionResponse (Prelude.Maybe DocumentMetadata)+getDocumentTextDetectionResponse_documentMetadata = Lens.lens (\GetDocumentTextDetectionResponse' {documentMetadata} -> documentMetadata) (\s@GetDocumentTextDetectionResponse' {} a -> s {documentMetadata = a} :: GetDocumentTextDetectionResponse)++-- | The current status of the text detection job.+getDocumentTextDetectionResponse_jobStatus :: Lens.Lens' GetDocumentTextDetectionResponse (Prelude.Maybe JobStatus)+getDocumentTextDetectionResponse_jobStatus = Lens.lens (\GetDocumentTextDetectionResponse' {jobStatus} -> jobStatus) (\s@GetDocumentTextDetectionResponse' {} a -> s {jobStatus = a} :: GetDocumentTextDetectionResponse)++-- | If the response is truncated, Amazon Textract returns this token. You+-- can use this token in the subsequent request to retrieve the next set of+-- text-detection results.+getDocumentTextDetectionResponse_nextToken :: Lens.Lens' GetDocumentTextDetectionResponse (Prelude.Maybe Prelude.Text)+getDocumentTextDetectionResponse_nextToken = Lens.lens (\GetDocumentTextDetectionResponse' {nextToken} -> nextToken) (\s@GetDocumentTextDetectionResponse' {} a -> s {nextToken = a} :: GetDocumentTextDetectionResponse)++-- | Returns if the detection job could not be completed. Contains+-- explanation for what error occured.+getDocumentTextDetectionResponse_statusMessage :: Lens.Lens' GetDocumentTextDetectionResponse (Prelude.Maybe Prelude.Text)+getDocumentTextDetectionResponse_statusMessage = Lens.lens (\GetDocumentTextDetectionResponse' {statusMessage} -> statusMessage) (\s@GetDocumentTextDetectionResponse' {} a -> s {statusMessage = a} :: GetDocumentTextDetectionResponse)++-- | A list of warnings that occurred during the text-detection operation for+-- the document.+getDocumentTextDetectionResponse_warnings :: Lens.Lens' GetDocumentTextDetectionResponse (Prelude.Maybe [Warning])+getDocumentTextDetectionResponse_warnings = Lens.lens (\GetDocumentTextDetectionResponse' {warnings} -> warnings) (\s@GetDocumentTextDetectionResponse' {} a -> s {warnings = a} :: GetDocumentTextDetectionResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getDocumentTextDetectionResponse_httpStatus :: Lens.Lens' GetDocumentTextDetectionResponse Prelude.Int+getDocumentTextDetectionResponse_httpStatus = Lens.lens (\GetDocumentTextDetectionResponse' {httpStatus} -> httpStatus) (\s@GetDocumentTextDetectionResponse' {} a -> s {httpStatus = a} :: GetDocumentTextDetectionResponse)++instance+  Prelude.NFData+    GetDocumentTextDetectionResponse+  where+  rnf GetDocumentTextDetectionResponse' {..} =+    Prelude.rnf blocks+      `Prelude.seq` Prelude.rnf detectDocumentTextModelVersion+      `Prelude.seq` Prelude.rnf documentMetadata+      `Prelude.seq` Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf statusMessage+      `Prelude.seq` Prelude.rnf warnings+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/GetExpenseAnalysis.hs view
@@ -0,0 +1,335 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.GetExpenseAnalysis+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets the results for an Amazon Textract asynchronous operation that+-- analyzes invoices and receipts. Amazon Textract finds contact+-- information, items purchased, and vendor name, from input invoices and+-- receipts.+--+-- You start asynchronous invoice\/receipt analysis by calling+-- StartExpenseAnalysis, which returns a job identifier (@JobId@). Upon+-- completion of the invoice\/receipt analysis, Amazon Textract publishes+-- the completion status to the Amazon Simple Notification Service (Amazon+-- SNS) topic. This topic must be registered in the initial call to+-- @StartExpenseAnalysis@. To get the results of the invoice\/receipt+-- analysis operation, first ensure that the status value published to the+-- Amazon SNS topic is @SUCCEEDED@. If so, call @GetExpenseAnalysis@, and+-- pass the job identifier (@JobId@) from the initial call to+-- @StartExpenseAnalysis@.+--+-- Use the MaxResults parameter to limit the number of blocks that are+-- returned. If there are more results than specified in @MaxResults@, the+-- value of @NextToken@ in the operation response contains a pagination+-- token for getting the next set of results. To get the next page of+-- results, call @GetExpenseAnalysis@, and populate the @NextToken@ request+-- parameter with the token value that\'s returned from the previous call+-- to @GetExpenseAnalysis@.+--+-- For more information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/invoices-receipts.html Analyzing Invoices and Receipts>.+module Amazonka.Textract.GetExpenseAnalysis+  ( -- * Creating a Request+    GetExpenseAnalysis (..),+    newGetExpenseAnalysis,++    -- * Request Lenses+    getExpenseAnalysis_maxResults,+    getExpenseAnalysis_nextToken,+    getExpenseAnalysis_jobId,++    -- * Destructuring the Response+    GetExpenseAnalysisResponse (..),+    newGetExpenseAnalysisResponse,++    -- * Response Lenses+    getExpenseAnalysisResponse_analyzeExpenseModelVersion,+    getExpenseAnalysisResponse_documentMetadata,+    getExpenseAnalysisResponse_expenseDocuments,+    getExpenseAnalysisResponse_jobStatus,+    getExpenseAnalysisResponse_nextToken,+    getExpenseAnalysisResponse_statusMessage,+    getExpenseAnalysisResponse_warnings,+    getExpenseAnalysisResponse_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.Textract.Types++-- | /See:/ 'newGetExpenseAnalysis' smart constructor.+data GetExpenseAnalysis = GetExpenseAnalysis'+  { -- | The maximum number of results to return per paginated call. The largest+    -- value you can specify is 20. If you specify a value greater than 20, a+    -- maximum of 20 results is returned. The default value is 20.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | If the previous response was incomplete (because there are more blocks+    -- to retrieve), Amazon Textract returns a pagination token in the+    -- response. You can use this pagination token to retrieve the next set of+    -- blocks.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the text detection job. The @JobId@ is returned+    -- from @StartExpenseAnalysis@. A @JobId@ value is only valid for 7 days.+    jobId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetExpenseAnalysis' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getExpenseAnalysis_maxResults' - The maximum number of results to return per paginated call. The largest+-- value you can specify is 20. If you specify a value greater than 20, a+-- maximum of 20 results is returned. The default value is 20.+--+-- 'nextToken', 'getExpenseAnalysis_nextToken' - If the previous response was incomplete (because there are more blocks+-- to retrieve), Amazon Textract returns a pagination token in the+-- response. You can use this pagination token to retrieve the next set of+-- blocks.+--+-- 'jobId', 'getExpenseAnalysis_jobId' - A unique identifier for the text detection job. The @JobId@ is returned+-- from @StartExpenseAnalysis@. A @JobId@ value is only valid for 7 days.+newGetExpenseAnalysis ::+  -- | 'jobId'+  Prelude.Text ->+  GetExpenseAnalysis+newGetExpenseAnalysis pJobId_ =+  GetExpenseAnalysis'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      jobId = pJobId_+    }++-- | The maximum number of results to return per paginated call. The largest+-- value you can specify is 20. If you specify a value greater than 20, a+-- maximum of 20 results is returned. The default value is 20.+getExpenseAnalysis_maxResults :: Lens.Lens' GetExpenseAnalysis (Prelude.Maybe Prelude.Natural)+getExpenseAnalysis_maxResults = Lens.lens (\GetExpenseAnalysis' {maxResults} -> maxResults) (\s@GetExpenseAnalysis' {} a -> s {maxResults = a} :: GetExpenseAnalysis)++-- | If the previous response was incomplete (because there are more blocks+-- to retrieve), Amazon Textract returns a pagination token in the+-- response. You can use this pagination token to retrieve the next set of+-- blocks.+getExpenseAnalysis_nextToken :: Lens.Lens' GetExpenseAnalysis (Prelude.Maybe Prelude.Text)+getExpenseAnalysis_nextToken = Lens.lens (\GetExpenseAnalysis' {nextToken} -> nextToken) (\s@GetExpenseAnalysis' {} a -> s {nextToken = a} :: GetExpenseAnalysis)++-- | A unique identifier for the text detection job. The @JobId@ is returned+-- from @StartExpenseAnalysis@. A @JobId@ value is only valid for 7 days.+getExpenseAnalysis_jobId :: Lens.Lens' GetExpenseAnalysis Prelude.Text+getExpenseAnalysis_jobId = Lens.lens (\GetExpenseAnalysis' {jobId} -> jobId) (\s@GetExpenseAnalysis' {} a -> s {jobId = a} :: GetExpenseAnalysis)++instance Core.AWSRequest GetExpenseAnalysis where+  type+    AWSResponse GetExpenseAnalysis =+      GetExpenseAnalysisResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetExpenseAnalysisResponse'+            Prelude.<$> (x Data..?> "AnalyzeExpenseModelVersion")+            Prelude.<*> (x Data..?> "DocumentMetadata")+            Prelude.<*> ( x+                            Data..?> "ExpenseDocuments"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "JobStatus")+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "StatusMessage")+            Prelude.<*> (x Data..?> "Warnings" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetExpenseAnalysis where+  hashWithSalt _salt GetExpenseAnalysis' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` jobId++instance Prelude.NFData GetExpenseAnalysis where+  rnf GetExpenseAnalysis' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf jobId++instance Data.ToHeaders GetExpenseAnalysis where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "Textract.GetExpenseAnalysis" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetExpenseAnalysis where+  toJSON GetExpenseAnalysis' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("JobId" Data..= jobId)+          ]+      )++instance Data.ToPath GetExpenseAnalysis where+  toPath = Prelude.const "/"++instance Data.ToQuery GetExpenseAnalysis where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetExpenseAnalysisResponse' smart constructor.+data GetExpenseAnalysisResponse = GetExpenseAnalysisResponse'+  { -- | The current model version of AnalyzeExpense.+    analyzeExpenseModelVersion :: Prelude.Maybe Prelude.Text,+    -- | Information about a document that Amazon Textract processed.+    -- @DocumentMetadata@ is returned in every page of paginated responses from+    -- an Amazon Textract operation.+    documentMetadata :: Prelude.Maybe DocumentMetadata,+    -- | The expenses detected by Amazon Textract.+    expenseDocuments :: Prelude.Maybe [ExpenseDocument],+    -- | The current status of the text detection job.+    jobStatus :: Prelude.Maybe JobStatus,+    -- | If the response is truncated, Amazon Textract returns this token. You+    -- can use this token in the subsequent request to retrieve the next set of+    -- text-detection results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Returns if the detection job could not be completed. Contains+    -- explanation for what error occured.+    statusMessage :: Prelude.Maybe Prelude.Text,+    -- | A list of warnings that occurred during the text-detection operation for+    -- the document.+    warnings :: Prelude.Maybe [Warning],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetExpenseAnalysisResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analyzeExpenseModelVersion', 'getExpenseAnalysisResponse_analyzeExpenseModelVersion' - The current model version of AnalyzeExpense.+--+-- 'documentMetadata', 'getExpenseAnalysisResponse_documentMetadata' - Information about a document that Amazon Textract processed.+-- @DocumentMetadata@ is returned in every page of paginated responses from+-- an Amazon Textract operation.+--+-- 'expenseDocuments', 'getExpenseAnalysisResponse_expenseDocuments' - The expenses detected by Amazon Textract.+--+-- 'jobStatus', 'getExpenseAnalysisResponse_jobStatus' - The current status of the text detection job.+--+-- 'nextToken', 'getExpenseAnalysisResponse_nextToken' - If the response is truncated, Amazon Textract returns this token. You+-- can use this token in the subsequent request to retrieve the next set of+-- text-detection results.+--+-- 'statusMessage', 'getExpenseAnalysisResponse_statusMessage' - Returns if the detection job could not be completed. Contains+-- explanation for what error occured.+--+-- 'warnings', 'getExpenseAnalysisResponse_warnings' - A list of warnings that occurred during the text-detection operation for+-- the document.+--+-- 'httpStatus', 'getExpenseAnalysisResponse_httpStatus' - The response's http status code.+newGetExpenseAnalysisResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetExpenseAnalysisResponse+newGetExpenseAnalysisResponse pHttpStatus_ =+  GetExpenseAnalysisResponse'+    { analyzeExpenseModelVersion =+        Prelude.Nothing,+      documentMetadata = Prelude.Nothing,+      expenseDocuments = Prelude.Nothing,+      jobStatus = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      statusMessage = Prelude.Nothing,+      warnings = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The current model version of AnalyzeExpense.+getExpenseAnalysisResponse_analyzeExpenseModelVersion :: Lens.Lens' GetExpenseAnalysisResponse (Prelude.Maybe Prelude.Text)+getExpenseAnalysisResponse_analyzeExpenseModelVersion = Lens.lens (\GetExpenseAnalysisResponse' {analyzeExpenseModelVersion} -> analyzeExpenseModelVersion) (\s@GetExpenseAnalysisResponse' {} a -> s {analyzeExpenseModelVersion = a} :: GetExpenseAnalysisResponse)++-- | Information about a document that Amazon Textract processed.+-- @DocumentMetadata@ is returned in every page of paginated responses from+-- an Amazon Textract operation.+getExpenseAnalysisResponse_documentMetadata :: Lens.Lens' GetExpenseAnalysisResponse (Prelude.Maybe DocumentMetadata)+getExpenseAnalysisResponse_documentMetadata = Lens.lens (\GetExpenseAnalysisResponse' {documentMetadata} -> documentMetadata) (\s@GetExpenseAnalysisResponse' {} a -> s {documentMetadata = a} :: GetExpenseAnalysisResponse)++-- | The expenses detected by Amazon Textract.+getExpenseAnalysisResponse_expenseDocuments :: Lens.Lens' GetExpenseAnalysisResponse (Prelude.Maybe [ExpenseDocument])+getExpenseAnalysisResponse_expenseDocuments = Lens.lens (\GetExpenseAnalysisResponse' {expenseDocuments} -> expenseDocuments) (\s@GetExpenseAnalysisResponse' {} a -> s {expenseDocuments = a} :: GetExpenseAnalysisResponse) Prelude.. Lens.mapping Lens.coerced++-- | The current status of the text detection job.+getExpenseAnalysisResponse_jobStatus :: Lens.Lens' GetExpenseAnalysisResponse (Prelude.Maybe JobStatus)+getExpenseAnalysisResponse_jobStatus = Lens.lens (\GetExpenseAnalysisResponse' {jobStatus} -> jobStatus) (\s@GetExpenseAnalysisResponse' {} a -> s {jobStatus = a} :: GetExpenseAnalysisResponse)++-- | If the response is truncated, Amazon Textract returns this token. You+-- can use this token in the subsequent request to retrieve the next set of+-- text-detection results.+getExpenseAnalysisResponse_nextToken :: Lens.Lens' GetExpenseAnalysisResponse (Prelude.Maybe Prelude.Text)+getExpenseAnalysisResponse_nextToken = Lens.lens (\GetExpenseAnalysisResponse' {nextToken} -> nextToken) (\s@GetExpenseAnalysisResponse' {} a -> s {nextToken = a} :: GetExpenseAnalysisResponse)++-- | Returns if the detection job could not be completed. Contains+-- explanation for what error occured.+getExpenseAnalysisResponse_statusMessage :: Lens.Lens' GetExpenseAnalysisResponse (Prelude.Maybe Prelude.Text)+getExpenseAnalysisResponse_statusMessage = Lens.lens (\GetExpenseAnalysisResponse' {statusMessage} -> statusMessage) (\s@GetExpenseAnalysisResponse' {} a -> s {statusMessage = a} :: GetExpenseAnalysisResponse)++-- | A list of warnings that occurred during the text-detection operation for+-- the document.+getExpenseAnalysisResponse_warnings :: Lens.Lens' GetExpenseAnalysisResponse (Prelude.Maybe [Warning])+getExpenseAnalysisResponse_warnings = Lens.lens (\GetExpenseAnalysisResponse' {warnings} -> warnings) (\s@GetExpenseAnalysisResponse' {} a -> s {warnings = a} :: GetExpenseAnalysisResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getExpenseAnalysisResponse_httpStatus :: Lens.Lens' GetExpenseAnalysisResponse Prelude.Int+getExpenseAnalysisResponse_httpStatus = Lens.lens (\GetExpenseAnalysisResponse' {httpStatus} -> httpStatus) (\s@GetExpenseAnalysisResponse' {} a -> s {httpStatus = a} :: GetExpenseAnalysisResponse)++instance Prelude.NFData GetExpenseAnalysisResponse where+  rnf GetExpenseAnalysisResponse' {..} =+    Prelude.rnf analyzeExpenseModelVersion+      `Prelude.seq` Prelude.rnf documentMetadata+      `Prelude.seq` Prelude.rnf expenseDocuments+      `Prelude.seq` Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf statusMessage+      `Prelude.seq` Prelude.rnf warnings+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/GetLendingAnalysis.hs view
@@ -0,0 +1,312 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.GetLendingAnalysis+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets the results for an Amazon Textract asynchronous operation that+-- analyzes text in a lending document.+--+-- You start asynchronous text analysis by calling @StartLendingAnalysis@,+-- which returns a job identifier (@JobId@). When the text analysis+-- operation finishes, Amazon Textract publishes a completion status to the+-- Amazon Simple Notification Service (Amazon SNS) topic that\'s registered+-- in the initial call to @StartLendingAnalysis@.+--+-- To get the results of the text analysis operation, first check that the+-- status value published to the Amazon SNS topic is SUCCEEDED. If so, call+-- GetLendingAnalysis, and pass the job identifier (@JobId@) from the+-- initial call to @StartLendingAnalysis@.+module Amazonka.Textract.GetLendingAnalysis+  ( -- * Creating a Request+    GetLendingAnalysis (..),+    newGetLendingAnalysis,++    -- * Request Lenses+    getLendingAnalysis_maxResults,+    getLendingAnalysis_nextToken,+    getLendingAnalysis_jobId,++    -- * Destructuring the Response+    GetLendingAnalysisResponse (..),+    newGetLendingAnalysisResponse,++    -- * Response Lenses+    getLendingAnalysisResponse_analyzeLendingModelVersion,+    getLendingAnalysisResponse_documentMetadata,+    getLendingAnalysisResponse_jobStatus,+    getLendingAnalysisResponse_nextToken,+    getLendingAnalysisResponse_results,+    getLendingAnalysisResponse_statusMessage,+    getLendingAnalysisResponse_warnings,+    getLendingAnalysisResponse_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.Textract.Types++-- | /See:/ 'newGetLendingAnalysis' smart constructor.+data GetLendingAnalysis = GetLendingAnalysis'+  { -- | The maximum number of results to return per paginated call. The largest+    -- value that you can specify is 30. If you specify a value greater than+    -- 30, a maximum of 30 results is returned. The default value is 30.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | If the previous response was incomplete, Amazon Textract returns a+    -- pagination token in the response. You can use this pagination token to+    -- retrieve the next set of lending results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A unique identifier for the lending or text-detection job. The @JobId@+    -- is returned from @StartLendingAnalysis@. A @JobId@ value is only valid+    -- for 7 days.+    jobId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetLendingAnalysis' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getLendingAnalysis_maxResults' - The maximum number of results to return per paginated call. The largest+-- value that you can specify is 30. If you specify a value greater than+-- 30, a maximum of 30 results is returned. The default value is 30.+--+-- 'nextToken', 'getLendingAnalysis_nextToken' - If the previous response was incomplete, Amazon Textract returns a+-- pagination token in the response. You can use this pagination token to+-- retrieve the next set of lending results.+--+-- 'jobId', 'getLendingAnalysis_jobId' - A unique identifier for the lending or text-detection job. The @JobId@+-- is returned from @StartLendingAnalysis@. A @JobId@ value is only valid+-- for 7 days.+newGetLendingAnalysis ::+  -- | 'jobId'+  Prelude.Text ->+  GetLendingAnalysis+newGetLendingAnalysis pJobId_ =+  GetLendingAnalysis'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      jobId = pJobId_+    }++-- | The maximum number of results to return per paginated call. The largest+-- value that you can specify is 30. If you specify a value greater than+-- 30, a maximum of 30 results is returned. The default value is 30.+getLendingAnalysis_maxResults :: Lens.Lens' GetLendingAnalysis (Prelude.Maybe Prelude.Natural)+getLendingAnalysis_maxResults = Lens.lens (\GetLendingAnalysis' {maxResults} -> maxResults) (\s@GetLendingAnalysis' {} a -> s {maxResults = a} :: GetLendingAnalysis)++-- | If the previous response was incomplete, Amazon Textract returns a+-- pagination token in the response. You can use this pagination token to+-- retrieve the next set of lending results.+getLendingAnalysis_nextToken :: Lens.Lens' GetLendingAnalysis (Prelude.Maybe Prelude.Text)+getLendingAnalysis_nextToken = Lens.lens (\GetLendingAnalysis' {nextToken} -> nextToken) (\s@GetLendingAnalysis' {} a -> s {nextToken = a} :: GetLendingAnalysis)++-- | A unique identifier for the lending or text-detection job. The @JobId@+-- is returned from @StartLendingAnalysis@. A @JobId@ value is only valid+-- for 7 days.+getLendingAnalysis_jobId :: Lens.Lens' GetLendingAnalysis Prelude.Text+getLendingAnalysis_jobId = Lens.lens (\GetLendingAnalysis' {jobId} -> jobId) (\s@GetLendingAnalysis' {} a -> s {jobId = a} :: GetLendingAnalysis)++instance Core.AWSRequest GetLendingAnalysis where+  type+    AWSResponse GetLendingAnalysis =+      GetLendingAnalysisResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetLendingAnalysisResponse'+            Prelude.<$> (x Data..?> "AnalyzeLendingModelVersion")+            Prelude.<*> (x Data..?> "DocumentMetadata")+            Prelude.<*> (x Data..?> "JobStatus")+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "Results" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "StatusMessage")+            Prelude.<*> (x Data..?> "Warnings" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetLendingAnalysis where+  hashWithSalt _salt GetLendingAnalysis' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` jobId++instance Prelude.NFData GetLendingAnalysis where+  rnf GetLendingAnalysis' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf jobId++instance Data.ToHeaders GetLendingAnalysis where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "Textract.GetLendingAnalysis" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetLendingAnalysis where+  toJSON GetLendingAnalysis' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("JobId" Data..= jobId)+          ]+      )++instance Data.ToPath GetLendingAnalysis where+  toPath = Prelude.const "/"++instance Data.ToQuery GetLendingAnalysis where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetLendingAnalysisResponse' smart constructor.+data GetLendingAnalysisResponse = GetLendingAnalysisResponse'+  { -- | The current model version of the Analyze Lending API.+    analyzeLendingModelVersion :: Prelude.Maybe Prelude.Text,+    documentMetadata :: Prelude.Maybe DocumentMetadata,+    -- | The current status of the lending analysis job.+    jobStatus :: Prelude.Maybe JobStatus,+    -- | If the response is truncated, Amazon Textract returns this token. You+    -- can use this token in the subsequent request to retrieve the next set of+    -- lending results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Holds the information returned by one of AmazonTextract\'s document+    -- analysis operations for the pinstripe.+    results :: Prelude.Maybe [LendingResult],+    -- | Returns if the lending analysis job could not be completed. Contains+    -- explanation for what error occurred.+    statusMessage :: Prelude.Maybe Prelude.Text,+    -- | A list of warnings that occurred during the lending analysis operation.+    warnings :: Prelude.Maybe [Warning],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetLendingAnalysisResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analyzeLendingModelVersion', 'getLendingAnalysisResponse_analyzeLendingModelVersion' - The current model version of the Analyze Lending API.+--+-- 'documentMetadata', 'getLendingAnalysisResponse_documentMetadata' - Undocumented member.+--+-- 'jobStatus', 'getLendingAnalysisResponse_jobStatus' - The current status of the lending analysis job.+--+-- 'nextToken', 'getLendingAnalysisResponse_nextToken' - If the response is truncated, Amazon Textract returns this token. You+-- can use this token in the subsequent request to retrieve the next set of+-- lending results.+--+-- 'results', 'getLendingAnalysisResponse_results' - Holds the information returned by one of AmazonTextract\'s document+-- analysis operations for the pinstripe.+--+-- 'statusMessage', 'getLendingAnalysisResponse_statusMessage' - Returns if the lending analysis job could not be completed. Contains+-- explanation for what error occurred.+--+-- 'warnings', 'getLendingAnalysisResponse_warnings' - A list of warnings that occurred during the lending analysis operation.+--+-- 'httpStatus', 'getLendingAnalysisResponse_httpStatus' - The response's http status code.+newGetLendingAnalysisResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetLendingAnalysisResponse+newGetLendingAnalysisResponse pHttpStatus_ =+  GetLendingAnalysisResponse'+    { analyzeLendingModelVersion =+        Prelude.Nothing,+      documentMetadata = Prelude.Nothing,+      jobStatus = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      results = Prelude.Nothing,+      statusMessage = Prelude.Nothing,+      warnings = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The current model version of the Analyze Lending API.+getLendingAnalysisResponse_analyzeLendingModelVersion :: Lens.Lens' GetLendingAnalysisResponse (Prelude.Maybe Prelude.Text)+getLendingAnalysisResponse_analyzeLendingModelVersion = Lens.lens (\GetLendingAnalysisResponse' {analyzeLendingModelVersion} -> analyzeLendingModelVersion) (\s@GetLendingAnalysisResponse' {} a -> s {analyzeLendingModelVersion = a} :: GetLendingAnalysisResponse)++-- | Undocumented member.+getLendingAnalysisResponse_documentMetadata :: Lens.Lens' GetLendingAnalysisResponse (Prelude.Maybe DocumentMetadata)+getLendingAnalysisResponse_documentMetadata = Lens.lens (\GetLendingAnalysisResponse' {documentMetadata} -> documentMetadata) (\s@GetLendingAnalysisResponse' {} a -> s {documentMetadata = a} :: GetLendingAnalysisResponse)++-- | The current status of the lending analysis job.+getLendingAnalysisResponse_jobStatus :: Lens.Lens' GetLendingAnalysisResponse (Prelude.Maybe JobStatus)+getLendingAnalysisResponse_jobStatus = Lens.lens (\GetLendingAnalysisResponse' {jobStatus} -> jobStatus) (\s@GetLendingAnalysisResponse' {} a -> s {jobStatus = a} :: GetLendingAnalysisResponse)++-- | If the response is truncated, Amazon Textract returns this token. You+-- can use this token in the subsequent request to retrieve the next set of+-- lending results.+getLendingAnalysisResponse_nextToken :: Lens.Lens' GetLendingAnalysisResponse (Prelude.Maybe Prelude.Text)+getLendingAnalysisResponse_nextToken = Lens.lens (\GetLendingAnalysisResponse' {nextToken} -> nextToken) (\s@GetLendingAnalysisResponse' {} a -> s {nextToken = a} :: GetLendingAnalysisResponse)++-- | Holds the information returned by one of AmazonTextract\'s document+-- analysis operations for the pinstripe.+getLendingAnalysisResponse_results :: Lens.Lens' GetLendingAnalysisResponse (Prelude.Maybe [LendingResult])+getLendingAnalysisResponse_results = Lens.lens (\GetLendingAnalysisResponse' {results} -> results) (\s@GetLendingAnalysisResponse' {} a -> s {results = a} :: GetLendingAnalysisResponse) Prelude.. Lens.mapping Lens.coerced++-- | Returns if the lending analysis job could not be completed. Contains+-- explanation for what error occurred.+getLendingAnalysisResponse_statusMessage :: Lens.Lens' GetLendingAnalysisResponse (Prelude.Maybe Prelude.Text)+getLendingAnalysisResponse_statusMessage = Lens.lens (\GetLendingAnalysisResponse' {statusMessage} -> statusMessage) (\s@GetLendingAnalysisResponse' {} a -> s {statusMessage = a} :: GetLendingAnalysisResponse)++-- | A list of warnings that occurred during the lending analysis operation.+getLendingAnalysisResponse_warnings :: Lens.Lens' GetLendingAnalysisResponse (Prelude.Maybe [Warning])+getLendingAnalysisResponse_warnings = Lens.lens (\GetLendingAnalysisResponse' {warnings} -> warnings) (\s@GetLendingAnalysisResponse' {} a -> s {warnings = a} :: GetLendingAnalysisResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getLendingAnalysisResponse_httpStatus :: Lens.Lens' GetLendingAnalysisResponse Prelude.Int+getLendingAnalysisResponse_httpStatus = Lens.lens (\GetLendingAnalysisResponse' {httpStatus} -> httpStatus) (\s@GetLendingAnalysisResponse' {} a -> s {httpStatus = a} :: GetLendingAnalysisResponse)++instance Prelude.NFData GetLendingAnalysisResponse where+  rnf GetLendingAnalysisResponse' {..} =+    Prelude.rnf analyzeLendingModelVersion+      `Prelude.seq` Prelude.rnf documentMetadata+      `Prelude.seq` Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf results+      `Prelude.seq` Prelude.rnf statusMessage+      `Prelude.seq` Prelude.rnf warnings+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/GetLendingAnalysisSummary.hs view
@@ -0,0 +1,255 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.GetLendingAnalysisSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets summarized results for the @StartLendingAnalysis@ operation, which+-- analyzes text in a lending document. The returned summary consists of+-- information about documents grouped together by a common document type.+-- Information like detected signatures, page numbers, and split documents+-- is returned with respect to the type of grouped document.+--+-- You start asynchronous text analysis by calling @StartLendingAnalysis@,+-- which returns a job identifier (@JobId@). When the text analysis+-- operation finishes, Amazon Textract publishes a completion status to the+-- Amazon Simple Notification Service (Amazon SNS) topic that\'s registered+-- in the initial call to @StartLendingAnalysis@.+--+-- To get the results of the text analysis operation, first check that the+-- status value published to the Amazon SNS topic is SUCCEEDED. If so, call+-- @GetLendingAnalysisSummary@, and pass the job identifier (@JobId@) from+-- the initial call to @StartLendingAnalysis@.+module Amazonka.Textract.GetLendingAnalysisSummary+  ( -- * Creating a Request+    GetLendingAnalysisSummary (..),+    newGetLendingAnalysisSummary,++    -- * Request Lenses+    getLendingAnalysisSummary_jobId,++    -- * Destructuring the Response+    GetLendingAnalysisSummaryResponse (..),+    newGetLendingAnalysisSummaryResponse,++    -- * Response Lenses+    getLendingAnalysisSummaryResponse_analyzeLendingModelVersion,+    getLendingAnalysisSummaryResponse_documentMetadata,+    getLendingAnalysisSummaryResponse_jobStatus,+    getLendingAnalysisSummaryResponse_statusMessage,+    getLendingAnalysisSummaryResponse_summary,+    getLendingAnalysisSummaryResponse_warnings,+    getLendingAnalysisSummaryResponse_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.Textract.Types++-- | /See:/ 'newGetLendingAnalysisSummary' smart constructor.+data GetLendingAnalysisSummary = GetLendingAnalysisSummary'+  { -- | A unique identifier for the lending or text-detection job. The @JobId@+    -- is returned from StartLendingAnalysis. A @JobId@ value is only valid for+    -- 7 days.+    jobId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetLendingAnalysisSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobId', 'getLendingAnalysisSummary_jobId' - A unique identifier for the lending or text-detection job. The @JobId@+-- is returned from StartLendingAnalysis. A @JobId@ value is only valid for+-- 7 days.+newGetLendingAnalysisSummary ::+  -- | 'jobId'+  Prelude.Text ->+  GetLendingAnalysisSummary+newGetLendingAnalysisSummary pJobId_ =+  GetLendingAnalysisSummary' {jobId = pJobId_}++-- | A unique identifier for the lending or text-detection job. The @JobId@+-- is returned from StartLendingAnalysis. A @JobId@ value is only valid for+-- 7 days.+getLendingAnalysisSummary_jobId :: Lens.Lens' GetLendingAnalysisSummary Prelude.Text+getLendingAnalysisSummary_jobId = Lens.lens (\GetLendingAnalysisSummary' {jobId} -> jobId) (\s@GetLendingAnalysisSummary' {} a -> s {jobId = a} :: GetLendingAnalysisSummary)++instance Core.AWSRequest GetLendingAnalysisSummary where+  type+    AWSResponse GetLendingAnalysisSummary =+      GetLendingAnalysisSummaryResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetLendingAnalysisSummaryResponse'+            Prelude.<$> (x Data..?> "AnalyzeLendingModelVersion")+            Prelude.<*> (x Data..?> "DocumentMetadata")+            Prelude.<*> (x Data..?> "JobStatus")+            Prelude.<*> (x Data..?> "StatusMessage")+            Prelude.<*> (x Data..?> "Summary")+            Prelude.<*> (x Data..?> "Warnings" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetLendingAnalysisSummary where+  hashWithSalt _salt GetLendingAnalysisSummary' {..} =+    _salt `Prelude.hashWithSalt` jobId++instance Prelude.NFData GetLendingAnalysisSummary where+  rnf GetLendingAnalysisSummary' {..} =+    Prelude.rnf jobId++instance Data.ToHeaders GetLendingAnalysisSummary where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "Textract.GetLendingAnalysisSummary" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetLendingAnalysisSummary where+  toJSON GetLendingAnalysisSummary' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("JobId" Data..= jobId)]+      )++instance Data.ToPath GetLendingAnalysisSummary where+  toPath = Prelude.const "/"++instance Data.ToQuery GetLendingAnalysisSummary where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetLendingAnalysisSummaryResponse' smart constructor.+data GetLendingAnalysisSummaryResponse = GetLendingAnalysisSummaryResponse'+  { -- | The current model version of the Analyze Lending API.+    analyzeLendingModelVersion :: Prelude.Maybe Prelude.Text,+    documentMetadata :: Prelude.Maybe DocumentMetadata,+    -- | The current status of the lending analysis job.+    jobStatus :: Prelude.Maybe JobStatus,+    -- | Returns if the lending analysis could not be completed. Contains+    -- explanation for what error occurred.+    statusMessage :: Prelude.Maybe Prelude.Text,+    -- | Contains summary information for documents grouped by type.+    summary :: Prelude.Maybe LendingSummary,+    -- | A list of warnings that occurred during the lending analysis operation.+    warnings :: Prelude.Maybe [Warning],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetLendingAnalysisSummaryResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'analyzeLendingModelVersion', 'getLendingAnalysisSummaryResponse_analyzeLendingModelVersion' - The current model version of the Analyze Lending API.+--+-- 'documentMetadata', 'getLendingAnalysisSummaryResponse_documentMetadata' - Undocumented member.+--+-- 'jobStatus', 'getLendingAnalysisSummaryResponse_jobStatus' - The current status of the lending analysis job.+--+-- 'statusMessage', 'getLendingAnalysisSummaryResponse_statusMessage' - Returns if the lending analysis could not be completed. Contains+-- explanation for what error occurred.+--+-- 'summary', 'getLendingAnalysisSummaryResponse_summary' - Contains summary information for documents grouped by type.+--+-- 'warnings', 'getLendingAnalysisSummaryResponse_warnings' - A list of warnings that occurred during the lending analysis operation.+--+-- 'httpStatus', 'getLendingAnalysisSummaryResponse_httpStatus' - The response's http status code.+newGetLendingAnalysisSummaryResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetLendingAnalysisSummaryResponse+newGetLendingAnalysisSummaryResponse pHttpStatus_ =+  GetLendingAnalysisSummaryResponse'+    { analyzeLendingModelVersion =+        Prelude.Nothing,+      documentMetadata = Prelude.Nothing,+      jobStatus = Prelude.Nothing,+      statusMessage = Prelude.Nothing,+      summary = Prelude.Nothing,+      warnings = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The current model version of the Analyze Lending API.+getLendingAnalysisSummaryResponse_analyzeLendingModelVersion :: Lens.Lens' GetLendingAnalysisSummaryResponse (Prelude.Maybe Prelude.Text)+getLendingAnalysisSummaryResponse_analyzeLendingModelVersion = Lens.lens (\GetLendingAnalysisSummaryResponse' {analyzeLendingModelVersion} -> analyzeLendingModelVersion) (\s@GetLendingAnalysisSummaryResponse' {} a -> s {analyzeLendingModelVersion = a} :: GetLendingAnalysisSummaryResponse)++-- | Undocumented member.+getLendingAnalysisSummaryResponse_documentMetadata :: Lens.Lens' GetLendingAnalysisSummaryResponse (Prelude.Maybe DocumentMetadata)+getLendingAnalysisSummaryResponse_documentMetadata = Lens.lens (\GetLendingAnalysisSummaryResponse' {documentMetadata} -> documentMetadata) (\s@GetLendingAnalysisSummaryResponse' {} a -> s {documentMetadata = a} :: GetLendingAnalysisSummaryResponse)++-- | The current status of the lending analysis job.+getLendingAnalysisSummaryResponse_jobStatus :: Lens.Lens' GetLendingAnalysisSummaryResponse (Prelude.Maybe JobStatus)+getLendingAnalysisSummaryResponse_jobStatus = Lens.lens (\GetLendingAnalysisSummaryResponse' {jobStatus} -> jobStatus) (\s@GetLendingAnalysisSummaryResponse' {} a -> s {jobStatus = a} :: GetLendingAnalysisSummaryResponse)++-- | Returns if the lending analysis could not be completed. Contains+-- explanation for what error occurred.+getLendingAnalysisSummaryResponse_statusMessage :: Lens.Lens' GetLendingAnalysisSummaryResponse (Prelude.Maybe Prelude.Text)+getLendingAnalysisSummaryResponse_statusMessage = Lens.lens (\GetLendingAnalysisSummaryResponse' {statusMessage} -> statusMessage) (\s@GetLendingAnalysisSummaryResponse' {} a -> s {statusMessage = a} :: GetLendingAnalysisSummaryResponse)++-- | Contains summary information for documents grouped by type.+getLendingAnalysisSummaryResponse_summary :: Lens.Lens' GetLendingAnalysisSummaryResponse (Prelude.Maybe LendingSummary)+getLendingAnalysisSummaryResponse_summary = Lens.lens (\GetLendingAnalysisSummaryResponse' {summary} -> summary) (\s@GetLendingAnalysisSummaryResponse' {} a -> s {summary = a} :: GetLendingAnalysisSummaryResponse)++-- | A list of warnings that occurred during the lending analysis operation.+getLendingAnalysisSummaryResponse_warnings :: Lens.Lens' GetLendingAnalysisSummaryResponse (Prelude.Maybe [Warning])+getLendingAnalysisSummaryResponse_warnings = Lens.lens (\GetLendingAnalysisSummaryResponse' {warnings} -> warnings) (\s@GetLendingAnalysisSummaryResponse' {} a -> s {warnings = a} :: GetLendingAnalysisSummaryResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getLendingAnalysisSummaryResponse_httpStatus :: Lens.Lens' GetLendingAnalysisSummaryResponse Prelude.Int+getLendingAnalysisSummaryResponse_httpStatus = Lens.lens (\GetLendingAnalysisSummaryResponse' {httpStatus} -> httpStatus) (\s@GetLendingAnalysisSummaryResponse' {} a -> s {httpStatus = a} :: GetLendingAnalysisSummaryResponse)++instance+  Prelude.NFData+    GetLendingAnalysisSummaryResponse+  where+  rnf GetLendingAnalysisSummaryResponse' {..} =+    Prelude.rnf analyzeLendingModelVersion+      `Prelude.seq` Prelude.rnf documentMetadata+      `Prelude.seq` Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf statusMessage+      `Prelude.seq` Prelude.rnf summary+      `Prelude.seq` Prelude.rnf warnings+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/Lens.hs view
@@ -0,0 +1,406 @@+{-# 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.Textract.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.Textract.Lens+  ( -- * Operations++    -- ** AnalyzeDocument+    analyzeDocument_humanLoopConfig,+    analyzeDocument_queriesConfig,+    analyzeDocument_document,+    analyzeDocument_featureTypes,+    analyzeDocumentResponse_analyzeDocumentModelVersion,+    analyzeDocumentResponse_blocks,+    analyzeDocumentResponse_documentMetadata,+    analyzeDocumentResponse_humanLoopActivationOutput,+    analyzeDocumentResponse_httpStatus,++    -- ** AnalyzeExpense+    analyzeExpense_document,+    analyzeExpenseResponse_documentMetadata,+    analyzeExpenseResponse_expenseDocuments,+    analyzeExpenseResponse_httpStatus,++    -- ** AnalyzeID+    analyzeID_documentPages,+    analyzeIDResponse_analyzeIDModelVersion,+    analyzeIDResponse_documentMetadata,+    analyzeIDResponse_identityDocuments,+    analyzeIDResponse_httpStatus,++    -- ** DetectDocumentText+    detectDocumentText_document,+    detectDocumentTextResponse_blocks,+    detectDocumentTextResponse_detectDocumentTextModelVersion,+    detectDocumentTextResponse_documentMetadata,+    detectDocumentTextResponse_httpStatus,++    -- ** GetDocumentAnalysis+    getDocumentAnalysis_maxResults,+    getDocumentAnalysis_nextToken,+    getDocumentAnalysis_jobId,+    getDocumentAnalysisResponse_analyzeDocumentModelVersion,+    getDocumentAnalysisResponse_blocks,+    getDocumentAnalysisResponse_documentMetadata,+    getDocumentAnalysisResponse_jobStatus,+    getDocumentAnalysisResponse_nextToken,+    getDocumentAnalysisResponse_statusMessage,+    getDocumentAnalysisResponse_warnings,+    getDocumentAnalysisResponse_httpStatus,++    -- ** GetDocumentTextDetection+    getDocumentTextDetection_maxResults,+    getDocumentTextDetection_nextToken,+    getDocumentTextDetection_jobId,+    getDocumentTextDetectionResponse_blocks,+    getDocumentTextDetectionResponse_detectDocumentTextModelVersion,+    getDocumentTextDetectionResponse_documentMetadata,+    getDocumentTextDetectionResponse_jobStatus,+    getDocumentTextDetectionResponse_nextToken,+    getDocumentTextDetectionResponse_statusMessage,+    getDocumentTextDetectionResponse_warnings,+    getDocumentTextDetectionResponse_httpStatus,++    -- ** GetExpenseAnalysis+    getExpenseAnalysis_maxResults,+    getExpenseAnalysis_nextToken,+    getExpenseAnalysis_jobId,+    getExpenseAnalysisResponse_analyzeExpenseModelVersion,+    getExpenseAnalysisResponse_documentMetadata,+    getExpenseAnalysisResponse_expenseDocuments,+    getExpenseAnalysisResponse_jobStatus,+    getExpenseAnalysisResponse_nextToken,+    getExpenseAnalysisResponse_statusMessage,+    getExpenseAnalysisResponse_warnings,+    getExpenseAnalysisResponse_httpStatus,++    -- ** GetLendingAnalysis+    getLendingAnalysis_maxResults,+    getLendingAnalysis_nextToken,+    getLendingAnalysis_jobId,+    getLendingAnalysisResponse_analyzeLendingModelVersion,+    getLendingAnalysisResponse_documentMetadata,+    getLendingAnalysisResponse_jobStatus,+    getLendingAnalysisResponse_nextToken,+    getLendingAnalysisResponse_results,+    getLendingAnalysisResponse_statusMessage,+    getLendingAnalysisResponse_warnings,+    getLendingAnalysisResponse_httpStatus,++    -- ** GetLendingAnalysisSummary+    getLendingAnalysisSummary_jobId,+    getLendingAnalysisSummaryResponse_analyzeLendingModelVersion,+    getLendingAnalysisSummaryResponse_documentMetadata,+    getLendingAnalysisSummaryResponse_jobStatus,+    getLendingAnalysisSummaryResponse_statusMessage,+    getLendingAnalysisSummaryResponse_summary,+    getLendingAnalysisSummaryResponse_warnings,+    getLendingAnalysisSummaryResponse_httpStatus,++    -- ** StartDocumentAnalysis+    startDocumentAnalysis_clientRequestToken,+    startDocumentAnalysis_jobTag,+    startDocumentAnalysis_kmsKeyId,+    startDocumentAnalysis_notificationChannel,+    startDocumentAnalysis_outputConfig,+    startDocumentAnalysis_queriesConfig,+    startDocumentAnalysis_documentLocation,+    startDocumentAnalysis_featureTypes,+    startDocumentAnalysisResponse_jobId,+    startDocumentAnalysisResponse_httpStatus,++    -- ** StartDocumentTextDetection+    startDocumentTextDetection_clientRequestToken,+    startDocumentTextDetection_jobTag,+    startDocumentTextDetection_kmsKeyId,+    startDocumentTextDetection_notificationChannel,+    startDocumentTextDetection_outputConfig,+    startDocumentTextDetection_documentLocation,+    startDocumentTextDetectionResponse_jobId,+    startDocumentTextDetectionResponse_httpStatus,++    -- ** StartExpenseAnalysis+    startExpenseAnalysis_clientRequestToken,+    startExpenseAnalysis_jobTag,+    startExpenseAnalysis_kmsKeyId,+    startExpenseAnalysis_notificationChannel,+    startExpenseAnalysis_outputConfig,+    startExpenseAnalysis_documentLocation,+    startExpenseAnalysisResponse_jobId,+    startExpenseAnalysisResponse_httpStatus,++    -- ** StartLendingAnalysis+    startLendingAnalysis_clientRequestToken,+    startLendingAnalysis_jobTag,+    startLendingAnalysis_kmsKeyId,+    startLendingAnalysis_notificationChannel,+    startLendingAnalysis_outputConfig,+    startLendingAnalysis_documentLocation,+    startLendingAnalysisResponse_jobId,+    startLendingAnalysisResponse_httpStatus,++    -- * Types++    -- ** AnalyzeIDDetections+    analyzeIDDetections_confidence,+    analyzeIDDetections_normalizedValue,+    analyzeIDDetections_text,++    -- ** Block+    block_blockType,+    block_columnIndex,+    block_columnSpan,+    block_confidence,+    block_entityTypes,+    block_geometry,+    block_id,+    block_page,+    block_query,+    block_relationships,+    block_rowIndex,+    block_rowSpan,+    block_selectionStatus,+    block_text,+    block_textType,++    -- ** BoundingBox+    boundingBox_height,+    boundingBox_left,+    boundingBox_top,+    boundingBox_width,++    -- ** DetectedSignature+    detectedSignature_page,++    -- ** Document+    document_bytes,+    document_s3Object,++    -- ** DocumentGroup+    documentGroup_detectedSignatures,+    documentGroup_splitDocuments,+    documentGroup_type,+    documentGroup_undetectedSignatures,++    -- ** DocumentLocation+    documentLocation_s3Object,++    -- ** DocumentMetadata+    documentMetadata_pages,++    -- ** ExpenseCurrency+    expenseCurrency_code,+    expenseCurrency_confidence,++    -- ** ExpenseDetection+    expenseDetection_confidence,+    expenseDetection_geometry,+    expenseDetection_text,++    -- ** ExpenseDocument+    expenseDocument_blocks,+    expenseDocument_expenseIndex,+    expenseDocument_lineItemGroups,+    expenseDocument_summaryFields,++    -- ** ExpenseField+    expenseField_currency,+    expenseField_groupProperties,+    expenseField_labelDetection,+    expenseField_pageNumber,+    expenseField_type,+    expenseField_valueDetection,++    -- ** ExpenseGroupProperty+    expenseGroupProperty_id,+    expenseGroupProperty_types,++    -- ** ExpenseType+    expenseType_confidence,+    expenseType_text,++    -- ** Extraction+    extraction_expenseDocument,+    extraction_identityDocument,+    extraction_lendingDocument,++    -- ** Geometry+    geometry_boundingBox,+    geometry_polygon,++    -- ** HumanLoopActivationOutput+    humanLoopActivationOutput_humanLoopActivationConditionsEvaluationResults,+    humanLoopActivationOutput_humanLoopActivationReasons,+    humanLoopActivationOutput_humanLoopArn,++    -- ** HumanLoopConfig+    humanLoopConfig_dataAttributes,+    humanLoopConfig_humanLoopName,+    humanLoopConfig_flowDefinitionArn,++    -- ** HumanLoopDataAttributes+    humanLoopDataAttributes_contentClassifiers,++    -- ** IdentityDocument+    identityDocument_blocks,+    identityDocument_documentIndex,+    identityDocument_identityDocumentFields,++    -- ** IdentityDocumentField+    identityDocumentField_type,+    identityDocumentField_valueDetection,++    -- ** LendingDetection+    lendingDetection_confidence,+    lendingDetection_geometry,+    lendingDetection_selectionStatus,+    lendingDetection_text,++    -- ** LendingDocument+    lendingDocument_lendingFields,+    lendingDocument_signatureDetections,++    -- ** LendingField+    lendingField_keyDetection,+    lendingField_type,+    lendingField_valueDetections,++    -- ** LendingResult+    lendingResult_extractions,+    lendingResult_page,+    lendingResult_pageClassification,++    -- ** LendingSummary+    lendingSummary_documentGroups,+    lendingSummary_undetectedDocumentTypes,++    -- ** LineItemFields+    lineItemFields_lineItemExpenseFields,++    -- ** LineItemGroup+    lineItemGroup_lineItemGroupIndex,+    lineItemGroup_lineItems,++    -- ** NormalizedValue+    normalizedValue_value,+    normalizedValue_valueType,++    -- ** NotificationChannel+    notificationChannel_sNSTopicArn,+    notificationChannel_roleArn,++    -- ** OutputConfig+    outputConfig_s3Prefix,+    outputConfig_s3Bucket,++    -- ** PageClassification+    pageClassification_pageType,+    pageClassification_pageNumber,++    -- ** Point+    point_x,+    point_y,++    -- ** Prediction+    prediction_confidence,+    prediction_value,++    -- ** QueriesConfig+    queriesConfig_queries,++    -- ** Query+    query_alias,+    query_pages,+    query_text,++    -- ** Relationship+    relationship_ids,+    relationship_type,++    -- ** S3Object+    s3Object_bucket,+    s3Object_name,+    s3Object_version,++    -- ** SignatureDetection+    signatureDetection_confidence,+    signatureDetection_geometry,++    -- ** SplitDocument+    splitDocument_index,+    splitDocument_pages,++    -- ** UndetectedSignature+    undetectedSignature_page,++    -- ** Warning+    warning_errorCode,+    warning_pages,+  )+where++import Amazonka.Textract.AnalyzeDocument+import Amazonka.Textract.AnalyzeExpense+import Amazonka.Textract.AnalyzeID+import Amazonka.Textract.DetectDocumentText+import Amazonka.Textract.GetDocumentAnalysis+import Amazonka.Textract.GetDocumentTextDetection+import Amazonka.Textract.GetExpenseAnalysis+import Amazonka.Textract.GetLendingAnalysis+import Amazonka.Textract.GetLendingAnalysisSummary+import Amazonka.Textract.StartDocumentAnalysis+import Amazonka.Textract.StartDocumentTextDetection+import Amazonka.Textract.StartExpenseAnalysis+import Amazonka.Textract.StartLendingAnalysis+import Amazonka.Textract.Types.AnalyzeIDDetections+import Amazonka.Textract.Types.Block+import Amazonka.Textract.Types.BoundingBox+import Amazonka.Textract.Types.DetectedSignature+import Amazonka.Textract.Types.Document+import Amazonka.Textract.Types.DocumentGroup+import Amazonka.Textract.Types.DocumentLocation+import Amazonka.Textract.Types.DocumentMetadata+import Amazonka.Textract.Types.ExpenseCurrency+import Amazonka.Textract.Types.ExpenseDetection+import Amazonka.Textract.Types.ExpenseDocument+import Amazonka.Textract.Types.ExpenseField+import Amazonka.Textract.Types.ExpenseGroupProperty+import Amazonka.Textract.Types.ExpenseType+import Amazonka.Textract.Types.Extraction+import Amazonka.Textract.Types.Geometry+import Amazonka.Textract.Types.HumanLoopActivationOutput+import Amazonka.Textract.Types.HumanLoopConfig+import Amazonka.Textract.Types.HumanLoopDataAttributes+import Amazonka.Textract.Types.IdentityDocument+import Amazonka.Textract.Types.IdentityDocumentField+import Amazonka.Textract.Types.LendingDetection+import Amazonka.Textract.Types.LendingDocument+import Amazonka.Textract.Types.LendingField+import Amazonka.Textract.Types.LendingResult+import Amazonka.Textract.Types.LendingSummary+import Amazonka.Textract.Types.LineItemFields+import Amazonka.Textract.Types.LineItemGroup+import Amazonka.Textract.Types.NormalizedValue+import Amazonka.Textract.Types.NotificationChannel+import Amazonka.Textract.Types.OutputConfig+import Amazonka.Textract.Types.PageClassification+import Amazonka.Textract.Types.Point+import Amazonka.Textract.Types.Prediction+import Amazonka.Textract.Types.QueriesConfig+import Amazonka.Textract.Types.Query+import Amazonka.Textract.Types.Relationship+import Amazonka.Textract.Types.S3Object+import Amazonka.Textract.Types.SignatureDetection+import Amazonka.Textract.Types.SplitDocument+import Amazonka.Textract.Types.UndetectedSignature+import Amazonka.Textract.Types.Warning
+ gen/Amazonka/Textract/StartDocumentAnalysis.hs view
@@ -0,0 +1,352 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.StartDocumentAnalysis+-- 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 the asynchronous analysis of an input document for relationships+-- between detected items such as key-value pairs, tables, and selection+-- elements.+--+-- @StartDocumentAnalysis@ can analyze text in documents that are in JPEG,+-- PNG, TIFF, and PDF format. The documents are stored in an Amazon S3+-- bucket. Use DocumentLocation to specify the bucket name and file name of+-- the document.+--+-- @StartDocumentAnalysis@ returns a job identifier (@JobId@) that you use+-- to get the results of the operation. When text analysis is finished,+-- Amazon Textract publishes a completion status to the Amazon Simple+-- Notification Service (Amazon SNS) topic that you specify in+-- @NotificationChannel@. To get the results of the text analysis+-- operation, first check that the status value published to the Amazon SNS+-- topic is @SUCCEEDED@. If so, call GetDocumentAnalysis, and pass the job+-- identifier (@JobId@) from the initial call to @StartDocumentAnalysis@.+--+-- For more information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/how-it-works-analyzing.html Document Text Analysis>.+module Amazonka.Textract.StartDocumentAnalysis+  ( -- * Creating a Request+    StartDocumentAnalysis (..),+    newStartDocumentAnalysis,++    -- * Request Lenses+    startDocumentAnalysis_clientRequestToken,+    startDocumentAnalysis_jobTag,+    startDocumentAnalysis_kmsKeyId,+    startDocumentAnalysis_notificationChannel,+    startDocumentAnalysis_outputConfig,+    startDocumentAnalysis_queriesConfig,+    startDocumentAnalysis_documentLocation,+    startDocumentAnalysis_featureTypes,++    -- * Destructuring the Response+    StartDocumentAnalysisResponse (..),+    newStartDocumentAnalysisResponse,++    -- * Response Lenses+    startDocumentAnalysisResponse_jobId,+    startDocumentAnalysisResponse_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.Textract.Types++-- | /See:/ 'newStartDocumentAnalysis' smart constructor.+data StartDocumentAnalysis = StartDocumentAnalysis'+  { -- | The idempotent token that you use to identify the start request. If you+    -- use the same token with multiple @StartDocumentAnalysis@ requests, the+    -- same @JobId@ is returned. Use @ClientRequestToken@ to prevent the same+    -- job from being accidentally started more than once. For more+    -- information, see+    -- <https://docs.aws.amazon.com/textract/latest/dg/api-async.html Calling Amazon Textract Asynchronous Operations>.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | An identifier that you specify that\'s included in the completion+    -- notification published to the Amazon SNS topic. For example, you can use+    -- @JobTag@ to identify the type of document that the completion+    -- notification corresponds to (such as a tax form or a receipt).+    jobTag :: Prelude.Maybe Prelude.Text,+    -- | The KMS key used to encrypt the inference results. This can be in either+    -- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+    -- be used for server-side encryption of the objects in the customer+    -- bucket. When this parameter is not enabled, the result will be encrypted+    -- server side,using SSE-S3.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The Amazon SNS topic ARN that you want Amazon Textract to publish the+    -- completion status of the operation to.+    notificationChannel :: Prelude.Maybe NotificationChannel,+    -- | Sets if the output will go to a customer defined bucket. By default,+    -- Amazon Textract will save the results internally to be accessed by the+    -- GetDocumentAnalysis operation.+    outputConfig :: Prelude.Maybe OutputConfig,+    queriesConfig :: Prelude.Maybe QueriesConfig,+    -- | The location of the document to be processed.+    documentLocation :: DocumentLocation,+    -- | A list of the types of analysis to perform. Add TABLES to the list to+    -- return information about the tables that are detected in the input+    -- document. Add FORMS to return detected form data. To perform both types+    -- of analysis, add TABLES and FORMS to @FeatureTypes@. All lines and words+    -- detected in the document are included in the response (including text+    -- that isn\'t related to the value of @FeatureTypes@).+    featureTypes :: [FeatureType]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartDocumentAnalysis' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'startDocumentAnalysis_clientRequestToken' - The idempotent token that you use to identify the start request. If you+-- use the same token with multiple @StartDocumentAnalysis@ requests, the+-- same @JobId@ is returned. Use @ClientRequestToken@ to prevent the same+-- job from being accidentally started more than once. For more+-- information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/api-async.html Calling Amazon Textract Asynchronous Operations>.+--+-- 'jobTag', 'startDocumentAnalysis_jobTag' - An identifier that you specify that\'s included in the completion+-- notification published to the Amazon SNS topic. For example, you can use+-- @JobTag@ to identify the type of document that the completion+-- notification corresponds to (such as a tax form or a receipt).+--+-- 'kmsKeyId', 'startDocumentAnalysis_kmsKeyId' - The KMS key used to encrypt the inference results. This can be in either+-- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+-- be used for server-side encryption of the objects in the customer+-- bucket. When this parameter is not enabled, the result will be encrypted+-- server side,using SSE-S3.+--+-- 'notificationChannel', 'startDocumentAnalysis_notificationChannel' - The Amazon SNS topic ARN that you want Amazon Textract to publish the+-- completion status of the operation to.+--+-- 'outputConfig', 'startDocumentAnalysis_outputConfig' - Sets if the output will go to a customer defined bucket. By default,+-- Amazon Textract will save the results internally to be accessed by the+-- GetDocumentAnalysis operation.+--+-- 'queriesConfig', 'startDocumentAnalysis_queriesConfig' - Undocumented member.+--+-- 'documentLocation', 'startDocumentAnalysis_documentLocation' - The location of the document to be processed.+--+-- 'featureTypes', 'startDocumentAnalysis_featureTypes' - A list of the types of analysis to perform. Add TABLES to the list to+-- return information about the tables that are detected in the input+-- document. Add FORMS to return detected form data. To perform both types+-- of analysis, add TABLES and FORMS to @FeatureTypes@. All lines and words+-- detected in the document are included in the response (including text+-- that isn\'t related to the value of @FeatureTypes@).+newStartDocumentAnalysis ::+  -- | 'documentLocation'+  DocumentLocation ->+  StartDocumentAnalysis+newStartDocumentAnalysis pDocumentLocation_ =+  StartDocumentAnalysis'+    { clientRequestToken =+        Prelude.Nothing,+      jobTag = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      notificationChannel = Prelude.Nothing,+      outputConfig = Prelude.Nothing,+      queriesConfig = Prelude.Nothing,+      documentLocation = pDocumentLocation_,+      featureTypes = Prelude.mempty+    }++-- | The idempotent token that you use to identify the start request. If you+-- use the same token with multiple @StartDocumentAnalysis@ requests, the+-- same @JobId@ is returned. Use @ClientRequestToken@ to prevent the same+-- job from being accidentally started more than once. For more+-- information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/api-async.html Calling Amazon Textract Asynchronous Operations>.+startDocumentAnalysis_clientRequestToken :: Lens.Lens' StartDocumentAnalysis (Prelude.Maybe Prelude.Text)+startDocumentAnalysis_clientRequestToken = Lens.lens (\StartDocumentAnalysis' {clientRequestToken} -> clientRequestToken) (\s@StartDocumentAnalysis' {} a -> s {clientRequestToken = a} :: StartDocumentAnalysis)++-- | An identifier that you specify that\'s included in the completion+-- notification published to the Amazon SNS topic. For example, you can use+-- @JobTag@ to identify the type of document that the completion+-- notification corresponds to (such as a tax form or a receipt).+startDocumentAnalysis_jobTag :: Lens.Lens' StartDocumentAnalysis (Prelude.Maybe Prelude.Text)+startDocumentAnalysis_jobTag = Lens.lens (\StartDocumentAnalysis' {jobTag} -> jobTag) (\s@StartDocumentAnalysis' {} a -> s {jobTag = a} :: StartDocumentAnalysis)++-- | The KMS key used to encrypt the inference results. This can be in either+-- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+-- be used for server-side encryption of the objects in the customer+-- bucket. When this parameter is not enabled, the result will be encrypted+-- server side,using SSE-S3.+startDocumentAnalysis_kmsKeyId :: Lens.Lens' StartDocumentAnalysis (Prelude.Maybe Prelude.Text)+startDocumentAnalysis_kmsKeyId = Lens.lens (\StartDocumentAnalysis' {kmsKeyId} -> kmsKeyId) (\s@StartDocumentAnalysis' {} a -> s {kmsKeyId = a} :: StartDocumentAnalysis)++-- | The Amazon SNS topic ARN that you want Amazon Textract to publish the+-- completion status of the operation to.+startDocumentAnalysis_notificationChannel :: Lens.Lens' StartDocumentAnalysis (Prelude.Maybe NotificationChannel)+startDocumentAnalysis_notificationChannel = Lens.lens (\StartDocumentAnalysis' {notificationChannel} -> notificationChannel) (\s@StartDocumentAnalysis' {} a -> s {notificationChannel = a} :: StartDocumentAnalysis)++-- | Sets if the output will go to a customer defined bucket. By default,+-- Amazon Textract will save the results internally to be accessed by the+-- GetDocumentAnalysis operation.+startDocumentAnalysis_outputConfig :: Lens.Lens' StartDocumentAnalysis (Prelude.Maybe OutputConfig)+startDocumentAnalysis_outputConfig = Lens.lens (\StartDocumentAnalysis' {outputConfig} -> outputConfig) (\s@StartDocumentAnalysis' {} a -> s {outputConfig = a} :: StartDocumentAnalysis)++-- | Undocumented member.+startDocumentAnalysis_queriesConfig :: Lens.Lens' StartDocumentAnalysis (Prelude.Maybe QueriesConfig)+startDocumentAnalysis_queriesConfig = Lens.lens (\StartDocumentAnalysis' {queriesConfig} -> queriesConfig) (\s@StartDocumentAnalysis' {} a -> s {queriesConfig = a} :: StartDocumentAnalysis)++-- | The location of the document to be processed.+startDocumentAnalysis_documentLocation :: Lens.Lens' StartDocumentAnalysis DocumentLocation+startDocumentAnalysis_documentLocation = Lens.lens (\StartDocumentAnalysis' {documentLocation} -> documentLocation) (\s@StartDocumentAnalysis' {} a -> s {documentLocation = a} :: StartDocumentAnalysis)++-- | A list of the types of analysis to perform. Add TABLES to the list to+-- return information about the tables that are detected in the input+-- document. Add FORMS to return detected form data. To perform both types+-- of analysis, add TABLES and FORMS to @FeatureTypes@. All lines and words+-- detected in the document are included in the response (including text+-- that isn\'t related to the value of @FeatureTypes@).+startDocumentAnalysis_featureTypes :: Lens.Lens' StartDocumentAnalysis [FeatureType]+startDocumentAnalysis_featureTypes = Lens.lens (\StartDocumentAnalysis' {featureTypes} -> featureTypes) (\s@StartDocumentAnalysis' {} a -> s {featureTypes = a} :: StartDocumentAnalysis) Prelude.. Lens.coerced++instance Core.AWSRequest StartDocumentAnalysis where+  type+    AWSResponse StartDocumentAnalysis =+      StartDocumentAnalysisResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartDocumentAnalysisResponse'+            Prelude.<$> (x Data..?> "JobId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartDocumentAnalysis where+  hashWithSalt _salt StartDocumentAnalysis' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` jobTag+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` notificationChannel+      `Prelude.hashWithSalt` outputConfig+      `Prelude.hashWithSalt` queriesConfig+      `Prelude.hashWithSalt` documentLocation+      `Prelude.hashWithSalt` featureTypes++instance Prelude.NFData StartDocumentAnalysis where+  rnf StartDocumentAnalysis' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf jobTag+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf notificationChannel+      `Prelude.seq` Prelude.rnf outputConfig+      `Prelude.seq` Prelude.rnf queriesConfig+      `Prelude.seq` Prelude.rnf documentLocation+      `Prelude.seq` Prelude.rnf featureTypes++instance Data.ToHeaders StartDocumentAnalysis where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "Textract.StartDocumentAnalysis" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartDocumentAnalysis where+  toJSON StartDocumentAnalysis' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("JobTag" Data..=) Prelude.<$> jobTag,+            ("KMSKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("NotificationChannel" Data..=)+              Prelude.<$> notificationChannel,+            ("OutputConfig" Data..=) Prelude.<$> outputConfig,+            ("QueriesConfig" Data..=) Prelude.<$> queriesConfig,+            Prelude.Just+              ("DocumentLocation" Data..= documentLocation),+            Prelude.Just ("FeatureTypes" Data..= featureTypes)+          ]+      )++instance Data.ToPath StartDocumentAnalysis where+  toPath = Prelude.const "/"++instance Data.ToQuery StartDocumentAnalysis where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartDocumentAnalysisResponse' smart constructor.+data StartDocumentAnalysisResponse = StartDocumentAnalysisResponse'+  { -- | The identifier for the document text detection job. Use @JobId@ to+    -- identify the job in a subsequent call to @GetDocumentAnalysis@. A+    -- @JobId@ value is only valid for 7 days.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartDocumentAnalysisResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobId', 'startDocumentAnalysisResponse_jobId' - The identifier for the document text detection job. Use @JobId@ to+-- identify the job in a subsequent call to @GetDocumentAnalysis@. A+-- @JobId@ value is only valid for 7 days.+--+-- 'httpStatus', 'startDocumentAnalysisResponse_httpStatus' - The response's http status code.+newStartDocumentAnalysisResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartDocumentAnalysisResponse+newStartDocumentAnalysisResponse pHttpStatus_ =+  StartDocumentAnalysisResponse'+    { jobId =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The identifier for the document text detection job. Use @JobId@ to+-- identify the job in a subsequent call to @GetDocumentAnalysis@. A+-- @JobId@ value is only valid for 7 days.+startDocumentAnalysisResponse_jobId :: Lens.Lens' StartDocumentAnalysisResponse (Prelude.Maybe Prelude.Text)+startDocumentAnalysisResponse_jobId = Lens.lens (\StartDocumentAnalysisResponse' {jobId} -> jobId) (\s@StartDocumentAnalysisResponse' {} a -> s {jobId = a} :: StartDocumentAnalysisResponse)++-- | The response's http status code.+startDocumentAnalysisResponse_httpStatus :: Lens.Lens' StartDocumentAnalysisResponse Prelude.Int+startDocumentAnalysisResponse_httpStatus = Lens.lens (\StartDocumentAnalysisResponse' {httpStatus} -> httpStatus) (\s@StartDocumentAnalysisResponse' {} a -> s {httpStatus = a} :: StartDocumentAnalysisResponse)++instance Prelude.NFData StartDocumentAnalysisResponse where+  rnf StartDocumentAnalysisResponse' {..} =+    Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/StartDocumentTextDetection.hs view
@@ -0,0 +1,315 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.StartDocumentTextDetection+-- 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 the asynchronous detection of text in a document. Amazon Textract+-- can detect lines of text and the words that make up a line of text.+--+-- @StartDocumentTextDetection@ can analyze text in documents that are in+-- JPEG, PNG, TIFF, and PDF format. The documents are stored in an Amazon+-- S3 bucket. Use DocumentLocation to specify the bucket name and file name+-- of the document.+--+-- @StartTextDetection@ returns a job identifier (@JobId@) that you use to+-- get the results of the operation. When text detection is finished,+-- Amazon Textract publishes a completion status to the Amazon Simple+-- Notification Service (Amazon SNS) topic that you specify in+-- @NotificationChannel@. To get the results of the text detection+-- operation, first check that the status value published to the Amazon SNS+-- topic is @SUCCEEDED@. If so, call GetDocumentTextDetection, and pass the+-- job identifier (@JobId@) from the initial call to+-- @StartDocumentTextDetection@.+--+-- For more information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/how-it-works-detecting.html Document Text Detection>.+module Amazonka.Textract.StartDocumentTextDetection+  ( -- * Creating a Request+    StartDocumentTextDetection (..),+    newStartDocumentTextDetection,++    -- * Request Lenses+    startDocumentTextDetection_clientRequestToken,+    startDocumentTextDetection_jobTag,+    startDocumentTextDetection_kmsKeyId,+    startDocumentTextDetection_notificationChannel,+    startDocumentTextDetection_outputConfig,+    startDocumentTextDetection_documentLocation,++    -- * Destructuring the Response+    StartDocumentTextDetectionResponse (..),+    newStartDocumentTextDetectionResponse,++    -- * Response Lenses+    startDocumentTextDetectionResponse_jobId,+    startDocumentTextDetectionResponse_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.Textract.Types++-- | /See:/ 'newStartDocumentTextDetection' smart constructor.+data StartDocumentTextDetection = StartDocumentTextDetection'+  { -- | The idempotent token that\'s used to identify the start request. If you+    -- use the same token with multiple @StartDocumentTextDetection@ requests,+    -- the same @JobId@ is returned. Use @ClientRequestToken@ to prevent the+    -- same job from being accidentally started more than once. For more+    -- information, see+    -- <https://docs.aws.amazon.com/textract/latest/dg/api-async.html Calling Amazon Textract Asynchronous Operations>.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | An identifier that you specify that\'s included in the completion+    -- notification published to the Amazon SNS topic. For example, you can use+    -- @JobTag@ to identify the type of document that the completion+    -- notification corresponds to (such as a tax form or a receipt).+    jobTag :: Prelude.Maybe Prelude.Text,+    -- | The KMS key used to encrypt the inference results. This can be in either+    -- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+    -- be used for server-side encryption of the objects in the customer+    -- bucket. When this parameter is not enabled, the result will be encrypted+    -- server side,using SSE-S3.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The Amazon SNS topic ARN that you want Amazon Textract to publish the+    -- completion status of the operation to.+    notificationChannel :: Prelude.Maybe NotificationChannel,+    -- | Sets if the output will go to a customer defined bucket. By default+    -- Amazon Textract will save the results internally to be accessed with the+    -- GetDocumentTextDetection operation.+    outputConfig :: Prelude.Maybe OutputConfig,+    -- | The location of the document to be processed.+    documentLocation :: DocumentLocation+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartDocumentTextDetection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'startDocumentTextDetection_clientRequestToken' - The idempotent token that\'s used to identify the start request. If you+-- use the same token with multiple @StartDocumentTextDetection@ requests,+-- the same @JobId@ is returned. Use @ClientRequestToken@ to prevent the+-- same job from being accidentally started more than once. For more+-- information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/api-async.html Calling Amazon Textract Asynchronous Operations>.+--+-- 'jobTag', 'startDocumentTextDetection_jobTag' - An identifier that you specify that\'s included in the completion+-- notification published to the Amazon SNS topic. For example, you can use+-- @JobTag@ to identify the type of document that the completion+-- notification corresponds to (such as a tax form or a receipt).+--+-- 'kmsKeyId', 'startDocumentTextDetection_kmsKeyId' - The KMS key used to encrypt the inference results. This can be in either+-- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+-- be used for server-side encryption of the objects in the customer+-- bucket. When this parameter is not enabled, the result will be encrypted+-- server side,using SSE-S3.+--+-- 'notificationChannel', 'startDocumentTextDetection_notificationChannel' - The Amazon SNS topic ARN that you want Amazon Textract to publish the+-- completion status of the operation to.+--+-- 'outputConfig', 'startDocumentTextDetection_outputConfig' - Sets if the output will go to a customer defined bucket. By default+-- Amazon Textract will save the results internally to be accessed with the+-- GetDocumentTextDetection operation.+--+-- 'documentLocation', 'startDocumentTextDetection_documentLocation' - The location of the document to be processed.+newStartDocumentTextDetection ::+  -- | 'documentLocation'+  DocumentLocation ->+  StartDocumentTextDetection+newStartDocumentTextDetection pDocumentLocation_ =+  StartDocumentTextDetection'+    { clientRequestToken =+        Prelude.Nothing,+      jobTag = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      notificationChannel = Prelude.Nothing,+      outputConfig = Prelude.Nothing,+      documentLocation = pDocumentLocation_+    }++-- | The idempotent token that\'s used to identify the start request. If you+-- use the same token with multiple @StartDocumentTextDetection@ requests,+-- the same @JobId@ is returned. Use @ClientRequestToken@ to prevent the+-- same job from being accidentally started more than once. For more+-- information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/api-async.html Calling Amazon Textract Asynchronous Operations>.+startDocumentTextDetection_clientRequestToken :: Lens.Lens' StartDocumentTextDetection (Prelude.Maybe Prelude.Text)+startDocumentTextDetection_clientRequestToken = Lens.lens (\StartDocumentTextDetection' {clientRequestToken} -> clientRequestToken) (\s@StartDocumentTextDetection' {} a -> s {clientRequestToken = a} :: StartDocumentTextDetection)++-- | An identifier that you specify that\'s included in the completion+-- notification published to the Amazon SNS topic. For example, you can use+-- @JobTag@ to identify the type of document that the completion+-- notification corresponds to (such as a tax form or a receipt).+startDocumentTextDetection_jobTag :: Lens.Lens' StartDocumentTextDetection (Prelude.Maybe Prelude.Text)+startDocumentTextDetection_jobTag = Lens.lens (\StartDocumentTextDetection' {jobTag} -> jobTag) (\s@StartDocumentTextDetection' {} a -> s {jobTag = a} :: StartDocumentTextDetection)++-- | The KMS key used to encrypt the inference results. This can be in either+-- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+-- be used for server-side encryption of the objects in the customer+-- bucket. When this parameter is not enabled, the result will be encrypted+-- server side,using SSE-S3.+startDocumentTextDetection_kmsKeyId :: Lens.Lens' StartDocumentTextDetection (Prelude.Maybe Prelude.Text)+startDocumentTextDetection_kmsKeyId = Lens.lens (\StartDocumentTextDetection' {kmsKeyId} -> kmsKeyId) (\s@StartDocumentTextDetection' {} a -> s {kmsKeyId = a} :: StartDocumentTextDetection)++-- | The Amazon SNS topic ARN that you want Amazon Textract to publish the+-- completion status of the operation to.+startDocumentTextDetection_notificationChannel :: Lens.Lens' StartDocumentTextDetection (Prelude.Maybe NotificationChannel)+startDocumentTextDetection_notificationChannel = Lens.lens (\StartDocumentTextDetection' {notificationChannel} -> notificationChannel) (\s@StartDocumentTextDetection' {} a -> s {notificationChannel = a} :: StartDocumentTextDetection)++-- | Sets if the output will go to a customer defined bucket. By default+-- Amazon Textract will save the results internally to be accessed with the+-- GetDocumentTextDetection operation.+startDocumentTextDetection_outputConfig :: Lens.Lens' StartDocumentTextDetection (Prelude.Maybe OutputConfig)+startDocumentTextDetection_outputConfig = Lens.lens (\StartDocumentTextDetection' {outputConfig} -> outputConfig) (\s@StartDocumentTextDetection' {} a -> s {outputConfig = a} :: StartDocumentTextDetection)++-- | The location of the document to be processed.+startDocumentTextDetection_documentLocation :: Lens.Lens' StartDocumentTextDetection DocumentLocation+startDocumentTextDetection_documentLocation = Lens.lens (\StartDocumentTextDetection' {documentLocation} -> documentLocation) (\s@StartDocumentTextDetection' {} a -> s {documentLocation = a} :: StartDocumentTextDetection)++instance Core.AWSRequest StartDocumentTextDetection where+  type+    AWSResponse StartDocumentTextDetection =+      StartDocumentTextDetectionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartDocumentTextDetectionResponse'+            Prelude.<$> (x Data..?> "JobId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartDocumentTextDetection where+  hashWithSalt _salt StartDocumentTextDetection' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` jobTag+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` notificationChannel+      `Prelude.hashWithSalt` outputConfig+      `Prelude.hashWithSalt` documentLocation++instance Prelude.NFData StartDocumentTextDetection where+  rnf StartDocumentTextDetection' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf jobTag+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf notificationChannel+      `Prelude.seq` Prelude.rnf outputConfig+      `Prelude.seq` Prelude.rnf documentLocation++instance Data.ToHeaders StartDocumentTextDetection where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "Textract.StartDocumentTextDetection" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartDocumentTextDetection where+  toJSON StartDocumentTextDetection' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("JobTag" Data..=) Prelude.<$> jobTag,+            ("KMSKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("NotificationChannel" Data..=)+              Prelude.<$> notificationChannel,+            ("OutputConfig" Data..=) Prelude.<$> outputConfig,+            Prelude.Just+              ("DocumentLocation" Data..= documentLocation)+          ]+      )++instance Data.ToPath StartDocumentTextDetection where+  toPath = Prelude.const "/"++instance Data.ToQuery StartDocumentTextDetection where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartDocumentTextDetectionResponse' smart constructor.+data StartDocumentTextDetectionResponse = StartDocumentTextDetectionResponse'+  { -- | The identifier of the text detection job for the document. Use @JobId@+    -- to identify the job in a subsequent call to @GetDocumentTextDetection@.+    -- A @JobId@ value is only valid for 7 days.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartDocumentTextDetectionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobId', 'startDocumentTextDetectionResponse_jobId' - The identifier of the text detection job for the document. Use @JobId@+-- to identify the job in a subsequent call to @GetDocumentTextDetection@.+-- A @JobId@ value is only valid for 7 days.+--+-- 'httpStatus', 'startDocumentTextDetectionResponse_httpStatus' - The response's http status code.+newStartDocumentTextDetectionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartDocumentTextDetectionResponse+newStartDocumentTextDetectionResponse pHttpStatus_ =+  StartDocumentTextDetectionResponse'+    { jobId =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The identifier of the text detection job for the document. Use @JobId@+-- to identify the job in a subsequent call to @GetDocumentTextDetection@.+-- A @JobId@ value is only valid for 7 days.+startDocumentTextDetectionResponse_jobId :: Lens.Lens' StartDocumentTextDetectionResponse (Prelude.Maybe Prelude.Text)+startDocumentTextDetectionResponse_jobId = Lens.lens (\StartDocumentTextDetectionResponse' {jobId} -> jobId) (\s@StartDocumentTextDetectionResponse' {} a -> s {jobId = a} :: StartDocumentTextDetectionResponse)++-- | The response's http status code.+startDocumentTextDetectionResponse_httpStatus :: Lens.Lens' StartDocumentTextDetectionResponse Prelude.Int+startDocumentTextDetectionResponse_httpStatus = Lens.lens (\StartDocumentTextDetectionResponse' {httpStatus} -> httpStatus) (\s@StartDocumentTextDetectionResponse' {} a -> s {httpStatus = a} :: StartDocumentTextDetectionResponse)++instance+  Prelude.NFData+    StartDocumentTextDetectionResponse+  where+  rnf StartDocumentTextDetectionResponse' {..} =+    Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/StartExpenseAnalysis.hs view
@@ -0,0 +1,310 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.StartExpenseAnalysis+-- 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 the asynchronous analysis of invoices or receipts for data like+-- contact information, items purchased, and vendor names.+--+-- @StartExpenseAnalysis@ can analyze text in documents that are in JPEG,+-- PNG, and PDF format. The documents must be stored in an Amazon S3+-- bucket. Use the DocumentLocation parameter to specify the name of your+-- S3 bucket and the name of the document in that bucket.+--+-- @StartExpenseAnalysis@ returns a job identifier (@JobId@) that you will+-- provide to @GetExpenseAnalysis@ to retrieve the results of the+-- operation. When the analysis of the input invoices\/receipts is+-- finished, Amazon Textract publishes a completion status to the Amazon+-- Simple Notification Service (Amazon SNS) topic that you provide to the+-- @NotificationChannel@. To obtain the results of the invoice and receipt+-- analysis operation, ensure that the status value published to the Amazon+-- SNS topic is @SUCCEEDED@. If so, call GetExpenseAnalysis, and pass the+-- job identifier (@JobId@) that was returned by your call to+-- @StartExpenseAnalysis@.+--+-- For more information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/invoice-receipts.html Analyzing Invoices and Receipts>.+module Amazonka.Textract.StartExpenseAnalysis+  ( -- * Creating a Request+    StartExpenseAnalysis (..),+    newStartExpenseAnalysis,++    -- * Request Lenses+    startExpenseAnalysis_clientRequestToken,+    startExpenseAnalysis_jobTag,+    startExpenseAnalysis_kmsKeyId,+    startExpenseAnalysis_notificationChannel,+    startExpenseAnalysis_outputConfig,+    startExpenseAnalysis_documentLocation,++    -- * Destructuring the Response+    StartExpenseAnalysisResponse (..),+    newStartExpenseAnalysisResponse,++    -- * Response Lenses+    startExpenseAnalysisResponse_jobId,+    startExpenseAnalysisResponse_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.Textract.Types++-- | /See:/ 'newStartExpenseAnalysis' smart constructor.+data StartExpenseAnalysis = StartExpenseAnalysis'+  { -- | The idempotent token that\'s used to identify the start request. If you+    -- use the same token with multiple @StartDocumentTextDetection@ requests,+    -- the same @JobId@ is returned. Use @ClientRequestToken@ to prevent the+    -- same job from being accidentally started more than once. For more+    -- information, see+    -- <https://docs.aws.amazon.com/textract/latest/dg/api-async.html Calling Amazon Textract Asynchronous Operations>+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | An identifier you specify that\'s included in the completion+    -- notification published to the Amazon SNS topic. For example, you can use+    -- @JobTag@ to identify the type of document that the completion+    -- notification corresponds to (such as a tax form or a receipt).+    jobTag :: Prelude.Maybe Prelude.Text,+    -- | The KMS key used to encrypt the inference results. This can be in either+    -- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+    -- be used for server-side encryption of the objects in the customer+    -- bucket. When this parameter is not enabled, the result will be encrypted+    -- server side,using SSE-S3.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The Amazon SNS topic ARN that you want Amazon Textract to publish the+    -- completion status of the operation to.+    notificationChannel :: Prelude.Maybe NotificationChannel,+    -- | Sets if the output will go to a customer defined bucket. By default,+    -- Amazon Textract will save the results internally to be accessed by the+    -- @GetExpenseAnalysis@ operation.+    outputConfig :: Prelude.Maybe OutputConfig,+    -- | The location of the document to be processed.+    documentLocation :: DocumentLocation+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartExpenseAnalysis' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'startExpenseAnalysis_clientRequestToken' - The idempotent token that\'s used to identify the start request. If you+-- use the same token with multiple @StartDocumentTextDetection@ requests,+-- the same @JobId@ is returned. Use @ClientRequestToken@ to prevent the+-- same job from being accidentally started more than once. For more+-- information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/api-async.html Calling Amazon Textract Asynchronous Operations>+--+-- 'jobTag', 'startExpenseAnalysis_jobTag' - An identifier you specify that\'s included in the completion+-- notification published to the Amazon SNS topic. For example, you can use+-- @JobTag@ to identify the type of document that the completion+-- notification corresponds to (such as a tax form or a receipt).+--+-- 'kmsKeyId', 'startExpenseAnalysis_kmsKeyId' - The KMS key used to encrypt the inference results. This can be in either+-- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+-- be used for server-side encryption of the objects in the customer+-- bucket. When this parameter is not enabled, the result will be encrypted+-- server side,using SSE-S3.+--+-- 'notificationChannel', 'startExpenseAnalysis_notificationChannel' - The Amazon SNS topic ARN that you want Amazon Textract to publish the+-- completion status of the operation to.+--+-- 'outputConfig', 'startExpenseAnalysis_outputConfig' - Sets if the output will go to a customer defined bucket. By default,+-- Amazon Textract will save the results internally to be accessed by the+-- @GetExpenseAnalysis@ operation.+--+-- 'documentLocation', 'startExpenseAnalysis_documentLocation' - The location of the document to be processed.+newStartExpenseAnalysis ::+  -- | 'documentLocation'+  DocumentLocation ->+  StartExpenseAnalysis+newStartExpenseAnalysis pDocumentLocation_ =+  StartExpenseAnalysis'+    { clientRequestToken =+        Prelude.Nothing,+      jobTag = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      notificationChannel = Prelude.Nothing,+      outputConfig = Prelude.Nothing,+      documentLocation = pDocumentLocation_+    }++-- | The idempotent token that\'s used to identify the start request. If you+-- use the same token with multiple @StartDocumentTextDetection@ requests,+-- the same @JobId@ is returned. Use @ClientRequestToken@ to prevent the+-- same job from being accidentally started more than once. For more+-- information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/api-async.html Calling Amazon Textract Asynchronous Operations>+startExpenseAnalysis_clientRequestToken :: Lens.Lens' StartExpenseAnalysis (Prelude.Maybe Prelude.Text)+startExpenseAnalysis_clientRequestToken = Lens.lens (\StartExpenseAnalysis' {clientRequestToken} -> clientRequestToken) (\s@StartExpenseAnalysis' {} a -> s {clientRequestToken = a} :: StartExpenseAnalysis)++-- | An identifier you specify that\'s included in the completion+-- notification published to the Amazon SNS topic. For example, you can use+-- @JobTag@ to identify the type of document that the completion+-- notification corresponds to (such as a tax form or a receipt).+startExpenseAnalysis_jobTag :: Lens.Lens' StartExpenseAnalysis (Prelude.Maybe Prelude.Text)+startExpenseAnalysis_jobTag = Lens.lens (\StartExpenseAnalysis' {jobTag} -> jobTag) (\s@StartExpenseAnalysis' {} a -> s {jobTag = a} :: StartExpenseAnalysis)++-- | The KMS key used to encrypt the inference results. This can be in either+-- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+-- be used for server-side encryption of the objects in the customer+-- bucket. When this parameter is not enabled, the result will be encrypted+-- server side,using SSE-S3.+startExpenseAnalysis_kmsKeyId :: Lens.Lens' StartExpenseAnalysis (Prelude.Maybe Prelude.Text)+startExpenseAnalysis_kmsKeyId = Lens.lens (\StartExpenseAnalysis' {kmsKeyId} -> kmsKeyId) (\s@StartExpenseAnalysis' {} a -> s {kmsKeyId = a} :: StartExpenseAnalysis)++-- | The Amazon SNS topic ARN that you want Amazon Textract to publish the+-- completion status of the operation to.+startExpenseAnalysis_notificationChannel :: Lens.Lens' StartExpenseAnalysis (Prelude.Maybe NotificationChannel)+startExpenseAnalysis_notificationChannel = Lens.lens (\StartExpenseAnalysis' {notificationChannel} -> notificationChannel) (\s@StartExpenseAnalysis' {} a -> s {notificationChannel = a} :: StartExpenseAnalysis)++-- | Sets if the output will go to a customer defined bucket. By default,+-- Amazon Textract will save the results internally to be accessed by the+-- @GetExpenseAnalysis@ operation.+startExpenseAnalysis_outputConfig :: Lens.Lens' StartExpenseAnalysis (Prelude.Maybe OutputConfig)+startExpenseAnalysis_outputConfig = Lens.lens (\StartExpenseAnalysis' {outputConfig} -> outputConfig) (\s@StartExpenseAnalysis' {} a -> s {outputConfig = a} :: StartExpenseAnalysis)++-- | The location of the document to be processed.+startExpenseAnalysis_documentLocation :: Lens.Lens' StartExpenseAnalysis DocumentLocation+startExpenseAnalysis_documentLocation = Lens.lens (\StartExpenseAnalysis' {documentLocation} -> documentLocation) (\s@StartExpenseAnalysis' {} a -> s {documentLocation = a} :: StartExpenseAnalysis)++instance Core.AWSRequest StartExpenseAnalysis where+  type+    AWSResponse StartExpenseAnalysis =+      StartExpenseAnalysisResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartExpenseAnalysisResponse'+            Prelude.<$> (x Data..?> "JobId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartExpenseAnalysis where+  hashWithSalt _salt StartExpenseAnalysis' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` jobTag+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` notificationChannel+      `Prelude.hashWithSalt` outputConfig+      `Prelude.hashWithSalt` documentLocation++instance Prelude.NFData StartExpenseAnalysis where+  rnf StartExpenseAnalysis' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf jobTag+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf notificationChannel+      `Prelude.seq` Prelude.rnf outputConfig+      `Prelude.seq` Prelude.rnf documentLocation++instance Data.ToHeaders StartExpenseAnalysis where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "Textract.StartExpenseAnalysis" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartExpenseAnalysis where+  toJSON StartExpenseAnalysis' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("JobTag" Data..=) Prelude.<$> jobTag,+            ("KMSKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("NotificationChannel" Data..=)+              Prelude.<$> notificationChannel,+            ("OutputConfig" Data..=) Prelude.<$> outputConfig,+            Prelude.Just+              ("DocumentLocation" Data..= documentLocation)+          ]+      )++instance Data.ToPath StartExpenseAnalysis where+  toPath = Prelude.const "/"++instance Data.ToQuery StartExpenseAnalysis where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartExpenseAnalysisResponse' smart constructor.+data StartExpenseAnalysisResponse = StartExpenseAnalysisResponse'+  { -- | A unique identifier for the text detection job. The @JobId@ is returned+    -- from @StartExpenseAnalysis@. A @JobId@ value is only valid for 7 days.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartExpenseAnalysisResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobId', 'startExpenseAnalysisResponse_jobId' - A unique identifier for the text detection job. The @JobId@ is returned+-- from @StartExpenseAnalysis@. A @JobId@ value is only valid for 7 days.+--+-- 'httpStatus', 'startExpenseAnalysisResponse_httpStatus' - The response's http status code.+newStartExpenseAnalysisResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartExpenseAnalysisResponse+newStartExpenseAnalysisResponse pHttpStatus_ =+  StartExpenseAnalysisResponse'+    { jobId =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A unique identifier for the text detection job. The @JobId@ is returned+-- from @StartExpenseAnalysis@. A @JobId@ value is only valid for 7 days.+startExpenseAnalysisResponse_jobId :: Lens.Lens' StartExpenseAnalysisResponse (Prelude.Maybe Prelude.Text)+startExpenseAnalysisResponse_jobId = Lens.lens (\StartExpenseAnalysisResponse' {jobId} -> jobId) (\s@StartExpenseAnalysisResponse' {} a -> s {jobId = a} :: StartExpenseAnalysisResponse)++-- | The response's http status code.+startExpenseAnalysisResponse_httpStatus :: Lens.Lens' StartExpenseAnalysisResponse Prelude.Int+startExpenseAnalysisResponse_httpStatus = Lens.lens (\StartExpenseAnalysisResponse' {httpStatus} -> httpStatus) (\s@StartExpenseAnalysisResponse' {} a -> s {httpStatus = a} :: StartExpenseAnalysisResponse)++instance Prelude.NFData StartExpenseAnalysisResponse where+  rnf StartExpenseAnalysisResponse' {..} =+    Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/StartLendingAnalysis.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.Textract.StartLendingAnalysis+-- 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 the classification and analysis of an input document.+-- @StartLendingAnalysis@ initiates the classification and analysis of a+-- packet of lending documents. @StartLendingAnalysis@ operates on a+-- document file located in an Amazon S3 bucket.+--+-- @StartLendingAnalysis@ can analyze text in documents that are in one of+-- the following formats: JPEG, PNG, TIFF, PDF. Use @DocumentLocation@ to+-- specify the bucket name and the file name of the document.+--+-- @StartLendingAnalysis@ returns a job identifier (@JobId@) that you use+-- to get the results of the operation. When the text analysis is finished,+-- Amazon Textract publishes a completion status to the Amazon Simple+-- Notification Service (Amazon SNS) topic that you specify in+-- @NotificationChannel@. To get the results of the text analysis+-- operation, first check that the status value published to the Amazon SNS+-- topic is SUCCEEDED. If the status is SUCCEEDED you can call either+-- @GetLendingAnalysis@ or @GetLendingAnalysisSummary@ and provide the+-- @JobId@ to obtain the results of the analysis.+--+-- If using @OutputConfig@ to specify an Amazon S3 bucket, the output will+-- be contained within the specified prefix in a directory labeled with the+-- job-id. In the directory there are 3 sub-directories:+--+-- -   detailedResponse (contains the GetLendingAnalysis response)+--+-- -   summaryResponse (for the GetLendingAnalysisSummary response)+--+-- -   splitDocuments (documents split across logical boundaries)+module Amazonka.Textract.StartLendingAnalysis+  ( -- * Creating a Request+    StartLendingAnalysis (..),+    newStartLendingAnalysis,++    -- * Request Lenses+    startLendingAnalysis_clientRequestToken,+    startLendingAnalysis_jobTag,+    startLendingAnalysis_kmsKeyId,+    startLendingAnalysis_notificationChannel,+    startLendingAnalysis_outputConfig,+    startLendingAnalysis_documentLocation,++    -- * Destructuring the Response+    StartLendingAnalysisResponse (..),+    newStartLendingAnalysisResponse,++    -- * Response Lenses+    startLendingAnalysisResponse_jobId,+    startLendingAnalysisResponse_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.Textract.Types++-- | /See:/ 'newStartLendingAnalysis' smart constructor.+data StartLendingAnalysis = StartLendingAnalysis'+  { -- | The idempotent token that you use to identify the start request. If you+    -- use the same token with multiple @StartLendingAnalysis@ requests, the+    -- same @JobId@ is returned. Use @ClientRequestToken@ to prevent the same+    -- job from being accidentally started more than once. For more+    -- information, see+    -- <https://docs.aws.amazon.com/textract/latest/dg/api-sync.html Calling Amazon Textract Asynchronous Operations>.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | An identifier that you specify to be included in the completion+    -- notification published to the Amazon SNS topic. For example, you can use+    -- @JobTag@ to identify the type of document that the completion+    -- notification corresponds to (such as a tax form or a receipt).+    jobTag :: Prelude.Maybe Prelude.Text,+    -- | The KMS key used to encrypt the inference results. This can be in either+    -- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+    -- be used for server-side encryption of the objects in the customer+    -- bucket. When this parameter is not enabled, the result will be encrypted+    -- server side, using SSE-S3.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    notificationChannel :: Prelude.Maybe NotificationChannel,+    outputConfig :: Prelude.Maybe OutputConfig,+    documentLocation :: DocumentLocation+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartLendingAnalysis' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'startLendingAnalysis_clientRequestToken' - The idempotent token that you use to identify the start request. If you+-- use the same token with multiple @StartLendingAnalysis@ requests, the+-- same @JobId@ is returned. Use @ClientRequestToken@ to prevent the same+-- job from being accidentally started more than once. For more+-- information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/api-sync.html Calling Amazon Textract Asynchronous Operations>.+--+-- 'jobTag', 'startLendingAnalysis_jobTag' - An identifier that you specify to be included in the completion+-- notification published to the Amazon SNS topic. For example, you can use+-- @JobTag@ to identify the type of document that the completion+-- notification corresponds to (such as a tax form or a receipt).+--+-- 'kmsKeyId', 'startLendingAnalysis_kmsKeyId' - The KMS key used to encrypt the inference results. This can be in either+-- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+-- be used for server-side encryption of the objects in the customer+-- bucket. When this parameter is not enabled, the result will be encrypted+-- server side, using SSE-S3.+--+-- 'notificationChannel', 'startLendingAnalysis_notificationChannel' - Undocumented member.+--+-- 'outputConfig', 'startLendingAnalysis_outputConfig' - Undocumented member.+--+-- 'documentLocation', 'startLendingAnalysis_documentLocation' - Undocumented member.+newStartLendingAnalysis ::+  -- | 'documentLocation'+  DocumentLocation ->+  StartLendingAnalysis+newStartLendingAnalysis pDocumentLocation_ =+  StartLendingAnalysis'+    { clientRequestToken =+        Prelude.Nothing,+      jobTag = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      notificationChannel = Prelude.Nothing,+      outputConfig = Prelude.Nothing,+      documentLocation = pDocumentLocation_+    }++-- | The idempotent token that you use to identify the start request. If you+-- use the same token with multiple @StartLendingAnalysis@ requests, the+-- same @JobId@ is returned. Use @ClientRequestToken@ to prevent the same+-- job from being accidentally started more than once. For more+-- information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/api-sync.html Calling Amazon Textract Asynchronous Operations>.+startLendingAnalysis_clientRequestToken :: Lens.Lens' StartLendingAnalysis (Prelude.Maybe Prelude.Text)+startLendingAnalysis_clientRequestToken = Lens.lens (\StartLendingAnalysis' {clientRequestToken} -> clientRequestToken) (\s@StartLendingAnalysis' {} a -> s {clientRequestToken = a} :: StartLendingAnalysis)++-- | An identifier that you specify to be included in the completion+-- notification published to the Amazon SNS topic. For example, you can use+-- @JobTag@ to identify the type of document that the completion+-- notification corresponds to (such as a tax form or a receipt).+startLendingAnalysis_jobTag :: Lens.Lens' StartLendingAnalysis (Prelude.Maybe Prelude.Text)+startLendingAnalysis_jobTag = Lens.lens (\StartLendingAnalysis' {jobTag} -> jobTag) (\s@StartLendingAnalysis' {} a -> s {jobTag = a} :: StartLendingAnalysis)++-- | The KMS key used to encrypt the inference results. This can be in either+-- Key ID or Key Alias format. When a KMS key is provided, the KMS key will+-- be used for server-side encryption of the objects in the customer+-- bucket. When this parameter is not enabled, the result will be encrypted+-- server side, using SSE-S3.+startLendingAnalysis_kmsKeyId :: Lens.Lens' StartLendingAnalysis (Prelude.Maybe Prelude.Text)+startLendingAnalysis_kmsKeyId = Lens.lens (\StartLendingAnalysis' {kmsKeyId} -> kmsKeyId) (\s@StartLendingAnalysis' {} a -> s {kmsKeyId = a} :: StartLendingAnalysis)++-- | Undocumented member.+startLendingAnalysis_notificationChannel :: Lens.Lens' StartLendingAnalysis (Prelude.Maybe NotificationChannel)+startLendingAnalysis_notificationChannel = Lens.lens (\StartLendingAnalysis' {notificationChannel} -> notificationChannel) (\s@StartLendingAnalysis' {} a -> s {notificationChannel = a} :: StartLendingAnalysis)++-- | Undocumented member.+startLendingAnalysis_outputConfig :: Lens.Lens' StartLendingAnalysis (Prelude.Maybe OutputConfig)+startLendingAnalysis_outputConfig = Lens.lens (\StartLendingAnalysis' {outputConfig} -> outputConfig) (\s@StartLendingAnalysis' {} a -> s {outputConfig = a} :: StartLendingAnalysis)++-- | Undocumented member.+startLendingAnalysis_documentLocation :: Lens.Lens' StartLendingAnalysis DocumentLocation+startLendingAnalysis_documentLocation = Lens.lens (\StartLendingAnalysis' {documentLocation} -> documentLocation) (\s@StartLendingAnalysis' {} a -> s {documentLocation = a} :: StartLendingAnalysis)++instance Core.AWSRequest StartLendingAnalysis where+  type+    AWSResponse StartLendingAnalysis =+      StartLendingAnalysisResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartLendingAnalysisResponse'+            Prelude.<$> (x Data..?> "JobId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartLendingAnalysis where+  hashWithSalt _salt StartLendingAnalysis' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` jobTag+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` notificationChannel+      `Prelude.hashWithSalt` outputConfig+      `Prelude.hashWithSalt` documentLocation++instance Prelude.NFData StartLendingAnalysis where+  rnf StartLendingAnalysis' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf jobTag+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf notificationChannel+      `Prelude.seq` Prelude.rnf outputConfig+      `Prelude.seq` Prelude.rnf documentLocation++instance Data.ToHeaders StartLendingAnalysis where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "Textract.StartLendingAnalysis" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartLendingAnalysis where+  toJSON StartLendingAnalysis' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("JobTag" Data..=) Prelude.<$> jobTag,+            ("KMSKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("NotificationChannel" Data..=)+              Prelude.<$> notificationChannel,+            ("OutputConfig" Data..=) Prelude.<$> outputConfig,+            Prelude.Just+              ("DocumentLocation" Data..= documentLocation)+          ]+      )++instance Data.ToPath StartLendingAnalysis where+  toPath = Prelude.const "/"++instance Data.ToQuery StartLendingAnalysis where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartLendingAnalysisResponse' smart constructor.+data StartLendingAnalysisResponse = StartLendingAnalysisResponse'+  { -- | A unique identifier for the lending or text-detection job. The @JobId@+    -- is returned from @StartLendingAnalysis@. A @JobId@ value is only valid+    -- for 7 days.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartLendingAnalysisResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobId', 'startLendingAnalysisResponse_jobId' - A unique identifier for the lending or text-detection job. The @JobId@+-- is returned from @StartLendingAnalysis@. A @JobId@ value is only valid+-- for 7 days.+--+-- 'httpStatus', 'startLendingAnalysisResponse_httpStatus' - The response's http status code.+newStartLendingAnalysisResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartLendingAnalysisResponse+newStartLendingAnalysisResponse pHttpStatus_ =+  StartLendingAnalysisResponse'+    { jobId =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A unique identifier for the lending or text-detection job. The @JobId@+-- is returned from @StartLendingAnalysis@. A @JobId@ value is only valid+-- for 7 days.+startLendingAnalysisResponse_jobId :: Lens.Lens' StartLendingAnalysisResponse (Prelude.Maybe Prelude.Text)+startLendingAnalysisResponse_jobId = Lens.lens (\StartLendingAnalysisResponse' {jobId} -> jobId) (\s@StartLendingAnalysisResponse' {} a -> s {jobId = a} :: StartLendingAnalysisResponse)++-- | The response's http status code.+startLendingAnalysisResponse_httpStatus :: Lens.Lens' StartLendingAnalysisResponse Prelude.Int+startLendingAnalysisResponse_httpStatus = Lens.lens (\StartLendingAnalysisResponse' {httpStatus} -> httpStatus) (\s@StartLendingAnalysisResponse' {} a -> s {httpStatus = a} :: StartLendingAnalysisResponse)++instance Prelude.NFData StartLendingAnalysisResponse where+  rnf StartLendingAnalysisResponse' {..} =+    Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Textract/Types.hs view
@@ -0,0 +1,592 @@+{-# 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.Textract.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.Textract.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _BadDocumentException,+    _DocumentTooLargeException,+    _HumanLoopQuotaExceededException,+    _IdempotentParameterMismatchException,+    _InternalServerError,+    _InvalidJobIdException,+    _InvalidKMSKeyException,+    _InvalidParameterException,+    _InvalidS3ObjectException,+    _LimitExceededException,+    _ProvisionedThroughputExceededException,+    _ThrottlingException,+    _UnsupportedDocumentException,++    -- * BlockType+    BlockType (..),++    -- * ContentClassifier+    ContentClassifier (..),++    -- * EntityType+    EntityType (..),++    -- * FeatureType+    FeatureType (..),++    -- * JobStatus+    JobStatus (..),++    -- * RelationshipType+    RelationshipType (..),++    -- * SelectionStatus+    SelectionStatus (..),++    -- * TextType+    TextType (..),++    -- * ValueType+    ValueType (..),++    -- * AnalyzeIDDetections+    AnalyzeIDDetections (..),+    newAnalyzeIDDetections,+    analyzeIDDetections_confidence,+    analyzeIDDetections_normalizedValue,+    analyzeIDDetections_text,++    -- * Block+    Block (..),+    newBlock,+    block_blockType,+    block_columnIndex,+    block_columnSpan,+    block_confidence,+    block_entityTypes,+    block_geometry,+    block_id,+    block_page,+    block_query,+    block_relationships,+    block_rowIndex,+    block_rowSpan,+    block_selectionStatus,+    block_text,+    block_textType,++    -- * BoundingBox+    BoundingBox (..),+    newBoundingBox,+    boundingBox_height,+    boundingBox_left,+    boundingBox_top,+    boundingBox_width,++    -- * DetectedSignature+    DetectedSignature (..),+    newDetectedSignature,+    detectedSignature_page,++    -- * Document+    Document (..),+    newDocument,+    document_bytes,+    document_s3Object,++    -- * DocumentGroup+    DocumentGroup (..),+    newDocumentGroup,+    documentGroup_detectedSignatures,+    documentGroup_splitDocuments,+    documentGroup_type,+    documentGroup_undetectedSignatures,++    -- * DocumentLocation+    DocumentLocation (..),+    newDocumentLocation,+    documentLocation_s3Object,++    -- * DocumentMetadata+    DocumentMetadata (..),+    newDocumentMetadata,+    documentMetadata_pages,++    -- * ExpenseCurrency+    ExpenseCurrency (..),+    newExpenseCurrency,+    expenseCurrency_code,+    expenseCurrency_confidence,++    -- * ExpenseDetection+    ExpenseDetection (..),+    newExpenseDetection,+    expenseDetection_confidence,+    expenseDetection_geometry,+    expenseDetection_text,++    -- * ExpenseDocument+    ExpenseDocument (..),+    newExpenseDocument,+    expenseDocument_blocks,+    expenseDocument_expenseIndex,+    expenseDocument_lineItemGroups,+    expenseDocument_summaryFields,++    -- * ExpenseField+    ExpenseField (..),+    newExpenseField,+    expenseField_currency,+    expenseField_groupProperties,+    expenseField_labelDetection,+    expenseField_pageNumber,+    expenseField_type,+    expenseField_valueDetection,++    -- * ExpenseGroupProperty+    ExpenseGroupProperty (..),+    newExpenseGroupProperty,+    expenseGroupProperty_id,+    expenseGroupProperty_types,++    -- * ExpenseType+    ExpenseType (..),+    newExpenseType,+    expenseType_confidence,+    expenseType_text,++    -- * Extraction+    Extraction (..),+    newExtraction,+    extraction_expenseDocument,+    extraction_identityDocument,+    extraction_lendingDocument,++    -- * Geometry+    Geometry (..),+    newGeometry,+    geometry_boundingBox,+    geometry_polygon,++    -- * HumanLoopActivationOutput+    HumanLoopActivationOutput (..),+    newHumanLoopActivationOutput,+    humanLoopActivationOutput_humanLoopActivationConditionsEvaluationResults,+    humanLoopActivationOutput_humanLoopActivationReasons,+    humanLoopActivationOutput_humanLoopArn,++    -- * HumanLoopConfig+    HumanLoopConfig (..),+    newHumanLoopConfig,+    humanLoopConfig_dataAttributes,+    humanLoopConfig_humanLoopName,+    humanLoopConfig_flowDefinitionArn,++    -- * HumanLoopDataAttributes+    HumanLoopDataAttributes (..),+    newHumanLoopDataAttributes,+    humanLoopDataAttributes_contentClassifiers,++    -- * IdentityDocument+    IdentityDocument (..),+    newIdentityDocument,+    identityDocument_blocks,+    identityDocument_documentIndex,+    identityDocument_identityDocumentFields,++    -- * IdentityDocumentField+    IdentityDocumentField (..),+    newIdentityDocumentField,+    identityDocumentField_type,+    identityDocumentField_valueDetection,++    -- * LendingDetection+    LendingDetection (..),+    newLendingDetection,+    lendingDetection_confidence,+    lendingDetection_geometry,+    lendingDetection_selectionStatus,+    lendingDetection_text,++    -- * LendingDocument+    LendingDocument (..),+    newLendingDocument,+    lendingDocument_lendingFields,+    lendingDocument_signatureDetections,++    -- * LendingField+    LendingField (..),+    newLendingField,+    lendingField_keyDetection,+    lendingField_type,+    lendingField_valueDetections,++    -- * LendingResult+    LendingResult (..),+    newLendingResult,+    lendingResult_extractions,+    lendingResult_page,+    lendingResult_pageClassification,++    -- * LendingSummary+    LendingSummary (..),+    newLendingSummary,+    lendingSummary_documentGroups,+    lendingSummary_undetectedDocumentTypes,++    -- * LineItemFields+    LineItemFields (..),+    newLineItemFields,+    lineItemFields_lineItemExpenseFields,++    -- * LineItemGroup+    LineItemGroup (..),+    newLineItemGroup,+    lineItemGroup_lineItemGroupIndex,+    lineItemGroup_lineItems,++    -- * NormalizedValue+    NormalizedValue (..),+    newNormalizedValue,+    normalizedValue_value,+    normalizedValue_valueType,++    -- * NotificationChannel+    NotificationChannel (..),+    newNotificationChannel,+    notificationChannel_sNSTopicArn,+    notificationChannel_roleArn,++    -- * OutputConfig+    OutputConfig (..),+    newOutputConfig,+    outputConfig_s3Prefix,+    outputConfig_s3Bucket,++    -- * PageClassification+    PageClassification (..),+    newPageClassification,+    pageClassification_pageType,+    pageClassification_pageNumber,++    -- * Point+    Point (..),+    newPoint,+    point_x,+    point_y,++    -- * Prediction+    Prediction (..),+    newPrediction,+    prediction_confidence,+    prediction_value,++    -- * QueriesConfig+    QueriesConfig (..),+    newQueriesConfig,+    queriesConfig_queries,++    -- * Query+    Query (..),+    newQuery,+    query_alias,+    query_pages,+    query_text,++    -- * Relationship+    Relationship (..),+    newRelationship,+    relationship_ids,+    relationship_type,++    -- * S3Object+    S3Object (..),+    newS3Object,+    s3Object_bucket,+    s3Object_name,+    s3Object_version,++    -- * SignatureDetection+    SignatureDetection (..),+    newSignatureDetection,+    signatureDetection_confidence,+    signatureDetection_geometry,++    -- * SplitDocument+    SplitDocument (..),+    newSplitDocument,+    splitDocument_index,+    splitDocument_pages,++    -- * UndetectedSignature+    UndetectedSignature (..),+    newUndetectedSignature,+    undetectedSignature_page,++    -- * Warning+    Warning (..),+    newWarning,+    warning_errorCode,+    warning_pages,+  )+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.Textract.Types.AnalyzeIDDetections+import Amazonka.Textract.Types.Block+import Amazonka.Textract.Types.BlockType+import Amazonka.Textract.Types.BoundingBox+import Amazonka.Textract.Types.ContentClassifier+import Amazonka.Textract.Types.DetectedSignature+import Amazonka.Textract.Types.Document+import Amazonka.Textract.Types.DocumentGroup+import Amazonka.Textract.Types.DocumentLocation+import Amazonka.Textract.Types.DocumentMetadata+import Amazonka.Textract.Types.EntityType+import Amazonka.Textract.Types.ExpenseCurrency+import Amazonka.Textract.Types.ExpenseDetection+import Amazonka.Textract.Types.ExpenseDocument+import Amazonka.Textract.Types.ExpenseField+import Amazonka.Textract.Types.ExpenseGroupProperty+import Amazonka.Textract.Types.ExpenseType+import Amazonka.Textract.Types.Extraction+import Amazonka.Textract.Types.FeatureType+import Amazonka.Textract.Types.Geometry+import Amazonka.Textract.Types.HumanLoopActivationOutput+import Amazonka.Textract.Types.HumanLoopConfig+import Amazonka.Textract.Types.HumanLoopDataAttributes+import Amazonka.Textract.Types.IdentityDocument+import Amazonka.Textract.Types.IdentityDocumentField+import Amazonka.Textract.Types.JobStatus+import Amazonka.Textract.Types.LendingDetection+import Amazonka.Textract.Types.LendingDocument+import Amazonka.Textract.Types.LendingField+import Amazonka.Textract.Types.LendingResult+import Amazonka.Textract.Types.LendingSummary+import Amazonka.Textract.Types.LineItemFields+import Amazonka.Textract.Types.LineItemGroup+import Amazonka.Textract.Types.NormalizedValue+import Amazonka.Textract.Types.NotificationChannel+import Amazonka.Textract.Types.OutputConfig+import Amazonka.Textract.Types.PageClassification+import Amazonka.Textract.Types.Point+import Amazonka.Textract.Types.Prediction+import Amazonka.Textract.Types.QueriesConfig+import Amazonka.Textract.Types.Query+import Amazonka.Textract.Types.Relationship+import Amazonka.Textract.Types.RelationshipType+import Amazonka.Textract.Types.S3Object+import Amazonka.Textract.Types.SelectionStatus+import Amazonka.Textract.Types.SignatureDetection+import Amazonka.Textract.Types.SplitDocument+import Amazonka.Textract.Types.TextType+import Amazonka.Textract.Types.UndetectedSignature+import Amazonka.Textract.Types.ValueType+import Amazonka.Textract.Types.Warning++-- | API version @2018-06-27@ of the Amazon Textract SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "Textract",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "textract",+      Core.signingName = "textract",+      Core.version = "2018-06-27",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "Textract",+      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 aren\'t authorized to perform the action. Use the Amazon Resource+-- Name (ARN) of an authorized user or IAM role to perform the operation.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"++-- | Amazon Textract isn\'t able to read the document. For more information+-- on the document limits in Amazon Textract, see limits.+_BadDocumentException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_BadDocumentException =+  Core._MatchServiceError+    defaultService+    "BadDocumentException"++-- | The document can\'t be processed because it\'s too large. The maximum+-- document size for synchronous operations 10 MB. The maximum document+-- size for asynchronous operations is 500 MB for PDF files.+_DocumentTooLargeException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_DocumentTooLargeException =+  Core._MatchServiceError+    defaultService+    "DocumentTooLargeException"++-- | Indicates you have exceeded the maximum number of active human in the+-- loop workflows available+_HumanLoopQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_HumanLoopQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "HumanLoopQuotaExceededException"++-- | A @ClientRequestToken@ input parameter was reused with an operation, but+-- at least one of the other input parameters is different from the+-- previous call to the operation.+_IdempotentParameterMismatchException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_IdempotentParameterMismatchException =+  Core._MatchServiceError+    defaultService+    "IdempotentParameterMismatchException"++-- | Amazon Textract experienced a service issue. Try your call again.+_InternalServerError :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerError =+  Core._MatchServiceError+    defaultService+    "InternalServerError"++-- | An invalid job identifier was passed to an asynchronous analysis+-- operation.+_InvalidJobIdException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidJobIdException =+  Core._MatchServiceError+    defaultService+    "InvalidJobIdException"++-- | Indicates you do not have decrypt permissions with the KMS key entered,+-- or the KMS key was entered incorrectly.+_InvalidKMSKeyException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidKMSKeyException =+  Core._MatchServiceError+    defaultService+    "InvalidKMSKeyException"++-- | An input parameter violated a constraint. For example, in synchronous+-- operations, an @InvalidParameterException@ exception occurs when neither+-- of the @S3Object@ or @Bytes@ values are supplied in the @Document@+-- request parameter. Validate your parameter before calling the API+-- operation again.+_InvalidParameterException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidParameterException =+  Core._MatchServiceError+    defaultService+    "InvalidParameterException"++-- | Amazon Textract is unable to access the S3 object that\'s specified in+-- the request. for more information,+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html Configure Access to Amazon S3>+-- For troubleshooting information, see+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/troubleshooting.html Troubleshooting Amazon S3>+_InvalidS3ObjectException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidS3ObjectException =+  Core._MatchServiceError+    defaultService+    "InvalidS3ObjectException"++-- | An Amazon Textract service limit was exceeded. For example, if you start+-- too many asynchronous jobs concurrently, calls to start operations+-- (@StartDocumentTextDetection@, for example) raise a+-- LimitExceededException exception (HTTP status code: 400) until the+-- number of concurrently running jobs is below the Amazon Textract service+-- limit.+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_LimitExceededException =+  Core._MatchServiceError+    defaultService+    "LimitExceededException"++-- | The number of requests exceeded your throughput limit. If you want to+-- increase this limit, contact Amazon Textract.+_ProvisionedThroughputExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ProvisionedThroughputExceededException =+  Core._MatchServiceError+    defaultService+    "ProvisionedThroughputExceededException"++-- | Amazon Textract is temporarily unable to process the request. Try your+-- call again.+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"++-- | The format of the input document isn\'t supported. Documents for+-- operations can be in PNG, JPEG, PDF, or TIFF format.+_UnsupportedDocumentException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_UnsupportedDocumentException =+  Core._MatchServiceError+    defaultService+    "UnsupportedDocumentException"
+ gen/Amazonka/Textract/Types/AnalyzeIDDetections.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.AnalyzeIDDetections+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.AnalyzeIDDetections where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.NormalizedValue++-- | Used to contain the information detected by an AnalyzeID operation.+--+-- /See:/ 'newAnalyzeIDDetections' smart constructor.+data AnalyzeIDDetections = AnalyzeIDDetections'+  { -- | The confidence score of the detected text.+    confidence :: Prelude.Maybe Prelude.Double,+    -- | Only returned for dates, returns the type of value detected and the date+    -- written in a more machine readable way.+    normalizedValue :: Prelude.Maybe NormalizedValue,+    -- | Text of either the normalized field or value associated with it.+    text :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AnalyzeIDDetections' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'confidence', 'analyzeIDDetections_confidence' - The confidence score of the detected text.+--+-- 'normalizedValue', 'analyzeIDDetections_normalizedValue' - Only returned for dates, returns the type of value detected and the date+-- written in a more machine readable way.+--+-- 'text', 'analyzeIDDetections_text' - Text of either the normalized field or value associated with it.+newAnalyzeIDDetections ::+  -- | 'text'+  Prelude.Text ->+  AnalyzeIDDetections+newAnalyzeIDDetections pText_ =+  AnalyzeIDDetections'+    { confidence = Prelude.Nothing,+      normalizedValue = Prelude.Nothing,+      text = pText_+    }++-- | The confidence score of the detected text.+analyzeIDDetections_confidence :: Lens.Lens' AnalyzeIDDetections (Prelude.Maybe Prelude.Double)+analyzeIDDetections_confidence = Lens.lens (\AnalyzeIDDetections' {confidence} -> confidence) (\s@AnalyzeIDDetections' {} a -> s {confidence = a} :: AnalyzeIDDetections)++-- | Only returned for dates, returns the type of value detected and the date+-- written in a more machine readable way.+analyzeIDDetections_normalizedValue :: Lens.Lens' AnalyzeIDDetections (Prelude.Maybe NormalizedValue)+analyzeIDDetections_normalizedValue = Lens.lens (\AnalyzeIDDetections' {normalizedValue} -> normalizedValue) (\s@AnalyzeIDDetections' {} a -> s {normalizedValue = a} :: AnalyzeIDDetections)++-- | Text of either the normalized field or value associated with it.+analyzeIDDetections_text :: Lens.Lens' AnalyzeIDDetections Prelude.Text+analyzeIDDetections_text = Lens.lens (\AnalyzeIDDetections' {text} -> text) (\s@AnalyzeIDDetections' {} a -> s {text = a} :: AnalyzeIDDetections)++instance Data.FromJSON AnalyzeIDDetections where+  parseJSON =+    Data.withObject+      "AnalyzeIDDetections"+      ( \x ->+          AnalyzeIDDetections'+            Prelude.<$> (x Data..:? "Confidence")+            Prelude.<*> (x Data..:? "NormalizedValue")+            Prelude.<*> (x Data..: "Text")+      )++instance Prelude.Hashable AnalyzeIDDetections where+  hashWithSalt _salt AnalyzeIDDetections' {..} =+    _salt+      `Prelude.hashWithSalt` confidence+      `Prelude.hashWithSalt` normalizedValue+      `Prelude.hashWithSalt` text++instance Prelude.NFData AnalyzeIDDetections where+  rnf AnalyzeIDDetections' {..} =+    Prelude.rnf confidence+      `Prelude.seq` Prelude.rnf normalizedValue+      `Prelude.seq` Prelude.rnf text
+ gen/Amazonka/Textract/Types/Block.hs view
@@ -0,0 +1,530 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.Block+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.Block where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.BlockType+import Amazonka.Textract.Types.EntityType+import Amazonka.Textract.Types.Geometry+import Amazonka.Textract.Types.Query+import Amazonka.Textract.Types.Relationship+import Amazonka.Textract.Types.SelectionStatus+import Amazonka.Textract.Types.TextType++-- | A @Block@ represents items that are recognized in a document within a+-- group of pixels close to each other. The information returned in a+-- @Block@ object depends on the type of operation. In text detection for+-- documents (for example DetectDocumentText), you get information about+-- the detected words and lines of text. In text analysis (for example+-- AnalyzeDocument), you can also get information about the fields, tables,+-- and selection elements that are detected in the document.+--+-- An array of @Block@ objects is returned by both synchronous and+-- asynchronous operations. In synchronous operations, such as+-- DetectDocumentText, the array of @Block@ objects is the entire set of+-- results. In asynchronous operations, such as GetDocumentAnalysis, the+-- array is returned over one or more responses.+--+-- For more information, see+-- <https://docs.aws.amazon.com/textract/latest/dg/how-it-works.html How Amazon Textract Works>.+--+-- /See:/ 'newBlock' smart constructor.+data Block = Block'+  { -- | The type of text item that\'s recognized. In operations for text+    -- detection, the following types are returned:+    --+    -- -   /PAGE/ - Contains a list of the LINE @Block@ objects that are+    --     detected on a document page.+    --+    -- -   /WORD/ - A word detected on a document page. A word is one or more+    --     ISO basic Latin script characters that aren\'t separated by spaces.+    --+    -- -   /LINE/ - A string of tab-delimited, contiguous words that are+    --     detected on a document page.+    --+    -- In text analysis operations, the following types are returned:+    --+    -- -   /PAGE/ - Contains a list of child @Block@ objects that are detected+    --     on a document page.+    --+    -- -   /KEY_VALUE_SET/ - Stores the KEY and VALUE @Block@ objects for+    --     linked text that\'s detected on a document page. Use the+    --     @EntityType@ field to determine if a KEY_VALUE_SET object is a KEY+    --     @Block@ object or a VALUE @Block@ object.+    --+    -- -   /WORD/ - A word that\'s detected on a document page. A word is one+    --     or more ISO basic Latin script characters that aren\'t separated by+    --     spaces.+    --+    -- -   /LINE/ - A string of tab-delimited, contiguous words that are+    --     detected on a document page.+    --+    -- -   /TABLE/ - A table that\'s detected on a document page. A table is+    --     grid-based information with two or more rows or columns, with a cell+    --     span of one row and one column each.+    --+    -- -   /CELL/ - A cell within a detected table. The cell is the parent of+    --     the block that contains the text in the cell.+    --+    -- -   /SELECTION_ELEMENT/ - A selection element such as an option button+    --     (radio button) or a check box that\'s detected on a document page.+    --     Use the value of @SelectionStatus@ to determine the status of the+    --     selection element.+    --+    -- -   /SIGNATURE/ - The location and confidene score of a signature+    --     detected on a document page. Can be returned as part of a Key-Value+    --     pair or a detected cell.+    --+    -- -   /QUERY/ - A question asked during the call of AnalyzeDocument.+    --     Contains an alias and an ID that attaches it to its answer.+    --+    -- -   /QUERY_RESULT/ - A response to a question asked during the call of+    --     analyze document. Comes with an alias and ID for ease of locating in+    --     a response. Also contains location and confidence score.+    blockType :: Prelude.Maybe BlockType,+    -- | The column in which a table cell appears. The first column position is+    -- 1. @ColumnIndex@ isn\'t returned by @DetectDocumentText@ and+    -- @GetDocumentTextDetection@.+    columnIndex :: Prelude.Maybe Prelude.Natural,+    -- | The number of columns that a table cell spans. Currently this value is+    -- always 1, even if the number of columns spanned is greater than 1.+    -- @ColumnSpan@ isn\'t returned by @DetectDocumentText@ and+    -- @GetDocumentTextDetection@.+    columnSpan :: Prelude.Maybe Prelude.Natural,+    -- | The confidence score that Amazon Textract has in the accuracy of the+    -- recognized text and the accuracy of the geometry points around the+    -- recognized text.+    confidence :: Prelude.Maybe Prelude.Double,+    -- | The type of entity. The following can be returned:+    --+    -- -   /KEY/ - An identifier for a field on the document.+    --+    -- -   /VALUE/ - The field text.+    --+    -- @EntityTypes@ isn\'t returned by @DetectDocumentText@ and+    -- @GetDocumentTextDetection@.+    entityTypes :: Prelude.Maybe [EntityType],+    -- | The location of the recognized text on the image. It includes an+    -- axis-aligned, coarse bounding box that surrounds the text, and a+    -- finer-grain polygon for more accurate spatial information.+    geometry :: Prelude.Maybe Geometry,+    -- | The identifier for the recognized text. The identifier is only unique+    -- for a single operation.+    id :: Prelude.Maybe Prelude.Text,+    -- | The page on which a block was detected. @Page@ is returned by+    -- synchronous and asynchronous operations. Page values greater than 1 are+    -- only returned for multipage documents that are in PDF or TIFF format. A+    -- scanned image (JPEG\/PNG) provided to an asynchronous operation, even if+    -- it contains multiple document pages, is considered a single-page+    -- document. This means that for scanned images the value of @Page@ is+    -- always 1. Synchronous operations operations will also return a @Page@+    -- value of 1 because every input document is considered to be a+    -- single-page document.+    page :: Prelude.Maybe Prelude.Natural,+    query :: Prelude.Maybe Query,+    -- | A list of child blocks of the current block. For example, a LINE object+    -- has child blocks for each WORD block that\'s part of the line of text.+    -- There aren\'t Relationship objects in the list for relationships that+    -- don\'t exist, such as when the current block has no child blocks. The+    -- list size can be the following:+    --+    -- -   0 - The block has no child blocks.+    --+    -- -   1 - The block has child blocks.+    relationships :: Prelude.Maybe [Relationship],+    -- | The row in which a table cell is located. The first row position is 1.+    -- @RowIndex@ isn\'t returned by @DetectDocumentText@ and+    -- @GetDocumentTextDetection@.+    rowIndex :: Prelude.Maybe Prelude.Natural,+    -- | The number of rows that a table cell spans. Currently this value is+    -- always 1, even if the number of rows spanned is greater than 1.+    -- @RowSpan@ isn\'t returned by @DetectDocumentText@ and+    -- @GetDocumentTextDetection@.+    rowSpan :: Prelude.Maybe Prelude.Natural,+    -- | The selection status of a selection element, such as an option button or+    -- check box.+    selectionStatus :: Prelude.Maybe SelectionStatus,+    -- | The word or line of text that\'s recognized by Amazon Textract.+    text :: Prelude.Maybe Prelude.Text,+    -- | The kind of text that Amazon Textract has detected. Can check for+    -- handwritten text and printed text.+    textType :: Prelude.Maybe TextType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Block' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'blockType', 'block_blockType' - The type of text item that\'s recognized. In operations for text+-- detection, the following types are returned:+--+-- -   /PAGE/ - Contains a list of the LINE @Block@ objects that are+--     detected on a document page.+--+-- -   /WORD/ - A word detected on a document page. A word is one or more+--     ISO basic Latin script characters that aren\'t separated by spaces.+--+-- -   /LINE/ - A string of tab-delimited, contiguous words that are+--     detected on a document page.+--+-- In text analysis operations, the following types are returned:+--+-- -   /PAGE/ - Contains a list of child @Block@ objects that are detected+--     on a document page.+--+-- -   /KEY_VALUE_SET/ - Stores the KEY and VALUE @Block@ objects for+--     linked text that\'s detected on a document page. Use the+--     @EntityType@ field to determine if a KEY_VALUE_SET object is a KEY+--     @Block@ object or a VALUE @Block@ object.+--+-- -   /WORD/ - A word that\'s detected on a document page. A word is one+--     or more ISO basic Latin script characters that aren\'t separated by+--     spaces.+--+-- -   /LINE/ - A string of tab-delimited, contiguous words that are+--     detected on a document page.+--+-- -   /TABLE/ - A table that\'s detected on a document page. A table is+--     grid-based information with two or more rows or columns, with a cell+--     span of one row and one column each.+--+-- -   /CELL/ - A cell within a detected table. The cell is the parent of+--     the block that contains the text in the cell.+--+-- -   /SELECTION_ELEMENT/ - A selection element such as an option button+--     (radio button) or a check box that\'s detected on a document page.+--     Use the value of @SelectionStatus@ to determine the status of the+--     selection element.+--+-- -   /SIGNATURE/ - The location and confidene score of a signature+--     detected on a document page. Can be returned as part of a Key-Value+--     pair or a detected cell.+--+-- -   /QUERY/ - A question asked during the call of AnalyzeDocument.+--     Contains an alias and an ID that attaches it to its answer.+--+-- -   /QUERY_RESULT/ - A response to a question asked during the call of+--     analyze document. Comes with an alias and ID for ease of locating in+--     a response. Also contains location and confidence score.+--+-- 'columnIndex', 'block_columnIndex' - The column in which a table cell appears. The first column position is+-- 1. @ColumnIndex@ isn\'t returned by @DetectDocumentText@ and+-- @GetDocumentTextDetection@.+--+-- 'columnSpan', 'block_columnSpan' - The number of columns that a table cell spans. Currently this value is+-- always 1, even if the number of columns spanned is greater than 1.+-- @ColumnSpan@ isn\'t returned by @DetectDocumentText@ and+-- @GetDocumentTextDetection@.+--+-- 'confidence', 'block_confidence' - The confidence score that Amazon Textract has in the accuracy of the+-- recognized text and the accuracy of the geometry points around the+-- recognized text.+--+-- 'entityTypes', 'block_entityTypes' - The type of entity. The following can be returned:+--+-- -   /KEY/ - An identifier for a field on the document.+--+-- -   /VALUE/ - The field text.+--+-- @EntityTypes@ isn\'t returned by @DetectDocumentText@ and+-- @GetDocumentTextDetection@.+--+-- 'geometry', 'block_geometry' - The location of the recognized text on the image. It includes an+-- axis-aligned, coarse bounding box that surrounds the text, and a+-- finer-grain polygon for more accurate spatial information.+--+-- 'id', 'block_id' - The identifier for the recognized text. The identifier is only unique+-- for a single operation.+--+-- 'page', 'block_page' - The page on which a block was detected. @Page@ is returned by+-- synchronous and asynchronous operations. Page values greater than 1 are+-- only returned for multipage documents that are in PDF or TIFF format. A+-- scanned image (JPEG\/PNG) provided to an asynchronous operation, even if+-- it contains multiple document pages, is considered a single-page+-- document. This means that for scanned images the value of @Page@ is+-- always 1. Synchronous operations operations will also return a @Page@+-- value of 1 because every input document is considered to be a+-- single-page document.+--+-- 'query', 'block_query' -+--+-- 'relationships', 'block_relationships' - A list of child blocks of the current block. For example, a LINE object+-- has child blocks for each WORD block that\'s part of the line of text.+-- There aren\'t Relationship objects in the list for relationships that+-- don\'t exist, such as when the current block has no child blocks. The+-- list size can be the following:+--+-- -   0 - The block has no child blocks.+--+-- -   1 - The block has child blocks.+--+-- 'rowIndex', 'block_rowIndex' - The row in which a table cell is located. The first row position is 1.+-- @RowIndex@ isn\'t returned by @DetectDocumentText@ and+-- @GetDocumentTextDetection@.+--+-- 'rowSpan', 'block_rowSpan' - The number of rows that a table cell spans. Currently this value is+-- always 1, even if the number of rows spanned is greater than 1.+-- @RowSpan@ isn\'t returned by @DetectDocumentText@ and+-- @GetDocumentTextDetection@.+--+-- 'selectionStatus', 'block_selectionStatus' - The selection status of a selection element, such as an option button or+-- check box.+--+-- 'text', 'block_text' - The word or line of text that\'s recognized by Amazon Textract.+--+-- 'textType', 'block_textType' - The kind of text that Amazon Textract has detected. Can check for+-- handwritten text and printed text.+newBlock ::+  Block+newBlock =+  Block'+    { blockType = Prelude.Nothing,+      columnIndex = Prelude.Nothing,+      columnSpan = Prelude.Nothing,+      confidence = Prelude.Nothing,+      entityTypes = Prelude.Nothing,+      geometry = Prelude.Nothing,+      id = Prelude.Nothing,+      page = Prelude.Nothing,+      query = Prelude.Nothing,+      relationships = Prelude.Nothing,+      rowIndex = Prelude.Nothing,+      rowSpan = Prelude.Nothing,+      selectionStatus = Prelude.Nothing,+      text = Prelude.Nothing,+      textType = Prelude.Nothing+    }++-- | The type of text item that\'s recognized. In operations for text+-- detection, the following types are returned:+--+-- -   /PAGE/ - Contains a list of the LINE @Block@ objects that are+--     detected on a document page.+--+-- -   /WORD/ - A word detected on a document page. A word is one or more+--     ISO basic Latin script characters that aren\'t separated by spaces.+--+-- -   /LINE/ - A string of tab-delimited, contiguous words that are+--     detected on a document page.+--+-- In text analysis operations, the following types are returned:+--+-- -   /PAGE/ - Contains a list of child @Block@ objects that are detected+--     on a document page.+--+-- -   /KEY_VALUE_SET/ - Stores the KEY and VALUE @Block@ objects for+--     linked text that\'s detected on a document page. Use the+--     @EntityType@ field to determine if a KEY_VALUE_SET object is a KEY+--     @Block@ object or a VALUE @Block@ object.+--+-- -   /WORD/ - A word that\'s detected on a document page. A word is one+--     or more ISO basic Latin script characters that aren\'t separated by+--     spaces.+--+-- -   /LINE/ - A string of tab-delimited, contiguous words that are+--     detected on a document page.+--+-- -   /TABLE/ - A table that\'s detected on a document page. A table is+--     grid-based information with two or more rows or columns, with a cell+--     span of one row and one column each.+--+-- -   /CELL/ - A cell within a detected table. The cell is the parent of+--     the block that contains the text in the cell.+--+-- -   /SELECTION_ELEMENT/ - A selection element such as an option button+--     (radio button) or a check box that\'s detected on a document page.+--     Use the value of @SelectionStatus@ to determine the status of the+--     selection element.+--+-- -   /SIGNATURE/ - The location and confidene score of a signature+--     detected on a document page. Can be returned as part of a Key-Value+--     pair or a detected cell.+--+-- -   /QUERY/ - A question asked during the call of AnalyzeDocument.+--     Contains an alias and an ID that attaches it to its answer.+--+-- -   /QUERY_RESULT/ - A response to a question asked during the call of+--     analyze document. Comes with an alias and ID for ease of locating in+--     a response. Also contains location and confidence score.+block_blockType :: Lens.Lens' Block (Prelude.Maybe BlockType)+block_blockType = Lens.lens (\Block' {blockType} -> blockType) (\s@Block' {} a -> s {blockType = a} :: Block)++-- | The column in which a table cell appears. The first column position is+-- 1. @ColumnIndex@ isn\'t returned by @DetectDocumentText@ and+-- @GetDocumentTextDetection@.+block_columnIndex :: Lens.Lens' Block (Prelude.Maybe Prelude.Natural)+block_columnIndex = Lens.lens (\Block' {columnIndex} -> columnIndex) (\s@Block' {} a -> s {columnIndex = a} :: Block)++-- | The number of columns that a table cell spans. Currently this value is+-- always 1, even if the number of columns spanned is greater than 1.+-- @ColumnSpan@ isn\'t returned by @DetectDocumentText@ and+-- @GetDocumentTextDetection@.+block_columnSpan :: Lens.Lens' Block (Prelude.Maybe Prelude.Natural)+block_columnSpan = Lens.lens (\Block' {columnSpan} -> columnSpan) (\s@Block' {} a -> s {columnSpan = a} :: Block)++-- | The confidence score that Amazon Textract has in the accuracy of the+-- recognized text and the accuracy of the geometry points around the+-- recognized text.+block_confidence :: Lens.Lens' Block (Prelude.Maybe Prelude.Double)+block_confidence = Lens.lens (\Block' {confidence} -> confidence) (\s@Block' {} a -> s {confidence = a} :: Block)++-- | The type of entity. The following can be returned:+--+-- -   /KEY/ - An identifier for a field on the document.+--+-- -   /VALUE/ - The field text.+--+-- @EntityTypes@ isn\'t returned by @DetectDocumentText@ and+-- @GetDocumentTextDetection@.+block_entityTypes :: Lens.Lens' Block (Prelude.Maybe [EntityType])+block_entityTypes = Lens.lens (\Block' {entityTypes} -> entityTypes) (\s@Block' {} a -> s {entityTypes = a} :: Block) Prelude.. Lens.mapping Lens.coerced++-- | The location of the recognized text on the image. It includes an+-- axis-aligned, coarse bounding box that surrounds the text, and a+-- finer-grain polygon for more accurate spatial information.+block_geometry :: Lens.Lens' Block (Prelude.Maybe Geometry)+block_geometry = Lens.lens (\Block' {geometry} -> geometry) (\s@Block' {} a -> s {geometry = a} :: Block)++-- | The identifier for the recognized text. The identifier is only unique+-- for a single operation.+block_id :: Lens.Lens' Block (Prelude.Maybe Prelude.Text)+block_id = Lens.lens (\Block' {id} -> id) (\s@Block' {} a -> s {id = a} :: Block)++-- | The page on which a block was detected. @Page@ is returned by+-- synchronous and asynchronous operations. Page values greater than 1 are+-- only returned for multipage documents that are in PDF or TIFF format. A+-- scanned image (JPEG\/PNG) provided to an asynchronous operation, even if+-- it contains multiple document pages, is considered a single-page+-- document. This means that for scanned images the value of @Page@ is+-- always 1. Synchronous operations operations will also return a @Page@+-- value of 1 because every input document is considered to be a+-- single-page document.+block_page :: Lens.Lens' Block (Prelude.Maybe Prelude.Natural)+block_page = Lens.lens (\Block' {page} -> page) (\s@Block' {} a -> s {page = a} :: Block)++block_query :: Lens.Lens' Block (Prelude.Maybe Query)+block_query = Lens.lens (\Block' {query} -> query) (\s@Block' {} a -> s {query = a} :: Block)++-- | A list of child blocks of the current block. For example, a LINE object+-- has child blocks for each WORD block that\'s part of the line of text.+-- There aren\'t Relationship objects in the list for relationships that+-- don\'t exist, such as when the current block has no child blocks. The+-- list size can be the following:+--+-- -   0 - The block has no child blocks.+--+-- -   1 - The block has child blocks.+block_relationships :: Lens.Lens' Block (Prelude.Maybe [Relationship])+block_relationships = Lens.lens (\Block' {relationships} -> relationships) (\s@Block' {} a -> s {relationships = a} :: Block) Prelude.. Lens.mapping Lens.coerced++-- | The row in which a table cell is located. The first row position is 1.+-- @RowIndex@ isn\'t returned by @DetectDocumentText@ and+-- @GetDocumentTextDetection@.+block_rowIndex :: Lens.Lens' Block (Prelude.Maybe Prelude.Natural)+block_rowIndex = Lens.lens (\Block' {rowIndex} -> rowIndex) (\s@Block' {} a -> s {rowIndex = a} :: Block)++-- | The number of rows that a table cell spans. Currently this value is+-- always 1, even if the number of rows spanned is greater than 1.+-- @RowSpan@ isn\'t returned by @DetectDocumentText@ and+-- @GetDocumentTextDetection@.+block_rowSpan :: Lens.Lens' Block (Prelude.Maybe Prelude.Natural)+block_rowSpan = Lens.lens (\Block' {rowSpan} -> rowSpan) (\s@Block' {} a -> s {rowSpan = a} :: Block)++-- | The selection status of a selection element, such as an option button or+-- check box.+block_selectionStatus :: Lens.Lens' Block (Prelude.Maybe SelectionStatus)+block_selectionStatus = Lens.lens (\Block' {selectionStatus} -> selectionStatus) (\s@Block' {} a -> s {selectionStatus = a} :: Block)++-- | The word or line of text that\'s recognized by Amazon Textract.+block_text :: Lens.Lens' Block (Prelude.Maybe Prelude.Text)+block_text = Lens.lens (\Block' {text} -> text) (\s@Block' {} a -> s {text = a} :: Block)++-- | The kind of text that Amazon Textract has detected. Can check for+-- handwritten text and printed text.+block_textType :: Lens.Lens' Block (Prelude.Maybe TextType)+block_textType = Lens.lens (\Block' {textType} -> textType) (\s@Block' {} a -> s {textType = a} :: Block)++instance Data.FromJSON Block where+  parseJSON =+    Data.withObject+      "Block"+      ( \x ->+          Block'+            Prelude.<$> (x Data..:? "BlockType")+            Prelude.<*> (x Data..:? "ColumnIndex")+            Prelude.<*> (x Data..:? "ColumnSpan")+            Prelude.<*> (x Data..:? "Confidence")+            Prelude.<*> (x Data..:? "EntityTypes" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "Geometry")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "Page")+            Prelude.<*> (x Data..:? "Query")+            Prelude.<*> (x Data..:? "Relationships" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "RowIndex")+            Prelude.<*> (x Data..:? "RowSpan")+            Prelude.<*> (x Data..:? "SelectionStatus")+            Prelude.<*> (x Data..:? "Text")+            Prelude.<*> (x Data..:? "TextType")+      )++instance Prelude.Hashable Block where+  hashWithSalt _salt Block' {..} =+    _salt+      `Prelude.hashWithSalt` blockType+      `Prelude.hashWithSalt` columnIndex+      `Prelude.hashWithSalt` columnSpan+      `Prelude.hashWithSalt` confidence+      `Prelude.hashWithSalt` entityTypes+      `Prelude.hashWithSalt` geometry+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` page+      `Prelude.hashWithSalt` query+      `Prelude.hashWithSalt` relationships+      `Prelude.hashWithSalt` rowIndex+      `Prelude.hashWithSalt` rowSpan+      `Prelude.hashWithSalt` selectionStatus+      `Prelude.hashWithSalt` text+      `Prelude.hashWithSalt` textType++instance Prelude.NFData Block where+  rnf Block' {..} =+    Prelude.rnf blockType+      `Prelude.seq` Prelude.rnf columnIndex+      `Prelude.seq` Prelude.rnf columnSpan+      `Prelude.seq` Prelude.rnf confidence+      `Prelude.seq` Prelude.rnf entityTypes+      `Prelude.seq` Prelude.rnf geometry+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf page+      `Prelude.seq` Prelude.rnf query+      `Prelude.seq` Prelude.rnf relationships+      `Prelude.seq` Prelude.rnf rowIndex+      `Prelude.seq` Prelude.rnf rowSpan+      `Prelude.seq` Prelude.rnf selectionStatus+      `Prelude.seq` Prelude.rnf text+      `Prelude.seq` Prelude.rnf textType
+ gen/Amazonka/Textract/Types/BlockType.hs view
@@ -0,0 +1,121 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.BlockType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.BlockType+  ( BlockType+      ( ..,+        BlockType_CELL,+        BlockType_KEY_VALUE_SET,+        BlockType_LINE,+        BlockType_MERGED_CELL,+        BlockType_PAGE,+        BlockType_QUERY,+        BlockType_QUERY_RESULT,+        BlockType_SELECTION_ELEMENT,+        BlockType_SIGNATURE,+        BlockType_TABLE,+        BlockType_TITLE,+        BlockType_WORD+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype BlockType = BlockType'+  { fromBlockType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern BlockType_CELL :: BlockType+pattern BlockType_CELL = BlockType' "CELL"++pattern BlockType_KEY_VALUE_SET :: BlockType+pattern BlockType_KEY_VALUE_SET = BlockType' "KEY_VALUE_SET"++pattern BlockType_LINE :: BlockType+pattern BlockType_LINE = BlockType' "LINE"++pattern BlockType_MERGED_CELL :: BlockType+pattern BlockType_MERGED_CELL = BlockType' "MERGED_CELL"++pattern BlockType_PAGE :: BlockType+pattern BlockType_PAGE = BlockType' "PAGE"++pattern BlockType_QUERY :: BlockType+pattern BlockType_QUERY = BlockType' "QUERY"++pattern BlockType_QUERY_RESULT :: BlockType+pattern BlockType_QUERY_RESULT = BlockType' "QUERY_RESULT"++pattern BlockType_SELECTION_ELEMENT :: BlockType+pattern BlockType_SELECTION_ELEMENT = BlockType' "SELECTION_ELEMENT"++pattern BlockType_SIGNATURE :: BlockType+pattern BlockType_SIGNATURE = BlockType' "SIGNATURE"++pattern BlockType_TABLE :: BlockType+pattern BlockType_TABLE = BlockType' "TABLE"++pattern BlockType_TITLE :: BlockType+pattern BlockType_TITLE = BlockType' "TITLE"++pattern BlockType_WORD :: BlockType+pattern BlockType_WORD = BlockType' "WORD"++{-# COMPLETE+  BlockType_CELL,+  BlockType_KEY_VALUE_SET,+  BlockType_LINE,+  BlockType_MERGED_CELL,+  BlockType_PAGE,+  BlockType_QUERY,+  BlockType_QUERY_RESULT,+  BlockType_SELECTION_ELEMENT,+  BlockType_SIGNATURE,+  BlockType_TABLE,+  BlockType_TITLE,+  BlockType_WORD,+  BlockType'+  #-}
+ gen/Amazonka/Textract/Types/BoundingBox.hs view
@@ -0,0 +1,135 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.BoundingBox+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.BoundingBox where++import qualified 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 bounding box around the detected page, text, key-value pair, table,+-- table cell, or selection element on a document page. The @left@+-- (x-coordinate) and @top@ (y-coordinate) are coordinates that represent+-- the top and left sides of the bounding box. Note that the upper-left+-- corner of the image is the origin (0,0).+--+-- The @top@ and @left@ values returned are ratios of the overall document+-- page size. For example, if the input image is 700 x 200 pixels, and the+-- top-left coordinate of the bounding box is 350 x 50 pixels, the API+-- returns a @left@ value of 0.5 (350\/700) and a @top@ value of 0.25+-- (50\/200).+--+-- The @width@ and @height@ values represent the dimensions of the bounding+-- box as a ratio of the overall document page dimension. For example, if+-- the document page size is 700 x 200 pixels, and the bounding box width+-- is 70 pixels, the width returned is 0.1.+--+-- /See:/ 'newBoundingBox' smart constructor.+data BoundingBox = BoundingBox'+  { -- | The height of the bounding box as a ratio of the overall document page+    -- height.+    height :: Prelude.Maybe Prelude.Double,+    -- | The left coordinate of the bounding box as a ratio of overall document+    -- page width.+    left :: Prelude.Maybe Prelude.Double,+    -- | The top coordinate of the bounding box as a ratio of overall document+    -- page height.+    top :: Prelude.Maybe Prelude.Double,+    -- | The width of the bounding box as a ratio of the overall document page+    -- width.+    width :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BoundingBox' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'height', 'boundingBox_height' - The height of the bounding box as a ratio of the overall document page+-- height.+--+-- 'left', 'boundingBox_left' - The left coordinate of the bounding box as a ratio of overall document+-- page width.+--+-- 'top', 'boundingBox_top' - The top coordinate of the bounding box as a ratio of overall document+-- page height.+--+-- 'width', 'boundingBox_width' - The width of the bounding box as a ratio of the overall document page+-- width.+newBoundingBox ::+  BoundingBox+newBoundingBox =+  BoundingBox'+    { height = Prelude.Nothing,+      left = Prelude.Nothing,+      top = Prelude.Nothing,+      width = Prelude.Nothing+    }++-- | The height of the bounding box as a ratio of the overall document page+-- height.+boundingBox_height :: Lens.Lens' BoundingBox (Prelude.Maybe Prelude.Double)+boundingBox_height = Lens.lens (\BoundingBox' {height} -> height) (\s@BoundingBox' {} a -> s {height = a} :: BoundingBox)++-- | The left coordinate of the bounding box as a ratio of overall document+-- page width.+boundingBox_left :: Lens.Lens' BoundingBox (Prelude.Maybe Prelude.Double)+boundingBox_left = Lens.lens (\BoundingBox' {left} -> left) (\s@BoundingBox' {} a -> s {left = a} :: BoundingBox)++-- | The top coordinate of the bounding box as a ratio of overall document+-- page height.+boundingBox_top :: Lens.Lens' BoundingBox (Prelude.Maybe Prelude.Double)+boundingBox_top = Lens.lens (\BoundingBox' {top} -> top) (\s@BoundingBox' {} a -> s {top = a} :: BoundingBox)++-- | The width of the bounding box as a ratio of the overall document page+-- width.+boundingBox_width :: Lens.Lens' BoundingBox (Prelude.Maybe Prelude.Double)+boundingBox_width = Lens.lens (\BoundingBox' {width} -> width) (\s@BoundingBox' {} a -> s {width = a} :: BoundingBox)++instance Data.FromJSON BoundingBox where+  parseJSON =+    Data.withObject+      "BoundingBox"+      ( \x ->+          BoundingBox'+            Prelude.<$> (x Data..:? "Height")+            Prelude.<*> (x Data..:? "Left")+            Prelude.<*> (x Data..:? "Top")+            Prelude.<*> (x Data..:? "Width")+      )++instance Prelude.Hashable BoundingBox where+  hashWithSalt _salt BoundingBox' {..} =+    _salt+      `Prelude.hashWithSalt` height+      `Prelude.hashWithSalt` left+      `Prelude.hashWithSalt` top+      `Prelude.hashWithSalt` width++instance Prelude.NFData BoundingBox where+  rnf BoundingBox' {..} =+    Prelude.rnf height+      `Prelude.seq` Prelude.rnf left+      `Prelude.seq` Prelude.rnf top+      `Prelude.seq` Prelude.rnf width
+ gen/Amazonka/Textract/Types/ContentClassifier.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.Textract.Types.ContentClassifier+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.ContentClassifier+  ( ContentClassifier+      ( ..,+        ContentClassifier_FreeOfAdultContent,+        ContentClassifier_FreeOfPersonallyIdentifiableInformation+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ContentClassifier = ContentClassifier'+  { fromContentClassifier ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ContentClassifier_FreeOfAdultContent :: ContentClassifier+pattern ContentClassifier_FreeOfAdultContent = ContentClassifier' "FreeOfAdultContent"++pattern ContentClassifier_FreeOfPersonallyIdentifiableInformation :: ContentClassifier+pattern ContentClassifier_FreeOfPersonallyIdentifiableInformation = ContentClassifier' "FreeOfPersonallyIdentifiableInformation"++{-# COMPLETE+  ContentClassifier_FreeOfAdultContent,+  ContentClassifier_FreeOfPersonallyIdentifiableInformation,+  ContentClassifier'+  #-}
+ gen/Amazonka/Textract/Types/DetectedSignature.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.DetectedSignature+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.DetectedSignature where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure that holds information regarding a detected signature on a+-- page.+--+-- /See:/ 'newDetectedSignature' smart constructor.+data DetectedSignature = DetectedSignature'+  { -- | The page a detected signature was found on.+    page :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DetectedSignature' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'page', 'detectedSignature_page' - The page a detected signature was found on.+newDetectedSignature ::+  DetectedSignature+newDetectedSignature =+  DetectedSignature' {page = Prelude.Nothing}++-- | The page a detected signature was found on.+detectedSignature_page :: Lens.Lens' DetectedSignature (Prelude.Maybe Prelude.Natural)+detectedSignature_page = Lens.lens (\DetectedSignature' {page} -> page) (\s@DetectedSignature' {} a -> s {page = a} :: DetectedSignature)++instance Data.FromJSON DetectedSignature where+  parseJSON =+    Data.withObject+      "DetectedSignature"+      ( \x ->+          DetectedSignature' Prelude.<$> (x Data..:? "Page")+      )++instance Prelude.Hashable DetectedSignature where+  hashWithSalt _salt DetectedSignature' {..} =+    _salt `Prelude.hashWithSalt` page++instance Prelude.NFData DetectedSignature where+  rnf DetectedSignature' {..} = Prelude.rnf page
+ gen/Amazonka/Textract/Types/Document.hs view
@@ -0,0 +1,132 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.Document+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.Document where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.S3Object++-- | The input document, either as bytes or as an S3 object.+--+-- You pass image bytes to an Amazon Textract API operation by using the+-- @Bytes@ property. For example, you would use the @Bytes@ property to+-- pass a document loaded from a local file system. Image bytes passed by+-- using the @Bytes@ property must be base64 encoded. Your code might not+-- need to encode document file bytes if you\'re using an AWS SDK to call+-- Amazon Textract API operations.+--+-- You pass images stored in an S3 bucket to an Amazon Textract API+-- operation by using the @S3Object@ property. Documents stored in an S3+-- bucket don\'t need to be base64 encoded.+--+-- The AWS Region for the S3 bucket that contains the S3 object must match+-- the AWS Region that you use for Amazon Textract operations.+--+-- If you use the AWS CLI to call Amazon Textract operations, passing image+-- bytes using the Bytes property isn\'t supported. You must first upload+-- the document to an Amazon S3 bucket, and then call the operation using+-- the S3Object property.+--+-- For Amazon Textract to process an S3 object, the user must have+-- permission to access the S3 object.+--+-- /See:/ 'newDocument' smart constructor.+data Document = Document'+  { -- | A blob of base64-encoded document bytes. The maximum size of a document+    -- that\'s provided in a blob of bytes is 5 MB. The document bytes must be+    -- in PNG or JPEG format.+    --+    -- If you\'re using an AWS SDK to call Amazon Textract, you might not need+    -- to base64-encode image bytes passed using the @Bytes@ field.+    bytes :: Prelude.Maybe Data.Base64,+    -- | Identifies an S3 object as the document source. The maximum size of a+    -- document that\'s stored in an S3 bucket is 5 MB.+    s3Object :: Prelude.Maybe S3Object+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Document' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'bytes', 'document_bytes' - A blob of base64-encoded document bytes. The maximum size of a document+-- that\'s provided in a blob of bytes is 5 MB. The document bytes must be+-- in PNG or JPEG format.+--+-- If you\'re using an AWS SDK to call Amazon Textract, you might not need+-- to base64-encode image bytes passed using the @Bytes@ field.--+-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.+-- -- The underlying isomorphism will encode to Base64 representation during+-- -- serialisation, and decode from Base64 representation during deserialisation.+-- -- This 'Lens' accepts and returns only raw unencoded data.+--+-- 's3Object', 'document_s3Object' - Identifies an S3 object as the document source. The maximum size of a+-- document that\'s stored in an S3 bucket is 5 MB.+newDocument ::+  Document+newDocument =+  Document'+    { bytes = Prelude.Nothing,+      s3Object = Prelude.Nothing+    }++-- | A blob of base64-encoded document bytes. The maximum size of a document+-- that\'s provided in a blob of bytes is 5 MB. The document bytes must be+-- in PNG or JPEG format.+--+-- If you\'re using an AWS SDK to call Amazon Textract, you might not need+-- to base64-encode image bytes passed using the @Bytes@ field.--+-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.+-- -- The underlying isomorphism will encode to Base64 representation during+-- -- serialisation, and decode from Base64 representation during deserialisation.+-- -- This 'Lens' accepts and returns only raw unencoded data.+document_bytes :: Lens.Lens' Document (Prelude.Maybe Prelude.ByteString)+document_bytes = Lens.lens (\Document' {bytes} -> bytes) (\s@Document' {} a -> s {bytes = a} :: Document) Prelude.. Lens.mapping Data._Base64++-- | Identifies an S3 object as the document source. The maximum size of a+-- document that\'s stored in an S3 bucket is 5 MB.+document_s3Object :: Lens.Lens' Document (Prelude.Maybe S3Object)+document_s3Object = Lens.lens (\Document' {s3Object} -> s3Object) (\s@Document' {} a -> s {s3Object = a} :: Document)++instance Prelude.Hashable Document where+  hashWithSalt _salt Document' {..} =+    _salt+      `Prelude.hashWithSalt` bytes+      `Prelude.hashWithSalt` s3Object++instance Prelude.NFData Document where+  rnf Document' {..} =+    Prelude.rnf bytes+      `Prelude.seq` Prelude.rnf s3Object++instance Data.ToJSON Document where+  toJSON Document' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Bytes" Data..=) Prelude.<$> bytes,+            ("S3Object" Data..=) Prelude.<$> s3Object+          ]+      )
+ gen/Amazonka/Textract/Types/DocumentGroup.hs view
@@ -0,0 +1,124 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.DocumentGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.DocumentGroup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.DetectedSignature+import Amazonka.Textract.Types.SplitDocument+import Amazonka.Textract.Types.UndetectedSignature++-- | Summary information about documents grouped by the same document type.+--+-- /See:/ 'newDocumentGroup' smart constructor.+data DocumentGroup = DocumentGroup'+  { -- | A list of the detected signatures found in a document group.+    detectedSignatures :: Prelude.Maybe [DetectedSignature],+    -- | An array that contains information about the pages of a document,+    -- defined by logical boundary.+    splitDocuments :: Prelude.Maybe [SplitDocument],+    -- | The type of document that Amazon Textract has detected. See LINK for a+    -- list of all types returned by Textract.+    type' :: Prelude.Maybe Prelude.Text,+    -- | A list of any expected signatures not found in a document group.+    undetectedSignatures :: Prelude.Maybe [UndetectedSignature]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DocumentGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'detectedSignatures', 'documentGroup_detectedSignatures' - A list of the detected signatures found in a document group.+--+-- 'splitDocuments', 'documentGroup_splitDocuments' - An array that contains information about the pages of a document,+-- defined by logical boundary.+--+-- 'type'', 'documentGroup_type' - The type of document that Amazon Textract has detected. See LINK for a+-- list of all types returned by Textract.+--+-- 'undetectedSignatures', 'documentGroup_undetectedSignatures' - A list of any expected signatures not found in a document group.+newDocumentGroup ::+  DocumentGroup+newDocumentGroup =+  DocumentGroup'+    { detectedSignatures =+        Prelude.Nothing,+      splitDocuments = Prelude.Nothing,+      type' = Prelude.Nothing,+      undetectedSignatures = Prelude.Nothing+    }++-- | A list of the detected signatures found in a document group.+documentGroup_detectedSignatures :: Lens.Lens' DocumentGroup (Prelude.Maybe [DetectedSignature])+documentGroup_detectedSignatures = Lens.lens (\DocumentGroup' {detectedSignatures} -> detectedSignatures) (\s@DocumentGroup' {} a -> s {detectedSignatures = a} :: DocumentGroup) Prelude.. Lens.mapping Lens.coerced++-- | An array that contains information about the pages of a document,+-- defined by logical boundary.+documentGroup_splitDocuments :: Lens.Lens' DocumentGroup (Prelude.Maybe [SplitDocument])+documentGroup_splitDocuments = Lens.lens (\DocumentGroup' {splitDocuments} -> splitDocuments) (\s@DocumentGroup' {} a -> s {splitDocuments = a} :: DocumentGroup) Prelude.. Lens.mapping Lens.coerced++-- | The type of document that Amazon Textract has detected. See LINK for a+-- list of all types returned by Textract.+documentGroup_type :: Lens.Lens' DocumentGroup (Prelude.Maybe Prelude.Text)+documentGroup_type = Lens.lens (\DocumentGroup' {type'} -> type') (\s@DocumentGroup' {} a -> s {type' = a} :: DocumentGroup)++-- | A list of any expected signatures not found in a document group.+documentGroup_undetectedSignatures :: Lens.Lens' DocumentGroup (Prelude.Maybe [UndetectedSignature])+documentGroup_undetectedSignatures = Lens.lens (\DocumentGroup' {undetectedSignatures} -> undetectedSignatures) (\s@DocumentGroup' {} a -> s {undetectedSignatures = a} :: DocumentGroup) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON DocumentGroup where+  parseJSON =+    Data.withObject+      "DocumentGroup"+      ( \x ->+          DocumentGroup'+            Prelude.<$> ( x+                            Data..:? "DetectedSignatures"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "SplitDocuments" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "Type")+            Prelude.<*> ( x+                            Data..:? "UndetectedSignatures"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable DocumentGroup where+  hashWithSalt _salt DocumentGroup' {..} =+    _salt+      `Prelude.hashWithSalt` detectedSignatures+      `Prelude.hashWithSalt` splitDocuments+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` undetectedSignatures++instance Prelude.NFData DocumentGroup where+  rnf DocumentGroup' {..} =+    Prelude.rnf detectedSignatures+      `Prelude.seq` Prelude.rnf splitDocuments+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf undetectedSignatures
+ gen/Amazonka/Textract/Types/DocumentLocation.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.Textract.Types.DocumentLocation+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.DocumentLocation where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.S3Object++-- | The Amazon S3 bucket that contains the document to be processed. It\'s+-- used by asynchronous operations.+--+-- The input document can be an image file in JPEG or PNG format. It can+-- also be a file in PDF format.+--+-- /See:/ 'newDocumentLocation' smart constructor.+data DocumentLocation = DocumentLocation'+  { -- | The Amazon S3 bucket that contains the input document.+    s3Object :: Prelude.Maybe S3Object+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DocumentLocation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3Object', 'documentLocation_s3Object' - The Amazon S3 bucket that contains the input document.+newDocumentLocation ::+  DocumentLocation+newDocumentLocation =+  DocumentLocation' {s3Object = Prelude.Nothing}++-- | The Amazon S3 bucket that contains the input document.+documentLocation_s3Object :: Lens.Lens' DocumentLocation (Prelude.Maybe S3Object)+documentLocation_s3Object = Lens.lens (\DocumentLocation' {s3Object} -> s3Object) (\s@DocumentLocation' {} a -> s {s3Object = a} :: DocumentLocation)++instance Prelude.Hashable DocumentLocation where+  hashWithSalt _salt DocumentLocation' {..} =+    _salt `Prelude.hashWithSalt` s3Object++instance Prelude.NFData DocumentLocation where+  rnf DocumentLocation' {..} = Prelude.rnf s3Object++instance Data.ToJSON DocumentLocation where+  toJSON DocumentLocation' {..} =+    Data.object+      ( Prelude.catMaybes+          [("S3Object" Data..=) Prelude.<$> s3Object]+      )
+ gen/Amazonka/Textract/Types/DocumentMetadata.hs view
@@ -0,0 +1,67 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.DocumentMetadata+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.DocumentMetadata where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about the input document.+--+-- /See:/ 'newDocumentMetadata' smart constructor.+data DocumentMetadata = DocumentMetadata'+  { -- | The number of pages that are detected in the document.+    pages :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DocumentMetadata' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pages', 'documentMetadata_pages' - The number of pages that are detected in the document.+newDocumentMetadata ::+  DocumentMetadata+newDocumentMetadata =+  DocumentMetadata' {pages = Prelude.Nothing}++-- | The number of pages that are detected in the document.+documentMetadata_pages :: Lens.Lens' DocumentMetadata (Prelude.Maybe Prelude.Natural)+documentMetadata_pages = Lens.lens (\DocumentMetadata' {pages} -> pages) (\s@DocumentMetadata' {} a -> s {pages = a} :: DocumentMetadata)++instance Data.FromJSON DocumentMetadata where+  parseJSON =+    Data.withObject+      "DocumentMetadata"+      ( \x ->+          DocumentMetadata' Prelude.<$> (x Data..:? "Pages")+      )++instance Prelude.Hashable DocumentMetadata where+  hashWithSalt _salt DocumentMetadata' {..} =+    _salt `Prelude.hashWithSalt` pages++instance Prelude.NFData DocumentMetadata where+  rnf DocumentMetadata' {..} = Prelude.rnf pages
+ gen/Amazonka/Textract/Types/EntityType.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.Textract.Types.EntityType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.EntityType+  ( EntityType+      ( ..,+        EntityType_COLUMN_HEADER,+        EntityType_KEY,+        EntityType_VALUE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EntityType = EntityType'+  { fromEntityType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern EntityType_COLUMN_HEADER :: EntityType+pattern EntityType_COLUMN_HEADER = EntityType' "COLUMN_HEADER"++pattern EntityType_KEY :: EntityType+pattern EntityType_KEY = EntityType' "KEY"++pattern EntityType_VALUE :: EntityType+pattern EntityType_VALUE = EntityType' "VALUE"++{-# COMPLETE+  EntityType_COLUMN_HEADER,+  EntityType_KEY,+  EntityType_VALUE,+  EntityType'+  #-}
+ gen/Amazonka/Textract/Types/ExpenseCurrency.hs view
@@ -0,0 +1,156 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.ExpenseCurrency+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.ExpenseCurrency where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Returns the kind of currency detected.+--+-- /See:/ 'newExpenseCurrency' smart constructor.+data ExpenseCurrency = ExpenseCurrency'+  { -- | Currency code for detected currency. the current supported codes are:+    --+    -- -   USD+    --+    -- -   EUR+    --+    -- -   GBP+    --+    -- -   CAD+    --+    -- -   INR+    --+    -- -   JPY+    --+    -- -   CHF+    --+    -- -   AUD+    --+    -- -   CNY+    --+    -- -   BZR+    --+    -- -   SEK+    --+    -- -   HKD+    code :: Prelude.Maybe Prelude.Text,+    -- | Percentage confideence in the detected currency.+    confidence :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExpenseCurrency' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'code', 'expenseCurrency_code' - Currency code for detected currency. the current supported codes are:+--+-- -   USD+--+-- -   EUR+--+-- -   GBP+--+-- -   CAD+--+-- -   INR+--+-- -   JPY+--+-- -   CHF+--+-- -   AUD+--+-- -   CNY+--+-- -   BZR+--+-- -   SEK+--+-- -   HKD+--+-- 'confidence', 'expenseCurrency_confidence' - Percentage confideence in the detected currency.+newExpenseCurrency ::+  ExpenseCurrency+newExpenseCurrency =+  ExpenseCurrency'+    { code = Prelude.Nothing,+      confidence = Prelude.Nothing+    }++-- | Currency code for detected currency. the current supported codes are:+--+-- -   USD+--+-- -   EUR+--+-- -   GBP+--+-- -   CAD+--+-- -   INR+--+-- -   JPY+--+-- -   CHF+--+-- -   AUD+--+-- -   CNY+--+-- -   BZR+--+-- -   SEK+--+-- -   HKD+expenseCurrency_code :: Lens.Lens' ExpenseCurrency (Prelude.Maybe Prelude.Text)+expenseCurrency_code = Lens.lens (\ExpenseCurrency' {code} -> code) (\s@ExpenseCurrency' {} a -> s {code = a} :: ExpenseCurrency)++-- | Percentage confideence in the detected currency.+expenseCurrency_confidence :: Lens.Lens' ExpenseCurrency (Prelude.Maybe Prelude.Double)+expenseCurrency_confidence = Lens.lens (\ExpenseCurrency' {confidence} -> confidence) (\s@ExpenseCurrency' {} a -> s {confidence = a} :: ExpenseCurrency)++instance Data.FromJSON ExpenseCurrency where+  parseJSON =+    Data.withObject+      "ExpenseCurrency"+      ( \x ->+          ExpenseCurrency'+            Prelude.<$> (x Data..:? "Code")+            Prelude.<*> (x Data..:? "Confidence")+      )++instance Prelude.Hashable ExpenseCurrency where+  hashWithSalt _salt ExpenseCurrency' {..} =+    _salt+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` confidence++instance Prelude.NFData ExpenseCurrency where+  rnf ExpenseCurrency' {..} =+    Prelude.rnf code+      `Prelude.seq` Prelude.rnf confidence
+ gen/Amazonka/Textract/Types/ExpenseDetection.hs view
@@ -0,0 +1,97 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.ExpenseDetection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.ExpenseDetection where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.Geometry++-- | An object used to store information about the Value or Label detected by+-- Amazon Textract.+--+-- /See:/ 'newExpenseDetection' smart constructor.+data ExpenseDetection = ExpenseDetection'+  { -- | The confidence in detection, as a percentage+    confidence :: Prelude.Maybe Prelude.Double,+    geometry :: Prelude.Maybe Geometry,+    -- | The word or line of text recognized by Amazon Textract+    text :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExpenseDetection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'confidence', 'expenseDetection_confidence' - The confidence in detection, as a percentage+--+-- 'geometry', 'expenseDetection_geometry' - Undocumented member.+--+-- 'text', 'expenseDetection_text' - The word or line of text recognized by Amazon Textract+newExpenseDetection ::+  ExpenseDetection+newExpenseDetection =+  ExpenseDetection'+    { confidence = Prelude.Nothing,+      geometry = Prelude.Nothing,+      text = Prelude.Nothing+    }++-- | The confidence in detection, as a percentage+expenseDetection_confidence :: Lens.Lens' ExpenseDetection (Prelude.Maybe Prelude.Double)+expenseDetection_confidence = Lens.lens (\ExpenseDetection' {confidence} -> confidence) (\s@ExpenseDetection' {} a -> s {confidence = a} :: ExpenseDetection)++-- | Undocumented member.+expenseDetection_geometry :: Lens.Lens' ExpenseDetection (Prelude.Maybe Geometry)+expenseDetection_geometry = Lens.lens (\ExpenseDetection' {geometry} -> geometry) (\s@ExpenseDetection' {} a -> s {geometry = a} :: ExpenseDetection)++-- | The word or line of text recognized by Amazon Textract+expenseDetection_text :: Lens.Lens' ExpenseDetection (Prelude.Maybe Prelude.Text)+expenseDetection_text = Lens.lens (\ExpenseDetection' {text} -> text) (\s@ExpenseDetection' {} a -> s {text = a} :: ExpenseDetection)++instance Data.FromJSON ExpenseDetection where+  parseJSON =+    Data.withObject+      "ExpenseDetection"+      ( \x ->+          ExpenseDetection'+            Prelude.<$> (x Data..:? "Confidence")+            Prelude.<*> (x Data..:? "Geometry")+            Prelude.<*> (x Data..:? "Text")+      )++instance Prelude.Hashable ExpenseDetection where+  hashWithSalt _salt ExpenseDetection' {..} =+    _salt+      `Prelude.hashWithSalt` confidence+      `Prelude.hashWithSalt` geometry+      `Prelude.hashWithSalt` text++instance Prelude.NFData ExpenseDetection where+  rnf ExpenseDetection' {..} =+    Prelude.rnf confidence+      `Prelude.seq` Prelude.rnf geometry+      `Prelude.seq` Prelude.rnf text
+ gen/Amazonka/Textract/Types/ExpenseDocument.hs view
@@ -0,0 +1,120 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.ExpenseDocument+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.ExpenseDocument where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.Block+import Amazonka.Textract.Types.ExpenseField+import Amazonka.Textract.Types.LineItemGroup++-- | The structure holding all the information returned by AnalyzeExpense+--+-- /See:/ 'newExpenseDocument' smart constructor.+data ExpenseDocument = ExpenseDocument'+  { -- | This is a block object, the same as reported when DetectDocumentText is+    -- run on a document. It provides word level recognition of text.+    blocks :: Prelude.Maybe [Block],+    -- | Denotes which invoice or receipt in the document the information is+    -- coming from. First document will be 1, the second 2, and so on.+    expenseIndex :: Prelude.Maybe Prelude.Natural,+    -- | Information detected on each table of a document, seperated into+    -- @LineItems@.+    lineItemGroups :: Prelude.Maybe [LineItemGroup],+    -- | Any information found outside of a table by Amazon Textract.+    summaryFields :: Prelude.Maybe [ExpenseField]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExpenseDocument' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'blocks', 'expenseDocument_blocks' - This is a block object, the same as reported when DetectDocumentText is+-- run on a document. It provides word level recognition of text.+--+-- 'expenseIndex', 'expenseDocument_expenseIndex' - Denotes which invoice or receipt in the document the information is+-- coming from. First document will be 1, the second 2, and so on.+--+-- 'lineItemGroups', 'expenseDocument_lineItemGroups' - Information detected on each table of a document, seperated into+-- @LineItems@.+--+-- 'summaryFields', 'expenseDocument_summaryFields' - Any information found outside of a table by Amazon Textract.+newExpenseDocument ::+  ExpenseDocument+newExpenseDocument =+  ExpenseDocument'+    { blocks = Prelude.Nothing,+      expenseIndex = Prelude.Nothing,+      lineItemGroups = Prelude.Nothing,+      summaryFields = Prelude.Nothing+    }++-- | This is a block object, the same as reported when DetectDocumentText is+-- run on a document. It provides word level recognition of text.+expenseDocument_blocks :: Lens.Lens' ExpenseDocument (Prelude.Maybe [Block])+expenseDocument_blocks = Lens.lens (\ExpenseDocument' {blocks} -> blocks) (\s@ExpenseDocument' {} a -> s {blocks = a} :: ExpenseDocument) Prelude.. Lens.mapping Lens.coerced++-- | Denotes which invoice or receipt in the document the information is+-- coming from. First document will be 1, the second 2, and so on.+expenseDocument_expenseIndex :: Lens.Lens' ExpenseDocument (Prelude.Maybe Prelude.Natural)+expenseDocument_expenseIndex = Lens.lens (\ExpenseDocument' {expenseIndex} -> expenseIndex) (\s@ExpenseDocument' {} a -> s {expenseIndex = a} :: ExpenseDocument)++-- | Information detected on each table of a document, seperated into+-- @LineItems@.+expenseDocument_lineItemGroups :: Lens.Lens' ExpenseDocument (Prelude.Maybe [LineItemGroup])+expenseDocument_lineItemGroups = Lens.lens (\ExpenseDocument' {lineItemGroups} -> lineItemGroups) (\s@ExpenseDocument' {} a -> s {lineItemGroups = a} :: ExpenseDocument) Prelude.. Lens.mapping Lens.coerced++-- | Any information found outside of a table by Amazon Textract.+expenseDocument_summaryFields :: Lens.Lens' ExpenseDocument (Prelude.Maybe [ExpenseField])+expenseDocument_summaryFields = Lens.lens (\ExpenseDocument' {summaryFields} -> summaryFields) (\s@ExpenseDocument' {} a -> s {summaryFields = a} :: ExpenseDocument) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ExpenseDocument where+  parseJSON =+    Data.withObject+      "ExpenseDocument"+      ( \x ->+          ExpenseDocument'+            Prelude.<$> (x Data..:? "Blocks" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "ExpenseIndex")+            Prelude.<*> (x Data..:? "LineItemGroups" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "SummaryFields" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ExpenseDocument where+  hashWithSalt _salt ExpenseDocument' {..} =+    _salt+      `Prelude.hashWithSalt` blocks+      `Prelude.hashWithSalt` expenseIndex+      `Prelude.hashWithSalt` lineItemGroups+      `Prelude.hashWithSalt` summaryFields++instance Prelude.NFData ExpenseDocument where+  rnf ExpenseDocument' {..} =+    Prelude.rnf blocks+      `Prelude.seq` Prelude.rnf expenseIndex+      `Prelude.seq` Prelude.rnf lineItemGroups+      `Prelude.seq` Prelude.rnf summaryFields
+ gen/Amazonka/Textract/Types/ExpenseField.hs view
@@ -0,0 +1,155 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.ExpenseField+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.ExpenseField where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.ExpenseCurrency+import Amazonka.Textract.Types.ExpenseDetection+import Amazonka.Textract.Types.ExpenseGroupProperty+import Amazonka.Textract.Types.ExpenseType++-- | Breakdown of detected information, seperated into the catagories Type,+-- LabelDetection, and ValueDetection+--+-- /See:/ 'newExpenseField' smart constructor.+data ExpenseField = ExpenseField'+  { -- | Shows the kind of currency, both the code and confidence associated with+    -- any monatary value detected.+    currency :: Prelude.Maybe ExpenseCurrency,+    -- | Shows which group a response object belongs to, such as whether an+    -- address line belongs to the vendor\'s address or the recipent\'s+    -- address.+    groupProperties :: Prelude.Maybe [ExpenseGroupProperty],+    -- | The explicitly stated label of a detected element.+    labelDetection :: Prelude.Maybe ExpenseDetection,+    -- | The page number the value was detected on.+    pageNumber :: Prelude.Maybe Prelude.Natural,+    -- | The implied label of a detected element. Present alongside+    -- LabelDetection for explicit elements.+    type' :: Prelude.Maybe ExpenseType,+    -- | The value of a detected element. Present in explicit and implicit+    -- elements.+    valueDetection :: Prelude.Maybe ExpenseDetection+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExpenseField' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'currency', 'expenseField_currency' - Shows the kind of currency, both the code and confidence associated with+-- any monatary value detected.+--+-- 'groupProperties', 'expenseField_groupProperties' - Shows which group a response object belongs to, such as whether an+-- address line belongs to the vendor\'s address or the recipent\'s+-- address.+--+-- 'labelDetection', 'expenseField_labelDetection' - The explicitly stated label of a detected element.+--+-- 'pageNumber', 'expenseField_pageNumber' - The page number the value was detected on.+--+-- 'type'', 'expenseField_type' - The implied label of a detected element. Present alongside+-- LabelDetection for explicit elements.+--+-- 'valueDetection', 'expenseField_valueDetection' - The value of a detected element. Present in explicit and implicit+-- elements.+newExpenseField ::+  ExpenseField+newExpenseField =+  ExpenseField'+    { currency = Prelude.Nothing,+      groupProperties = Prelude.Nothing,+      labelDetection = Prelude.Nothing,+      pageNumber = Prelude.Nothing,+      type' = Prelude.Nothing,+      valueDetection = Prelude.Nothing+    }++-- | Shows the kind of currency, both the code and confidence associated with+-- any monatary value detected.+expenseField_currency :: Lens.Lens' ExpenseField (Prelude.Maybe ExpenseCurrency)+expenseField_currency = Lens.lens (\ExpenseField' {currency} -> currency) (\s@ExpenseField' {} a -> s {currency = a} :: ExpenseField)++-- | Shows which group a response object belongs to, such as whether an+-- address line belongs to the vendor\'s address or the recipent\'s+-- address.+expenseField_groupProperties :: Lens.Lens' ExpenseField (Prelude.Maybe [ExpenseGroupProperty])+expenseField_groupProperties = Lens.lens (\ExpenseField' {groupProperties} -> groupProperties) (\s@ExpenseField' {} a -> s {groupProperties = a} :: ExpenseField) Prelude.. Lens.mapping Lens.coerced++-- | The explicitly stated label of a detected element.+expenseField_labelDetection :: Lens.Lens' ExpenseField (Prelude.Maybe ExpenseDetection)+expenseField_labelDetection = Lens.lens (\ExpenseField' {labelDetection} -> labelDetection) (\s@ExpenseField' {} a -> s {labelDetection = a} :: ExpenseField)++-- | The page number the value was detected on.+expenseField_pageNumber :: Lens.Lens' ExpenseField (Prelude.Maybe Prelude.Natural)+expenseField_pageNumber = Lens.lens (\ExpenseField' {pageNumber} -> pageNumber) (\s@ExpenseField' {} a -> s {pageNumber = a} :: ExpenseField)++-- | The implied label of a detected element. Present alongside+-- LabelDetection for explicit elements.+expenseField_type :: Lens.Lens' ExpenseField (Prelude.Maybe ExpenseType)+expenseField_type = Lens.lens (\ExpenseField' {type'} -> type') (\s@ExpenseField' {} a -> s {type' = a} :: ExpenseField)++-- | The value of a detected element. Present in explicit and implicit+-- elements.+expenseField_valueDetection :: Lens.Lens' ExpenseField (Prelude.Maybe ExpenseDetection)+expenseField_valueDetection = Lens.lens (\ExpenseField' {valueDetection} -> valueDetection) (\s@ExpenseField' {} a -> s {valueDetection = a} :: ExpenseField)++instance Data.FromJSON ExpenseField where+  parseJSON =+    Data.withObject+      "ExpenseField"+      ( \x ->+          ExpenseField'+            Prelude.<$> (x Data..:? "Currency")+            Prelude.<*> ( x+                            Data..:? "GroupProperties"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "LabelDetection")+            Prelude.<*> (x Data..:? "PageNumber")+            Prelude.<*> (x Data..:? "Type")+            Prelude.<*> (x Data..:? "ValueDetection")+      )++instance Prelude.Hashable ExpenseField where+  hashWithSalt _salt ExpenseField' {..} =+    _salt+      `Prelude.hashWithSalt` currency+      `Prelude.hashWithSalt` groupProperties+      `Prelude.hashWithSalt` labelDetection+      `Prelude.hashWithSalt` pageNumber+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` valueDetection++instance Prelude.NFData ExpenseField where+  rnf ExpenseField' {..} =+    Prelude.rnf currency+      `Prelude.seq` Prelude.rnf groupProperties+      `Prelude.seq` Prelude.rnf labelDetection+      `Prelude.seq` Prelude.rnf pageNumber+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf valueDetection
+ gen/Amazonka/Textract/Types/ExpenseGroupProperty.hs view
@@ -0,0 +1,88 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.ExpenseGroupProperty+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.ExpenseGroupProperty where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Shows the group that a certain key belongs to. This helps differentiate+-- between names and addresses for different organizations, that can be+-- hard to determine via JSON response.+--+-- /See:/ 'newExpenseGroupProperty' smart constructor.+data ExpenseGroupProperty = ExpenseGroupProperty'+  { -- | Provides a group Id number, which will be the same for each in the+    -- group.+    id :: Prelude.Maybe Prelude.Text,+    -- | Informs you on whether the expense group is a name or an address.+    types :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExpenseGroupProperty' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'expenseGroupProperty_id' - Provides a group Id number, which will be the same for each in the+-- group.+--+-- 'types', 'expenseGroupProperty_types' - Informs you on whether the expense group is a name or an address.+newExpenseGroupProperty ::+  ExpenseGroupProperty+newExpenseGroupProperty =+  ExpenseGroupProperty'+    { id = Prelude.Nothing,+      types = Prelude.Nothing+    }++-- | Provides a group Id number, which will be the same for each in the+-- group.+expenseGroupProperty_id :: Lens.Lens' ExpenseGroupProperty (Prelude.Maybe Prelude.Text)+expenseGroupProperty_id = Lens.lens (\ExpenseGroupProperty' {id} -> id) (\s@ExpenseGroupProperty' {} a -> s {id = a} :: ExpenseGroupProperty)++-- | Informs you on whether the expense group is a name or an address.+expenseGroupProperty_types :: Lens.Lens' ExpenseGroupProperty (Prelude.Maybe [Prelude.Text])+expenseGroupProperty_types = Lens.lens (\ExpenseGroupProperty' {types} -> types) (\s@ExpenseGroupProperty' {} a -> s {types = a} :: ExpenseGroupProperty) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ExpenseGroupProperty where+  parseJSON =+    Data.withObject+      "ExpenseGroupProperty"+      ( \x ->+          ExpenseGroupProperty'+            Prelude.<$> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "Types" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ExpenseGroupProperty where+  hashWithSalt _salt ExpenseGroupProperty' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` types++instance Prelude.NFData ExpenseGroupProperty where+  rnf ExpenseGroupProperty' {..} =+    Prelude.rnf id `Prelude.seq` Prelude.rnf types
+ gen/Amazonka/Textract/Types/ExpenseType.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.ExpenseType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.ExpenseType where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object used to store information about the Type detected by Amazon+-- Textract.+--+-- /See:/ 'newExpenseType' smart constructor.+data ExpenseType = ExpenseType'+  { -- | The confidence of accuracy, as a percentage.+    confidence :: Prelude.Maybe Prelude.Double,+    -- | The word or line of text detected by Amazon Textract.+    text :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExpenseType' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'confidence', 'expenseType_confidence' - The confidence of accuracy, as a percentage.+--+-- 'text', 'expenseType_text' - The word or line of text detected by Amazon Textract.+newExpenseType ::+  ExpenseType+newExpenseType =+  ExpenseType'+    { confidence = Prelude.Nothing,+      text = Prelude.Nothing+    }++-- | The confidence of accuracy, as a percentage.+expenseType_confidence :: Lens.Lens' ExpenseType (Prelude.Maybe Prelude.Double)+expenseType_confidence = Lens.lens (\ExpenseType' {confidence} -> confidence) (\s@ExpenseType' {} a -> s {confidence = a} :: ExpenseType)++-- | The word or line of text detected by Amazon Textract.+expenseType_text :: Lens.Lens' ExpenseType (Prelude.Maybe Prelude.Text)+expenseType_text = Lens.lens (\ExpenseType' {text} -> text) (\s@ExpenseType' {} a -> s {text = a} :: ExpenseType)++instance Data.FromJSON ExpenseType where+  parseJSON =+    Data.withObject+      "ExpenseType"+      ( \x ->+          ExpenseType'+            Prelude.<$> (x Data..:? "Confidence")+            Prelude.<*> (x Data..:? "Text")+      )++instance Prelude.Hashable ExpenseType where+  hashWithSalt _salt ExpenseType' {..} =+    _salt+      `Prelude.hashWithSalt` confidence+      `Prelude.hashWithSalt` text++instance Prelude.NFData ExpenseType where+  rnf ExpenseType' {..} =+    Prelude.rnf confidence+      `Prelude.seq` Prelude.rnf text
+ gen/Amazonka/Textract/Types/Extraction.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.Extraction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.Extraction where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.ExpenseDocument+import Amazonka.Textract.Types.IdentityDocument+import Amazonka.Textract.Types.LendingDocument++-- | Contains information extracted by an analysis operation after using+-- StartLendingAnalysis.+--+-- /See:/ 'newExtraction' smart constructor.+data Extraction = Extraction'+  { expenseDocument :: Prelude.Maybe ExpenseDocument,+    identityDocument :: Prelude.Maybe IdentityDocument,+    -- | Holds the structured data returned by AnalyzeDocument for lending+    -- documents.+    lendingDocument :: Prelude.Maybe LendingDocument+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Extraction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'expenseDocument', 'extraction_expenseDocument' - Undocumented member.+--+-- 'identityDocument', 'extraction_identityDocument' - Undocumented member.+--+-- 'lendingDocument', 'extraction_lendingDocument' - Holds the structured data returned by AnalyzeDocument for lending+-- documents.+newExtraction ::+  Extraction+newExtraction =+  Extraction'+    { expenseDocument = Prelude.Nothing,+      identityDocument = Prelude.Nothing,+      lendingDocument = Prelude.Nothing+    }++-- | Undocumented member.+extraction_expenseDocument :: Lens.Lens' Extraction (Prelude.Maybe ExpenseDocument)+extraction_expenseDocument = Lens.lens (\Extraction' {expenseDocument} -> expenseDocument) (\s@Extraction' {} a -> s {expenseDocument = a} :: Extraction)++-- | Undocumented member.+extraction_identityDocument :: Lens.Lens' Extraction (Prelude.Maybe IdentityDocument)+extraction_identityDocument = Lens.lens (\Extraction' {identityDocument} -> identityDocument) (\s@Extraction' {} a -> s {identityDocument = a} :: Extraction)++-- | Holds the structured data returned by AnalyzeDocument for lending+-- documents.+extraction_lendingDocument :: Lens.Lens' Extraction (Prelude.Maybe LendingDocument)+extraction_lendingDocument = Lens.lens (\Extraction' {lendingDocument} -> lendingDocument) (\s@Extraction' {} a -> s {lendingDocument = a} :: Extraction)++instance Data.FromJSON Extraction where+  parseJSON =+    Data.withObject+      "Extraction"+      ( \x ->+          Extraction'+            Prelude.<$> (x Data..:? "ExpenseDocument")+            Prelude.<*> (x Data..:? "IdentityDocument")+            Prelude.<*> (x Data..:? "LendingDocument")+      )++instance Prelude.Hashable Extraction where+  hashWithSalt _salt Extraction' {..} =+    _salt+      `Prelude.hashWithSalt` expenseDocument+      `Prelude.hashWithSalt` identityDocument+      `Prelude.hashWithSalt` lendingDocument++instance Prelude.NFData Extraction where+  rnf Extraction' {..} =+    Prelude.rnf expenseDocument+      `Prelude.seq` Prelude.rnf identityDocument+      `Prelude.seq` Prelude.rnf lendingDocument
+ gen/Amazonka/Textract/Types/FeatureType.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.Textract.Types.FeatureType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.FeatureType+  ( FeatureType+      ( ..,+        FeatureType_FORMS,+        FeatureType_QUERIES,+        FeatureType_SIGNATURES,+        FeatureType_TABLES+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FeatureType = FeatureType'+  { fromFeatureType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern FeatureType_FORMS :: FeatureType+pattern FeatureType_FORMS = FeatureType' "FORMS"++pattern FeatureType_QUERIES :: FeatureType+pattern FeatureType_QUERIES = FeatureType' "QUERIES"++pattern FeatureType_SIGNATURES :: FeatureType+pattern FeatureType_SIGNATURES = FeatureType' "SIGNATURES"++pattern FeatureType_TABLES :: FeatureType+pattern FeatureType_TABLES = FeatureType' "TABLES"++{-# COMPLETE+  FeatureType_FORMS,+  FeatureType_QUERIES,+  FeatureType_SIGNATURES,+  FeatureType_TABLES,+  FeatureType'+  #-}
+ gen/Amazonka/Textract/Types/Geometry.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.Textract.Types.Geometry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.Geometry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.BoundingBox+import Amazonka.Textract.Types.Point++-- | Information about where the following items are located on a document+-- page: detected page, text, key-value pairs, tables, table cells, and+-- selection elements.+--+-- /See:/ 'newGeometry' smart constructor.+data Geometry = Geometry'+  { -- | An axis-aligned coarse representation of the location of the recognized+    -- item on the document page.+    boundingBox :: Prelude.Maybe BoundingBox,+    -- | Within the bounding box, a fine-grained polygon around the recognized+    -- item.+    polygon :: Prelude.Maybe [Point]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Geometry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'boundingBox', 'geometry_boundingBox' - An axis-aligned coarse representation of the location of the recognized+-- item on the document page.+--+-- 'polygon', 'geometry_polygon' - Within the bounding box, a fine-grained polygon around the recognized+-- item.+newGeometry ::+  Geometry+newGeometry =+  Geometry'+    { boundingBox = Prelude.Nothing,+      polygon = Prelude.Nothing+    }++-- | An axis-aligned coarse representation of the location of the recognized+-- item on the document page.+geometry_boundingBox :: Lens.Lens' Geometry (Prelude.Maybe BoundingBox)+geometry_boundingBox = Lens.lens (\Geometry' {boundingBox} -> boundingBox) (\s@Geometry' {} a -> s {boundingBox = a} :: Geometry)++-- | Within the bounding box, a fine-grained polygon around the recognized+-- item.+geometry_polygon :: Lens.Lens' Geometry (Prelude.Maybe [Point])+geometry_polygon = Lens.lens (\Geometry' {polygon} -> polygon) (\s@Geometry' {} a -> s {polygon = a} :: Geometry) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON Geometry where+  parseJSON =+    Data.withObject+      "Geometry"+      ( \x ->+          Geometry'+            Prelude.<$> (x Data..:? "BoundingBox")+            Prelude.<*> (x Data..:? "Polygon" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Geometry where+  hashWithSalt _salt Geometry' {..} =+    _salt+      `Prelude.hashWithSalt` boundingBox+      `Prelude.hashWithSalt` polygon++instance Prelude.NFData Geometry where+  rnf Geometry' {..} =+    Prelude.rnf boundingBox+      `Prelude.seq` Prelude.rnf polygon
+ gen/Amazonka/Textract/Types/HumanLoopActivationOutput.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.HumanLoopActivationOutput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.HumanLoopActivationOutput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Shows the results of the human in the loop evaluation. If there is no+-- HumanLoopArn, the input did not trigger human review.+--+-- /See:/ 'newHumanLoopActivationOutput' smart constructor.+data HumanLoopActivationOutput = HumanLoopActivationOutput'+  { -- | Shows the result of condition evaluations, including those conditions+    -- which activated a human review.+    humanLoopActivationConditionsEvaluationResults :: Prelude.Maybe Prelude.Text,+    -- | Shows if and why human review was needed.+    humanLoopActivationReasons :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The Amazon Resource Name (ARN) of the HumanLoop created.+    humanLoopArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HumanLoopActivationOutput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'humanLoopActivationConditionsEvaluationResults', 'humanLoopActivationOutput_humanLoopActivationConditionsEvaluationResults' - Shows the result of condition evaluations, including those conditions+-- which activated a human review.+--+-- 'humanLoopActivationReasons', 'humanLoopActivationOutput_humanLoopActivationReasons' - Shows if and why human review was needed.+--+-- 'humanLoopArn', 'humanLoopActivationOutput_humanLoopArn' - The Amazon Resource Name (ARN) of the HumanLoop created.+newHumanLoopActivationOutput ::+  HumanLoopActivationOutput+newHumanLoopActivationOutput =+  HumanLoopActivationOutput'+    { humanLoopActivationConditionsEvaluationResults =+        Prelude.Nothing,+      humanLoopActivationReasons = Prelude.Nothing,+      humanLoopArn = Prelude.Nothing+    }++-- | Shows the result of condition evaluations, including those conditions+-- which activated a human review.+humanLoopActivationOutput_humanLoopActivationConditionsEvaluationResults :: Lens.Lens' HumanLoopActivationOutput (Prelude.Maybe Prelude.Text)+humanLoopActivationOutput_humanLoopActivationConditionsEvaluationResults = Lens.lens (\HumanLoopActivationOutput' {humanLoopActivationConditionsEvaluationResults} -> humanLoopActivationConditionsEvaluationResults) (\s@HumanLoopActivationOutput' {} a -> s {humanLoopActivationConditionsEvaluationResults = a} :: HumanLoopActivationOutput)++-- | Shows if and why human review was needed.+humanLoopActivationOutput_humanLoopActivationReasons :: Lens.Lens' HumanLoopActivationOutput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+humanLoopActivationOutput_humanLoopActivationReasons = Lens.lens (\HumanLoopActivationOutput' {humanLoopActivationReasons} -> humanLoopActivationReasons) (\s@HumanLoopActivationOutput' {} a -> s {humanLoopActivationReasons = a} :: HumanLoopActivationOutput) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the HumanLoop created.+humanLoopActivationOutput_humanLoopArn :: Lens.Lens' HumanLoopActivationOutput (Prelude.Maybe Prelude.Text)+humanLoopActivationOutput_humanLoopArn = Lens.lens (\HumanLoopActivationOutput' {humanLoopArn} -> humanLoopArn) (\s@HumanLoopActivationOutput' {} a -> s {humanLoopArn = a} :: HumanLoopActivationOutput)++instance Data.FromJSON HumanLoopActivationOutput where+  parseJSON =+    Data.withObject+      "HumanLoopActivationOutput"+      ( \x ->+          HumanLoopActivationOutput'+            Prelude.<$> ( x+                            Data..:? "HumanLoopActivationConditionsEvaluationResults"+                        )+            Prelude.<*> (x Data..:? "HumanLoopActivationReasons")+            Prelude.<*> (x Data..:? "HumanLoopArn")+      )++instance Prelude.Hashable HumanLoopActivationOutput where+  hashWithSalt _salt HumanLoopActivationOutput' {..} =+    _salt+      `Prelude.hashWithSalt` humanLoopActivationConditionsEvaluationResults+      `Prelude.hashWithSalt` humanLoopActivationReasons+      `Prelude.hashWithSalt` humanLoopArn++instance Prelude.NFData HumanLoopActivationOutput where+  rnf HumanLoopActivationOutput' {..} =+    Prelude.rnf+      humanLoopActivationConditionsEvaluationResults+      `Prelude.seq` Prelude.rnf humanLoopActivationReasons+      `Prelude.seq` Prelude.rnf humanLoopArn
+ gen/Amazonka/Textract/Types/HumanLoopConfig.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.Textract.Types.HumanLoopConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.HumanLoopConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.HumanLoopDataAttributes++-- | Sets up the human review workflow the document will be sent to if one of+-- the conditions is met. You can also set certain attributes of the image+-- before review.+--+-- /See:/ 'newHumanLoopConfig' smart constructor.+data HumanLoopConfig = HumanLoopConfig'+  { -- | Sets attributes of the input data.+    dataAttributes :: Prelude.Maybe HumanLoopDataAttributes,+    -- | The name of the human workflow used for this image. This should be kept+    -- unique within a region.+    humanLoopName :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the flow definition.+    flowDefinitionArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HumanLoopConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataAttributes', 'humanLoopConfig_dataAttributes' - Sets attributes of the input data.+--+-- 'humanLoopName', 'humanLoopConfig_humanLoopName' - The name of the human workflow used for this image. This should be kept+-- unique within a region.+--+-- 'flowDefinitionArn', 'humanLoopConfig_flowDefinitionArn' - The Amazon Resource Name (ARN) of the flow definition.+newHumanLoopConfig ::+  -- | 'humanLoopName'+  Prelude.Text ->+  -- | 'flowDefinitionArn'+  Prelude.Text ->+  HumanLoopConfig+newHumanLoopConfig+  pHumanLoopName_+  pFlowDefinitionArn_ =+    HumanLoopConfig'+      { dataAttributes = Prelude.Nothing,+        humanLoopName = pHumanLoopName_,+        flowDefinitionArn = pFlowDefinitionArn_+      }++-- | Sets attributes of the input data.+humanLoopConfig_dataAttributes :: Lens.Lens' HumanLoopConfig (Prelude.Maybe HumanLoopDataAttributes)+humanLoopConfig_dataAttributes = Lens.lens (\HumanLoopConfig' {dataAttributes} -> dataAttributes) (\s@HumanLoopConfig' {} a -> s {dataAttributes = a} :: HumanLoopConfig)++-- | The name of the human workflow used for this image. This should be kept+-- unique within a region.+humanLoopConfig_humanLoopName :: Lens.Lens' HumanLoopConfig Prelude.Text+humanLoopConfig_humanLoopName = Lens.lens (\HumanLoopConfig' {humanLoopName} -> humanLoopName) (\s@HumanLoopConfig' {} a -> s {humanLoopName = a} :: HumanLoopConfig)++-- | The Amazon Resource Name (ARN) of the flow definition.+humanLoopConfig_flowDefinitionArn :: Lens.Lens' HumanLoopConfig Prelude.Text+humanLoopConfig_flowDefinitionArn = Lens.lens (\HumanLoopConfig' {flowDefinitionArn} -> flowDefinitionArn) (\s@HumanLoopConfig' {} a -> s {flowDefinitionArn = a} :: HumanLoopConfig)++instance Prelude.Hashable HumanLoopConfig where+  hashWithSalt _salt HumanLoopConfig' {..} =+    _salt+      `Prelude.hashWithSalt` dataAttributes+      `Prelude.hashWithSalt` humanLoopName+      `Prelude.hashWithSalt` flowDefinitionArn++instance Prelude.NFData HumanLoopConfig where+  rnf HumanLoopConfig' {..} =+    Prelude.rnf dataAttributes+      `Prelude.seq` Prelude.rnf humanLoopName+      `Prelude.seq` Prelude.rnf flowDefinitionArn++instance Data.ToJSON HumanLoopConfig where+  toJSON HumanLoopConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DataAttributes" Data..=)+              Prelude.<$> dataAttributes,+            Prelude.Just ("HumanLoopName" Data..= humanLoopName),+            Prelude.Just+              ("FlowDefinitionArn" Data..= flowDefinitionArn)+          ]+      )
+ gen/Amazonka/Textract/Types/HumanLoopDataAttributes.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.HumanLoopDataAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.HumanLoopDataAttributes where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.ContentClassifier++-- | Allows you to set attributes of the image. Currently, you can declare an+-- image as free of personally identifiable information and adult content.+--+-- /See:/ 'newHumanLoopDataAttributes' smart constructor.+data HumanLoopDataAttributes = HumanLoopDataAttributes'+  { -- | Sets whether the input image is free of personally identifiable+    -- information or adult content.+    contentClassifiers :: Prelude.Maybe [ContentClassifier]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HumanLoopDataAttributes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'contentClassifiers', 'humanLoopDataAttributes_contentClassifiers' - Sets whether the input image is free of personally identifiable+-- information or adult content.+newHumanLoopDataAttributes ::+  HumanLoopDataAttributes+newHumanLoopDataAttributes =+  HumanLoopDataAttributes'+    { contentClassifiers =+        Prelude.Nothing+    }++-- | Sets whether the input image is free of personally identifiable+-- information or adult content.+humanLoopDataAttributes_contentClassifiers :: Lens.Lens' HumanLoopDataAttributes (Prelude.Maybe [ContentClassifier])+humanLoopDataAttributes_contentClassifiers = Lens.lens (\HumanLoopDataAttributes' {contentClassifiers} -> contentClassifiers) (\s@HumanLoopDataAttributes' {} a -> s {contentClassifiers = a} :: HumanLoopDataAttributes) Prelude.. Lens.mapping Lens.coerced++instance Prelude.Hashable HumanLoopDataAttributes where+  hashWithSalt _salt HumanLoopDataAttributes' {..} =+    _salt `Prelude.hashWithSalt` contentClassifiers++instance Prelude.NFData HumanLoopDataAttributes where+  rnf HumanLoopDataAttributes' {..} =+    Prelude.rnf contentClassifiers++instance Data.ToJSON HumanLoopDataAttributes where+  toJSON HumanLoopDataAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ContentClassifiers" Data..=)+              Prelude.<$> contentClassifiers+          ]+      )
+ gen/Amazonka/Textract/Types/IdentityDocument.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.Textract.Types.IdentityDocument+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.IdentityDocument where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.Block+import Amazonka.Textract.Types.IdentityDocumentField++-- | The structure that lists each document processed in an AnalyzeID+-- operation.+--+-- /See:/ 'newIdentityDocument' smart constructor.+data IdentityDocument = IdentityDocument'+  { -- | Individual word recognition, as returned by document detection.+    blocks :: Prelude.Maybe [Block],+    -- | Denotes the placement of a document in the IdentityDocument list. The+    -- first document is marked 1, the second 2 and so on.+    documentIndex :: Prelude.Maybe Prelude.Natural,+    -- | The structure used to record information extracted from identity+    -- documents. Contains both normalized field and value of the extracted+    -- text.+    identityDocumentFields :: Prelude.Maybe [IdentityDocumentField]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IdentityDocument' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'blocks', 'identityDocument_blocks' - Individual word recognition, as returned by document detection.+--+-- 'documentIndex', 'identityDocument_documentIndex' - Denotes the placement of a document in the IdentityDocument list. The+-- first document is marked 1, the second 2 and so on.+--+-- 'identityDocumentFields', 'identityDocument_identityDocumentFields' - The structure used to record information extracted from identity+-- documents. Contains both normalized field and value of the extracted+-- text.+newIdentityDocument ::+  IdentityDocument+newIdentityDocument =+  IdentityDocument'+    { blocks = Prelude.Nothing,+      documentIndex = Prelude.Nothing,+      identityDocumentFields = Prelude.Nothing+    }++-- | Individual word recognition, as returned by document detection.+identityDocument_blocks :: Lens.Lens' IdentityDocument (Prelude.Maybe [Block])+identityDocument_blocks = Lens.lens (\IdentityDocument' {blocks} -> blocks) (\s@IdentityDocument' {} a -> s {blocks = a} :: IdentityDocument) Prelude.. Lens.mapping Lens.coerced++-- | Denotes the placement of a document in the IdentityDocument list. The+-- first document is marked 1, the second 2 and so on.+identityDocument_documentIndex :: Lens.Lens' IdentityDocument (Prelude.Maybe Prelude.Natural)+identityDocument_documentIndex = Lens.lens (\IdentityDocument' {documentIndex} -> documentIndex) (\s@IdentityDocument' {} a -> s {documentIndex = a} :: IdentityDocument)++-- | The structure used to record information extracted from identity+-- documents. Contains both normalized field and value of the extracted+-- text.+identityDocument_identityDocumentFields :: Lens.Lens' IdentityDocument (Prelude.Maybe [IdentityDocumentField])+identityDocument_identityDocumentFields = Lens.lens (\IdentityDocument' {identityDocumentFields} -> identityDocumentFields) (\s@IdentityDocument' {} a -> s {identityDocumentFields = a} :: IdentityDocument) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON IdentityDocument where+  parseJSON =+    Data.withObject+      "IdentityDocument"+      ( \x ->+          IdentityDocument'+            Prelude.<$> (x Data..:? "Blocks" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "DocumentIndex")+            Prelude.<*> ( x+                            Data..:? "IdentityDocumentFields"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable IdentityDocument where+  hashWithSalt _salt IdentityDocument' {..} =+    _salt+      `Prelude.hashWithSalt` blocks+      `Prelude.hashWithSalt` documentIndex+      `Prelude.hashWithSalt` identityDocumentFields++instance Prelude.NFData IdentityDocument where+  rnf IdentityDocument' {..} =+    Prelude.rnf blocks+      `Prelude.seq` Prelude.rnf documentIndex+      `Prelude.seq` Prelude.rnf identityDocumentFields
+ gen/Amazonka/Textract/Types/IdentityDocumentField.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.IdentityDocumentField+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.IdentityDocumentField where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.AnalyzeIDDetections++-- | Structure containing both the normalized type of the extracted+-- information and the text associated with it. These are extracted as Type+-- and Value respectively.+--+-- /See:/ 'newIdentityDocumentField' smart constructor.+data IdentityDocumentField = IdentityDocumentField'+  { type' :: Prelude.Maybe AnalyzeIDDetections,+    valueDetection :: Prelude.Maybe AnalyzeIDDetections+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IdentityDocumentField' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'type'', 'identityDocumentField_type' - Undocumented member.+--+-- 'valueDetection', 'identityDocumentField_valueDetection' - Undocumented member.+newIdentityDocumentField ::+  IdentityDocumentField+newIdentityDocumentField =+  IdentityDocumentField'+    { type' = Prelude.Nothing,+      valueDetection = Prelude.Nothing+    }++-- | Undocumented member.+identityDocumentField_type :: Lens.Lens' IdentityDocumentField (Prelude.Maybe AnalyzeIDDetections)+identityDocumentField_type = Lens.lens (\IdentityDocumentField' {type'} -> type') (\s@IdentityDocumentField' {} a -> s {type' = a} :: IdentityDocumentField)++-- | Undocumented member.+identityDocumentField_valueDetection :: Lens.Lens' IdentityDocumentField (Prelude.Maybe AnalyzeIDDetections)+identityDocumentField_valueDetection = Lens.lens (\IdentityDocumentField' {valueDetection} -> valueDetection) (\s@IdentityDocumentField' {} a -> s {valueDetection = a} :: IdentityDocumentField)++instance Data.FromJSON IdentityDocumentField where+  parseJSON =+    Data.withObject+      "IdentityDocumentField"+      ( \x ->+          IdentityDocumentField'+            Prelude.<$> (x Data..:? "Type")+            Prelude.<*> (x Data..:? "ValueDetection")+      )++instance Prelude.Hashable IdentityDocumentField where+  hashWithSalt _salt IdentityDocumentField' {..} =+    _salt+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` valueDetection++instance Prelude.NFData IdentityDocumentField where+  rnf IdentityDocumentField' {..} =+    Prelude.rnf type'+      `Prelude.seq` Prelude.rnf valueDetection
+ gen/Amazonka/Textract/Types/JobStatus.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.Textract.Types.JobStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.JobStatus+  ( JobStatus+      ( ..,+        JobStatus_FAILED,+        JobStatus_IN_PROGRESS,+        JobStatus_PARTIAL_SUCCESS,+        JobStatus_SUCCEEDED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype JobStatus = JobStatus'+  { fromJobStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern JobStatus_FAILED :: JobStatus+pattern JobStatus_FAILED = JobStatus' "FAILED"++pattern JobStatus_IN_PROGRESS :: JobStatus+pattern JobStatus_IN_PROGRESS = JobStatus' "IN_PROGRESS"++pattern JobStatus_PARTIAL_SUCCESS :: JobStatus+pattern JobStatus_PARTIAL_SUCCESS = JobStatus' "PARTIAL_SUCCESS"++pattern JobStatus_SUCCEEDED :: JobStatus+pattern JobStatus_SUCCEEDED = JobStatus' "SUCCEEDED"++{-# COMPLETE+  JobStatus_FAILED,+  JobStatus_IN_PROGRESS,+  JobStatus_PARTIAL_SUCCESS,+  JobStatus_SUCCEEDED,+  JobStatus'+  #-}
+ gen/Amazonka/Textract/Types/LendingDetection.hs view
@@ -0,0 +1,115 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.LendingDetection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.LendingDetection where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.Geometry+import Amazonka.Textract.Types.SelectionStatus++-- | The results extracted for a lending document.+--+-- /See:/ 'newLendingDetection' smart constructor.+data LendingDetection = LendingDetection'+  { -- | The confidence level for the text of a detected value in a lending+    -- document.+    confidence :: Prelude.Maybe Prelude.Double,+    geometry :: Prelude.Maybe Geometry,+    -- | The selection status of a selection element, such as an option button or+    -- check box.+    selectionStatus :: Prelude.Maybe SelectionStatus,+    -- | The text extracted for a detected value in a lending document.+    text :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LendingDetection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'confidence', 'lendingDetection_confidence' - The confidence level for the text of a detected value in a lending+-- document.+--+-- 'geometry', 'lendingDetection_geometry' - Undocumented member.+--+-- 'selectionStatus', 'lendingDetection_selectionStatus' - The selection status of a selection element, such as an option button or+-- check box.+--+-- 'text', 'lendingDetection_text' - The text extracted for a detected value in a lending document.+newLendingDetection ::+  LendingDetection+newLendingDetection =+  LendingDetection'+    { confidence = Prelude.Nothing,+      geometry = Prelude.Nothing,+      selectionStatus = Prelude.Nothing,+      text = Prelude.Nothing+    }++-- | The confidence level for the text of a detected value in a lending+-- document.+lendingDetection_confidence :: Lens.Lens' LendingDetection (Prelude.Maybe Prelude.Double)+lendingDetection_confidence = Lens.lens (\LendingDetection' {confidence} -> confidence) (\s@LendingDetection' {} a -> s {confidence = a} :: LendingDetection)++-- | Undocumented member.+lendingDetection_geometry :: Lens.Lens' LendingDetection (Prelude.Maybe Geometry)+lendingDetection_geometry = Lens.lens (\LendingDetection' {geometry} -> geometry) (\s@LendingDetection' {} a -> s {geometry = a} :: LendingDetection)++-- | The selection status of a selection element, such as an option button or+-- check box.+lendingDetection_selectionStatus :: Lens.Lens' LendingDetection (Prelude.Maybe SelectionStatus)+lendingDetection_selectionStatus = Lens.lens (\LendingDetection' {selectionStatus} -> selectionStatus) (\s@LendingDetection' {} a -> s {selectionStatus = a} :: LendingDetection)++-- | The text extracted for a detected value in a lending document.+lendingDetection_text :: Lens.Lens' LendingDetection (Prelude.Maybe Prelude.Text)+lendingDetection_text = Lens.lens (\LendingDetection' {text} -> text) (\s@LendingDetection' {} a -> s {text = a} :: LendingDetection)++instance Data.FromJSON LendingDetection where+  parseJSON =+    Data.withObject+      "LendingDetection"+      ( \x ->+          LendingDetection'+            Prelude.<$> (x Data..:? "Confidence")+            Prelude.<*> (x Data..:? "Geometry")+            Prelude.<*> (x Data..:? "SelectionStatus")+            Prelude.<*> (x Data..:? "Text")+      )++instance Prelude.Hashable LendingDetection where+  hashWithSalt _salt LendingDetection' {..} =+    _salt+      `Prelude.hashWithSalt` confidence+      `Prelude.hashWithSalt` geometry+      `Prelude.hashWithSalt` selectionStatus+      `Prelude.hashWithSalt` text++instance Prelude.NFData LendingDetection where+  rnf LendingDetection' {..} =+    Prelude.rnf confidence+      `Prelude.seq` Prelude.rnf geometry+      `Prelude.seq` Prelude.rnf selectionStatus+      `Prelude.seq` Prelude.rnf text
+ gen/Amazonka/Textract/Types/LendingDocument.hs view
@@ -0,0 +1,90 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.LendingDocument+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.LendingDocument where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.LendingField+import Amazonka.Textract.Types.SignatureDetection++-- | Holds the structured data returned by AnalyzeDocument for lending+-- documents.+--+-- /See:/ 'newLendingDocument' smart constructor.+data LendingDocument = LendingDocument'+  { -- | An array of LendingField objects.+    lendingFields :: Prelude.Maybe [LendingField],+    -- | A list of signatures detected in a lending document.+    signatureDetections :: Prelude.Maybe [SignatureDetection]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LendingDocument' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lendingFields', 'lendingDocument_lendingFields' - An array of LendingField objects.+--+-- 'signatureDetections', 'lendingDocument_signatureDetections' - A list of signatures detected in a lending document.+newLendingDocument ::+  LendingDocument+newLendingDocument =+  LendingDocument'+    { lendingFields = Prelude.Nothing,+      signatureDetections = Prelude.Nothing+    }++-- | An array of LendingField objects.+lendingDocument_lendingFields :: Lens.Lens' LendingDocument (Prelude.Maybe [LendingField])+lendingDocument_lendingFields = Lens.lens (\LendingDocument' {lendingFields} -> lendingFields) (\s@LendingDocument' {} a -> s {lendingFields = a} :: LendingDocument) Prelude.. Lens.mapping Lens.coerced++-- | A list of signatures detected in a lending document.+lendingDocument_signatureDetections :: Lens.Lens' LendingDocument (Prelude.Maybe [SignatureDetection])+lendingDocument_signatureDetections = Lens.lens (\LendingDocument' {signatureDetections} -> signatureDetections) (\s@LendingDocument' {} a -> s {signatureDetections = a} :: LendingDocument) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON LendingDocument where+  parseJSON =+    Data.withObject+      "LendingDocument"+      ( \x ->+          LendingDocument'+            Prelude.<$> (x Data..:? "LendingFields" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "SignatureDetections"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable LendingDocument where+  hashWithSalt _salt LendingDocument' {..} =+    _salt+      `Prelude.hashWithSalt` lendingFields+      `Prelude.hashWithSalt` signatureDetections++instance Prelude.NFData LendingDocument where+  rnf LendingDocument' {..} =+    Prelude.rnf lendingFields+      `Prelude.seq` Prelude.rnf signatureDetections
+ gen/Amazonka/Textract/Types/LendingField.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.Textract.Types.LendingField+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.LendingField where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.LendingDetection++-- | Holds the normalized key-value pairs returned by AnalyzeDocument,+-- including the document type, detected text, and geometry.+--+-- /See:/ 'newLendingField' smart constructor.+data LendingField = LendingField'+  { keyDetection :: Prelude.Maybe LendingDetection,+    -- | The type of the lending document.+    type' :: Prelude.Maybe Prelude.Text,+    -- | An array of LendingDetection objects.+    valueDetections :: Prelude.Maybe [LendingDetection]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LendingField' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'keyDetection', 'lendingField_keyDetection' - Undocumented member.+--+-- 'type'', 'lendingField_type' - The type of the lending document.+--+-- 'valueDetections', 'lendingField_valueDetections' - An array of LendingDetection objects.+newLendingField ::+  LendingField+newLendingField =+  LendingField'+    { keyDetection = Prelude.Nothing,+      type' = Prelude.Nothing,+      valueDetections = Prelude.Nothing+    }++-- | Undocumented member.+lendingField_keyDetection :: Lens.Lens' LendingField (Prelude.Maybe LendingDetection)+lendingField_keyDetection = Lens.lens (\LendingField' {keyDetection} -> keyDetection) (\s@LendingField' {} a -> s {keyDetection = a} :: LendingField)++-- | The type of the lending document.+lendingField_type :: Lens.Lens' LendingField (Prelude.Maybe Prelude.Text)+lendingField_type = Lens.lens (\LendingField' {type'} -> type') (\s@LendingField' {} a -> s {type' = a} :: LendingField)++-- | An array of LendingDetection objects.+lendingField_valueDetections :: Lens.Lens' LendingField (Prelude.Maybe [LendingDetection])+lendingField_valueDetections = Lens.lens (\LendingField' {valueDetections} -> valueDetections) (\s@LendingField' {} a -> s {valueDetections = a} :: LendingField) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON LendingField where+  parseJSON =+    Data.withObject+      "LendingField"+      ( \x ->+          LendingField'+            Prelude.<$> (x Data..:? "KeyDetection")+            Prelude.<*> (x Data..:? "Type")+            Prelude.<*> ( x+                            Data..:? "ValueDetections"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable LendingField where+  hashWithSalt _salt LendingField' {..} =+    _salt+      `Prelude.hashWithSalt` keyDetection+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` valueDetections++instance Prelude.NFData LendingField where+  rnf LendingField' {..} =+    Prelude.rnf keyDetection+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf valueDetections
+ gen/Amazonka/Textract/Types/LendingResult.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.LendingResult+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.LendingResult where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.Extraction+import Amazonka.Textract.Types.PageClassification++-- | Contains the detections for each page analyzed through the Analyze+-- Lending API.+--+-- /See:/ 'newLendingResult' smart constructor.+data LendingResult = LendingResult'+  { -- | An array of Extraction to hold structured data. e.g. normalized key+    -- value pairs instead of raw OCR detections .+    extractions :: Prelude.Maybe [Extraction],+    -- | The page number for a page, with regard to whole submission.+    page :: Prelude.Maybe Prelude.Natural,+    -- | The classifier result for a given page.+    pageClassification :: Prelude.Maybe PageClassification+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LendingResult' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'extractions', 'lendingResult_extractions' - An array of Extraction to hold structured data. e.g. normalized key+-- value pairs instead of raw OCR detections .+--+-- 'page', 'lendingResult_page' - The page number for a page, with regard to whole submission.+--+-- 'pageClassification', 'lendingResult_pageClassification' - The classifier result for a given page.+newLendingResult ::+  LendingResult+newLendingResult =+  LendingResult'+    { extractions = Prelude.Nothing,+      page = Prelude.Nothing,+      pageClassification = Prelude.Nothing+    }++-- | An array of Extraction to hold structured data. e.g. normalized key+-- value pairs instead of raw OCR detections .+lendingResult_extractions :: Lens.Lens' LendingResult (Prelude.Maybe [Extraction])+lendingResult_extractions = Lens.lens (\LendingResult' {extractions} -> extractions) (\s@LendingResult' {} a -> s {extractions = a} :: LendingResult) Prelude.. Lens.mapping Lens.coerced++-- | The page number for a page, with regard to whole submission.+lendingResult_page :: Lens.Lens' LendingResult (Prelude.Maybe Prelude.Natural)+lendingResult_page = Lens.lens (\LendingResult' {page} -> page) (\s@LendingResult' {} a -> s {page = a} :: LendingResult)++-- | The classifier result for a given page.+lendingResult_pageClassification :: Lens.Lens' LendingResult (Prelude.Maybe PageClassification)+lendingResult_pageClassification = Lens.lens (\LendingResult' {pageClassification} -> pageClassification) (\s@LendingResult' {} a -> s {pageClassification = a} :: LendingResult)++instance Data.FromJSON LendingResult where+  parseJSON =+    Data.withObject+      "LendingResult"+      ( \x ->+          LendingResult'+            Prelude.<$> (x Data..:? "Extractions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "Page")+            Prelude.<*> (x Data..:? "PageClassification")+      )++instance Prelude.Hashable LendingResult where+  hashWithSalt _salt LendingResult' {..} =+    _salt+      `Prelude.hashWithSalt` extractions+      `Prelude.hashWithSalt` page+      `Prelude.hashWithSalt` pageClassification++instance Prelude.NFData LendingResult where+  rnf LendingResult' {..} =+    Prelude.rnf extractions+      `Prelude.seq` Prelude.rnf page+      `Prelude.seq` Prelude.rnf pageClassification
+ gen/Amazonka/Textract/Types/LendingSummary.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.LendingSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.LendingSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.DocumentGroup++-- | Contains information regarding DocumentGroups and+-- UndetectedDocumentTypes.+--+-- /See:/ 'newLendingSummary' smart constructor.+data LendingSummary = LendingSummary'+  { -- | Contains an array of all DocumentGroup objects.+    documentGroups :: Prelude.Maybe [DocumentGroup],+    -- | UndetectedDocumentTypes.+    undetectedDocumentTypes :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LendingSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'documentGroups', 'lendingSummary_documentGroups' - Contains an array of all DocumentGroup objects.+--+-- 'undetectedDocumentTypes', 'lendingSummary_undetectedDocumentTypes' - UndetectedDocumentTypes.+newLendingSummary ::+  LendingSummary+newLendingSummary =+  LendingSummary'+    { documentGroups = Prelude.Nothing,+      undetectedDocumentTypes = Prelude.Nothing+    }++-- | Contains an array of all DocumentGroup objects.+lendingSummary_documentGroups :: Lens.Lens' LendingSummary (Prelude.Maybe [DocumentGroup])+lendingSummary_documentGroups = Lens.lens (\LendingSummary' {documentGroups} -> documentGroups) (\s@LendingSummary' {} a -> s {documentGroups = a} :: LendingSummary) Prelude.. Lens.mapping Lens.coerced++-- | UndetectedDocumentTypes.+lendingSummary_undetectedDocumentTypes :: Lens.Lens' LendingSummary (Prelude.Maybe [Prelude.Text])+lendingSummary_undetectedDocumentTypes = Lens.lens (\LendingSummary' {undetectedDocumentTypes} -> undetectedDocumentTypes) (\s@LendingSummary' {} a -> s {undetectedDocumentTypes = a} :: LendingSummary) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON LendingSummary where+  parseJSON =+    Data.withObject+      "LendingSummary"+      ( \x ->+          LendingSummary'+            Prelude.<$> (x Data..:? "DocumentGroups" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "UndetectedDocumentTypes"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable LendingSummary where+  hashWithSalt _salt LendingSummary' {..} =+    _salt+      `Prelude.hashWithSalt` documentGroups+      `Prelude.hashWithSalt` undetectedDocumentTypes++instance Prelude.NFData LendingSummary where+  rnf LendingSummary' {..} =+    Prelude.rnf documentGroups+      `Prelude.seq` Prelude.rnf undetectedDocumentTypes
+ gen/Amazonka/Textract/Types/LineItemFields.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.LineItemFields+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.LineItemFields where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.ExpenseField++-- | A structure that holds information about the different lines found in a+-- document\'s tables.+--+-- /See:/ 'newLineItemFields' smart constructor.+data LineItemFields = LineItemFields'+  { -- | ExpenseFields used to show information from detected lines on a table.+    lineItemExpenseFields :: Prelude.Maybe [ExpenseField]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LineItemFields' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lineItemExpenseFields', 'lineItemFields_lineItemExpenseFields' - ExpenseFields used to show information from detected lines on a table.+newLineItemFields ::+  LineItemFields+newLineItemFields =+  LineItemFields'+    { lineItemExpenseFields =+        Prelude.Nothing+    }++-- | ExpenseFields used to show information from detected lines on a table.+lineItemFields_lineItemExpenseFields :: Lens.Lens' LineItemFields (Prelude.Maybe [ExpenseField])+lineItemFields_lineItemExpenseFields = Lens.lens (\LineItemFields' {lineItemExpenseFields} -> lineItemExpenseFields) (\s@LineItemFields' {} a -> s {lineItemExpenseFields = a} :: LineItemFields) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON LineItemFields where+  parseJSON =+    Data.withObject+      "LineItemFields"+      ( \x ->+          LineItemFields'+            Prelude.<$> ( x+                            Data..:? "LineItemExpenseFields"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable LineItemFields where+  hashWithSalt _salt LineItemFields' {..} =+    _salt `Prelude.hashWithSalt` lineItemExpenseFields++instance Prelude.NFData LineItemFields where+  rnf LineItemFields' {..} =+    Prelude.rnf lineItemExpenseFields
+ gen/Amazonka/Textract/Types/LineItemGroup.hs view
@@ -0,0 +1,93 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.LineItemGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.LineItemGroup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.LineItemFields++-- | A grouping of tables which contain LineItems, with each table identified+-- by the table\'s @LineItemGroupIndex@.+--+-- /See:/ 'newLineItemGroup' smart constructor.+data LineItemGroup = LineItemGroup'+  { -- | The number used to identify a specific table in a document. The first+    -- table encountered will have a LineItemGroupIndex of 1, the second 2,+    -- etc.+    lineItemGroupIndex :: Prelude.Maybe Prelude.Natural,+    -- | The breakdown of information on a particular line of a table.+    lineItems :: Prelude.Maybe [LineItemFields]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LineItemGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lineItemGroupIndex', 'lineItemGroup_lineItemGroupIndex' - The number used to identify a specific table in a document. The first+-- table encountered will have a LineItemGroupIndex of 1, the second 2,+-- etc.+--+-- 'lineItems', 'lineItemGroup_lineItems' - The breakdown of information on a particular line of a table.+newLineItemGroup ::+  LineItemGroup+newLineItemGroup =+  LineItemGroup'+    { lineItemGroupIndex =+        Prelude.Nothing,+      lineItems = Prelude.Nothing+    }++-- | The number used to identify a specific table in a document. The first+-- table encountered will have a LineItemGroupIndex of 1, the second 2,+-- etc.+lineItemGroup_lineItemGroupIndex :: Lens.Lens' LineItemGroup (Prelude.Maybe Prelude.Natural)+lineItemGroup_lineItemGroupIndex = Lens.lens (\LineItemGroup' {lineItemGroupIndex} -> lineItemGroupIndex) (\s@LineItemGroup' {} a -> s {lineItemGroupIndex = a} :: LineItemGroup)++-- | The breakdown of information on a particular line of a table.+lineItemGroup_lineItems :: Lens.Lens' LineItemGroup (Prelude.Maybe [LineItemFields])+lineItemGroup_lineItems = Lens.lens (\LineItemGroup' {lineItems} -> lineItems) (\s@LineItemGroup' {} a -> s {lineItems = a} :: LineItemGroup) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON LineItemGroup where+  parseJSON =+    Data.withObject+      "LineItemGroup"+      ( \x ->+          LineItemGroup'+            Prelude.<$> (x Data..:? "LineItemGroupIndex")+            Prelude.<*> (x Data..:? "LineItems" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable LineItemGroup where+  hashWithSalt _salt LineItemGroup' {..} =+    _salt+      `Prelude.hashWithSalt` lineItemGroupIndex+      `Prelude.hashWithSalt` lineItems++instance Prelude.NFData LineItemGroup where+  rnf LineItemGroup' {..} =+    Prelude.rnf lineItemGroupIndex+      `Prelude.seq` Prelude.rnf lineItems
+ gen/Amazonka/Textract/Types/NormalizedValue.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.NormalizedValue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.NormalizedValue where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.ValueType++-- | Contains information relating to dates in a document, including the type+-- of value, and the value.+--+-- /See:/ 'newNormalizedValue' smart constructor.+data NormalizedValue = NormalizedValue'+  { -- | The value of the date, written as Year-Month-DayTHour:Minute:Second.+    value :: Prelude.Maybe Prelude.Text,+    -- | The normalized type of the value detected. In this case, DATE.+    valueType :: Prelude.Maybe ValueType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NormalizedValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'value', 'normalizedValue_value' - The value of the date, written as Year-Month-DayTHour:Minute:Second.+--+-- 'valueType', 'normalizedValue_valueType' - The normalized type of the value detected. In this case, DATE.+newNormalizedValue ::+  NormalizedValue+newNormalizedValue =+  NormalizedValue'+    { value = Prelude.Nothing,+      valueType = Prelude.Nothing+    }++-- | The value of the date, written as Year-Month-DayTHour:Minute:Second.+normalizedValue_value :: Lens.Lens' NormalizedValue (Prelude.Maybe Prelude.Text)+normalizedValue_value = Lens.lens (\NormalizedValue' {value} -> value) (\s@NormalizedValue' {} a -> s {value = a} :: NormalizedValue)++-- | The normalized type of the value detected. In this case, DATE.+normalizedValue_valueType :: Lens.Lens' NormalizedValue (Prelude.Maybe ValueType)+normalizedValue_valueType = Lens.lens (\NormalizedValue' {valueType} -> valueType) (\s@NormalizedValue' {} a -> s {valueType = a} :: NormalizedValue)++instance Data.FromJSON NormalizedValue where+  parseJSON =+    Data.withObject+      "NormalizedValue"+      ( \x ->+          NormalizedValue'+            Prelude.<$> (x Data..:? "Value")+            Prelude.<*> (x Data..:? "ValueType")+      )++instance Prelude.Hashable NormalizedValue where+  hashWithSalt _salt NormalizedValue' {..} =+    _salt+      `Prelude.hashWithSalt` value+      `Prelude.hashWithSalt` valueType++instance Prelude.NFData NormalizedValue where+  rnf NormalizedValue' {..} =+    Prelude.rnf value+      `Prelude.seq` Prelude.rnf valueType
+ gen/Amazonka/Textract/Types/NotificationChannel.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.NotificationChannel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.NotificationChannel where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The Amazon Simple Notification Service (Amazon SNS) topic to which+-- Amazon Textract publishes the completion status of an asynchronous+-- document operation.+--+-- /See:/ 'newNotificationChannel' smart constructor.+data NotificationChannel = NotificationChannel'+  { -- | The Amazon SNS topic that Amazon Textract posts the completion status+    -- to.+    sNSTopicArn :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) of an IAM role that gives Amazon Textract+    -- publishing permissions to the Amazon SNS topic.+    roleArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NotificationChannel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'sNSTopicArn', 'notificationChannel_sNSTopicArn' - The Amazon SNS topic that Amazon Textract posts the completion status+-- to.+--+-- 'roleArn', 'notificationChannel_roleArn' - The Amazon Resource Name (ARN) of an IAM role that gives Amazon Textract+-- publishing permissions to the Amazon SNS topic.+newNotificationChannel ::+  -- | 'sNSTopicArn'+  Prelude.Text ->+  -- | 'roleArn'+  Prelude.Text ->+  NotificationChannel+newNotificationChannel pSNSTopicArn_ pRoleArn_ =+  NotificationChannel'+    { sNSTopicArn = pSNSTopicArn_,+      roleArn = pRoleArn_+    }++-- | The Amazon SNS topic that Amazon Textract posts the completion status+-- to.+notificationChannel_sNSTopicArn :: Lens.Lens' NotificationChannel Prelude.Text+notificationChannel_sNSTopicArn = Lens.lens (\NotificationChannel' {sNSTopicArn} -> sNSTopicArn) (\s@NotificationChannel' {} a -> s {sNSTopicArn = a} :: NotificationChannel)++-- | The Amazon Resource Name (ARN) of an IAM role that gives Amazon Textract+-- publishing permissions to the Amazon SNS topic.+notificationChannel_roleArn :: Lens.Lens' NotificationChannel Prelude.Text+notificationChannel_roleArn = Lens.lens (\NotificationChannel' {roleArn} -> roleArn) (\s@NotificationChannel' {} a -> s {roleArn = a} :: NotificationChannel)++instance Prelude.Hashable NotificationChannel where+  hashWithSalt _salt NotificationChannel' {..} =+    _salt+      `Prelude.hashWithSalt` sNSTopicArn+      `Prelude.hashWithSalt` roleArn++instance Prelude.NFData NotificationChannel where+  rnf NotificationChannel' {..} =+    Prelude.rnf sNSTopicArn+      `Prelude.seq` Prelude.rnf roleArn++instance Data.ToJSON NotificationChannel where+  toJSON NotificationChannel' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("SNSTopicArn" Data..= sNSTopicArn),+            Prelude.Just ("RoleArn" Data..= roleArn)+          ]+      )
+ gen/Amazonka/Textract/Types/OutputConfig.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.Textract.Types.OutputConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.OutputConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Sets whether or not your output will go to a user created bucket. Used+-- to set the name of the bucket, and the prefix on the output file.+--+-- @OutputConfig@ is an optional parameter which lets you adjust where your+-- output will be placed. By default, Amazon Textract will store the+-- results internally and can only be accessed by the Get API operations.+-- With @OutputConfig@ enabled, you can set the name of the bucket the+-- output will be sent to the file prefix of the results where you can+-- download your results. Additionally, you can set the @KMSKeyID@+-- parameter to a customer master key (CMK) to encrypt your output. Without+-- this parameter set Amazon Textract will encrypt server-side using the+-- AWS managed CMK for Amazon S3.+--+-- Decryption of Customer Content is necessary for processing of the+-- documents by Amazon Textract. If your account is opted out under an AI+-- services opt out policy then all unencrypted Customer Content is+-- immediately and permanently deleted after the Customer Content has been+-- processed by the service. No copy of of the output is retained by Amazon+-- Textract. For information about how to opt out, see+-- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out.html Managing AI services opt-out policy.>+--+-- For more information on data privacy, see the+-- <https://aws.amazon.com/compliance/data-privacy-faq/ Data Privacy FAQ>.+--+-- /See:/ 'newOutputConfig' smart constructor.+data OutputConfig = OutputConfig'+  { -- | The prefix of the object key that the output will be saved to. When not+    -- enabled, the prefix will be “textract_output\".+    s3Prefix :: Prelude.Maybe Prelude.Text,+    -- | The name of the bucket your output will go to.+    s3Bucket :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OutputConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3Prefix', 'outputConfig_s3Prefix' - The prefix of the object key that the output will be saved to. When not+-- enabled, the prefix will be “textract_output\".+--+-- 's3Bucket', 'outputConfig_s3Bucket' - The name of the bucket your output will go to.+newOutputConfig ::+  -- | 's3Bucket'+  Prelude.Text ->+  OutputConfig+newOutputConfig pS3Bucket_ =+  OutputConfig'+    { s3Prefix = Prelude.Nothing,+      s3Bucket = pS3Bucket_+    }++-- | The prefix of the object key that the output will be saved to. When not+-- enabled, the prefix will be “textract_output\".+outputConfig_s3Prefix :: Lens.Lens' OutputConfig (Prelude.Maybe Prelude.Text)+outputConfig_s3Prefix = Lens.lens (\OutputConfig' {s3Prefix} -> s3Prefix) (\s@OutputConfig' {} a -> s {s3Prefix = a} :: OutputConfig)++-- | The name of the bucket your output will go to.+outputConfig_s3Bucket :: Lens.Lens' OutputConfig Prelude.Text+outputConfig_s3Bucket = Lens.lens (\OutputConfig' {s3Bucket} -> s3Bucket) (\s@OutputConfig' {} a -> s {s3Bucket = a} :: OutputConfig)++instance Prelude.Hashable OutputConfig where+  hashWithSalt _salt OutputConfig' {..} =+    _salt+      `Prelude.hashWithSalt` s3Prefix+      `Prelude.hashWithSalt` s3Bucket++instance Prelude.NFData OutputConfig where+  rnf OutputConfig' {..} =+    Prelude.rnf s3Prefix+      `Prelude.seq` Prelude.rnf s3Bucket++instance Data.ToJSON OutputConfig where+  toJSON OutputConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("S3Prefix" Data..=) Prelude.<$> s3Prefix,+            Prelude.Just ("S3Bucket" Data..= s3Bucket)+          ]+      )
+ gen/Amazonka/Textract/Types/PageClassification.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.Textract.Types.PageClassification+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.PageClassification where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.Prediction++-- | The class assigned to a Page object detected in an input document.+-- Contains information regarding the predicted type\/class of a+-- document\'s page and the page number that the Page object was detected+-- on.+--+-- /See:/ 'newPageClassification' smart constructor.+data PageClassification = PageClassification'+  { -- | The class, or document type, assigned to a detected Page object. The+    -- class, or document type, assigned to a detected Page object.+    pageType :: [Prediction],+    -- | The page number the value was detected on, relative to Amazon+    -- Textract\'s starting position.+    pageNumber :: [Prediction]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PageClassification' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pageType', 'pageClassification_pageType' - The class, or document type, assigned to a detected Page object. The+-- class, or document type, assigned to a detected Page object.+--+-- 'pageNumber', 'pageClassification_pageNumber' - The page number the value was detected on, relative to Amazon+-- Textract\'s starting position.+newPageClassification ::+  PageClassification+newPageClassification =+  PageClassification'+    { pageType = Prelude.mempty,+      pageNumber = Prelude.mempty+    }++-- | The class, or document type, assigned to a detected Page object. The+-- class, or document type, assigned to a detected Page object.+pageClassification_pageType :: Lens.Lens' PageClassification [Prediction]+pageClassification_pageType = Lens.lens (\PageClassification' {pageType} -> pageType) (\s@PageClassification' {} a -> s {pageType = a} :: PageClassification) Prelude.. Lens.coerced++-- | The page number the value was detected on, relative to Amazon+-- Textract\'s starting position.+pageClassification_pageNumber :: Lens.Lens' PageClassification [Prediction]+pageClassification_pageNumber = Lens.lens (\PageClassification' {pageNumber} -> pageNumber) (\s@PageClassification' {} a -> s {pageNumber = a} :: PageClassification) Prelude.. Lens.coerced++instance Data.FromJSON PageClassification where+  parseJSON =+    Data.withObject+      "PageClassification"+      ( \x ->+          PageClassification'+            Prelude.<$> (x Data..:? "PageType" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "PageNumber" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable PageClassification where+  hashWithSalt _salt PageClassification' {..} =+    _salt+      `Prelude.hashWithSalt` pageType+      `Prelude.hashWithSalt` pageNumber++instance Prelude.NFData PageClassification where+  rnf PageClassification' {..} =+    Prelude.rnf pageType+      `Prelude.seq` Prelude.rnf pageNumber
+ gen/Amazonka/Textract/Types/Point.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.Point+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.Point where++import qualified 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 X and Y coordinates of a point on a document page. The X and Y+-- values that are returned are ratios of the overall document page size.+-- For example, if the input document is 700 x 200 and the operation+-- returns X=0.5 and Y=0.25, then the point is at the (350,50) pixel+-- coordinate on the document page.+--+-- An array of @Point@ objects, @Polygon@, is returned by+-- DetectDocumentText. @Polygon@ represents a fine-grained polygon around+-- detected text. For more information, see Geometry in the Amazon Textract+-- Developer Guide.+--+-- /See:/ 'newPoint' smart constructor.+data Point = Point'+  { -- | The value of the X coordinate for a point on a @Polygon@.+    x :: Prelude.Maybe Prelude.Double,+    -- | The value of the Y coordinate for a point on a @Polygon@.+    y :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Point' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'x', 'point_x' - The value of the X coordinate for a point on a @Polygon@.+--+-- 'y', 'point_y' - The value of the Y coordinate for a point on a @Polygon@.+newPoint ::+  Point+newPoint =+  Point' {x = Prelude.Nothing, y = Prelude.Nothing}++-- | The value of the X coordinate for a point on a @Polygon@.+point_x :: Lens.Lens' Point (Prelude.Maybe Prelude.Double)+point_x = Lens.lens (\Point' {x} -> x) (\s@Point' {} a -> s {x = a} :: Point)++-- | The value of the Y coordinate for a point on a @Polygon@.+point_y :: Lens.Lens' Point (Prelude.Maybe Prelude.Double)+point_y = Lens.lens (\Point' {y} -> y) (\s@Point' {} a -> s {y = a} :: Point)++instance Data.FromJSON Point where+  parseJSON =+    Data.withObject+      "Point"+      ( \x ->+          Point'+            Prelude.<$> (x Data..:? "X")+            Prelude.<*> (x Data..:? "Y")+      )++instance Prelude.Hashable Point where+  hashWithSalt _salt Point' {..} =+    _salt+      `Prelude.hashWithSalt` x+      `Prelude.hashWithSalt` y++instance Prelude.NFData Point where+  rnf Point' {..} =+    Prelude.rnf x `Prelude.seq` Prelude.rnf y
+ gen/Amazonka/Textract/Types/Prediction.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.Prediction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.Prediction where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains information regarding predicted values returned by Amazon+-- Textract operations, including the predicted value and the confidence in+-- the predicted value.+--+-- /See:/ 'newPrediction' smart constructor.+data Prediction = Prediction'+  { -- | Amazon Textract\'s confidence in its predicted value.+    confidence :: Prelude.Maybe Prelude.Double,+    -- | The predicted value of a detected object.+    value :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Prediction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'confidence', 'prediction_confidence' - Amazon Textract\'s confidence in its predicted value.+--+-- 'value', 'prediction_value' - The predicted value of a detected object.+newPrediction ::+  Prediction+newPrediction =+  Prediction'+    { confidence = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | Amazon Textract\'s confidence in its predicted value.+prediction_confidence :: Lens.Lens' Prediction (Prelude.Maybe Prelude.Double)+prediction_confidence = Lens.lens (\Prediction' {confidence} -> confidence) (\s@Prediction' {} a -> s {confidence = a} :: Prediction)++-- | The predicted value of a detected object.+prediction_value :: Lens.Lens' Prediction (Prelude.Maybe Prelude.Text)+prediction_value = Lens.lens (\Prediction' {value} -> value) (\s@Prediction' {} a -> s {value = a} :: Prediction)++instance Data.FromJSON Prediction where+  parseJSON =+    Data.withObject+      "Prediction"+      ( \x ->+          Prediction'+            Prelude.<$> (x Data..:? "Confidence")+            Prelude.<*> (x Data..:? "Value")+      )++instance Prelude.Hashable Prediction where+  hashWithSalt _salt Prediction' {..} =+    _salt+      `Prelude.hashWithSalt` confidence+      `Prelude.hashWithSalt` value++instance Prelude.NFData Prediction where+  rnf Prediction' {..} =+    Prelude.rnf confidence+      `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/Textract/Types/QueriesConfig.hs view
@@ -0,0 +1,70 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.QueriesConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.QueriesConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.Query++-- |+--+-- /See:/ 'newQueriesConfig' smart constructor.+data QueriesConfig = QueriesConfig'+  { queries :: Prelude.NonEmpty Query+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'QueriesConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'queries', 'queriesConfig_queries' -+newQueriesConfig ::+  -- | 'queries'+  Prelude.NonEmpty Query ->+  QueriesConfig+newQueriesConfig pQueries_ =+  QueriesConfig'+    { queries =+        Lens.coerced Lens.# pQueries_+    }++queriesConfig_queries :: Lens.Lens' QueriesConfig (Prelude.NonEmpty Query)+queriesConfig_queries = Lens.lens (\QueriesConfig' {queries} -> queries) (\s@QueriesConfig' {} a -> s {queries = a} :: QueriesConfig) Prelude.. Lens.coerced++instance Prelude.Hashable QueriesConfig where+  hashWithSalt _salt QueriesConfig' {..} =+    _salt `Prelude.hashWithSalt` queries++instance Prelude.NFData QueriesConfig where+  rnf QueriesConfig' {..} = Prelude.rnf queries++instance Data.ToJSON QueriesConfig where+  toJSON QueriesConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Queries" Data..= queries)]+      )
+ gen/Amazonka/Textract/Types/Query.hs view
@@ -0,0 +1,160 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.Query+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.Query where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Each query contains the question you want to ask in the Text and the+-- alias you want to associate.+--+-- /See:/ 'newQuery' smart constructor.+data Query = Query'+  { -- | Alias attached to the query, for ease of location.+    alias :: Prelude.Maybe Prelude.Text,+    -- | Pages is a parameter that the user inputs to specify which pages to+    -- apply a query to. The following is a list of rules for using this+    -- parameter.+    --+    -- -   If a page is not specified, it is set to @[\"1\"]@ by default.+    --+    -- -   The following characters are allowed in the parameter\'s string:+    --     @0 1 2 3 4 5 6 7 8 9 - *@. No whitespace is allowed.+    --+    -- -   When using * to indicate all pages, it must be the only element in+    --     the list.+    --+    -- -   You can use page intervals, such as @[“1-3”, “1-1”, “4-*”]@. Where+    --     @*@ indicates last page of document.+    --+    -- -   Specified pages must be greater than 0 and less than or equal to the+    --     number of pages in the document.+    pages :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | Question that Amazon Textract will apply to the document. An example+    -- would be \"What is the customer\'s SSN?\"+    text :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Query' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alias', 'query_alias' - Alias attached to the query, for ease of location.+--+-- 'pages', 'query_pages' - Pages is a parameter that the user inputs to specify which pages to+-- apply a query to. The following is a list of rules for using this+-- parameter.+--+-- -   If a page is not specified, it is set to @[\"1\"]@ by default.+--+-- -   The following characters are allowed in the parameter\'s string:+--     @0 1 2 3 4 5 6 7 8 9 - *@. No whitespace is allowed.+--+-- -   When using * to indicate all pages, it must be the only element in+--     the list.+--+-- -   You can use page intervals, such as @[“1-3”, “1-1”, “4-*”]@. Where+--     @*@ indicates last page of document.+--+-- -   Specified pages must be greater than 0 and less than or equal to the+--     number of pages in the document.+--+-- 'text', 'query_text' - Question that Amazon Textract will apply to the document. An example+-- would be \"What is the customer\'s SSN?\"+newQuery ::+  -- | 'text'+  Prelude.Text ->+  Query+newQuery pText_ =+  Query'+    { alias = Prelude.Nothing,+      pages = Prelude.Nothing,+      text = pText_+    }++-- | Alias attached to the query, for ease of location.+query_alias :: Lens.Lens' Query (Prelude.Maybe Prelude.Text)+query_alias = Lens.lens (\Query' {alias} -> alias) (\s@Query' {} a -> s {alias = a} :: Query)++-- | Pages is a parameter that the user inputs to specify which pages to+-- apply a query to. The following is a list of rules for using this+-- parameter.+--+-- -   If a page is not specified, it is set to @[\"1\"]@ by default.+--+-- -   The following characters are allowed in the parameter\'s string:+--     @0 1 2 3 4 5 6 7 8 9 - *@. No whitespace is allowed.+--+-- -   When using * to indicate all pages, it must be the only element in+--     the list.+--+-- -   You can use page intervals, such as @[“1-3”, “1-1”, “4-*”]@. Where+--     @*@ indicates last page of document.+--+-- -   Specified pages must be greater than 0 and less than or equal to the+--     number of pages in the document.+query_pages :: Lens.Lens' Query (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+query_pages = Lens.lens (\Query' {pages} -> pages) (\s@Query' {} a -> s {pages = a} :: Query) Prelude.. Lens.mapping Lens.coerced++-- | Question that Amazon Textract will apply to the document. An example+-- would be \"What is the customer\'s SSN?\"+query_text :: Lens.Lens' Query Prelude.Text+query_text = Lens.lens (\Query' {text} -> text) (\s@Query' {} a -> s {text = a} :: Query)++instance Data.FromJSON Query where+  parseJSON =+    Data.withObject+      "Query"+      ( \x ->+          Query'+            Prelude.<$> (x Data..:? "Alias")+            Prelude.<*> (x Data..:? "Pages")+            Prelude.<*> (x Data..: "Text")+      )++instance Prelude.Hashable Query where+  hashWithSalt _salt Query' {..} =+    _salt+      `Prelude.hashWithSalt` alias+      `Prelude.hashWithSalt` pages+      `Prelude.hashWithSalt` text++instance Prelude.NFData Query where+  rnf Query' {..} =+    Prelude.rnf alias+      `Prelude.seq` Prelude.rnf pages+      `Prelude.seq` Prelude.rnf text++instance Data.ToJSON Query where+  toJSON Query' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Alias" Data..=) Prelude.<$> alias,+            ("Pages" Data..=) Prelude.<$> pages,+            Prelude.Just ("Text" Data..= text)+          ]+      )
+ gen/Amazonka/Textract/Types/Relationship.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.Textract.Types.Relationship+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.Relationship where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.RelationshipType++-- | Information about how blocks are related to each other. A @Block@ object+-- contains 0 or more @Relation@ objects in a list, @Relationships@. For+-- more information, see Block.+--+-- The @Type@ element provides the type of the relationship for all blocks+-- in the @IDs@ array.+--+-- /See:/ 'newRelationship' smart constructor.+data Relationship = Relationship'+  { -- | An array of IDs for related blocks. You can get the type of the+    -- relationship from the @Type@ element.+    ids :: Prelude.Maybe [Prelude.Text],+    -- | The type of relationship that the blocks in the IDs array have with the+    -- current block. The relationship can be @VALUE@ or @CHILD@. A+    -- relationship of type VALUE is a list that contains the ID of the VALUE+    -- block that\'s associated with the KEY of a key-value pair. A+    -- relationship of type CHILD is a list of IDs that identify WORD blocks in+    -- the case of lines Cell blocks in the case of Tables, and WORD blocks in+    -- the case of Selection Elements.+    type' :: Prelude.Maybe RelationshipType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Relationship' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'ids', 'relationship_ids' - An array of IDs for related blocks. You can get the type of the+-- relationship from the @Type@ element.+--+-- 'type'', 'relationship_type' - The type of relationship that the blocks in the IDs array have with the+-- current block. The relationship can be @VALUE@ or @CHILD@. A+-- relationship of type VALUE is a list that contains the ID of the VALUE+-- block that\'s associated with the KEY of a key-value pair. A+-- relationship of type CHILD is a list of IDs that identify WORD blocks in+-- the case of lines Cell blocks in the case of Tables, and WORD blocks in+-- the case of Selection Elements.+newRelationship ::+  Relationship+newRelationship =+  Relationship'+    { ids = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | An array of IDs for related blocks. You can get the type of the+-- relationship from the @Type@ element.+relationship_ids :: Lens.Lens' Relationship (Prelude.Maybe [Prelude.Text])+relationship_ids = Lens.lens (\Relationship' {ids} -> ids) (\s@Relationship' {} a -> s {ids = a} :: Relationship) Prelude.. Lens.mapping Lens.coerced++-- | The type of relationship that the blocks in the IDs array have with the+-- current block. The relationship can be @VALUE@ or @CHILD@. A+-- relationship of type VALUE is a list that contains the ID of the VALUE+-- block that\'s associated with the KEY of a key-value pair. A+-- relationship of type CHILD is a list of IDs that identify WORD blocks in+-- the case of lines Cell blocks in the case of Tables, and WORD blocks in+-- the case of Selection Elements.+relationship_type :: Lens.Lens' Relationship (Prelude.Maybe RelationshipType)+relationship_type = Lens.lens (\Relationship' {type'} -> type') (\s@Relationship' {} a -> s {type' = a} :: Relationship)++instance Data.FromJSON Relationship where+  parseJSON =+    Data.withObject+      "Relationship"+      ( \x ->+          Relationship'+            Prelude.<$> (x Data..:? "Ids" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "Type")+      )++instance Prelude.Hashable Relationship where+  hashWithSalt _salt Relationship' {..} =+    _salt+      `Prelude.hashWithSalt` ids+      `Prelude.hashWithSalt` type'++instance Prelude.NFData Relationship where+  rnf Relationship' {..} =+    Prelude.rnf ids `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/Textract/Types/RelationshipType.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.RelationshipType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.RelationshipType+  ( RelationshipType+      ( ..,+        RelationshipType_ANSWER,+        RelationshipType_CHILD,+        RelationshipType_COMPLEX_FEATURES,+        RelationshipType_MERGED_CELL,+        RelationshipType_TITLE,+        RelationshipType_VALUE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RelationshipType = RelationshipType'+  { fromRelationshipType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern RelationshipType_ANSWER :: RelationshipType+pattern RelationshipType_ANSWER = RelationshipType' "ANSWER"++pattern RelationshipType_CHILD :: RelationshipType+pattern RelationshipType_CHILD = RelationshipType' "CHILD"++pattern RelationshipType_COMPLEX_FEATURES :: RelationshipType+pattern RelationshipType_COMPLEX_FEATURES = RelationshipType' "COMPLEX_FEATURES"++pattern RelationshipType_MERGED_CELL :: RelationshipType+pattern RelationshipType_MERGED_CELL = RelationshipType' "MERGED_CELL"++pattern RelationshipType_TITLE :: RelationshipType+pattern RelationshipType_TITLE = RelationshipType' "TITLE"++pattern RelationshipType_VALUE :: RelationshipType+pattern RelationshipType_VALUE = RelationshipType' "VALUE"++{-# COMPLETE+  RelationshipType_ANSWER,+  RelationshipType_CHILD,+  RelationshipType_COMPLEX_FEATURES,+  RelationshipType_MERGED_CELL,+  RelationshipType_TITLE,+  RelationshipType_VALUE,+  RelationshipType'+  #-}
+ gen/Amazonka/Textract/Types/S3Object.hs view
@@ -0,0 +1,113 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.S3Object+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.S3Object where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The S3 bucket name and file name that identifies the document.+--+-- The AWS Region for the S3 bucket that contains the document must match+-- the Region that you use for Amazon Textract operations.+--+-- For Amazon Textract to process a file in an S3 bucket, the user must+-- have permission to access the S3 bucket and file.+--+-- /See:/ 'newS3Object' smart constructor.+data S3Object = S3Object'+  { -- | The name of the S3 bucket. Note that the # character is not valid in the+    -- file name.+    bucket :: Prelude.Maybe Prelude.Text,+    -- | The file name of the input document. Synchronous operations can use+    -- image files that are in JPEG or PNG format. Asynchronous operations also+    -- support PDF and TIFF format files.+    name :: Prelude.Maybe Prelude.Text,+    -- | If the bucket has versioning enabled, you can specify the object+    -- version.+    version :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'S3Object' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'bucket', 's3Object_bucket' - The name of the S3 bucket. Note that the # character is not valid in the+-- file name.+--+-- 'name', 's3Object_name' - The file name of the input document. Synchronous operations can use+-- image files that are in JPEG or PNG format. Asynchronous operations also+-- support PDF and TIFF format files.+--+-- 'version', 's3Object_version' - If the bucket has versioning enabled, you can specify the object+-- version.+newS3Object ::+  S3Object+newS3Object =+  S3Object'+    { bucket = Prelude.Nothing,+      name = Prelude.Nothing,+      version = Prelude.Nothing+    }++-- | The name of the S3 bucket. Note that the # character is not valid in the+-- file name.+s3Object_bucket :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Text)+s3Object_bucket = Lens.lens (\S3Object' {bucket} -> bucket) (\s@S3Object' {} a -> s {bucket = a} :: S3Object)++-- | The file name of the input document. Synchronous operations can use+-- image files that are in JPEG or PNG format. Asynchronous operations also+-- support PDF and TIFF format files.+s3Object_name :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Text)+s3Object_name = Lens.lens (\S3Object' {name} -> name) (\s@S3Object' {} a -> s {name = a} :: S3Object)++-- | If the bucket has versioning enabled, you can specify the object+-- version.+s3Object_version :: Lens.Lens' S3Object (Prelude.Maybe Prelude.Text)+s3Object_version = Lens.lens (\S3Object' {version} -> version) (\s@S3Object' {} a -> s {version = a} :: S3Object)++instance Prelude.Hashable S3Object where+  hashWithSalt _salt S3Object' {..} =+    _salt+      `Prelude.hashWithSalt` bucket+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` version++instance Prelude.NFData S3Object where+  rnf S3Object' {..} =+    Prelude.rnf bucket+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf version++instance Data.ToJSON S3Object where+  toJSON S3Object' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Bucket" Data..=) Prelude.<$> bucket,+            ("Name" Data..=) Prelude.<$> name,+            ("Version" Data..=) Prelude.<$> version+          ]+      )
+ gen/Amazonka/Textract/Types/SelectionStatus.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.Textract.Types.SelectionStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.SelectionStatus+  ( SelectionStatus+      ( ..,+        SelectionStatus_NOT_SELECTED,+        SelectionStatus_SELECTED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype SelectionStatus = SelectionStatus'+  { fromSelectionStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern SelectionStatus_NOT_SELECTED :: SelectionStatus+pattern SelectionStatus_NOT_SELECTED = SelectionStatus' "NOT_SELECTED"++pattern SelectionStatus_SELECTED :: SelectionStatus+pattern SelectionStatus_SELECTED = SelectionStatus' "SELECTED"++{-# COMPLETE+  SelectionStatus_NOT_SELECTED,+  SelectionStatus_SELECTED,+  SelectionStatus'+  #-}
+ gen/Amazonka/Textract/Types/SignatureDetection.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.SignatureDetection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.SignatureDetection where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import Amazonka.Textract.Types.Geometry++-- | Information regarding a detected signature on a page.+--+-- /See:/ 'newSignatureDetection' smart constructor.+data SignatureDetection = SignatureDetection'+  { -- | The confidence, from 0 to 100, in the predicted values for a detected+    -- signature.+    confidence :: Prelude.Maybe Prelude.Double,+    geometry :: Prelude.Maybe Geometry+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SignatureDetection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'confidence', 'signatureDetection_confidence' - The confidence, from 0 to 100, in the predicted values for a detected+-- signature.+--+-- 'geometry', 'signatureDetection_geometry' - Undocumented member.+newSignatureDetection ::+  SignatureDetection+newSignatureDetection =+  SignatureDetection'+    { confidence = Prelude.Nothing,+      geometry = Prelude.Nothing+    }++-- | The confidence, from 0 to 100, in the predicted values for a detected+-- signature.+signatureDetection_confidence :: Lens.Lens' SignatureDetection (Prelude.Maybe Prelude.Double)+signatureDetection_confidence = Lens.lens (\SignatureDetection' {confidence} -> confidence) (\s@SignatureDetection' {} a -> s {confidence = a} :: SignatureDetection)++-- | Undocumented member.+signatureDetection_geometry :: Lens.Lens' SignatureDetection (Prelude.Maybe Geometry)+signatureDetection_geometry = Lens.lens (\SignatureDetection' {geometry} -> geometry) (\s@SignatureDetection' {} a -> s {geometry = a} :: SignatureDetection)++instance Data.FromJSON SignatureDetection where+  parseJSON =+    Data.withObject+      "SignatureDetection"+      ( \x ->+          SignatureDetection'+            Prelude.<$> (x Data..:? "Confidence")+            Prelude.<*> (x Data..:? "Geometry")+      )++instance Prelude.Hashable SignatureDetection where+  hashWithSalt _salt SignatureDetection' {..} =+    _salt+      `Prelude.hashWithSalt` confidence+      `Prelude.hashWithSalt` geometry++instance Prelude.NFData SignatureDetection where+  rnf SignatureDetection' {..} =+    Prelude.rnf confidence+      `Prelude.seq` Prelude.rnf geometry
+ gen/Amazonka/Textract/Types/SplitDocument.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.SplitDocument+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.SplitDocument where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains information about the pages of a document, defined by logical+-- boundary.+--+-- /See:/ 'newSplitDocument' smart constructor.+data SplitDocument = SplitDocument'+  { -- | The index for a given document in a DocumentGroup of a specific Type.+    index :: Prelude.Maybe Prelude.Natural,+    -- | An array of page numbers for a for a given document, ordered by logical+    -- boundary.+    pages :: Prelude.Maybe [Prelude.Natural]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SplitDocument' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'index', 'splitDocument_index' - The index for a given document in a DocumentGroup of a specific Type.+--+-- 'pages', 'splitDocument_pages' - An array of page numbers for a for a given document, ordered by logical+-- boundary.+newSplitDocument ::+  SplitDocument+newSplitDocument =+  SplitDocument'+    { index = Prelude.Nothing,+      pages = Prelude.Nothing+    }++-- | The index for a given document in a DocumentGroup of a specific Type.+splitDocument_index :: Lens.Lens' SplitDocument (Prelude.Maybe Prelude.Natural)+splitDocument_index = Lens.lens (\SplitDocument' {index} -> index) (\s@SplitDocument' {} a -> s {index = a} :: SplitDocument)++-- | An array of page numbers for a for a given document, ordered by logical+-- boundary.+splitDocument_pages :: Lens.Lens' SplitDocument (Prelude.Maybe [Prelude.Natural])+splitDocument_pages = Lens.lens (\SplitDocument' {pages} -> pages) (\s@SplitDocument' {} a -> s {pages = a} :: SplitDocument) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON SplitDocument where+  parseJSON =+    Data.withObject+      "SplitDocument"+      ( \x ->+          SplitDocument'+            Prelude.<$> (x Data..:? "Index")+            Prelude.<*> (x Data..:? "Pages" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable SplitDocument where+  hashWithSalt _salt SplitDocument' {..} =+    _salt+      `Prelude.hashWithSalt` index+      `Prelude.hashWithSalt` pages++instance Prelude.NFData SplitDocument where+  rnf SplitDocument' {..} =+    Prelude.rnf index `Prelude.seq` Prelude.rnf pages
+ gen/Amazonka/Textract/Types/TextType.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.Textract.Types.TextType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.TextType+  ( TextType+      ( ..,+        TextType_HANDWRITING,+        TextType_PRINTED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TextType = TextType'+  { fromTextType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern TextType_HANDWRITING :: TextType+pattern TextType_HANDWRITING = TextType' "HANDWRITING"++pattern TextType_PRINTED :: TextType+pattern TextType_PRINTED = TextType' "PRINTED"++{-# COMPLETE+  TextType_HANDWRITING,+  TextType_PRINTED,+  TextType'+  #-}
+ gen/Amazonka/Textract/Types/UndetectedSignature.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.UndetectedSignature+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.UndetectedSignature where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A structure containing information about an undetected signature on a+-- page where it was expected but not found.+--+-- /See:/ 'newUndetectedSignature' smart constructor.+data UndetectedSignature = UndetectedSignature'+  { -- | The page where a signature was expected but not found.+    page :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UndetectedSignature' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'page', 'undetectedSignature_page' - The page where a signature was expected but not found.+newUndetectedSignature ::+  UndetectedSignature+newUndetectedSignature =+  UndetectedSignature' {page = Prelude.Nothing}++-- | The page where a signature was expected but not found.+undetectedSignature_page :: Lens.Lens' UndetectedSignature (Prelude.Maybe Prelude.Natural)+undetectedSignature_page = Lens.lens (\UndetectedSignature' {page} -> page) (\s@UndetectedSignature' {} a -> s {page = a} :: UndetectedSignature)++instance Data.FromJSON UndetectedSignature where+  parseJSON =+    Data.withObject+      "UndetectedSignature"+      ( \x ->+          UndetectedSignature' Prelude.<$> (x Data..:? "Page")+      )++instance Prelude.Hashable UndetectedSignature where+  hashWithSalt _salt UndetectedSignature' {..} =+    _salt `Prelude.hashWithSalt` page++instance Prelude.NFData UndetectedSignature where+  rnf UndetectedSignature' {..} = Prelude.rnf page
+ gen/Amazonka/Textract/Types/ValueType.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.ValueType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.ValueType+  ( ValueType+      ( ..,+        ValueType_DATE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ValueType = ValueType'+  { fromValueType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ValueType_DATE :: ValueType+pattern ValueType_DATE = ValueType' "DATE"++{-# COMPLETE+  ValueType_DATE,+  ValueType'+  #-}
+ gen/Amazonka/Textract/Types/Warning.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Textract.Types.Warning+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Textract.Types.Warning where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A warning about an issue that occurred during asynchronous text analysis+-- (StartDocumentAnalysis) or asynchronous document text detection+-- (StartDocumentTextDetection).+--+-- /See:/ 'newWarning' smart constructor.+data Warning = Warning'+  { -- | The error code for the warning.+    errorCode :: Prelude.Maybe Prelude.Text,+    -- | A list of the pages that the warning applies to.+    pages :: Prelude.Maybe [Prelude.Natural]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Warning' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorCode', 'warning_errorCode' - The error code for the warning.+--+-- 'pages', 'warning_pages' - A list of the pages that the warning applies to.+newWarning ::+  Warning+newWarning =+  Warning'+    { errorCode = Prelude.Nothing,+      pages = Prelude.Nothing+    }++-- | The error code for the warning.+warning_errorCode :: Lens.Lens' Warning (Prelude.Maybe Prelude.Text)+warning_errorCode = Lens.lens (\Warning' {errorCode} -> errorCode) (\s@Warning' {} a -> s {errorCode = a} :: Warning)++-- | A list of the pages that the warning applies to.+warning_pages :: Lens.Lens' Warning (Prelude.Maybe [Prelude.Natural])+warning_pages = Lens.lens (\Warning' {pages} -> pages) (\s@Warning' {} a -> s {pages = a} :: Warning) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON Warning where+  parseJSON =+    Data.withObject+      "Warning"+      ( \x ->+          Warning'+            Prelude.<$> (x Data..:? "ErrorCode")+            Prelude.<*> (x Data..:? "Pages" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Warning where+  hashWithSalt _salt Warning' {..} =+    _salt+      `Prelude.hashWithSalt` errorCode+      `Prelude.hashWithSalt` pages++instance Prelude.NFData Warning where+  rnf Warning' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf pages
+ gen/Amazonka/Textract/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.Textract.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.Textract.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.Textract.Lens+import Amazonka.Textract.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.Textract+import Test.Amazonka.Textract.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "Textract"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/Textract.hs view
@@ -0,0 +1,298 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Test.Amazonka.Gen.Textract+-- Copyright   : (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.Textract where++import Amazonka.Textract+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.Prelude+import Test.Amazonka.Textract.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"+--         [ requestAnalyzeDocument $+--             newAnalyzeDocument+--+--         , requestAnalyzeExpense $+--             newAnalyzeExpense+--+--         , requestAnalyzeID $+--             newAnalyzeID+--+--         , requestDetectDocumentText $+--             newDetectDocumentText+--+--         , requestGetDocumentAnalysis $+--             newGetDocumentAnalysis+--+--         , requestGetDocumentTextDetection $+--             newGetDocumentTextDetection+--+--         , requestGetExpenseAnalysis $+--             newGetExpenseAnalysis+--+--         , requestGetLendingAnalysis $+--             newGetLendingAnalysis+--+--         , requestGetLendingAnalysisSummary $+--             newGetLendingAnalysisSummary+--+--         , requestStartDocumentAnalysis $+--             newStartDocumentAnalysis+--+--         , requestStartDocumentTextDetection $+--             newStartDocumentTextDetection+--+--         , requestStartExpenseAnalysis $+--             newStartExpenseAnalysis+--+--         , requestStartLendingAnalysis $+--             newStartLendingAnalysis+--+--           ]++--     , testGroup "response"+--         [ responseAnalyzeDocument $+--             newAnalyzeDocumentResponse+--+--         , responseAnalyzeExpense $+--             newAnalyzeExpenseResponse+--+--         , responseAnalyzeID $+--             newAnalyzeIDResponse+--+--         , responseDetectDocumentText $+--             newDetectDocumentTextResponse+--+--         , responseGetDocumentAnalysis $+--             newGetDocumentAnalysisResponse+--+--         , responseGetDocumentTextDetection $+--             newGetDocumentTextDetectionResponse+--+--         , responseGetExpenseAnalysis $+--             newGetExpenseAnalysisResponse+--+--         , responseGetLendingAnalysis $+--             newGetLendingAnalysisResponse+--+--         , responseGetLendingAnalysisSummary $+--             newGetLendingAnalysisSummaryResponse+--+--         , responseStartDocumentAnalysis $+--             newStartDocumentAnalysisResponse+--+--         , responseStartDocumentTextDetection $+--             newStartDocumentTextDetectionResponse+--+--         , responseStartExpenseAnalysis $+--             newStartExpenseAnalysisResponse+--+--         , responseStartLendingAnalysis $+--             newStartLendingAnalysisResponse+--+--           ]+--     ]++-- Requests++requestAnalyzeDocument :: AnalyzeDocument -> TestTree+requestAnalyzeDocument =+  req+    "AnalyzeDocument"+    "fixture/AnalyzeDocument.yaml"++requestAnalyzeExpense :: AnalyzeExpense -> TestTree+requestAnalyzeExpense =+  req+    "AnalyzeExpense"+    "fixture/AnalyzeExpense.yaml"++requestAnalyzeID :: AnalyzeID -> TestTree+requestAnalyzeID =+  req+    "AnalyzeID"+    "fixture/AnalyzeID.yaml"++requestDetectDocumentText :: DetectDocumentText -> TestTree+requestDetectDocumentText =+  req+    "DetectDocumentText"+    "fixture/DetectDocumentText.yaml"++requestGetDocumentAnalysis :: GetDocumentAnalysis -> TestTree+requestGetDocumentAnalysis =+  req+    "GetDocumentAnalysis"+    "fixture/GetDocumentAnalysis.yaml"++requestGetDocumentTextDetection :: GetDocumentTextDetection -> TestTree+requestGetDocumentTextDetection =+  req+    "GetDocumentTextDetection"+    "fixture/GetDocumentTextDetection.yaml"++requestGetExpenseAnalysis :: GetExpenseAnalysis -> TestTree+requestGetExpenseAnalysis =+  req+    "GetExpenseAnalysis"+    "fixture/GetExpenseAnalysis.yaml"++requestGetLendingAnalysis :: GetLendingAnalysis -> TestTree+requestGetLendingAnalysis =+  req+    "GetLendingAnalysis"+    "fixture/GetLendingAnalysis.yaml"++requestGetLendingAnalysisSummary :: GetLendingAnalysisSummary -> TestTree+requestGetLendingAnalysisSummary =+  req+    "GetLendingAnalysisSummary"+    "fixture/GetLendingAnalysisSummary.yaml"++requestStartDocumentAnalysis :: StartDocumentAnalysis -> TestTree+requestStartDocumentAnalysis =+  req+    "StartDocumentAnalysis"+    "fixture/StartDocumentAnalysis.yaml"++requestStartDocumentTextDetection :: StartDocumentTextDetection -> TestTree+requestStartDocumentTextDetection =+  req+    "StartDocumentTextDetection"+    "fixture/StartDocumentTextDetection.yaml"++requestStartExpenseAnalysis :: StartExpenseAnalysis -> TestTree+requestStartExpenseAnalysis =+  req+    "StartExpenseAnalysis"+    "fixture/StartExpenseAnalysis.yaml"++requestStartLendingAnalysis :: StartLendingAnalysis -> TestTree+requestStartLendingAnalysis =+  req+    "StartLendingAnalysis"+    "fixture/StartLendingAnalysis.yaml"++-- Responses++responseAnalyzeDocument :: AnalyzeDocumentResponse -> TestTree+responseAnalyzeDocument =+  res+    "AnalyzeDocumentResponse"+    "fixture/AnalyzeDocumentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AnalyzeDocument)++responseAnalyzeExpense :: AnalyzeExpenseResponse -> TestTree+responseAnalyzeExpense =+  res+    "AnalyzeExpenseResponse"+    "fixture/AnalyzeExpenseResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AnalyzeExpense)++responseAnalyzeID :: AnalyzeIDResponse -> TestTree+responseAnalyzeID =+  res+    "AnalyzeIDResponse"+    "fixture/AnalyzeIDResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AnalyzeID)++responseDetectDocumentText :: DetectDocumentTextResponse -> TestTree+responseDetectDocumentText =+  res+    "DetectDocumentTextResponse"+    "fixture/DetectDocumentTextResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DetectDocumentText)++responseGetDocumentAnalysis :: GetDocumentAnalysisResponse -> TestTree+responseGetDocumentAnalysis =+  res+    "GetDocumentAnalysisResponse"+    "fixture/GetDocumentAnalysisResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDocumentAnalysis)++responseGetDocumentTextDetection :: GetDocumentTextDetectionResponse -> TestTree+responseGetDocumentTextDetection =+  res+    "GetDocumentTextDetectionResponse"+    "fixture/GetDocumentTextDetectionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDocumentTextDetection)++responseGetExpenseAnalysis :: GetExpenseAnalysisResponse -> TestTree+responseGetExpenseAnalysis =+  res+    "GetExpenseAnalysisResponse"+    "fixture/GetExpenseAnalysisResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetExpenseAnalysis)++responseGetLendingAnalysis :: GetLendingAnalysisResponse -> TestTree+responseGetLendingAnalysis =+  res+    "GetLendingAnalysisResponse"+    "fixture/GetLendingAnalysisResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetLendingAnalysis)++responseGetLendingAnalysisSummary :: GetLendingAnalysisSummaryResponse -> TestTree+responseGetLendingAnalysisSummary =+  res+    "GetLendingAnalysisSummaryResponse"+    "fixture/GetLendingAnalysisSummaryResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetLendingAnalysisSummary)++responseStartDocumentAnalysis :: StartDocumentAnalysisResponse -> TestTree+responseStartDocumentAnalysis =+  res+    "StartDocumentAnalysisResponse"+    "fixture/StartDocumentAnalysisResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartDocumentAnalysis)++responseStartDocumentTextDetection :: StartDocumentTextDetectionResponse -> TestTree+responseStartDocumentTextDetection =+  res+    "StartDocumentTextDetectionResponse"+    "fixture/StartDocumentTextDetectionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartDocumentTextDetection)++responseStartExpenseAnalysis :: StartExpenseAnalysisResponse -> TestTree+responseStartExpenseAnalysis =+  res+    "StartExpenseAnalysisResponse"+    "fixture/StartExpenseAnalysisResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartExpenseAnalysis)++responseStartLendingAnalysis :: StartLendingAnalysisResponse -> TestTree+responseStartLendingAnalysis =+  res+    "StartLendingAnalysisResponse"+    "fixture/StartLendingAnalysisResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartLendingAnalysis)
+ test/Test/Amazonka/Textract.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.Textract+-- Copyright   : (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.Textract+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/Textract/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.Textract.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.Textract.Internal where