packages feed

amazonka-lakeformation (empty) → 2.0

raw patch · 203 files changed

+19908/−0 lines, 203 filesdep +amazonka-coredep +amazonka-lakeformationdep +amazonka-test

Dependencies added: amazonka-core, amazonka-lakeformation, amazonka-test, 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 Lake Formation SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2017-03-31@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-lakeformation)+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.LakeFormation](http://hackage.haskell.org/package/amazonka-lakeformation/docs/Amazonka-LakeFormation.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-lakeformation` 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-lakeformation.cabal view
@@ -0,0 +1,184 @@+cabal-version:      2.2+name:               amazonka-lakeformation+version:            2.0+synopsis:           Amazon Lake Formation 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 @2017-03-31@ 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.LakeFormation.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.LakeFormation" 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-lakeformation++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.LakeFormation+    Amazonka.LakeFormation.AddLFTagsToResource+    Amazonka.LakeFormation.AssumeDecoratedRoleWithSAML+    Amazonka.LakeFormation.BatchGrantPermissions+    Amazonka.LakeFormation.BatchRevokePermissions+    Amazonka.LakeFormation.CancelTransaction+    Amazonka.LakeFormation.CommitTransaction+    Amazonka.LakeFormation.CreateDataCellsFilter+    Amazonka.LakeFormation.CreateLFTag+    Amazonka.LakeFormation.DeleteDataCellsFilter+    Amazonka.LakeFormation.DeleteLFTag+    Amazonka.LakeFormation.DeleteObjectsOnCancel+    Amazonka.LakeFormation.DeregisterResource+    Amazonka.LakeFormation.DescribeResource+    Amazonka.LakeFormation.DescribeTransaction+    Amazonka.LakeFormation.ExtendTransaction+    Amazonka.LakeFormation.GetDataLakeSettings+    Amazonka.LakeFormation.GetEffectivePermissionsForPath+    Amazonka.LakeFormation.GetLFTag+    Amazonka.LakeFormation.GetQueryState+    Amazonka.LakeFormation.GetQueryStatistics+    Amazonka.LakeFormation.GetResourceLFTags+    Amazonka.LakeFormation.GetTableObjects+    Amazonka.LakeFormation.GetTemporaryGluePartitionCredentials+    Amazonka.LakeFormation.GetTemporaryGlueTableCredentials+    Amazonka.LakeFormation.GetWorkUnitResults+    Amazonka.LakeFormation.GetWorkUnits+    Amazonka.LakeFormation.GrantPermissions+    Amazonka.LakeFormation.Lens+    Amazonka.LakeFormation.ListDataCellsFilter+    Amazonka.LakeFormation.ListLFTags+    Amazonka.LakeFormation.ListPermissions+    Amazonka.LakeFormation.ListResources+    Amazonka.LakeFormation.ListTableStorageOptimizers+    Amazonka.LakeFormation.ListTransactions+    Amazonka.LakeFormation.PutDataLakeSettings+    Amazonka.LakeFormation.RegisterResource+    Amazonka.LakeFormation.RemoveLFTagsFromResource+    Amazonka.LakeFormation.RevokePermissions+    Amazonka.LakeFormation.SearchDatabasesByLFTags+    Amazonka.LakeFormation.SearchTablesByLFTags+    Amazonka.LakeFormation.StartQueryPlanning+    Amazonka.LakeFormation.StartTransaction+    Amazonka.LakeFormation.Types+    Amazonka.LakeFormation.Types.AddObjectInput+    Amazonka.LakeFormation.Types.AllRowsWildcard+    Amazonka.LakeFormation.Types.AuditContext+    Amazonka.LakeFormation.Types.BatchPermissionsFailureEntry+    Amazonka.LakeFormation.Types.BatchPermissionsRequestEntry+    Amazonka.LakeFormation.Types.CatalogResource+    Amazonka.LakeFormation.Types.ColumnLFTag+    Amazonka.LakeFormation.Types.ColumnWildcard+    Amazonka.LakeFormation.Types.ComparisonOperator+    Amazonka.LakeFormation.Types.DatabaseResource+    Amazonka.LakeFormation.Types.DataCellsFilter+    Amazonka.LakeFormation.Types.DataCellsFilterResource+    Amazonka.LakeFormation.Types.DataLakePrincipal+    Amazonka.LakeFormation.Types.DataLakeResourceType+    Amazonka.LakeFormation.Types.DataLakeSettings+    Amazonka.LakeFormation.Types.DataLocationResource+    Amazonka.LakeFormation.Types.DeleteObjectInput+    Amazonka.LakeFormation.Types.DetailsMap+    Amazonka.LakeFormation.Types.ErrorDetail+    Amazonka.LakeFormation.Types.ExecutionStatistics+    Amazonka.LakeFormation.Types.FieldNameString+    Amazonka.LakeFormation.Types.FilterCondition+    Amazonka.LakeFormation.Types.LFTag+    Amazonka.LakeFormation.Types.LFTagError+    Amazonka.LakeFormation.Types.LFTagKeyResource+    Amazonka.LakeFormation.Types.LFTagPair+    Amazonka.LakeFormation.Types.LFTagPolicyResource+    Amazonka.LakeFormation.Types.OptimizerType+    Amazonka.LakeFormation.Types.PartitionObjects+    Amazonka.LakeFormation.Types.PartitionValueList+    Amazonka.LakeFormation.Types.Permission+    Amazonka.LakeFormation.Types.PermissionType+    Amazonka.LakeFormation.Types.PlanningStatistics+    Amazonka.LakeFormation.Types.PrincipalPermissions+    Amazonka.LakeFormation.Types.PrincipalResourcePermissions+    Amazonka.LakeFormation.Types.QueryPlanningContext+    Amazonka.LakeFormation.Types.QueryStateString+    Amazonka.LakeFormation.Types.Resource+    Amazonka.LakeFormation.Types.ResourceInfo+    Amazonka.LakeFormation.Types.ResourceShareType+    Amazonka.LakeFormation.Types.ResourceType+    Amazonka.LakeFormation.Types.RowFilter+    Amazonka.LakeFormation.Types.StorageOptimizer+    Amazonka.LakeFormation.Types.TableObject+    Amazonka.LakeFormation.Types.TableResource+    Amazonka.LakeFormation.Types.TableWildcard+    Amazonka.LakeFormation.Types.TableWithColumnsResource+    Amazonka.LakeFormation.Types.TaggedDatabase+    Amazonka.LakeFormation.Types.TaggedTable+    Amazonka.LakeFormation.Types.TransactionDescription+    Amazonka.LakeFormation.Types.TransactionStatus+    Amazonka.LakeFormation.Types.TransactionStatusFilter+    Amazonka.LakeFormation.Types.TransactionType+    Amazonka.LakeFormation.Types.VirtualObject+    Amazonka.LakeFormation.Types.WorkUnitRange+    Amazonka.LakeFormation.Types.WriteOperation+    Amazonka.LakeFormation.UpdateLFTag+    Amazonka.LakeFormation.UpdateResource+    Amazonka.LakeFormation.UpdateTableObjects+    Amazonka.LakeFormation.UpdateTableStorageOptimizer+    Amazonka.LakeFormation.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-lakeformation-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.LakeFormation+    Test.Amazonka.LakeFormation+    Test.Amazonka.LakeFormation.Internal++  build-depends:+    , amazonka-core           >=2.0 && <2.1+    , amazonka-lakeformation+    , amazonka-test           >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/AddLFTagsToResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/AddLFTagsToResourceResponse.proto view
+ fixture/AssumeDecoratedRoleWithSAML.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/AssumeDecoratedRoleWithSAMLResponse.proto view
+ fixture/BatchGrantPermissions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/BatchGrantPermissionsResponse.proto view
+ fixture/BatchRevokePermissions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/BatchRevokePermissionsResponse.proto view
+ fixture/CancelTransaction.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/CancelTransactionResponse.proto view
+ fixture/CommitTransaction.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/CommitTransactionResponse.proto view
+ fixture/CreateDataCellsFilter.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/CreateDataCellsFilterResponse.proto view
+ fixture/CreateLFTag.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/CreateLFTagResponse.proto view
+ fixture/DeleteDataCellsFilter.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/DeleteDataCellsFilterResponse.proto view
+ fixture/DeleteLFTag.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/DeleteLFTagResponse.proto view
+ fixture/DeleteObjectsOnCancel.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/DeleteObjectsOnCancelResponse.proto view
+ fixture/DeregisterResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/DeregisterResourceResponse.proto view
+ fixture/DescribeResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/DescribeResourceResponse.proto view
+ fixture/DescribeTransaction.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/DescribeTransactionResponse.proto view
+ fixture/ExtendTransaction.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/ExtendTransactionResponse.proto view
+ fixture/GetDataLakeSettings.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetDataLakeSettingsResponse.proto view
+ fixture/GetEffectivePermissionsForPath.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetEffectivePermissionsForPathResponse.proto view
+ fixture/GetLFTag.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetLFTagResponse.proto view
+ fixture/GetQueryState.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetQueryStateResponse.proto view
+ fixture/GetQueryStatistics.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetQueryStatisticsResponse.proto view
+ fixture/GetResourceLFTags.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetResourceLFTagsResponse.proto view
+ fixture/GetTableObjects.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetTableObjectsResponse.proto view
+ fixture/GetTemporaryGluePartitionCredentials.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetTemporaryGluePartitionCredentialsResponse.proto view
+ fixture/GetTemporaryGlueTableCredentials.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetTemporaryGlueTableCredentialsResponse.proto view
+ fixture/GetWorkUnitResults.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetWorkUnitResultsResponse.proto view
+ fixture/GetWorkUnits.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GetWorkUnitsResponse.proto view
+ fixture/GrantPermissions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/GrantPermissionsResponse.proto view
+ fixture/ListDataCellsFilter.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/ListDataCellsFilterResponse.proto view
+ fixture/ListLFTags.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/ListLFTagsResponse.proto view
+ fixture/ListPermissions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/ListPermissionsResponse.proto view
+ fixture/ListResources.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/ListResourcesResponse.proto view
+ fixture/ListTableStorageOptimizers.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/ListTableStorageOptimizersResponse.proto view
+ fixture/ListTransactions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/ListTransactionsResponse.proto view
+ fixture/PutDataLakeSettings.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/PutDataLakeSettingsResponse.proto view
+ fixture/RegisterResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/RegisterResourceResponse.proto view
+ fixture/RemoveLFTagsFromResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/RemoveLFTagsFromResourceResponse.proto view
+ fixture/RevokePermissions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/RevokePermissionsResponse.proto view
+ fixture/SearchDatabasesByLFTags.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/SearchDatabasesByLFTagsResponse.proto view
+ fixture/SearchTablesByLFTags.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/SearchTablesByLFTagsResponse.proto view
+ fixture/StartQueryPlanning.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/StartQueryPlanningResponse.proto view
+ fixture/StartTransaction.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/StartTransactionResponse.proto view
+ fixture/UpdateLFTag.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/UpdateLFTagResponse.proto view
+ fixture/UpdateResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/UpdateResourceResponse.proto view
+ fixture/UpdateTableObjects.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/UpdateTableObjectsResponse.proto view
+ fixture/UpdateTableStorageOptimizer.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lakeformation/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  lakeformation.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/UpdateTableStorageOptimizerResponse.proto view
+ gen/Amazonka/LakeFormation.hs view
@@ -0,0 +1,644 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.LakeFormation+-- 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 @2017-03-31@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Lake Formation+--+-- Defines the public endpoint for the Lake Formation service.+module Amazonka.LakeFormation+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** AlreadyExistsException+    _AlreadyExistsException,++    -- ** ConcurrentModificationException+    _ConcurrentModificationException,++    -- ** EntityNotFoundException+    _EntityNotFoundException,++    -- ** ExpiredException+    _ExpiredException,++    -- ** GlueEncryptionException+    _GlueEncryptionException,++    -- ** InternalServiceException+    _InternalServiceException,++    -- ** InvalidInputException+    _InvalidInputException,++    -- ** OperationTimeoutException+    _OperationTimeoutException,++    -- ** PermissionTypeMismatchException+    _PermissionTypeMismatchException,++    -- ** ResourceNotReadyException+    _ResourceNotReadyException,++    -- ** ResourceNumberLimitExceededException+    _ResourceNumberLimitExceededException,++    -- ** StatisticsNotReadyYetException+    _StatisticsNotReadyYetException,++    -- ** ThrottledException+    _ThrottledException,++    -- ** TransactionCanceledException+    _TransactionCanceledException,++    -- ** TransactionCommitInProgressException+    _TransactionCommitInProgressException,++    -- ** TransactionCommittedException+    _TransactionCommittedException,++    -- ** WorkUnitsNotReadyYetException+    _WorkUnitsNotReadyYetException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** AddLFTagsToResource+    AddLFTagsToResource (AddLFTagsToResource'),+    newAddLFTagsToResource,+    AddLFTagsToResourceResponse (AddLFTagsToResourceResponse'),+    newAddLFTagsToResourceResponse,++    -- ** AssumeDecoratedRoleWithSAML+    AssumeDecoratedRoleWithSAML (AssumeDecoratedRoleWithSAML'),+    newAssumeDecoratedRoleWithSAML,+    AssumeDecoratedRoleWithSAMLResponse (AssumeDecoratedRoleWithSAMLResponse'),+    newAssumeDecoratedRoleWithSAMLResponse,++    -- ** BatchGrantPermissions+    BatchGrantPermissions (BatchGrantPermissions'),+    newBatchGrantPermissions,+    BatchGrantPermissionsResponse (BatchGrantPermissionsResponse'),+    newBatchGrantPermissionsResponse,++    -- ** BatchRevokePermissions+    BatchRevokePermissions (BatchRevokePermissions'),+    newBatchRevokePermissions,+    BatchRevokePermissionsResponse (BatchRevokePermissionsResponse'),+    newBatchRevokePermissionsResponse,++    -- ** CancelTransaction+    CancelTransaction (CancelTransaction'),+    newCancelTransaction,+    CancelTransactionResponse (CancelTransactionResponse'),+    newCancelTransactionResponse,++    -- ** CommitTransaction+    CommitTransaction (CommitTransaction'),+    newCommitTransaction,+    CommitTransactionResponse (CommitTransactionResponse'),+    newCommitTransactionResponse,++    -- ** CreateDataCellsFilter+    CreateDataCellsFilter (CreateDataCellsFilter'),+    newCreateDataCellsFilter,+    CreateDataCellsFilterResponse (CreateDataCellsFilterResponse'),+    newCreateDataCellsFilterResponse,++    -- ** CreateLFTag+    CreateLFTag (CreateLFTag'),+    newCreateLFTag,+    CreateLFTagResponse (CreateLFTagResponse'),+    newCreateLFTagResponse,++    -- ** DeleteDataCellsFilter+    DeleteDataCellsFilter (DeleteDataCellsFilter'),+    newDeleteDataCellsFilter,+    DeleteDataCellsFilterResponse (DeleteDataCellsFilterResponse'),+    newDeleteDataCellsFilterResponse,++    -- ** DeleteLFTag+    DeleteLFTag (DeleteLFTag'),+    newDeleteLFTag,+    DeleteLFTagResponse (DeleteLFTagResponse'),+    newDeleteLFTagResponse,++    -- ** DeleteObjectsOnCancel+    DeleteObjectsOnCancel (DeleteObjectsOnCancel'),+    newDeleteObjectsOnCancel,+    DeleteObjectsOnCancelResponse (DeleteObjectsOnCancelResponse'),+    newDeleteObjectsOnCancelResponse,++    -- ** DeregisterResource+    DeregisterResource (DeregisterResource'),+    newDeregisterResource,+    DeregisterResourceResponse (DeregisterResourceResponse'),+    newDeregisterResourceResponse,++    -- ** DescribeResource+    DescribeResource (DescribeResource'),+    newDescribeResource,+    DescribeResourceResponse (DescribeResourceResponse'),+    newDescribeResourceResponse,++    -- ** DescribeTransaction+    DescribeTransaction (DescribeTransaction'),+    newDescribeTransaction,+    DescribeTransactionResponse (DescribeTransactionResponse'),+    newDescribeTransactionResponse,++    -- ** ExtendTransaction+    ExtendTransaction (ExtendTransaction'),+    newExtendTransaction,+    ExtendTransactionResponse (ExtendTransactionResponse'),+    newExtendTransactionResponse,++    -- ** GetDataLakeSettings+    GetDataLakeSettings (GetDataLakeSettings'),+    newGetDataLakeSettings,+    GetDataLakeSettingsResponse (GetDataLakeSettingsResponse'),+    newGetDataLakeSettingsResponse,++    -- ** GetEffectivePermissionsForPath+    GetEffectivePermissionsForPath (GetEffectivePermissionsForPath'),+    newGetEffectivePermissionsForPath,+    GetEffectivePermissionsForPathResponse (GetEffectivePermissionsForPathResponse'),+    newGetEffectivePermissionsForPathResponse,++    -- ** GetLFTag+    GetLFTag (GetLFTag'),+    newGetLFTag,+    GetLFTagResponse (GetLFTagResponse'),+    newGetLFTagResponse,++    -- ** GetQueryState+    GetQueryState (GetQueryState'),+    newGetQueryState,+    GetQueryStateResponse (GetQueryStateResponse'),+    newGetQueryStateResponse,++    -- ** GetQueryStatistics+    GetQueryStatistics (GetQueryStatistics'),+    newGetQueryStatistics,+    GetQueryStatisticsResponse (GetQueryStatisticsResponse'),+    newGetQueryStatisticsResponse,++    -- ** GetResourceLFTags+    GetResourceLFTags (GetResourceLFTags'),+    newGetResourceLFTags,+    GetResourceLFTagsResponse (GetResourceLFTagsResponse'),+    newGetResourceLFTagsResponse,++    -- ** GetTableObjects+    GetTableObjects (GetTableObjects'),+    newGetTableObjects,+    GetTableObjectsResponse (GetTableObjectsResponse'),+    newGetTableObjectsResponse,++    -- ** GetTemporaryGluePartitionCredentials+    GetTemporaryGluePartitionCredentials (GetTemporaryGluePartitionCredentials'),+    newGetTemporaryGluePartitionCredentials,+    GetTemporaryGluePartitionCredentialsResponse (GetTemporaryGluePartitionCredentialsResponse'),+    newGetTemporaryGluePartitionCredentialsResponse,++    -- ** GetTemporaryGlueTableCredentials+    GetTemporaryGlueTableCredentials (GetTemporaryGlueTableCredentials'),+    newGetTemporaryGlueTableCredentials,+    GetTemporaryGlueTableCredentialsResponse (GetTemporaryGlueTableCredentialsResponse'),+    newGetTemporaryGlueTableCredentialsResponse,++    -- ** GetWorkUnitResults+    GetWorkUnitResults (GetWorkUnitResults'),+    newGetWorkUnitResults,+    GetWorkUnitResultsResponse (GetWorkUnitResultsResponse'),+    newGetWorkUnitResultsResponse,++    -- ** GetWorkUnits (Paginated)+    GetWorkUnits (GetWorkUnits'),+    newGetWorkUnits,+    GetWorkUnitsResponse (GetWorkUnitsResponse'),+    newGetWorkUnitsResponse,++    -- ** GrantPermissions+    GrantPermissions (GrantPermissions'),+    newGrantPermissions,+    GrantPermissionsResponse (GrantPermissionsResponse'),+    newGrantPermissionsResponse,++    -- ** ListDataCellsFilter (Paginated)+    ListDataCellsFilter (ListDataCellsFilter'),+    newListDataCellsFilter,+    ListDataCellsFilterResponse (ListDataCellsFilterResponse'),+    newListDataCellsFilterResponse,++    -- ** ListLFTags (Paginated)+    ListLFTags (ListLFTags'),+    newListLFTags,+    ListLFTagsResponse (ListLFTagsResponse'),+    newListLFTagsResponse,++    -- ** ListPermissions+    ListPermissions (ListPermissions'),+    newListPermissions,+    ListPermissionsResponse (ListPermissionsResponse'),+    newListPermissionsResponse,++    -- ** ListResources+    ListResources (ListResources'),+    newListResources,+    ListResourcesResponse (ListResourcesResponse'),+    newListResourcesResponse,++    -- ** ListTableStorageOptimizers+    ListTableStorageOptimizers (ListTableStorageOptimizers'),+    newListTableStorageOptimizers,+    ListTableStorageOptimizersResponse (ListTableStorageOptimizersResponse'),+    newListTableStorageOptimizersResponse,++    -- ** ListTransactions+    ListTransactions (ListTransactions'),+    newListTransactions,+    ListTransactionsResponse (ListTransactionsResponse'),+    newListTransactionsResponse,++    -- ** PutDataLakeSettings+    PutDataLakeSettings (PutDataLakeSettings'),+    newPutDataLakeSettings,+    PutDataLakeSettingsResponse (PutDataLakeSettingsResponse'),+    newPutDataLakeSettingsResponse,++    -- ** RegisterResource+    RegisterResource (RegisterResource'),+    newRegisterResource,+    RegisterResourceResponse (RegisterResourceResponse'),+    newRegisterResourceResponse,++    -- ** RemoveLFTagsFromResource+    RemoveLFTagsFromResource (RemoveLFTagsFromResource'),+    newRemoveLFTagsFromResource,+    RemoveLFTagsFromResourceResponse (RemoveLFTagsFromResourceResponse'),+    newRemoveLFTagsFromResourceResponse,++    -- ** RevokePermissions+    RevokePermissions (RevokePermissions'),+    newRevokePermissions,+    RevokePermissionsResponse (RevokePermissionsResponse'),+    newRevokePermissionsResponse,++    -- ** SearchDatabasesByLFTags (Paginated)+    SearchDatabasesByLFTags (SearchDatabasesByLFTags'),+    newSearchDatabasesByLFTags,+    SearchDatabasesByLFTagsResponse (SearchDatabasesByLFTagsResponse'),+    newSearchDatabasesByLFTagsResponse,++    -- ** SearchTablesByLFTags (Paginated)+    SearchTablesByLFTags (SearchTablesByLFTags'),+    newSearchTablesByLFTags,+    SearchTablesByLFTagsResponse (SearchTablesByLFTagsResponse'),+    newSearchTablesByLFTagsResponse,++    -- ** StartQueryPlanning+    StartQueryPlanning (StartQueryPlanning'),+    newStartQueryPlanning,+    StartQueryPlanningResponse (StartQueryPlanningResponse'),+    newStartQueryPlanningResponse,++    -- ** StartTransaction+    StartTransaction (StartTransaction'),+    newStartTransaction,+    StartTransactionResponse (StartTransactionResponse'),+    newStartTransactionResponse,++    -- ** UpdateLFTag+    UpdateLFTag (UpdateLFTag'),+    newUpdateLFTag,+    UpdateLFTagResponse (UpdateLFTagResponse'),+    newUpdateLFTagResponse,++    -- ** UpdateResource+    UpdateResource (UpdateResource'),+    newUpdateResource,+    UpdateResourceResponse (UpdateResourceResponse'),+    newUpdateResourceResponse,++    -- ** UpdateTableObjects+    UpdateTableObjects (UpdateTableObjects'),+    newUpdateTableObjects,+    UpdateTableObjectsResponse (UpdateTableObjectsResponse'),+    newUpdateTableObjectsResponse,++    -- ** UpdateTableStorageOptimizer+    UpdateTableStorageOptimizer (UpdateTableStorageOptimizer'),+    newUpdateTableStorageOptimizer,+    UpdateTableStorageOptimizerResponse (UpdateTableStorageOptimizerResponse'),+    newUpdateTableStorageOptimizerResponse,++    -- * Types++    -- ** ComparisonOperator+    ComparisonOperator (..),++    -- ** DataLakeResourceType+    DataLakeResourceType (..),++    -- ** FieldNameString+    FieldNameString (..),++    -- ** OptimizerType+    OptimizerType (..),++    -- ** Permission+    Permission (..),++    -- ** PermissionType+    PermissionType (..),++    -- ** QueryStateString+    QueryStateString (..),++    -- ** ResourceShareType+    ResourceShareType (..),++    -- ** ResourceType+    ResourceType (..),++    -- ** TransactionStatus+    TransactionStatus (..),++    -- ** TransactionStatusFilter+    TransactionStatusFilter (..),++    -- ** TransactionType+    TransactionType (..),++    -- ** AddObjectInput+    AddObjectInput (AddObjectInput'),+    newAddObjectInput,++    -- ** AllRowsWildcard+    AllRowsWildcard (AllRowsWildcard'),+    newAllRowsWildcard,++    -- ** AuditContext+    AuditContext (AuditContext'),+    newAuditContext,++    -- ** BatchPermissionsFailureEntry+    BatchPermissionsFailureEntry (BatchPermissionsFailureEntry'),+    newBatchPermissionsFailureEntry,++    -- ** BatchPermissionsRequestEntry+    BatchPermissionsRequestEntry (BatchPermissionsRequestEntry'),+    newBatchPermissionsRequestEntry,++    -- ** CatalogResource+    CatalogResource (CatalogResource'),+    newCatalogResource,++    -- ** ColumnLFTag+    ColumnLFTag (ColumnLFTag'),+    newColumnLFTag,++    -- ** ColumnWildcard+    ColumnWildcard (ColumnWildcard'),+    newColumnWildcard,++    -- ** DataCellsFilter+    DataCellsFilter (DataCellsFilter'),+    newDataCellsFilter,++    -- ** DataCellsFilterResource+    DataCellsFilterResource (DataCellsFilterResource'),+    newDataCellsFilterResource,++    -- ** DataLakePrincipal+    DataLakePrincipal (DataLakePrincipal'),+    newDataLakePrincipal,++    -- ** DataLakeSettings+    DataLakeSettings (DataLakeSettings'),+    newDataLakeSettings,++    -- ** DataLocationResource+    DataLocationResource (DataLocationResource'),+    newDataLocationResource,++    -- ** DatabaseResource+    DatabaseResource (DatabaseResource'),+    newDatabaseResource,++    -- ** DeleteObjectInput+    DeleteObjectInput (DeleteObjectInput'),+    newDeleteObjectInput,++    -- ** DetailsMap+    DetailsMap (DetailsMap'),+    newDetailsMap,++    -- ** ErrorDetail+    ErrorDetail (ErrorDetail'),+    newErrorDetail,++    -- ** ExecutionStatistics+    ExecutionStatistics (ExecutionStatistics'),+    newExecutionStatistics,++    -- ** FilterCondition+    FilterCondition (FilterCondition'),+    newFilterCondition,++    -- ** LFTag+    LFTag (LFTag'),+    newLFTag,++    -- ** LFTagError+    LFTagError (LFTagError'),+    newLFTagError,++    -- ** LFTagKeyResource+    LFTagKeyResource (LFTagKeyResource'),+    newLFTagKeyResource,++    -- ** LFTagPair+    LFTagPair (LFTagPair'),+    newLFTagPair,++    -- ** LFTagPolicyResource+    LFTagPolicyResource (LFTagPolicyResource'),+    newLFTagPolicyResource,++    -- ** PartitionObjects+    PartitionObjects (PartitionObjects'),+    newPartitionObjects,++    -- ** PartitionValueList+    PartitionValueList (PartitionValueList'),+    newPartitionValueList,++    -- ** PlanningStatistics+    PlanningStatistics (PlanningStatistics'),+    newPlanningStatistics,++    -- ** PrincipalPermissions+    PrincipalPermissions (PrincipalPermissions'),+    newPrincipalPermissions,++    -- ** PrincipalResourcePermissions+    PrincipalResourcePermissions (PrincipalResourcePermissions'),+    newPrincipalResourcePermissions,++    -- ** QueryPlanningContext+    QueryPlanningContext (QueryPlanningContext'),+    newQueryPlanningContext,++    -- ** Resource+    Resource (Resource'),+    newResource,++    -- ** ResourceInfo+    ResourceInfo (ResourceInfo'),+    newResourceInfo,++    -- ** RowFilter+    RowFilter (RowFilter'),+    newRowFilter,++    -- ** StorageOptimizer+    StorageOptimizer (StorageOptimizer'),+    newStorageOptimizer,++    -- ** TableObject+    TableObject (TableObject'),+    newTableObject,++    -- ** TableResource+    TableResource (TableResource'),+    newTableResource,++    -- ** TableWildcard+    TableWildcard (TableWildcard'),+    newTableWildcard,++    -- ** TableWithColumnsResource+    TableWithColumnsResource (TableWithColumnsResource'),+    newTableWithColumnsResource,++    -- ** TaggedDatabase+    TaggedDatabase (TaggedDatabase'),+    newTaggedDatabase,++    -- ** TaggedTable+    TaggedTable (TaggedTable'),+    newTaggedTable,++    -- ** TransactionDescription+    TransactionDescription (TransactionDescription'),+    newTransactionDescription,++    -- ** VirtualObject+    VirtualObject (VirtualObject'),+    newVirtualObject,++    -- ** WorkUnitRange+    WorkUnitRange (WorkUnitRange'),+    newWorkUnitRange,++    -- ** WriteOperation+    WriteOperation (WriteOperation'),+    newWriteOperation,+  )+where++import Amazonka.LakeFormation.AddLFTagsToResource+import Amazonka.LakeFormation.AssumeDecoratedRoleWithSAML+import Amazonka.LakeFormation.BatchGrantPermissions+import Amazonka.LakeFormation.BatchRevokePermissions+import Amazonka.LakeFormation.CancelTransaction+import Amazonka.LakeFormation.CommitTransaction+import Amazonka.LakeFormation.CreateDataCellsFilter+import Amazonka.LakeFormation.CreateLFTag+import Amazonka.LakeFormation.DeleteDataCellsFilter+import Amazonka.LakeFormation.DeleteLFTag+import Amazonka.LakeFormation.DeleteObjectsOnCancel+import Amazonka.LakeFormation.DeregisterResource+import Amazonka.LakeFormation.DescribeResource+import Amazonka.LakeFormation.DescribeTransaction+import Amazonka.LakeFormation.ExtendTransaction+import Amazonka.LakeFormation.GetDataLakeSettings+import Amazonka.LakeFormation.GetEffectivePermissionsForPath+import Amazonka.LakeFormation.GetLFTag+import Amazonka.LakeFormation.GetQueryState+import Amazonka.LakeFormation.GetQueryStatistics+import Amazonka.LakeFormation.GetResourceLFTags+import Amazonka.LakeFormation.GetTableObjects+import Amazonka.LakeFormation.GetTemporaryGluePartitionCredentials+import Amazonka.LakeFormation.GetTemporaryGlueTableCredentials+import Amazonka.LakeFormation.GetWorkUnitResults+import Amazonka.LakeFormation.GetWorkUnits+import Amazonka.LakeFormation.GrantPermissions+import Amazonka.LakeFormation.Lens+import Amazonka.LakeFormation.ListDataCellsFilter+import Amazonka.LakeFormation.ListLFTags+import Amazonka.LakeFormation.ListPermissions+import Amazonka.LakeFormation.ListResources+import Amazonka.LakeFormation.ListTableStorageOptimizers+import Amazonka.LakeFormation.ListTransactions+import Amazonka.LakeFormation.PutDataLakeSettings+import Amazonka.LakeFormation.RegisterResource+import Amazonka.LakeFormation.RemoveLFTagsFromResource+import Amazonka.LakeFormation.RevokePermissions+import Amazonka.LakeFormation.SearchDatabasesByLFTags+import Amazonka.LakeFormation.SearchTablesByLFTags+import Amazonka.LakeFormation.StartQueryPlanning+import Amazonka.LakeFormation.StartTransaction+import Amazonka.LakeFormation.Types+import Amazonka.LakeFormation.UpdateLFTag+import Amazonka.LakeFormation.UpdateResource+import Amazonka.LakeFormation.UpdateTableObjects+import Amazonka.LakeFormation.UpdateTableStorageOptimizer+import Amazonka.LakeFormation.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 'LakeFormation'.++-- $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/LakeFormation/AddLFTagsToResource.hs view
@@ -0,0 +1,206 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.AddLFTagsToResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Attaches one or more LF-tags to an existing resource.+module Amazonka.LakeFormation.AddLFTagsToResource+  ( -- * Creating a Request+    AddLFTagsToResource (..),+    newAddLFTagsToResource,++    -- * Request Lenses+    addLFTagsToResource_catalogId,+    addLFTagsToResource_resource,+    addLFTagsToResource_lFTags,++    -- * Destructuring the Response+    AddLFTagsToResourceResponse (..),+    newAddLFTagsToResourceResponse,++    -- * Response Lenses+    addLFTagsToResourceResponse_failures,+    addLFTagsToResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAddLFTagsToResource' smart constructor.+data AddLFTagsToResource = AddLFTagsToResource'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The database, table, or column resource to which to attach an LF-tag.+    resource :: Resource,+    -- | The LF-tags to attach to the resource.+    lFTags :: Prelude.NonEmpty LFTagPair+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddLFTagsToResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'addLFTagsToResource_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'resource', 'addLFTagsToResource_resource' - The database, table, or column resource to which to attach an LF-tag.+--+-- 'lFTags', 'addLFTagsToResource_lFTags' - The LF-tags to attach to the resource.+newAddLFTagsToResource ::+  -- | 'resource'+  Resource ->+  -- | 'lFTags'+  Prelude.NonEmpty LFTagPair ->+  AddLFTagsToResource+newAddLFTagsToResource pResource_ pLFTags_ =+  AddLFTagsToResource'+    { catalogId = Prelude.Nothing,+      resource = pResource_,+      lFTags = Lens.coerced Lens.# pLFTags_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+addLFTagsToResource_catalogId :: Lens.Lens' AddLFTagsToResource (Prelude.Maybe Prelude.Text)+addLFTagsToResource_catalogId = Lens.lens (\AddLFTagsToResource' {catalogId} -> catalogId) (\s@AddLFTagsToResource' {} a -> s {catalogId = a} :: AddLFTagsToResource)++-- | The database, table, or column resource to which to attach an LF-tag.+addLFTagsToResource_resource :: Lens.Lens' AddLFTagsToResource Resource+addLFTagsToResource_resource = Lens.lens (\AddLFTagsToResource' {resource} -> resource) (\s@AddLFTagsToResource' {} a -> s {resource = a} :: AddLFTagsToResource)++-- | The LF-tags to attach to the resource.+addLFTagsToResource_lFTags :: Lens.Lens' AddLFTagsToResource (Prelude.NonEmpty LFTagPair)+addLFTagsToResource_lFTags = Lens.lens (\AddLFTagsToResource' {lFTags} -> lFTags) (\s@AddLFTagsToResource' {} a -> s {lFTags = a} :: AddLFTagsToResource) Prelude.. Lens.coerced++instance Core.AWSRequest AddLFTagsToResource where+  type+    AWSResponse AddLFTagsToResource =+      AddLFTagsToResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AddLFTagsToResourceResponse'+            Prelude.<$> (x Data..?> "Failures" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AddLFTagsToResource where+  hashWithSalt _salt AddLFTagsToResource' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` resource+      `Prelude.hashWithSalt` lFTags++instance Prelude.NFData AddLFTagsToResource where+  rnf AddLFTagsToResource' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf resource+      `Prelude.seq` Prelude.rnf lFTags++instance Data.ToHeaders AddLFTagsToResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AddLFTagsToResource where+  toJSON AddLFTagsToResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("Resource" Data..= resource),+            Prelude.Just ("LFTags" Data..= lFTags)+          ]+      )++instance Data.ToPath AddLFTagsToResource where+  toPath = Prelude.const "/AddLFTagsToResource"++instance Data.ToQuery AddLFTagsToResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAddLFTagsToResourceResponse' smart constructor.+data AddLFTagsToResourceResponse = AddLFTagsToResourceResponse'+  { -- | A list of failures to tag the resource.+    failures :: Prelude.Maybe [LFTagError],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddLFTagsToResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'failures', 'addLFTagsToResourceResponse_failures' - A list of failures to tag the resource.+--+-- 'httpStatus', 'addLFTagsToResourceResponse_httpStatus' - The response's http status code.+newAddLFTagsToResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AddLFTagsToResourceResponse+newAddLFTagsToResourceResponse pHttpStatus_ =+  AddLFTagsToResourceResponse'+    { failures =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of failures to tag the resource.+addLFTagsToResourceResponse_failures :: Lens.Lens' AddLFTagsToResourceResponse (Prelude.Maybe [LFTagError])+addLFTagsToResourceResponse_failures = Lens.lens (\AddLFTagsToResourceResponse' {failures} -> failures) (\s@AddLFTagsToResourceResponse' {} a -> s {failures = a} :: AddLFTagsToResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+addLFTagsToResourceResponse_httpStatus :: Lens.Lens' AddLFTagsToResourceResponse Prelude.Int+addLFTagsToResourceResponse_httpStatus = Lens.lens (\AddLFTagsToResourceResponse' {httpStatus} -> httpStatus) (\s@AddLFTagsToResourceResponse' {} a -> s {httpStatus = a} :: AddLFTagsToResourceResponse)++instance Prelude.NFData AddLFTagsToResourceResponse where+  rnf AddLFTagsToResourceResponse' {..} =+    Prelude.rnf failures+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/AssumeDecoratedRoleWithSAML.hs view
@@ -0,0 +1,297 @@+{-# 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.LakeFormation.AssumeDecoratedRoleWithSAML+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Allows a caller to assume an IAM role decorated as the SAML user+-- specified in the SAML assertion included in the request. This decoration+-- allows Lake Formation to enforce access policies against the SAML users+-- and groups. This API operation requires SAML federation setup in the+-- caller’s account as it can only be called with valid SAML assertions.+-- Lake Formation does not scope down the permission of the assumed role.+-- All permissions attached to the role via the SAML federation setup will+-- be included in the role session.+--+-- This decorated role is expected to access data in Amazon S3 by getting+-- temporary access from Lake Formation which is authorized via the virtual+-- API @GetDataAccess@. Therefore, all SAML roles that can be assumed via+-- @AssumeDecoratedRoleWithSAML@ must at a minimum include+-- @lakeformation:GetDataAccess@ in their role policies. A typical IAM+-- policy attached to such a role would look as follows:+module Amazonka.LakeFormation.AssumeDecoratedRoleWithSAML+  ( -- * Creating a Request+    AssumeDecoratedRoleWithSAML (..),+    newAssumeDecoratedRoleWithSAML,++    -- * Request Lenses+    assumeDecoratedRoleWithSAML_durationSeconds,+    assumeDecoratedRoleWithSAML_sAMLAssertion,+    assumeDecoratedRoleWithSAML_roleArn,+    assumeDecoratedRoleWithSAML_principalArn,++    -- * Destructuring the Response+    AssumeDecoratedRoleWithSAMLResponse (..),+    newAssumeDecoratedRoleWithSAMLResponse,++    -- * Response Lenses+    assumeDecoratedRoleWithSAMLResponse_accessKeyId,+    assumeDecoratedRoleWithSAMLResponse_expiration,+    assumeDecoratedRoleWithSAMLResponse_secretAccessKey,+    assumeDecoratedRoleWithSAMLResponse_sessionToken,+    assumeDecoratedRoleWithSAMLResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAssumeDecoratedRoleWithSAML' smart constructor.+data AssumeDecoratedRoleWithSAML = AssumeDecoratedRoleWithSAML'+  { -- | The time period, between 900 and 43,200 seconds, for the timeout of the+    -- temporary credentials.+    durationSeconds :: Prelude.Maybe Prelude.Natural,+    -- | A SAML assertion consisting of an assertion statement for the user who+    -- needs temporary credentials. This must match the SAML assertion that was+    -- issued to IAM. This must be Base64 encoded.+    sAMLAssertion :: Prelude.Text,+    -- | The role that represents an IAM principal whose scope down policy allows+    -- it to call credential vending APIs such as+    -- @GetTemporaryTableCredentials@. The caller must also have iam:PassRole+    -- permission on this role.+    roleArn :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the SAML provider in IAM that+    -- describes the IdP.+    principalArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssumeDecoratedRoleWithSAML' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'durationSeconds', 'assumeDecoratedRoleWithSAML_durationSeconds' - The time period, between 900 and 43,200 seconds, for the timeout of the+-- temporary credentials.+--+-- 'sAMLAssertion', 'assumeDecoratedRoleWithSAML_sAMLAssertion' - A SAML assertion consisting of an assertion statement for the user who+-- needs temporary credentials. This must match the SAML assertion that was+-- issued to IAM. This must be Base64 encoded.+--+-- 'roleArn', 'assumeDecoratedRoleWithSAML_roleArn' - The role that represents an IAM principal whose scope down policy allows+-- it to call credential vending APIs such as+-- @GetTemporaryTableCredentials@. The caller must also have iam:PassRole+-- permission on this role.+--+-- 'principalArn', 'assumeDecoratedRoleWithSAML_principalArn' - The Amazon Resource Name (ARN) of the SAML provider in IAM that+-- describes the IdP.+newAssumeDecoratedRoleWithSAML ::+  -- | 'sAMLAssertion'+  Prelude.Text ->+  -- | 'roleArn'+  Prelude.Text ->+  -- | 'principalArn'+  Prelude.Text ->+  AssumeDecoratedRoleWithSAML+newAssumeDecoratedRoleWithSAML+  pSAMLAssertion_+  pRoleArn_+  pPrincipalArn_ =+    AssumeDecoratedRoleWithSAML'+      { durationSeconds =+          Prelude.Nothing,+        sAMLAssertion = pSAMLAssertion_,+        roleArn = pRoleArn_,+        principalArn = pPrincipalArn_+      }++-- | The time period, between 900 and 43,200 seconds, for the timeout of the+-- temporary credentials.+assumeDecoratedRoleWithSAML_durationSeconds :: Lens.Lens' AssumeDecoratedRoleWithSAML (Prelude.Maybe Prelude.Natural)+assumeDecoratedRoleWithSAML_durationSeconds = Lens.lens (\AssumeDecoratedRoleWithSAML' {durationSeconds} -> durationSeconds) (\s@AssumeDecoratedRoleWithSAML' {} a -> s {durationSeconds = a} :: AssumeDecoratedRoleWithSAML)++-- | A SAML assertion consisting of an assertion statement for the user who+-- needs temporary credentials. This must match the SAML assertion that was+-- issued to IAM. This must be Base64 encoded.+assumeDecoratedRoleWithSAML_sAMLAssertion :: Lens.Lens' AssumeDecoratedRoleWithSAML Prelude.Text+assumeDecoratedRoleWithSAML_sAMLAssertion = Lens.lens (\AssumeDecoratedRoleWithSAML' {sAMLAssertion} -> sAMLAssertion) (\s@AssumeDecoratedRoleWithSAML' {} a -> s {sAMLAssertion = a} :: AssumeDecoratedRoleWithSAML)++-- | The role that represents an IAM principal whose scope down policy allows+-- it to call credential vending APIs such as+-- @GetTemporaryTableCredentials@. The caller must also have iam:PassRole+-- permission on this role.+assumeDecoratedRoleWithSAML_roleArn :: Lens.Lens' AssumeDecoratedRoleWithSAML Prelude.Text+assumeDecoratedRoleWithSAML_roleArn = Lens.lens (\AssumeDecoratedRoleWithSAML' {roleArn} -> roleArn) (\s@AssumeDecoratedRoleWithSAML' {} a -> s {roleArn = a} :: AssumeDecoratedRoleWithSAML)++-- | The Amazon Resource Name (ARN) of the SAML provider in IAM that+-- describes the IdP.+assumeDecoratedRoleWithSAML_principalArn :: Lens.Lens' AssumeDecoratedRoleWithSAML Prelude.Text+assumeDecoratedRoleWithSAML_principalArn = Lens.lens (\AssumeDecoratedRoleWithSAML' {principalArn} -> principalArn) (\s@AssumeDecoratedRoleWithSAML' {} a -> s {principalArn = a} :: AssumeDecoratedRoleWithSAML)++instance Core.AWSRequest AssumeDecoratedRoleWithSAML where+  type+    AWSResponse AssumeDecoratedRoleWithSAML =+      AssumeDecoratedRoleWithSAMLResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AssumeDecoratedRoleWithSAMLResponse'+            Prelude.<$> (x Data..?> "AccessKeyId")+            Prelude.<*> (x Data..?> "Expiration")+            Prelude.<*> (x Data..?> "SecretAccessKey")+            Prelude.<*> (x Data..?> "SessionToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AssumeDecoratedRoleWithSAML where+  hashWithSalt _salt AssumeDecoratedRoleWithSAML' {..} =+    _salt+      `Prelude.hashWithSalt` durationSeconds+      `Prelude.hashWithSalt` sAMLAssertion+      `Prelude.hashWithSalt` roleArn+      `Prelude.hashWithSalt` principalArn++instance Prelude.NFData AssumeDecoratedRoleWithSAML where+  rnf AssumeDecoratedRoleWithSAML' {..} =+    Prelude.rnf durationSeconds+      `Prelude.seq` Prelude.rnf sAMLAssertion+      `Prelude.seq` Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf principalArn++instance Data.ToHeaders AssumeDecoratedRoleWithSAML where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AssumeDecoratedRoleWithSAML where+  toJSON AssumeDecoratedRoleWithSAML' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DurationSeconds" Data..=)+              Prelude.<$> durationSeconds,+            Prelude.Just ("SAMLAssertion" Data..= sAMLAssertion),+            Prelude.Just ("RoleArn" Data..= roleArn),+            Prelude.Just ("PrincipalArn" Data..= principalArn)+          ]+      )++instance Data.ToPath AssumeDecoratedRoleWithSAML where+  toPath = Prelude.const "/AssumeDecoratedRoleWithSAML"++instance Data.ToQuery AssumeDecoratedRoleWithSAML where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAssumeDecoratedRoleWithSAMLResponse' smart constructor.+data AssumeDecoratedRoleWithSAMLResponse = AssumeDecoratedRoleWithSAMLResponse'+  { -- | The access key ID for the temporary credentials. (The access key+    -- consists of an access key ID and a secret key).+    accessKeyId :: Prelude.Maybe Prelude.Text,+    -- | The date and time when the temporary credentials expire.+    expiration :: Prelude.Maybe Data.POSIX,+    -- | The secret key for the temporary credentials. (The access key consists+    -- of an access key ID and a secret key).+    secretAccessKey :: Prelude.Maybe Prelude.Text,+    -- | The session token for the temporary credentials.+    sessionToken :: 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 'AssumeDecoratedRoleWithSAMLResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accessKeyId', 'assumeDecoratedRoleWithSAMLResponse_accessKeyId' - The access key ID for the temporary credentials. (The access key+-- consists of an access key ID and a secret key).+--+-- 'expiration', 'assumeDecoratedRoleWithSAMLResponse_expiration' - The date and time when the temporary credentials expire.+--+-- 'secretAccessKey', 'assumeDecoratedRoleWithSAMLResponse_secretAccessKey' - The secret key for the temporary credentials. (The access key consists+-- of an access key ID and a secret key).+--+-- 'sessionToken', 'assumeDecoratedRoleWithSAMLResponse_sessionToken' - The session token for the temporary credentials.+--+-- 'httpStatus', 'assumeDecoratedRoleWithSAMLResponse_httpStatus' - The response's http status code.+newAssumeDecoratedRoleWithSAMLResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AssumeDecoratedRoleWithSAMLResponse+newAssumeDecoratedRoleWithSAMLResponse pHttpStatus_ =+  AssumeDecoratedRoleWithSAMLResponse'+    { accessKeyId =+        Prelude.Nothing,+      expiration = Prelude.Nothing,+      secretAccessKey = Prelude.Nothing,+      sessionToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The access key ID for the temporary credentials. (The access key+-- consists of an access key ID and a secret key).+assumeDecoratedRoleWithSAMLResponse_accessKeyId :: Lens.Lens' AssumeDecoratedRoleWithSAMLResponse (Prelude.Maybe Prelude.Text)+assumeDecoratedRoleWithSAMLResponse_accessKeyId = Lens.lens (\AssumeDecoratedRoleWithSAMLResponse' {accessKeyId} -> accessKeyId) (\s@AssumeDecoratedRoleWithSAMLResponse' {} a -> s {accessKeyId = a} :: AssumeDecoratedRoleWithSAMLResponse)++-- | The date and time when the temporary credentials expire.+assumeDecoratedRoleWithSAMLResponse_expiration :: Lens.Lens' AssumeDecoratedRoleWithSAMLResponse (Prelude.Maybe Prelude.UTCTime)+assumeDecoratedRoleWithSAMLResponse_expiration = Lens.lens (\AssumeDecoratedRoleWithSAMLResponse' {expiration} -> expiration) (\s@AssumeDecoratedRoleWithSAMLResponse' {} a -> s {expiration = a} :: AssumeDecoratedRoleWithSAMLResponse) Prelude.. Lens.mapping Data._Time++-- | The secret key for the temporary credentials. (The access key consists+-- of an access key ID and a secret key).+assumeDecoratedRoleWithSAMLResponse_secretAccessKey :: Lens.Lens' AssumeDecoratedRoleWithSAMLResponse (Prelude.Maybe Prelude.Text)+assumeDecoratedRoleWithSAMLResponse_secretAccessKey = Lens.lens (\AssumeDecoratedRoleWithSAMLResponse' {secretAccessKey} -> secretAccessKey) (\s@AssumeDecoratedRoleWithSAMLResponse' {} a -> s {secretAccessKey = a} :: AssumeDecoratedRoleWithSAMLResponse)++-- | The session token for the temporary credentials.+assumeDecoratedRoleWithSAMLResponse_sessionToken :: Lens.Lens' AssumeDecoratedRoleWithSAMLResponse (Prelude.Maybe Prelude.Text)+assumeDecoratedRoleWithSAMLResponse_sessionToken = Lens.lens (\AssumeDecoratedRoleWithSAMLResponse' {sessionToken} -> sessionToken) (\s@AssumeDecoratedRoleWithSAMLResponse' {} a -> s {sessionToken = a} :: AssumeDecoratedRoleWithSAMLResponse)++-- | The response's http status code.+assumeDecoratedRoleWithSAMLResponse_httpStatus :: Lens.Lens' AssumeDecoratedRoleWithSAMLResponse Prelude.Int+assumeDecoratedRoleWithSAMLResponse_httpStatus = Lens.lens (\AssumeDecoratedRoleWithSAMLResponse' {httpStatus} -> httpStatus) (\s@AssumeDecoratedRoleWithSAMLResponse' {} a -> s {httpStatus = a} :: AssumeDecoratedRoleWithSAMLResponse)++instance+  Prelude.NFData+    AssumeDecoratedRoleWithSAMLResponse+  where+  rnf AssumeDecoratedRoleWithSAMLResponse' {..} =+    Prelude.rnf accessKeyId+      `Prelude.seq` Prelude.rnf expiration+      `Prelude.seq` Prelude.rnf secretAccessKey+      `Prelude.seq` Prelude.rnf sessionToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/BatchGrantPermissions.hs view
@@ -0,0 +1,192 @@+{-# 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.LakeFormation.BatchGrantPermissions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Batch operation to grant permissions to the principal.+module Amazonka.LakeFormation.BatchGrantPermissions+  ( -- * Creating a Request+    BatchGrantPermissions (..),+    newBatchGrantPermissions,++    -- * Request Lenses+    batchGrantPermissions_catalogId,+    batchGrantPermissions_entries,++    -- * Destructuring the Response+    BatchGrantPermissionsResponse (..),+    newBatchGrantPermissionsResponse,++    -- * Response Lenses+    batchGrantPermissionsResponse_failures,+    batchGrantPermissionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchGrantPermissions' smart constructor.+data BatchGrantPermissions = BatchGrantPermissions'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | A list of up to 20 entries for resource permissions to be granted by+    -- batch operation to the principal.+    entries :: [BatchPermissionsRequestEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGrantPermissions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'batchGrantPermissions_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'entries', 'batchGrantPermissions_entries' - A list of up to 20 entries for resource permissions to be granted by+-- batch operation to the principal.+newBatchGrantPermissions ::+  BatchGrantPermissions+newBatchGrantPermissions =+  BatchGrantPermissions'+    { catalogId = Prelude.Nothing,+      entries = Prelude.mempty+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+batchGrantPermissions_catalogId :: Lens.Lens' BatchGrantPermissions (Prelude.Maybe Prelude.Text)+batchGrantPermissions_catalogId = Lens.lens (\BatchGrantPermissions' {catalogId} -> catalogId) (\s@BatchGrantPermissions' {} a -> s {catalogId = a} :: BatchGrantPermissions)++-- | A list of up to 20 entries for resource permissions to be granted by+-- batch operation to the principal.+batchGrantPermissions_entries :: Lens.Lens' BatchGrantPermissions [BatchPermissionsRequestEntry]+batchGrantPermissions_entries = Lens.lens (\BatchGrantPermissions' {entries} -> entries) (\s@BatchGrantPermissions' {} a -> s {entries = a} :: BatchGrantPermissions) Prelude.. Lens.coerced++instance Core.AWSRequest BatchGrantPermissions where+  type+    AWSResponse BatchGrantPermissions =+      BatchGrantPermissionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchGrantPermissionsResponse'+            Prelude.<$> (x Data..?> "Failures" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable BatchGrantPermissions where+  hashWithSalt _salt BatchGrantPermissions' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` entries++instance Prelude.NFData BatchGrantPermissions where+  rnf BatchGrantPermissions' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf entries++instance Data.ToHeaders BatchGrantPermissions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchGrantPermissions where+  toJSON BatchGrantPermissions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("Entries" Data..= entries)+          ]+      )++instance Data.ToPath BatchGrantPermissions where+  toPath = Prelude.const "/BatchGrantPermissions"++instance Data.ToQuery BatchGrantPermissions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchGrantPermissionsResponse' smart constructor.+data BatchGrantPermissionsResponse = BatchGrantPermissionsResponse'+  { -- | A list of failures to grant permissions to the resources.+    failures :: Prelude.Maybe [BatchPermissionsFailureEntry],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGrantPermissionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'failures', 'batchGrantPermissionsResponse_failures' - A list of failures to grant permissions to the resources.+--+-- 'httpStatus', 'batchGrantPermissionsResponse_httpStatus' - The response's http status code.+newBatchGrantPermissionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchGrantPermissionsResponse+newBatchGrantPermissionsResponse pHttpStatus_ =+  BatchGrantPermissionsResponse'+    { failures =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of failures to grant permissions to the resources.+batchGrantPermissionsResponse_failures :: Lens.Lens' BatchGrantPermissionsResponse (Prelude.Maybe [BatchPermissionsFailureEntry])+batchGrantPermissionsResponse_failures = Lens.lens (\BatchGrantPermissionsResponse' {failures} -> failures) (\s@BatchGrantPermissionsResponse' {} a -> s {failures = a} :: BatchGrantPermissionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchGrantPermissionsResponse_httpStatus :: Lens.Lens' BatchGrantPermissionsResponse Prelude.Int+batchGrantPermissionsResponse_httpStatus = Lens.lens (\BatchGrantPermissionsResponse' {httpStatus} -> httpStatus) (\s@BatchGrantPermissionsResponse' {} a -> s {httpStatus = a} :: BatchGrantPermissionsResponse)++instance Prelude.NFData BatchGrantPermissionsResponse where+  rnf BatchGrantPermissionsResponse' {..} =+    Prelude.rnf failures+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/BatchRevokePermissions.hs view
@@ -0,0 +1,196 @@+{-# 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.LakeFormation.BatchRevokePermissions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Batch operation to revoke permissions from the principal.+module Amazonka.LakeFormation.BatchRevokePermissions+  ( -- * Creating a Request+    BatchRevokePermissions (..),+    newBatchRevokePermissions,++    -- * Request Lenses+    batchRevokePermissions_catalogId,+    batchRevokePermissions_entries,++    -- * Destructuring the Response+    BatchRevokePermissionsResponse (..),+    newBatchRevokePermissionsResponse,++    -- * Response Lenses+    batchRevokePermissionsResponse_failures,+    batchRevokePermissionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchRevokePermissions' smart constructor.+data BatchRevokePermissions = BatchRevokePermissions'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | A list of up to 20 entries for resource permissions to be revoked by+    -- batch operation to the principal.+    entries :: [BatchPermissionsRequestEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchRevokePermissions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'batchRevokePermissions_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'entries', 'batchRevokePermissions_entries' - A list of up to 20 entries for resource permissions to be revoked by+-- batch operation to the principal.+newBatchRevokePermissions ::+  BatchRevokePermissions+newBatchRevokePermissions =+  BatchRevokePermissions'+    { catalogId =+        Prelude.Nothing,+      entries = Prelude.mempty+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+batchRevokePermissions_catalogId :: Lens.Lens' BatchRevokePermissions (Prelude.Maybe Prelude.Text)+batchRevokePermissions_catalogId = Lens.lens (\BatchRevokePermissions' {catalogId} -> catalogId) (\s@BatchRevokePermissions' {} a -> s {catalogId = a} :: BatchRevokePermissions)++-- | A list of up to 20 entries for resource permissions to be revoked by+-- batch operation to the principal.+batchRevokePermissions_entries :: Lens.Lens' BatchRevokePermissions [BatchPermissionsRequestEntry]+batchRevokePermissions_entries = Lens.lens (\BatchRevokePermissions' {entries} -> entries) (\s@BatchRevokePermissions' {} a -> s {entries = a} :: BatchRevokePermissions) Prelude.. Lens.coerced++instance Core.AWSRequest BatchRevokePermissions where+  type+    AWSResponse BatchRevokePermissions =+      BatchRevokePermissionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchRevokePermissionsResponse'+            Prelude.<$> (x Data..?> "Failures" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable BatchRevokePermissions where+  hashWithSalt _salt BatchRevokePermissions' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` entries++instance Prelude.NFData BatchRevokePermissions where+  rnf BatchRevokePermissions' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf entries++instance Data.ToHeaders BatchRevokePermissions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchRevokePermissions where+  toJSON BatchRevokePermissions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("Entries" Data..= entries)+          ]+      )++instance Data.ToPath BatchRevokePermissions where+  toPath = Prelude.const "/BatchRevokePermissions"++instance Data.ToQuery BatchRevokePermissions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchRevokePermissionsResponse' smart constructor.+data BatchRevokePermissionsResponse = BatchRevokePermissionsResponse'+  { -- | A list of failures to revoke permissions to the resources.+    failures :: Prelude.Maybe [BatchPermissionsFailureEntry],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchRevokePermissionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'failures', 'batchRevokePermissionsResponse_failures' - A list of failures to revoke permissions to the resources.+--+-- 'httpStatus', 'batchRevokePermissionsResponse_httpStatus' - The response's http status code.+newBatchRevokePermissionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchRevokePermissionsResponse+newBatchRevokePermissionsResponse pHttpStatus_ =+  BatchRevokePermissionsResponse'+    { failures =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of failures to revoke permissions to the resources.+batchRevokePermissionsResponse_failures :: Lens.Lens' BatchRevokePermissionsResponse (Prelude.Maybe [BatchPermissionsFailureEntry])+batchRevokePermissionsResponse_failures = Lens.lens (\BatchRevokePermissionsResponse' {failures} -> failures) (\s@BatchRevokePermissionsResponse' {} a -> s {failures = a} :: BatchRevokePermissionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchRevokePermissionsResponse_httpStatus :: Lens.Lens' BatchRevokePermissionsResponse Prelude.Int+batchRevokePermissionsResponse_httpStatus = Lens.lens (\BatchRevokePermissionsResponse' {httpStatus} -> httpStatus) (\s@BatchRevokePermissionsResponse' {} a -> s {httpStatus = a} :: BatchRevokePermissionsResponse)++instance+  Prelude.NFData+    BatchRevokePermissionsResponse+  where+  rnf BatchRevokePermissionsResponse' {..} =+    Prelude.rnf failures+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/CancelTransaction.hs view
@@ -0,0 +1,156 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.CancelTransaction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Attempts to cancel the specified transaction. Returns an exception if+-- the transaction was previously committed.+module Amazonka.LakeFormation.CancelTransaction+  ( -- * Creating a Request+    CancelTransaction (..),+    newCancelTransaction,++    -- * Request Lenses+    cancelTransaction_transactionId,++    -- * Destructuring the Response+    CancelTransactionResponse (..),+    newCancelTransactionResponse,++    -- * Response Lenses+    cancelTransactionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCancelTransaction' smart constructor.+data CancelTransaction = CancelTransaction'+  { -- | The transaction to cancel.+    transactionId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CancelTransaction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'transactionId', 'cancelTransaction_transactionId' - The transaction to cancel.+newCancelTransaction ::+  -- | 'transactionId'+  Prelude.Text ->+  CancelTransaction+newCancelTransaction pTransactionId_ =+  CancelTransaction' {transactionId = pTransactionId_}++-- | The transaction to cancel.+cancelTransaction_transactionId :: Lens.Lens' CancelTransaction Prelude.Text+cancelTransaction_transactionId = Lens.lens (\CancelTransaction' {transactionId} -> transactionId) (\s@CancelTransaction' {} a -> s {transactionId = a} :: CancelTransaction)++instance Core.AWSRequest CancelTransaction where+  type+    AWSResponse CancelTransaction =+      CancelTransactionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CancelTransactionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CancelTransaction where+  hashWithSalt _salt CancelTransaction' {..} =+    _salt `Prelude.hashWithSalt` transactionId++instance Prelude.NFData CancelTransaction where+  rnf CancelTransaction' {..} =+    Prelude.rnf transactionId++instance Data.ToHeaders CancelTransaction where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CancelTransaction where+  toJSON CancelTransaction' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("TransactionId" Data..= transactionId)+          ]+      )++instance Data.ToPath CancelTransaction where+  toPath = Prelude.const "/CancelTransaction"++instance Data.ToQuery CancelTransaction where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCancelTransactionResponse' smart constructor.+data CancelTransactionResponse = CancelTransactionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CancelTransactionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'cancelTransactionResponse_httpStatus' - The response's http status code.+newCancelTransactionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CancelTransactionResponse+newCancelTransactionResponse pHttpStatus_ =+  CancelTransactionResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+cancelTransactionResponse_httpStatus :: Lens.Lens' CancelTransactionResponse Prelude.Int+cancelTransactionResponse_httpStatus = Lens.lens (\CancelTransactionResponse' {httpStatus} -> httpStatus) (\s@CancelTransactionResponse' {} a -> s {httpStatus = a} :: CancelTransactionResponse)++instance Prelude.NFData CancelTransactionResponse where+  rnf CancelTransactionResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/CommitTransaction.hs view
@@ -0,0 +1,169 @@+{-# 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.LakeFormation.CommitTransaction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Attempts to commit the specified transaction. Returns an exception if+-- the transaction was previously aborted. This API action is idempotent if+-- called multiple times for the same transaction.+module Amazonka.LakeFormation.CommitTransaction+  ( -- * Creating a Request+    CommitTransaction (..),+    newCommitTransaction,++    -- * Request Lenses+    commitTransaction_transactionId,++    -- * Destructuring the Response+    CommitTransactionResponse (..),+    newCommitTransactionResponse,++    -- * Response Lenses+    commitTransactionResponse_transactionStatus,+    commitTransactionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCommitTransaction' smart constructor.+data CommitTransaction = CommitTransaction'+  { -- | The transaction to commit.+    transactionId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CommitTransaction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'transactionId', 'commitTransaction_transactionId' - The transaction to commit.+newCommitTransaction ::+  -- | 'transactionId'+  Prelude.Text ->+  CommitTransaction+newCommitTransaction pTransactionId_ =+  CommitTransaction' {transactionId = pTransactionId_}++-- | The transaction to commit.+commitTransaction_transactionId :: Lens.Lens' CommitTransaction Prelude.Text+commitTransaction_transactionId = Lens.lens (\CommitTransaction' {transactionId} -> transactionId) (\s@CommitTransaction' {} a -> s {transactionId = a} :: CommitTransaction)++instance Core.AWSRequest CommitTransaction where+  type+    AWSResponse CommitTransaction =+      CommitTransactionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CommitTransactionResponse'+            Prelude.<$> (x Data..?> "TransactionStatus")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CommitTransaction where+  hashWithSalt _salt CommitTransaction' {..} =+    _salt `Prelude.hashWithSalt` transactionId++instance Prelude.NFData CommitTransaction where+  rnf CommitTransaction' {..} =+    Prelude.rnf transactionId++instance Data.ToHeaders CommitTransaction where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CommitTransaction where+  toJSON CommitTransaction' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("TransactionId" Data..= transactionId)+          ]+      )++instance Data.ToPath CommitTransaction where+  toPath = Prelude.const "/CommitTransaction"++instance Data.ToQuery CommitTransaction where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCommitTransactionResponse' smart constructor.+data CommitTransactionResponse = CommitTransactionResponse'+  { -- | The status of the transaction.+    transactionStatus :: Prelude.Maybe TransactionStatus,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CommitTransactionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'transactionStatus', 'commitTransactionResponse_transactionStatus' - The status of the transaction.+--+-- 'httpStatus', 'commitTransactionResponse_httpStatus' - The response's http status code.+newCommitTransactionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CommitTransactionResponse+newCommitTransactionResponse pHttpStatus_ =+  CommitTransactionResponse'+    { transactionStatus =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The status of the transaction.+commitTransactionResponse_transactionStatus :: Lens.Lens' CommitTransactionResponse (Prelude.Maybe TransactionStatus)+commitTransactionResponse_transactionStatus = Lens.lens (\CommitTransactionResponse' {transactionStatus} -> transactionStatus) (\s@CommitTransactionResponse' {} a -> s {transactionStatus = a} :: CommitTransactionResponse)++-- | The response's http status code.+commitTransactionResponse_httpStatus :: Lens.Lens' CommitTransactionResponse Prelude.Int+commitTransactionResponse_httpStatus = Lens.lens (\CommitTransactionResponse' {httpStatus} -> httpStatus) (\s@CommitTransactionResponse' {} a -> s {httpStatus = a} :: CommitTransactionResponse)++instance Prelude.NFData CommitTransactionResponse where+  rnf CommitTransactionResponse' {..} =+    Prelude.rnf transactionStatus+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/CreateDataCellsFilter.hs view
@@ -0,0 +1,157 @@+{-# 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.LakeFormation.CreateDataCellsFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a data cell filter to allow one to grant access to certain+-- columns on certain rows.+module Amazonka.LakeFormation.CreateDataCellsFilter+  ( -- * Creating a Request+    CreateDataCellsFilter (..),+    newCreateDataCellsFilter,++    -- * Request Lenses+    createDataCellsFilter_tableData,++    -- * Destructuring the Response+    CreateDataCellsFilterResponse (..),+    newCreateDataCellsFilterResponse,++    -- * Response Lenses+    createDataCellsFilterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateDataCellsFilter' smart constructor.+data CreateDataCellsFilter = CreateDataCellsFilter'+  { -- | A @DataCellsFilter@ structure containing information about the data+    -- cells filter.+    tableData :: DataCellsFilter+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDataCellsFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tableData', 'createDataCellsFilter_tableData' - A @DataCellsFilter@ structure containing information about the data+-- cells filter.+newCreateDataCellsFilter ::+  -- | 'tableData'+  DataCellsFilter ->+  CreateDataCellsFilter+newCreateDataCellsFilter pTableData_ =+  CreateDataCellsFilter' {tableData = pTableData_}++-- | A @DataCellsFilter@ structure containing information about the data+-- cells filter.+createDataCellsFilter_tableData :: Lens.Lens' CreateDataCellsFilter DataCellsFilter+createDataCellsFilter_tableData = Lens.lens (\CreateDataCellsFilter' {tableData} -> tableData) (\s@CreateDataCellsFilter' {} a -> s {tableData = a} :: CreateDataCellsFilter)++instance Core.AWSRequest CreateDataCellsFilter where+  type+    AWSResponse CreateDataCellsFilter =+      CreateDataCellsFilterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CreateDataCellsFilterResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateDataCellsFilter where+  hashWithSalt _salt CreateDataCellsFilter' {..} =+    _salt `Prelude.hashWithSalt` tableData++instance Prelude.NFData CreateDataCellsFilter where+  rnf CreateDataCellsFilter' {..} =+    Prelude.rnf tableData++instance Data.ToHeaders CreateDataCellsFilter where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateDataCellsFilter where+  toJSON CreateDataCellsFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("TableData" Data..= tableData)]+      )++instance Data.ToPath CreateDataCellsFilter where+  toPath = Prelude.const "/CreateDataCellsFilter"++instance Data.ToQuery CreateDataCellsFilter where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateDataCellsFilterResponse' smart constructor.+data CreateDataCellsFilterResponse = CreateDataCellsFilterResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDataCellsFilterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'createDataCellsFilterResponse_httpStatus' - The response's http status code.+newCreateDataCellsFilterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateDataCellsFilterResponse+newCreateDataCellsFilterResponse pHttpStatus_ =+  CreateDataCellsFilterResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+createDataCellsFilterResponse_httpStatus :: Lens.Lens' CreateDataCellsFilterResponse Prelude.Int+createDataCellsFilterResponse_httpStatus = Lens.lens (\CreateDataCellsFilterResponse' {httpStatus} -> httpStatus) (\s@CreateDataCellsFilterResponse' {} a -> s {httpStatus = a} :: CreateDataCellsFilterResponse)++instance Prelude.NFData CreateDataCellsFilterResponse where+  rnf CreateDataCellsFilterResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/CreateLFTag.hs view
@@ -0,0 +1,188 @@+{-# 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.LakeFormation.CreateLFTag+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates an LF-tag with the specified name and values.+module Amazonka.LakeFormation.CreateLFTag+  ( -- * Creating a Request+    CreateLFTag (..),+    newCreateLFTag,++    -- * Request Lenses+    createLFTag_catalogId,+    createLFTag_tagKey,+    createLFTag_tagValues,++    -- * Destructuring the Response+    CreateLFTagResponse (..),+    newCreateLFTagResponse,++    -- * Response Lenses+    createLFTagResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateLFTag' smart constructor.+data CreateLFTag = CreateLFTag'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The key-name for the LF-tag.+    tagKey :: Prelude.Text,+    -- | A list of possible values an attribute can take.+    tagValues :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateLFTag' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'createLFTag_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'tagKey', 'createLFTag_tagKey' - The key-name for the LF-tag.+--+-- 'tagValues', 'createLFTag_tagValues' - A list of possible values an attribute can take.+newCreateLFTag ::+  -- | 'tagKey'+  Prelude.Text ->+  -- | 'tagValues'+  Prelude.NonEmpty Prelude.Text ->+  CreateLFTag+newCreateLFTag pTagKey_ pTagValues_ =+  CreateLFTag'+    { catalogId = Prelude.Nothing,+      tagKey = pTagKey_,+      tagValues = Lens.coerced Lens.# pTagValues_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+createLFTag_catalogId :: Lens.Lens' CreateLFTag (Prelude.Maybe Prelude.Text)+createLFTag_catalogId = Lens.lens (\CreateLFTag' {catalogId} -> catalogId) (\s@CreateLFTag' {} a -> s {catalogId = a} :: CreateLFTag)++-- | The key-name for the LF-tag.+createLFTag_tagKey :: Lens.Lens' CreateLFTag Prelude.Text+createLFTag_tagKey = Lens.lens (\CreateLFTag' {tagKey} -> tagKey) (\s@CreateLFTag' {} a -> s {tagKey = a} :: CreateLFTag)++-- | A list of possible values an attribute can take.+createLFTag_tagValues :: Lens.Lens' CreateLFTag (Prelude.NonEmpty Prelude.Text)+createLFTag_tagValues = Lens.lens (\CreateLFTag' {tagValues} -> tagValues) (\s@CreateLFTag' {} a -> s {tagValues = a} :: CreateLFTag) Prelude.. Lens.coerced++instance Core.AWSRequest CreateLFTag where+  type AWSResponse CreateLFTag = CreateLFTagResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CreateLFTagResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateLFTag where+  hashWithSalt _salt CreateLFTag' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` tagKey+      `Prelude.hashWithSalt` tagValues++instance Prelude.NFData CreateLFTag where+  rnf CreateLFTag' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf tagKey+      `Prelude.seq` Prelude.rnf tagValues++instance Data.ToHeaders CreateLFTag where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateLFTag where+  toJSON CreateLFTag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("TagKey" Data..= tagKey),+            Prelude.Just ("TagValues" Data..= tagValues)+          ]+      )++instance Data.ToPath CreateLFTag where+  toPath = Prelude.const "/CreateLFTag"++instance Data.ToQuery CreateLFTag where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateLFTagResponse' smart constructor.+data CreateLFTagResponse = CreateLFTagResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateLFTagResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'createLFTagResponse_httpStatus' - The response's http status code.+newCreateLFTagResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateLFTagResponse+newCreateLFTagResponse pHttpStatus_ =+  CreateLFTagResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+createLFTagResponse_httpStatus :: Lens.Lens' CreateLFTagResponse Prelude.Int+createLFTagResponse_httpStatus = Lens.lens (\CreateLFTagResponse' {httpStatus} -> httpStatus) (\s@CreateLFTagResponse' {} a -> s {httpStatus = a} :: CreateLFTagResponse)++instance Prelude.NFData CreateLFTagResponse where+  rnf CreateLFTagResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/DeleteDataCellsFilter.hs view
@@ -0,0 +1,196 @@+{-# 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.LakeFormation.DeleteDataCellsFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a data cell filter.+module Amazonka.LakeFormation.DeleteDataCellsFilter+  ( -- * Creating a Request+    DeleteDataCellsFilter (..),+    newDeleteDataCellsFilter,++    -- * Request Lenses+    deleteDataCellsFilter_databaseName,+    deleteDataCellsFilter_name,+    deleteDataCellsFilter_tableCatalogId,+    deleteDataCellsFilter_tableName,++    -- * Destructuring the Response+    DeleteDataCellsFilterResponse (..),+    newDeleteDataCellsFilterResponse,++    -- * Response Lenses+    deleteDataCellsFilterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteDataCellsFilter' smart constructor.+data DeleteDataCellsFilter = DeleteDataCellsFilter'+  { -- | A database in the Glue Data Catalog.+    databaseName :: Prelude.Maybe Prelude.Text,+    -- | The name given by the user to the data filter cell.+    name :: Prelude.Maybe Prelude.Text,+    -- | The ID of the catalog to which the table belongs.+    tableCatalogId :: Prelude.Maybe Prelude.Text,+    -- | A table in the database.+    tableName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDataCellsFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'databaseName', 'deleteDataCellsFilter_databaseName' - A database in the Glue Data Catalog.+--+-- 'name', 'deleteDataCellsFilter_name' - The name given by the user to the data filter cell.+--+-- 'tableCatalogId', 'deleteDataCellsFilter_tableCatalogId' - The ID of the catalog to which the table belongs.+--+-- 'tableName', 'deleteDataCellsFilter_tableName' - A table in the database.+newDeleteDataCellsFilter ::+  DeleteDataCellsFilter+newDeleteDataCellsFilter =+  DeleteDataCellsFilter'+    { databaseName =+        Prelude.Nothing,+      name = Prelude.Nothing,+      tableCatalogId = Prelude.Nothing,+      tableName = Prelude.Nothing+    }++-- | A database in the Glue Data Catalog.+deleteDataCellsFilter_databaseName :: Lens.Lens' DeleteDataCellsFilter (Prelude.Maybe Prelude.Text)+deleteDataCellsFilter_databaseName = Lens.lens (\DeleteDataCellsFilter' {databaseName} -> databaseName) (\s@DeleteDataCellsFilter' {} a -> s {databaseName = a} :: DeleteDataCellsFilter)++-- | The name given by the user to the data filter cell.+deleteDataCellsFilter_name :: Lens.Lens' DeleteDataCellsFilter (Prelude.Maybe Prelude.Text)+deleteDataCellsFilter_name = Lens.lens (\DeleteDataCellsFilter' {name} -> name) (\s@DeleteDataCellsFilter' {} a -> s {name = a} :: DeleteDataCellsFilter)++-- | The ID of the catalog to which the table belongs.+deleteDataCellsFilter_tableCatalogId :: Lens.Lens' DeleteDataCellsFilter (Prelude.Maybe Prelude.Text)+deleteDataCellsFilter_tableCatalogId = Lens.lens (\DeleteDataCellsFilter' {tableCatalogId} -> tableCatalogId) (\s@DeleteDataCellsFilter' {} a -> s {tableCatalogId = a} :: DeleteDataCellsFilter)++-- | A table in the database.+deleteDataCellsFilter_tableName :: Lens.Lens' DeleteDataCellsFilter (Prelude.Maybe Prelude.Text)+deleteDataCellsFilter_tableName = Lens.lens (\DeleteDataCellsFilter' {tableName} -> tableName) (\s@DeleteDataCellsFilter' {} a -> s {tableName = a} :: DeleteDataCellsFilter)++instance Core.AWSRequest DeleteDataCellsFilter where+  type+    AWSResponse DeleteDataCellsFilter =+      DeleteDataCellsFilterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteDataCellsFilterResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteDataCellsFilter where+  hashWithSalt _salt DeleteDataCellsFilter' {..} =+    _salt+      `Prelude.hashWithSalt` databaseName+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` tableCatalogId+      `Prelude.hashWithSalt` tableName++instance Prelude.NFData DeleteDataCellsFilter where+  rnf DeleteDataCellsFilter' {..} =+    Prelude.rnf databaseName+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf tableCatalogId+      `Prelude.seq` Prelude.rnf tableName++instance Data.ToHeaders DeleteDataCellsFilter where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteDataCellsFilter where+  toJSON DeleteDataCellsFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DatabaseName" Data..=) Prelude.<$> databaseName,+            ("Name" Data..=) Prelude.<$> name,+            ("TableCatalogId" Data..=)+              Prelude.<$> tableCatalogId,+            ("TableName" Data..=) Prelude.<$> tableName+          ]+      )++instance Data.ToPath DeleteDataCellsFilter where+  toPath = Prelude.const "/DeleteDataCellsFilter"++instance Data.ToQuery DeleteDataCellsFilter where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteDataCellsFilterResponse' smart constructor.+data DeleteDataCellsFilterResponse = DeleteDataCellsFilterResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDataCellsFilterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteDataCellsFilterResponse_httpStatus' - The response's http status code.+newDeleteDataCellsFilterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteDataCellsFilterResponse+newDeleteDataCellsFilterResponse pHttpStatus_ =+  DeleteDataCellsFilterResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteDataCellsFilterResponse_httpStatus :: Lens.Lens' DeleteDataCellsFilterResponse Prelude.Int+deleteDataCellsFilterResponse_httpStatus = Lens.lens (\DeleteDataCellsFilterResponse' {httpStatus} -> httpStatus) (\s@DeleteDataCellsFilterResponse' {} a -> s {httpStatus = a} :: DeleteDataCellsFilterResponse)++instance Prelude.NFData DeleteDataCellsFilterResponse where+  rnf DeleteDataCellsFilterResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/DeleteLFTag.hs view
@@ -0,0 +1,178 @@+{-# 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.LakeFormation.DeleteLFTag+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the specified LF-tag given a key name. If the input parameter+-- tag key was not found, then the operation will throw an exception. When+-- you delete an LF-tag, the @LFTagPolicy@ attached to the LF-tag becomes+-- invalid. If the deleted LF-tag was still assigned to any resource, the+-- tag policy attach to the deleted LF-tag will no longer be applied to the+-- resource.+module Amazonka.LakeFormation.DeleteLFTag+  ( -- * Creating a Request+    DeleteLFTag (..),+    newDeleteLFTag,++    -- * Request Lenses+    deleteLFTag_catalogId,+    deleteLFTag_tagKey,++    -- * Destructuring the Response+    DeleteLFTagResponse (..),+    newDeleteLFTagResponse,++    -- * Response Lenses+    deleteLFTagResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteLFTag' smart constructor.+data DeleteLFTag = DeleteLFTag'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The key-name for the LF-tag to delete.+    tagKey :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteLFTag' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'deleteLFTag_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'tagKey', 'deleteLFTag_tagKey' - The key-name for the LF-tag to delete.+newDeleteLFTag ::+  -- | 'tagKey'+  Prelude.Text ->+  DeleteLFTag+newDeleteLFTag pTagKey_ =+  DeleteLFTag'+    { catalogId = Prelude.Nothing,+      tagKey = pTagKey_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+deleteLFTag_catalogId :: Lens.Lens' DeleteLFTag (Prelude.Maybe Prelude.Text)+deleteLFTag_catalogId = Lens.lens (\DeleteLFTag' {catalogId} -> catalogId) (\s@DeleteLFTag' {} a -> s {catalogId = a} :: DeleteLFTag)++-- | The key-name for the LF-tag to delete.+deleteLFTag_tagKey :: Lens.Lens' DeleteLFTag Prelude.Text+deleteLFTag_tagKey = Lens.lens (\DeleteLFTag' {tagKey} -> tagKey) (\s@DeleteLFTag' {} a -> s {tagKey = a} :: DeleteLFTag)++instance Core.AWSRequest DeleteLFTag where+  type AWSResponse DeleteLFTag = DeleteLFTagResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteLFTagResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteLFTag where+  hashWithSalt _salt DeleteLFTag' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` tagKey++instance Prelude.NFData DeleteLFTag where+  rnf DeleteLFTag' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf tagKey++instance Data.ToHeaders DeleteLFTag where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteLFTag where+  toJSON DeleteLFTag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("TagKey" Data..= tagKey)+          ]+      )++instance Data.ToPath DeleteLFTag where+  toPath = Prelude.const "/DeleteLFTag"++instance Data.ToQuery DeleteLFTag where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteLFTagResponse' smart constructor.+data DeleteLFTagResponse = DeleteLFTagResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteLFTagResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteLFTagResponse_httpStatus' - The response's http status code.+newDeleteLFTagResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteLFTagResponse+newDeleteLFTagResponse pHttpStatus_ =+  DeleteLFTagResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteLFTagResponse_httpStatus :: Lens.Lens' DeleteLFTagResponse Prelude.Int+deleteLFTagResponse_httpStatus = Lens.lens (\DeleteLFTagResponse' {httpStatus} -> httpStatus) (\s@DeleteLFTagResponse' {} a -> s {httpStatus = a} :: DeleteLFTagResponse)++instance Prelude.NFData DeleteLFTagResponse where+  rnf DeleteLFTagResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/DeleteObjectsOnCancel.hs view
@@ -0,0 +1,234 @@+{-# 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.LakeFormation.DeleteObjectsOnCancel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- For a specific governed table, provides a list of Amazon S3 objects that+-- will be written during the current transaction and that can be+-- automatically deleted if the transaction is canceled. Without this call,+-- no Amazon S3 objects are automatically deleted when a transaction+-- cancels.+--+-- The Glue ETL library function @write_dynamic_frame.from_catalog()@+-- includes an option to automatically call @DeleteObjectsOnCancel@ before+-- writes. For more information, see+-- <https://docs.aws.amazon.com/lake-formation/latest/dg/transactions-data-operations.html#rolling-back-writes Rolling Back Amazon S3 Writes>.+module Amazonka.LakeFormation.DeleteObjectsOnCancel+  ( -- * Creating a Request+    DeleteObjectsOnCancel (..),+    newDeleteObjectsOnCancel,++    -- * Request Lenses+    deleteObjectsOnCancel_catalogId,+    deleteObjectsOnCancel_databaseName,+    deleteObjectsOnCancel_tableName,+    deleteObjectsOnCancel_transactionId,+    deleteObjectsOnCancel_objects,++    -- * Destructuring the Response+    DeleteObjectsOnCancelResponse (..),+    newDeleteObjectsOnCancelResponse,++    -- * Response Lenses+    deleteObjectsOnCancelResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteObjectsOnCancel' smart constructor.+data DeleteObjectsOnCancel = DeleteObjectsOnCancel'+  { -- | The Glue data catalog that contains the governed table. Defaults to the+    -- current account ID.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The database that contains the governed table.+    databaseName :: Prelude.Text,+    -- | The name of the governed table.+    tableName :: Prelude.Text,+    -- | ID of the transaction that the writes occur in.+    transactionId :: Prelude.Text,+    -- | A list of VirtualObject structures, which indicates the Amazon S3+    -- objects to be deleted if the transaction cancels.+    objects :: Prelude.NonEmpty VirtualObject+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteObjectsOnCancel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'deleteObjectsOnCancel_catalogId' - The Glue data catalog that contains the governed table. Defaults to the+-- current account ID.+--+-- 'databaseName', 'deleteObjectsOnCancel_databaseName' - The database that contains the governed table.+--+-- 'tableName', 'deleteObjectsOnCancel_tableName' - The name of the governed table.+--+-- 'transactionId', 'deleteObjectsOnCancel_transactionId' - ID of the transaction that the writes occur in.+--+-- 'objects', 'deleteObjectsOnCancel_objects' - A list of VirtualObject structures, which indicates the Amazon S3+-- objects to be deleted if the transaction cancels.+newDeleteObjectsOnCancel ::+  -- | 'databaseName'+  Prelude.Text ->+  -- | 'tableName'+  Prelude.Text ->+  -- | 'transactionId'+  Prelude.Text ->+  -- | 'objects'+  Prelude.NonEmpty VirtualObject ->+  DeleteObjectsOnCancel+newDeleteObjectsOnCancel+  pDatabaseName_+  pTableName_+  pTransactionId_+  pObjects_ =+    DeleteObjectsOnCancel'+      { catalogId = Prelude.Nothing,+        databaseName = pDatabaseName_,+        tableName = pTableName_,+        transactionId = pTransactionId_,+        objects = Lens.coerced Lens.# pObjects_+      }++-- | The Glue data catalog that contains the governed table. Defaults to the+-- current account ID.+deleteObjectsOnCancel_catalogId :: Lens.Lens' DeleteObjectsOnCancel (Prelude.Maybe Prelude.Text)+deleteObjectsOnCancel_catalogId = Lens.lens (\DeleteObjectsOnCancel' {catalogId} -> catalogId) (\s@DeleteObjectsOnCancel' {} a -> s {catalogId = a} :: DeleteObjectsOnCancel)++-- | The database that contains the governed table.+deleteObjectsOnCancel_databaseName :: Lens.Lens' DeleteObjectsOnCancel Prelude.Text+deleteObjectsOnCancel_databaseName = Lens.lens (\DeleteObjectsOnCancel' {databaseName} -> databaseName) (\s@DeleteObjectsOnCancel' {} a -> s {databaseName = a} :: DeleteObjectsOnCancel)++-- | The name of the governed table.+deleteObjectsOnCancel_tableName :: Lens.Lens' DeleteObjectsOnCancel Prelude.Text+deleteObjectsOnCancel_tableName = Lens.lens (\DeleteObjectsOnCancel' {tableName} -> tableName) (\s@DeleteObjectsOnCancel' {} a -> s {tableName = a} :: DeleteObjectsOnCancel)++-- | ID of the transaction that the writes occur in.+deleteObjectsOnCancel_transactionId :: Lens.Lens' DeleteObjectsOnCancel Prelude.Text+deleteObjectsOnCancel_transactionId = Lens.lens (\DeleteObjectsOnCancel' {transactionId} -> transactionId) (\s@DeleteObjectsOnCancel' {} a -> s {transactionId = a} :: DeleteObjectsOnCancel)++-- | A list of VirtualObject structures, which indicates the Amazon S3+-- objects to be deleted if the transaction cancels.+deleteObjectsOnCancel_objects :: Lens.Lens' DeleteObjectsOnCancel (Prelude.NonEmpty VirtualObject)+deleteObjectsOnCancel_objects = Lens.lens (\DeleteObjectsOnCancel' {objects} -> objects) (\s@DeleteObjectsOnCancel' {} a -> s {objects = a} :: DeleteObjectsOnCancel) Prelude.. Lens.coerced++instance Core.AWSRequest DeleteObjectsOnCancel where+  type+    AWSResponse DeleteObjectsOnCancel =+      DeleteObjectsOnCancelResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteObjectsOnCancelResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteObjectsOnCancel where+  hashWithSalt _salt DeleteObjectsOnCancel' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` databaseName+      `Prelude.hashWithSalt` tableName+      `Prelude.hashWithSalt` transactionId+      `Prelude.hashWithSalt` objects++instance Prelude.NFData DeleteObjectsOnCancel where+  rnf DeleteObjectsOnCancel' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf databaseName+      `Prelude.seq` Prelude.rnf tableName+      `Prelude.seq` Prelude.rnf transactionId+      `Prelude.seq` Prelude.rnf objects++instance Data.ToHeaders DeleteObjectsOnCancel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteObjectsOnCancel where+  toJSON DeleteObjectsOnCancel' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("DatabaseName" Data..= databaseName),+            Prelude.Just ("TableName" Data..= tableName),+            Prelude.Just ("TransactionId" Data..= transactionId),+            Prelude.Just ("Objects" Data..= objects)+          ]+      )++instance Data.ToPath DeleteObjectsOnCancel where+  toPath = Prelude.const "/DeleteObjectsOnCancel"++instance Data.ToQuery DeleteObjectsOnCancel where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteObjectsOnCancelResponse' smart constructor.+data DeleteObjectsOnCancelResponse = DeleteObjectsOnCancelResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteObjectsOnCancelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteObjectsOnCancelResponse_httpStatus' - The response's http status code.+newDeleteObjectsOnCancelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteObjectsOnCancelResponse+newDeleteObjectsOnCancelResponse pHttpStatus_ =+  DeleteObjectsOnCancelResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteObjectsOnCancelResponse_httpStatus :: Lens.Lens' DeleteObjectsOnCancelResponse Prelude.Int+deleteObjectsOnCancelResponse_httpStatus = Lens.lens (\DeleteObjectsOnCancelResponse' {httpStatus} -> httpStatus) (\s@DeleteObjectsOnCancelResponse' {} a -> s {httpStatus = a} :: DeleteObjectsOnCancelResponse)++instance Prelude.NFData DeleteObjectsOnCancelResponse where+  rnf DeleteObjectsOnCancelResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/DeregisterResource.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.DeregisterResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deregisters the resource as managed by the Data Catalog.+--+-- When you deregister a path, Lake Formation removes the path from the+-- inline policy attached to your service-linked role.+module Amazonka.LakeFormation.DeregisterResource+  ( -- * Creating a Request+    DeregisterResource (..),+    newDeregisterResource,++    -- * Request Lenses+    deregisterResource_resourceArn,++    -- * Destructuring the Response+    DeregisterResourceResponse (..),+    newDeregisterResourceResponse,++    -- * Response Lenses+    deregisterResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeregisterResource' smart constructor.+data DeregisterResource = DeregisterResource'+  { -- | The Amazon Resource Name (ARN) of the resource that you want to+    -- deregister.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeregisterResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'deregisterResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to+-- deregister.+newDeregisterResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  DeregisterResource+newDeregisterResource pResourceArn_ =+  DeregisterResource' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) of the resource that you want to+-- deregister.+deregisterResource_resourceArn :: Lens.Lens' DeregisterResource Prelude.Text+deregisterResource_resourceArn = Lens.lens (\DeregisterResource' {resourceArn} -> resourceArn) (\s@DeregisterResource' {} a -> s {resourceArn = a} :: DeregisterResource)++instance Core.AWSRequest DeregisterResource where+  type+    AWSResponse DeregisterResource =+      DeregisterResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeregisterResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeregisterResource where+  hashWithSalt _salt DeregisterResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData DeregisterResource where+  rnf DeregisterResource' {..} = Prelude.rnf resourceArn++instance Data.ToHeaders DeregisterResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeregisterResource where+  toJSON DeregisterResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ResourceArn" Data..= resourceArn)]+      )++instance Data.ToPath DeregisterResource where+  toPath = Prelude.const "/DeregisterResource"++instance Data.ToQuery DeregisterResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeregisterResourceResponse' smart constructor.+data DeregisterResourceResponse = DeregisterResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeregisterResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deregisterResourceResponse_httpStatus' - The response's http status code.+newDeregisterResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeregisterResourceResponse+newDeregisterResourceResponse pHttpStatus_ =+  DeregisterResourceResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deregisterResourceResponse_httpStatus :: Lens.Lens' DeregisterResourceResponse Prelude.Int+deregisterResourceResponse_httpStatus = Lens.lens (\DeregisterResourceResponse' {httpStatus} -> httpStatus) (\s@DeregisterResourceResponse' {} a -> s {httpStatus = a} :: DeregisterResourceResponse)++instance Prelude.NFData DeregisterResourceResponse where+  rnf DeregisterResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/DescribeResource.hs view
@@ -0,0 +1,165 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.DescribeResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the current data access role for the given resource registered+-- in Lake Formation.+module Amazonka.LakeFormation.DescribeResource+  ( -- * Creating a Request+    DescribeResource (..),+    newDescribeResource,++    -- * Request Lenses+    describeResource_resourceArn,++    -- * Destructuring the Response+    DescribeResourceResponse (..),+    newDescribeResourceResponse,++    -- * Response Lenses+    describeResourceResponse_resourceInfo,+    describeResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeResource' smart constructor.+data DescribeResource = DescribeResource'+  { -- | The resource ARN.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'describeResource_resourceArn' - The resource ARN.+newDescribeResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  DescribeResource+newDescribeResource pResourceArn_ =+  DescribeResource' {resourceArn = pResourceArn_}++-- | The resource ARN.+describeResource_resourceArn :: Lens.Lens' DescribeResource Prelude.Text+describeResource_resourceArn = Lens.lens (\DescribeResource' {resourceArn} -> resourceArn) (\s@DescribeResource' {} a -> s {resourceArn = a} :: DescribeResource)++instance Core.AWSRequest DescribeResource where+  type+    AWSResponse DescribeResource =+      DescribeResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeResourceResponse'+            Prelude.<$> (x Data..?> "ResourceInfo")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeResource where+  hashWithSalt _salt DescribeResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData DescribeResource where+  rnf DescribeResource' {..} = Prelude.rnf resourceArn++instance Data.ToHeaders DescribeResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeResource where+  toJSON DescribeResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ResourceArn" Data..= resourceArn)]+      )++instance Data.ToPath DescribeResource where+  toPath = Prelude.const "/DescribeResource"++instance Data.ToQuery DescribeResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeResourceResponse' smart constructor.+data DescribeResourceResponse = DescribeResourceResponse'+  { -- | A structure containing information about an Lake Formation resource.+    resourceInfo :: Prelude.Maybe ResourceInfo,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceInfo', 'describeResourceResponse_resourceInfo' - A structure containing information about an Lake Formation resource.+--+-- 'httpStatus', 'describeResourceResponse_httpStatus' - The response's http status code.+newDescribeResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeResourceResponse+newDescribeResourceResponse pHttpStatus_ =+  DescribeResourceResponse'+    { resourceInfo =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A structure containing information about an Lake Formation resource.+describeResourceResponse_resourceInfo :: Lens.Lens' DescribeResourceResponse (Prelude.Maybe ResourceInfo)+describeResourceResponse_resourceInfo = Lens.lens (\DescribeResourceResponse' {resourceInfo} -> resourceInfo) (\s@DescribeResourceResponse' {} a -> s {resourceInfo = a} :: DescribeResourceResponse)++-- | The response's http status code.+describeResourceResponse_httpStatus :: Lens.Lens' DescribeResourceResponse Prelude.Int+describeResourceResponse_httpStatus = Lens.lens (\DescribeResourceResponse' {httpStatus} -> httpStatus) (\s@DescribeResourceResponse' {} a -> s {httpStatus = a} :: DescribeResourceResponse)++instance Prelude.NFData DescribeResourceResponse where+  rnf DescribeResourceResponse' {..} =+    Prelude.rnf resourceInfo+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/DescribeTransaction.hs view
@@ -0,0 +1,173 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.DescribeTransaction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the details of a single transaction.+module Amazonka.LakeFormation.DescribeTransaction+  ( -- * Creating a Request+    DescribeTransaction (..),+    newDescribeTransaction,++    -- * Request Lenses+    describeTransaction_transactionId,++    -- * Destructuring the Response+    DescribeTransactionResponse (..),+    newDescribeTransactionResponse,++    -- * Response Lenses+    describeTransactionResponse_transactionDescription,+    describeTransactionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeTransaction' smart constructor.+data DescribeTransaction = DescribeTransaction'+  { -- | The transaction for which to return status.+    transactionId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeTransaction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'transactionId', 'describeTransaction_transactionId' - The transaction for which to return status.+newDescribeTransaction ::+  -- | 'transactionId'+  Prelude.Text ->+  DescribeTransaction+newDescribeTransaction pTransactionId_ =+  DescribeTransaction'+    { transactionId =+        pTransactionId_+    }++-- | The transaction for which to return status.+describeTransaction_transactionId :: Lens.Lens' DescribeTransaction Prelude.Text+describeTransaction_transactionId = Lens.lens (\DescribeTransaction' {transactionId} -> transactionId) (\s@DescribeTransaction' {} a -> s {transactionId = a} :: DescribeTransaction)++instance Core.AWSRequest DescribeTransaction where+  type+    AWSResponse DescribeTransaction =+      DescribeTransactionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeTransactionResponse'+            Prelude.<$> (x Data..?> "TransactionDescription")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeTransaction where+  hashWithSalt _salt DescribeTransaction' {..} =+    _salt `Prelude.hashWithSalt` transactionId++instance Prelude.NFData DescribeTransaction where+  rnf DescribeTransaction' {..} =+    Prelude.rnf transactionId++instance Data.ToHeaders DescribeTransaction where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeTransaction where+  toJSON DescribeTransaction' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("TransactionId" Data..= transactionId)+          ]+      )++instance Data.ToPath DescribeTransaction where+  toPath = Prelude.const "/DescribeTransaction"++instance Data.ToQuery DescribeTransaction where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeTransactionResponse' smart constructor.+data DescribeTransactionResponse = DescribeTransactionResponse'+  { -- | Returns a @TransactionDescription@ object containing information about+    -- the transaction.+    transactionDescription :: Prelude.Maybe TransactionDescription,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeTransactionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'transactionDescription', 'describeTransactionResponse_transactionDescription' - Returns a @TransactionDescription@ object containing information about+-- the transaction.+--+-- 'httpStatus', 'describeTransactionResponse_httpStatus' - The response's http status code.+newDescribeTransactionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeTransactionResponse+newDescribeTransactionResponse pHttpStatus_ =+  DescribeTransactionResponse'+    { transactionDescription =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Returns a @TransactionDescription@ object containing information about+-- the transaction.+describeTransactionResponse_transactionDescription :: Lens.Lens' DescribeTransactionResponse (Prelude.Maybe TransactionDescription)+describeTransactionResponse_transactionDescription = Lens.lens (\DescribeTransactionResponse' {transactionDescription} -> transactionDescription) (\s@DescribeTransactionResponse' {} a -> s {transactionDescription = a} :: DescribeTransactionResponse)++-- | The response's http status code.+describeTransactionResponse_httpStatus :: Lens.Lens' DescribeTransactionResponse Prelude.Int+describeTransactionResponse_httpStatus = Lens.lens (\DescribeTransactionResponse' {httpStatus} -> httpStatus) (\s@DescribeTransactionResponse' {} a -> s {httpStatus = a} :: DescribeTransactionResponse)++instance Prelude.NFData DescribeTransactionResponse where+  rnf DescribeTransactionResponse' {..} =+    Prelude.rnf transactionDescription+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/ExtendTransaction.hs view
@@ -0,0 +1,157 @@+{-# 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.LakeFormation.ExtendTransaction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Indicates to the service that the specified transaction is still active+-- and should not be treated as idle and aborted.+--+-- Write transactions that remain idle for a long period are automatically+-- aborted unless explicitly extended.+module Amazonka.LakeFormation.ExtendTransaction+  ( -- * Creating a Request+    ExtendTransaction (..),+    newExtendTransaction,++    -- * Request Lenses+    extendTransaction_transactionId,++    -- * Destructuring the Response+    ExtendTransactionResponse (..),+    newExtendTransactionResponse,++    -- * Response Lenses+    extendTransactionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newExtendTransaction' smart constructor.+data ExtendTransaction = ExtendTransaction'+  { -- | The transaction to extend.+    transactionId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExtendTransaction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'transactionId', 'extendTransaction_transactionId' - The transaction to extend.+newExtendTransaction ::+  ExtendTransaction+newExtendTransaction =+  ExtendTransaction' {transactionId = Prelude.Nothing}++-- | The transaction to extend.+extendTransaction_transactionId :: Lens.Lens' ExtendTransaction (Prelude.Maybe Prelude.Text)+extendTransaction_transactionId = Lens.lens (\ExtendTransaction' {transactionId} -> transactionId) (\s@ExtendTransaction' {} a -> s {transactionId = a} :: ExtendTransaction)++instance Core.AWSRequest ExtendTransaction where+  type+    AWSResponse ExtendTransaction =+      ExtendTransactionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          ExtendTransactionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ExtendTransaction where+  hashWithSalt _salt ExtendTransaction' {..} =+    _salt `Prelude.hashWithSalt` transactionId++instance Prelude.NFData ExtendTransaction where+  rnf ExtendTransaction' {..} =+    Prelude.rnf transactionId++instance Data.ToHeaders ExtendTransaction where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ExtendTransaction where+  toJSON ExtendTransaction' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("TransactionId" Data..=)+              Prelude.<$> transactionId+          ]+      )++instance Data.ToPath ExtendTransaction where+  toPath = Prelude.const "/ExtendTransaction"++instance Data.ToQuery ExtendTransaction where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newExtendTransactionResponse' smart constructor.+data ExtendTransactionResponse = ExtendTransactionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExtendTransactionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'extendTransactionResponse_httpStatus' - The response's http status code.+newExtendTransactionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ExtendTransactionResponse+newExtendTransactionResponse pHttpStatus_ =+  ExtendTransactionResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+extendTransactionResponse_httpStatus :: Lens.Lens' ExtendTransactionResponse Prelude.Int+extendTransactionResponse_httpStatus = Lens.lens (\ExtendTransactionResponse' {httpStatus} -> httpStatus) (\s@ExtendTransactionResponse' {} a -> s {httpStatus = a} :: ExtendTransactionResponse)++instance Prelude.NFData ExtendTransactionResponse where+  rnf ExtendTransactionResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/GetDataLakeSettings.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.GetDataLakeSettings+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the list of the data lake administrators of a Lake+-- Formation-managed data lake.+module Amazonka.LakeFormation.GetDataLakeSettings+  ( -- * Creating a Request+    GetDataLakeSettings (..),+    newGetDataLakeSettings,++    -- * Request Lenses+    getDataLakeSettings_catalogId,++    -- * Destructuring the Response+    GetDataLakeSettingsResponse (..),+    newGetDataLakeSettingsResponse,++    -- * Response Lenses+    getDataLakeSettingsResponse_dataLakeSettings,+    getDataLakeSettingsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetDataLakeSettings' smart constructor.+data GetDataLakeSettings = GetDataLakeSettings'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDataLakeSettings' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'getDataLakeSettings_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+newGetDataLakeSettings ::+  GetDataLakeSettings+newGetDataLakeSettings =+  GetDataLakeSettings' {catalogId = Prelude.Nothing}++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+getDataLakeSettings_catalogId :: Lens.Lens' GetDataLakeSettings (Prelude.Maybe Prelude.Text)+getDataLakeSettings_catalogId = Lens.lens (\GetDataLakeSettings' {catalogId} -> catalogId) (\s@GetDataLakeSettings' {} a -> s {catalogId = a} :: GetDataLakeSettings)++instance Core.AWSRequest GetDataLakeSettings where+  type+    AWSResponse GetDataLakeSettings =+      GetDataLakeSettingsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDataLakeSettingsResponse'+            Prelude.<$> (x Data..?> "DataLakeSettings")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetDataLakeSettings where+  hashWithSalt _salt GetDataLakeSettings' {..} =+    _salt `Prelude.hashWithSalt` catalogId++instance Prelude.NFData GetDataLakeSettings where+  rnf GetDataLakeSettings' {..} = Prelude.rnf catalogId++instance Data.ToHeaders GetDataLakeSettings where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetDataLakeSettings where+  toJSON GetDataLakeSettings' {..} =+    Data.object+      ( Prelude.catMaybes+          [("CatalogId" Data..=) Prelude.<$> catalogId]+      )++instance Data.ToPath GetDataLakeSettings where+  toPath = Prelude.const "/GetDataLakeSettings"++instance Data.ToQuery GetDataLakeSettings where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetDataLakeSettingsResponse' smart constructor.+data GetDataLakeSettingsResponse = GetDataLakeSettingsResponse'+  { -- | A structure representing a list of Lake Formation principals designated+    -- as data lake administrators.+    dataLakeSettings :: Prelude.Maybe DataLakeSettings,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDataLakeSettingsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataLakeSettings', 'getDataLakeSettingsResponse_dataLakeSettings' - A structure representing a list of Lake Formation principals designated+-- as data lake administrators.+--+-- 'httpStatus', 'getDataLakeSettingsResponse_httpStatus' - The response's http status code.+newGetDataLakeSettingsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetDataLakeSettingsResponse+newGetDataLakeSettingsResponse pHttpStatus_ =+  GetDataLakeSettingsResponse'+    { dataLakeSettings =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A structure representing a list of Lake Formation principals designated+-- as data lake administrators.+getDataLakeSettingsResponse_dataLakeSettings :: Lens.Lens' GetDataLakeSettingsResponse (Prelude.Maybe DataLakeSettings)+getDataLakeSettingsResponse_dataLakeSettings = Lens.lens (\GetDataLakeSettingsResponse' {dataLakeSettings} -> dataLakeSettings) (\s@GetDataLakeSettingsResponse' {} a -> s {dataLakeSettings = a} :: GetDataLakeSettingsResponse)++-- | The response's http status code.+getDataLakeSettingsResponse_httpStatus :: Lens.Lens' GetDataLakeSettingsResponse Prelude.Int+getDataLakeSettingsResponse_httpStatus = Lens.lens (\GetDataLakeSettingsResponse' {httpStatus} -> httpStatus) (\s@GetDataLakeSettingsResponse' {} a -> s {httpStatus = a} :: GetDataLakeSettingsResponse)++instance Prelude.NFData GetDataLakeSettingsResponse where+  rnf GetDataLakeSettingsResponse' {..} =+    Prelude.rnf dataLakeSettings+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/GetEffectivePermissionsForPath.hs view
@@ -0,0 +1,264 @@+{-# 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.LakeFormation.GetEffectivePermissionsForPath+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the Lake Formation permissions for a specified table or database+-- resource located at a path in Amazon S3.+-- @GetEffectivePermissionsForPath@ will not return databases and tables if+-- the catalog is encrypted.+module Amazonka.LakeFormation.GetEffectivePermissionsForPath+  ( -- * Creating a Request+    GetEffectivePermissionsForPath (..),+    newGetEffectivePermissionsForPath,++    -- * Request Lenses+    getEffectivePermissionsForPath_catalogId,+    getEffectivePermissionsForPath_maxResults,+    getEffectivePermissionsForPath_nextToken,+    getEffectivePermissionsForPath_resourceArn,++    -- * Destructuring the Response+    GetEffectivePermissionsForPathResponse (..),+    newGetEffectivePermissionsForPathResponse,++    -- * Response Lenses+    getEffectivePermissionsForPathResponse_nextToken,+    getEffectivePermissionsForPathResponse_permissions,+    getEffectivePermissionsForPathResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetEffectivePermissionsForPath' smart constructor.+data GetEffectivePermissionsForPath = GetEffectivePermissionsForPath'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of results to return.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A continuation token, if this is not the first call to retrieve this+    -- list.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the resource for which you want to get+    -- permissions.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetEffectivePermissionsForPath' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'getEffectivePermissionsForPath_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'maxResults', 'getEffectivePermissionsForPath_maxResults' - The maximum number of results to return.+--+-- 'nextToken', 'getEffectivePermissionsForPath_nextToken' - A continuation token, if this is not the first call to retrieve this+-- list.+--+-- 'resourceArn', 'getEffectivePermissionsForPath_resourceArn' - The Amazon Resource Name (ARN) of the resource for which you want to get+-- permissions.+newGetEffectivePermissionsForPath ::+  -- | 'resourceArn'+  Prelude.Text ->+  GetEffectivePermissionsForPath+newGetEffectivePermissionsForPath pResourceArn_ =+  GetEffectivePermissionsForPath'+    { catalogId =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      resourceArn = pResourceArn_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+getEffectivePermissionsForPath_catalogId :: Lens.Lens' GetEffectivePermissionsForPath (Prelude.Maybe Prelude.Text)+getEffectivePermissionsForPath_catalogId = Lens.lens (\GetEffectivePermissionsForPath' {catalogId} -> catalogId) (\s@GetEffectivePermissionsForPath' {} a -> s {catalogId = a} :: GetEffectivePermissionsForPath)++-- | The maximum number of results to return.+getEffectivePermissionsForPath_maxResults :: Lens.Lens' GetEffectivePermissionsForPath (Prelude.Maybe Prelude.Natural)+getEffectivePermissionsForPath_maxResults = Lens.lens (\GetEffectivePermissionsForPath' {maxResults} -> maxResults) (\s@GetEffectivePermissionsForPath' {} a -> s {maxResults = a} :: GetEffectivePermissionsForPath)++-- | A continuation token, if this is not the first call to retrieve this+-- list.+getEffectivePermissionsForPath_nextToken :: Lens.Lens' GetEffectivePermissionsForPath (Prelude.Maybe Prelude.Text)+getEffectivePermissionsForPath_nextToken = Lens.lens (\GetEffectivePermissionsForPath' {nextToken} -> nextToken) (\s@GetEffectivePermissionsForPath' {} a -> s {nextToken = a} :: GetEffectivePermissionsForPath)++-- | The Amazon Resource Name (ARN) of the resource for which you want to get+-- permissions.+getEffectivePermissionsForPath_resourceArn :: Lens.Lens' GetEffectivePermissionsForPath Prelude.Text+getEffectivePermissionsForPath_resourceArn = Lens.lens (\GetEffectivePermissionsForPath' {resourceArn} -> resourceArn) (\s@GetEffectivePermissionsForPath' {} a -> s {resourceArn = a} :: GetEffectivePermissionsForPath)++instance+  Core.AWSRequest+    GetEffectivePermissionsForPath+  where+  type+    AWSResponse GetEffectivePermissionsForPath =+      GetEffectivePermissionsForPathResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetEffectivePermissionsForPathResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "Permissions" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    GetEffectivePermissionsForPath+  where+  hashWithSalt+    _salt+    GetEffectivePermissionsForPath' {..} =+      _salt+        `Prelude.hashWithSalt` catalogId+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` resourceArn++instance+  Prelude.NFData+    GetEffectivePermissionsForPath+  where+  rnf GetEffectivePermissionsForPath' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf resourceArn++instance+  Data.ToHeaders+    GetEffectivePermissionsForPath+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetEffectivePermissionsForPath where+  toJSON GetEffectivePermissionsForPath' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("ResourceArn" Data..= resourceArn)+          ]+      )++instance Data.ToPath GetEffectivePermissionsForPath where+  toPath =+    Prelude.const "/GetEffectivePermissionsForPath"++instance Data.ToQuery GetEffectivePermissionsForPath where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetEffectivePermissionsForPathResponse' smart constructor.+data GetEffectivePermissionsForPathResponse = GetEffectivePermissionsForPathResponse'+  { -- | A continuation token, if this is not the first call to retrieve this+    -- list.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of the permissions for the specified table or database resource+    -- located at the path in Amazon S3.+    permissions :: Prelude.Maybe [PrincipalResourcePermissions],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetEffectivePermissionsForPathResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'getEffectivePermissionsForPathResponse_nextToken' - A continuation token, if this is not the first call to retrieve this+-- list.+--+-- 'permissions', 'getEffectivePermissionsForPathResponse_permissions' - A list of the permissions for the specified table or database resource+-- located at the path in Amazon S3.+--+-- 'httpStatus', 'getEffectivePermissionsForPathResponse_httpStatus' - The response's http status code.+newGetEffectivePermissionsForPathResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetEffectivePermissionsForPathResponse+newGetEffectivePermissionsForPathResponse+  pHttpStatus_ =+    GetEffectivePermissionsForPathResponse'+      { nextToken =+          Prelude.Nothing,+        permissions = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | A continuation token, if this is not the first call to retrieve this+-- list.+getEffectivePermissionsForPathResponse_nextToken :: Lens.Lens' GetEffectivePermissionsForPathResponse (Prelude.Maybe Prelude.Text)+getEffectivePermissionsForPathResponse_nextToken = Lens.lens (\GetEffectivePermissionsForPathResponse' {nextToken} -> nextToken) (\s@GetEffectivePermissionsForPathResponse' {} a -> s {nextToken = a} :: GetEffectivePermissionsForPathResponse)++-- | A list of the permissions for the specified table or database resource+-- located at the path in Amazon S3.+getEffectivePermissionsForPathResponse_permissions :: Lens.Lens' GetEffectivePermissionsForPathResponse (Prelude.Maybe [PrincipalResourcePermissions])+getEffectivePermissionsForPathResponse_permissions = Lens.lens (\GetEffectivePermissionsForPathResponse' {permissions} -> permissions) (\s@GetEffectivePermissionsForPathResponse' {} a -> s {permissions = a} :: GetEffectivePermissionsForPathResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getEffectivePermissionsForPathResponse_httpStatus :: Lens.Lens' GetEffectivePermissionsForPathResponse Prelude.Int+getEffectivePermissionsForPathResponse_httpStatus = Lens.lens (\GetEffectivePermissionsForPathResponse' {httpStatus} -> httpStatus) (\s@GetEffectivePermissionsForPathResponse' {} a -> s {httpStatus = a} :: GetEffectivePermissionsForPathResponse)++instance+  Prelude.NFData+    GetEffectivePermissionsForPathResponse+  where+  rnf GetEffectivePermissionsForPathResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf permissions+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/GetLFTag.hs view
@@ -0,0 +1,221 @@+{-# 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.LakeFormation.GetLFTag+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns an LF-tag definition.+module Amazonka.LakeFormation.GetLFTag+  ( -- * Creating a Request+    GetLFTag (..),+    newGetLFTag,++    -- * Request Lenses+    getLFTag_catalogId,+    getLFTag_tagKey,++    -- * Destructuring the Response+    GetLFTagResponse (..),+    newGetLFTagResponse,++    -- * Response Lenses+    getLFTagResponse_catalogId,+    getLFTagResponse_tagKey,+    getLFTagResponse_tagValues,+    getLFTagResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetLFTag' smart constructor.+data GetLFTag = GetLFTag'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The key-name for the LF-tag.+    tagKey :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetLFTag' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'getLFTag_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'tagKey', 'getLFTag_tagKey' - The key-name for the LF-tag.+newGetLFTag ::+  -- | 'tagKey'+  Prelude.Text ->+  GetLFTag+newGetLFTag pTagKey_ =+  GetLFTag'+    { catalogId = Prelude.Nothing,+      tagKey = pTagKey_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+getLFTag_catalogId :: Lens.Lens' GetLFTag (Prelude.Maybe Prelude.Text)+getLFTag_catalogId = Lens.lens (\GetLFTag' {catalogId} -> catalogId) (\s@GetLFTag' {} a -> s {catalogId = a} :: GetLFTag)++-- | The key-name for the LF-tag.+getLFTag_tagKey :: Lens.Lens' GetLFTag Prelude.Text+getLFTag_tagKey = Lens.lens (\GetLFTag' {tagKey} -> tagKey) (\s@GetLFTag' {} a -> s {tagKey = a} :: GetLFTag)++instance Core.AWSRequest GetLFTag where+  type AWSResponse GetLFTag = GetLFTagResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetLFTagResponse'+            Prelude.<$> (x Data..?> "CatalogId")+            Prelude.<*> (x Data..?> "TagKey")+            Prelude.<*> (x Data..?> "TagValues")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetLFTag where+  hashWithSalt _salt GetLFTag' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` tagKey++instance Prelude.NFData GetLFTag where+  rnf GetLFTag' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf tagKey++instance Data.ToHeaders GetLFTag where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetLFTag where+  toJSON GetLFTag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("TagKey" Data..= tagKey)+          ]+      )++instance Data.ToPath GetLFTag where+  toPath = Prelude.const "/GetLFTag"++instance Data.ToQuery GetLFTag where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetLFTagResponse' smart constructor.+data GetLFTagResponse = GetLFTagResponse'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The key-name for the LF-tag.+    tagKey :: Prelude.Maybe Prelude.Text,+    -- | A list of possible values an attribute can take.+    tagValues :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetLFTagResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'getLFTagResponse_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'tagKey', 'getLFTagResponse_tagKey' - The key-name for the LF-tag.+--+-- 'tagValues', 'getLFTagResponse_tagValues' - A list of possible values an attribute can take.+--+-- 'httpStatus', 'getLFTagResponse_httpStatus' - The response's http status code.+newGetLFTagResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetLFTagResponse+newGetLFTagResponse pHttpStatus_ =+  GetLFTagResponse'+    { catalogId = Prelude.Nothing,+      tagKey = Prelude.Nothing,+      tagValues = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+getLFTagResponse_catalogId :: Lens.Lens' GetLFTagResponse (Prelude.Maybe Prelude.Text)+getLFTagResponse_catalogId = Lens.lens (\GetLFTagResponse' {catalogId} -> catalogId) (\s@GetLFTagResponse' {} a -> s {catalogId = a} :: GetLFTagResponse)++-- | The key-name for the LF-tag.+getLFTagResponse_tagKey :: Lens.Lens' GetLFTagResponse (Prelude.Maybe Prelude.Text)+getLFTagResponse_tagKey = Lens.lens (\GetLFTagResponse' {tagKey} -> tagKey) (\s@GetLFTagResponse' {} a -> s {tagKey = a} :: GetLFTagResponse)++-- | A list of possible values an attribute can take.+getLFTagResponse_tagValues :: Lens.Lens' GetLFTagResponse (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+getLFTagResponse_tagValues = Lens.lens (\GetLFTagResponse' {tagValues} -> tagValues) (\s@GetLFTagResponse' {} a -> s {tagValues = a} :: GetLFTagResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getLFTagResponse_httpStatus :: Lens.Lens' GetLFTagResponse Prelude.Int+getLFTagResponse_httpStatus = Lens.lens (\GetLFTagResponse' {httpStatus} -> httpStatus) (\s@GetLFTagResponse' {} a -> s {httpStatus = a} :: GetLFTagResponse)++instance Prelude.NFData GetLFTagResponse where+  rnf GetLFTagResponse' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf tagKey+      `Prelude.seq` Prelude.rnf tagValues+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/GetQueryState.hs view
@@ -0,0 +1,215 @@+{-# 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.LakeFormation.GetQueryState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the state of a query previously submitted. Clients are expected+-- to poll @GetQueryState@ to monitor the current state of the planning+-- before retrieving the work units. A query state is only visible to the+-- principal that made the initial call to @StartQueryPlanning@.+module Amazonka.LakeFormation.GetQueryState+  ( -- * Creating a Request+    GetQueryState (..),+    newGetQueryState,++    -- * Request Lenses+    getQueryState_queryId,++    -- * Destructuring the Response+    GetQueryStateResponse (..),+    newGetQueryStateResponse,++    -- * Response Lenses+    getQueryStateResponse_error,+    getQueryStateResponse_httpStatus,+    getQueryStateResponse_state,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetQueryState' smart constructor.+data GetQueryState = GetQueryState'+  { -- | The ID of the plan query operation.+    queryId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetQueryState' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'queryId', 'getQueryState_queryId' - The ID of the plan query operation.+newGetQueryState ::+  -- | 'queryId'+  Prelude.Text ->+  GetQueryState+newGetQueryState pQueryId_ =+  GetQueryState' {queryId = pQueryId_}++-- | The ID of the plan query operation.+getQueryState_queryId :: Lens.Lens' GetQueryState Prelude.Text+getQueryState_queryId = Lens.lens (\GetQueryState' {queryId} -> queryId) (\s@GetQueryState' {} a -> s {queryId = a} :: GetQueryState)++instance Core.AWSRequest GetQueryState where+  type+    AWSResponse GetQueryState =+      GetQueryStateResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetQueryStateResponse'+            Prelude.<$> (x Data..?> "Error")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "State")+      )++instance Prelude.Hashable GetQueryState where+  hashWithSalt _salt GetQueryState' {..} =+    _salt `Prelude.hashWithSalt` queryId++instance Prelude.NFData GetQueryState where+  rnf GetQueryState' {..} = Prelude.rnf queryId++instance Data.ToHeaders GetQueryState where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetQueryState where+  toJSON GetQueryState' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("QueryId" Data..= queryId)]+      )++instance Data.ToPath GetQueryState where+  toPath = Prelude.const "/GetQueryState"++instance Data.ToQuery GetQueryState where+  toQuery = Prelude.const Prelude.mempty++-- | A structure for the output.+--+-- /See:/ 'newGetQueryStateResponse' smart constructor.+data GetQueryStateResponse = GetQueryStateResponse'+  { -- | An error message when the operation fails.+    error :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The state of a query previously submitted. The possible states are:+    --+    -- -   PENDING: the query is pending.+    --+    -- -   WORKUNITS_AVAILABLE: some work units are ready for retrieval and+    --     execution.+    --+    -- -   FINISHED: the query planning finished successfully, and all work+    --     units are ready for retrieval and execution.+    --+    -- -   ERROR: an error occurred with the query, such as an invalid query ID+    --     or a backend error.+    state :: QueryStateString+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetQueryStateResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'error', 'getQueryStateResponse_error' - An error message when the operation fails.+--+-- 'httpStatus', 'getQueryStateResponse_httpStatus' - The response's http status code.+--+-- 'state', 'getQueryStateResponse_state' - The state of a query previously submitted. The possible states are:+--+-- -   PENDING: the query is pending.+--+-- -   WORKUNITS_AVAILABLE: some work units are ready for retrieval and+--     execution.+--+-- -   FINISHED: the query planning finished successfully, and all work+--     units are ready for retrieval and execution.+--+-- -   ERROR: an error occurred with the query, such as an invalid query ID+--     or a backend error.+newGetQueryStateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'state'+  QueryStateString ->+  GetQueryStateResponse+newGetQueryStateResponse pHttpStatus_ pState_ =+  GetQueryStateResponse'+    { error = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      state = pState_+    }++-- | An error message when the operation fails.+getQueryStateResponse_error :: Lens.Lens' GetQueryStateResponse (Prelude.Maybe Prelude.Text)+getQueryStateResponse_error = Lens.lens (\GetQueryStateResponse' {error} -> error) (\s@GetQueryStateResponse' {} a -> s {error = a} :: GetQueryStateResponse)++-- | The response's http status code.+getQueryStateResponse_httpStatus :: Lens.Lens' GetQueryStateResponse Prelude.Int+getQueryStateResponse_httpStatus = Lens.lens (\GetQueryStateResponse' {httpStatus} -> httpStatus) (\s@GetQueryStateResponse' {} a -> s {httpStatus = a} :: GetQueryStateResponse)++-- | The state of a query previously submitted. The possible states are:+--+-- -   PENDING: the query is pending.+--+-- -   WORKUNITS_AVAILABLE: some work units are ready for retrieval and+--     execution.+--+-- -   FINISHED: the query planning finished successfully, and all work+--     units are ready for retrieval and execution.+--+-- -   ERROR: an error occurred with the query, such as an invalid query ID+--     or a backend error.+getQueryStateResponse_state :: Lens.Lens' GetQueryStateResponse QueryStateString+getQueryStateResponse_state = Lens.lens (\GetQueryStateResponse' {state} -> state) (\s@GetQueryStateResponse' {} a -> s {state = a} :: GetQueryStateResponse)++instance Prelude.NFData GetQueryStateResponse where+  rnf GetQueryStateResponse' {..} =+    Prelude.rnf error+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/LakeFormation/GetQueryStatistics.hs view
@@ -0,0 +1,188 @@+{-# 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.LakeFormation.GetQueryStatistics+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves statistics on the planning and execution of a query.+module Amazonka.LakeFormation.GetQueryStatistics+  ( -- * Creating a Request+    GetQueryStatistics (..),+    newGetQueryStatistics,++    -- * Request Lenses+    getQueryStatistics_queryId,++    -- * Destructuring the Response+    GetQueryStatisticsResponse (..),+    newGetQueryStatisticsResponse,++    -- * Response Lenses+    getQueryStatisticsResponse_executionStatistics,+    getQueryStatisticsResponse_planningStatistics,+    getQueryStatisticsResponse_querySubmissionTime,+    getQueryStatisticsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetQueryStatistics' smart constructor.+data GetQueryStatistics = GetQueryStatistics'+  { -- | The ID of the plan query operation.+    queryId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetQueryStatistics' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'queryId', 'getQueryStatistics_queryId' - The ID of the plan query operation.+newGetQueryStatistics ::+  -- | 'queryId'+  Prelude.Text ->+  GetQueryStatistics+newGetQueryStatistics pQueryId_ =+  GetQueryStatistics' {queryId = pQueryId_}++-- | The ID of the plan query operation.+getQueryStatistics_queryId :: Lens.Lens' GetQueryStatistics Prelude.Text+getQueryStatistics_queryId = Lens.lens (\GetQueryStatistics' {queryId} -> queryId) (\s@GetQueryStatistics' {} a -> s {queryId = a} :: GetQueryStatistics)++instance Core.AWSRequest GetQueryStatistics where+  type+    AWSResponse GetQueryStatistics =+      GetQueryStatisticsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetQueryStatisticsResponse'+            Prelude.<$> (x Data..?> "ExecutionStatistics")+            Prelude.<*> (x Data..?> "PlanningStatistics")+            Prelude.<*> (x Data..?> "QuerySubmissionTime")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetQueryStatistics where+  hashWithSalt _salt GetQueryStatistics' {..} =+    _salt `Prelude.hashWithSalt` queryId++instance Prelude.NFData GetQueryStatistics where+  rnf GetQueryStatistics' {..} = Prelude.rnf queryId++instance Data.ToHeaders GetQueryStatistics where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetQueryStatistics where+  toJSON GetQueryStatistics' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("QueryId" Data..= queryId)]+      )++instance Data.ToPath GetQueryStatistics where+  toPath = Prelude.const "/GetQueryStatistics"++instance Data.ToQuery GetQueryStatistics where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetQueryStatisticsResponse' smart constructor.+data GetQueryStatisticsResponse = GetQueryStatisticsResponse'+  { -- | An @ExecutionStatistics@ structure containing execution statistics.+    executionStatistics :: Prelude.Maybe ExecutionStatistics,+    -- | A @PlanningStatistics@ structure containing query planning statistics.+    planningStatistics :: Prelude.Maybe PlanningStatistics,+    -- | The time that the query was submitted.+    querySubmissionTime :: Prelude.Maybe Data.ISO8601,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetQueryStatisticsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'executionStatistics', 'getQueryStatisticsResponse_executionStatistics' - An @ExecutionStatistics@ structure containing execution statistics.+--+-- 'planningStatistics', 'getQueryStatisticsResponse_planningStatistics' - A @PlanningStatistics@ structure containing query planning statistics.+--+-- 'querySubmissionTime', 'getQueryStatisticsResponse_querySubmissionTime' - The time that the query was submitted.+--+-- 'httpStatus', 'getQueryStatisticsResponse_httpStatus' - The response's http status code.+newGetQueryStatisticsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetQueryStatisticsResponse+newGetQueryStatisticsResponse pHttpStatus_ =+  GetQueryStatisticsResponse'+    { executionStatistics =+        Prelude.Nothing,+      planningStatistics = Prelude.Nothing,+      querySubmissionTime = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An @ExecutionStatistics@ structure containing execution statistics.+getQueryStatisticsResponse_executionStatistics :: Lens.Lens' GetQueryStatisticsResponse (Prelude.Maybe ExecutionStatistics)+getQueryStatisticsResponse_executionStatistics = Lens.lens (\GetQueryStatisticsResponse' {executionStatistics} -> executionStatistics) (\s@GetQueryStatisticsResponse' {} a -> s {executionStatistics = a} :: GetQueryStatisticsResponse)++-- | A @PlanningStatistics@ structure containing query planning statistics.+getQueryStatisticsResponse_planningStatistics :: Lens.Lens' GetQueryStatisticsResponse (Prelude.Maybe PlanningStatistics)+getQueryStatisticsResponse_planningStatistics = Lens.lens (\GetQueryStatisticsResponse' {planningStatistics} -> planningStatistics) (\s@GetQueryStatisticsResponse' {} a -> s {planningStatistics = a} :: GetQueryStatisticsResponse)++-- | The time that the query was submitted.+getQueryStatisticsResponse_querySubmissionTime :: Lens.Lens' GetQueryStatisticsResponse (Prelude.Maybe Prelude.UTCTime)+getQueryStatisticsResponse_querySubmissionTime = Lens.lens (\GetQueryStatisticsResponse' {querySubmissionTime} -> querySubmissionTime) (\s@GetQueryStatisticsResponse' {} a -> s {querySubmissionTime = a} :: GetQueryStatisticsResponse) Prelude.. Lens.mapping Data._Time++-- | The response's http status code.+getQueryStatisticsResponse_httpStatus :: Lens.Lens' GetQueryStatisticsResponse Prelude.Int+getQueryStatisticsResponse_httpStatus = Lens.lens (\GetQueryStatisticsResponse' {httpStatus} -> httpStatus) (\s@GetQueryStatisticsResponse' {} a -> s {httpStatus = a} :: GetQueryStatisticsResponse)++instance Prelude.NFData GetQueryStatisticsResponse where+  rnf GetQueryStatisticsResponse' {..} =+    Prelude.rnf executionStatistics+      `Prelude.seq` Prelude.rnf planningStatistics+      `Prelude.seq` Prelude.rnf querySubmissionTime+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/GetResourceLFTags.hs view
@@ -0,0 +1,235 @@+{-# 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.LakeFormation.GetResourceLFTags+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the LF-tags applied to a resource.+module Amazonka.LakeFormation.GetResourceLFTags+  ( -- * Creating a Request+    GetResourceLFTags (..),+    newGetResourceLFTags,++    -- * Request Lenses+    getResourceLFTags_catalogId,+    getResourceLFTags_showAssignedLFTags,+    getResourceLFTags_resource,++    -- * Destructuring the Response+    GetResourceLFTagsResponse (..),+    newGetResourceLFTagsResponse,++    -- * Response Lenses+    getResourceLFTagsResponse_lFTagOnDatabase,+    getResourceLFTagsResponse_lFTagsOnColumns,+    getResourceLFTagsResponse_lFTagsOnTable,+    getResourceLFTagsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetResourceLFTags' smart constructor.+data GetResourceLFTags = GetResourceLFTags'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | Indicates whether to show the assigned LF-tags.+    showAssignedLFTags :: Prelude.Maybe Prelude.Bool,+    -- | The database, table, or column resource for which you want to return+    -- LF-tags.+    resource :: Resource+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetResourceLFTags' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'getResourceLFTags_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'showAssignedLFTags', 'getResourceLFTags_showAssignedLFTags' - Indicates whether to show the assigned LF-tags.+--+-- 'resource', 'getResourceLFTags_resource' - The database, table, or column resource for which you want to return+-- LF-tags.+newGetResourceLFTags ::+  -- | 'resource'+  Resource ->+  GetResourceLFTags+newGetResourceLFTags pResource_ =+  GetResourceLFTags'+    { catalogId = Prelude.Nothing,+      showAssignedLFTags = Prelude.Nothing,+      resource = pResource_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+getResourceLFTags_catalogId :: Lens.Lens' GetResourceLFTags (Prelude.Maybe Prelude.Text)+getResourceLFTags_catalogId = Lens.lens (\GetResourceLFTags' {catalogId} -> catalogId) (\s@GetResourceLFTags' {} a -> s {catalogId = a} :: GetResourceLFTags)++-- | Indicates whether to show the assigned LF-tags.+getResourceLFTags_showAssignedLFTags :: Lens.Lens' GetResourceLFTags (Prelude.Maybe Prelude.Bool)+getResourceLFTags_showAssignedLFTags = Lens.lens (\GetResourceLFTags' {showAssignedLFTags} -> showAssignedLFTags) (\s@GetResourceLFTags' {} a -> s {showAssignedLFTags = a} :: GetResourceLFTags)++-- | The database, table, or column resource for which you want to return+-- LF-tags.+getResourceLFTags_resource :: Lens.Lens' GetResourceLFTags Resource+getResourceLFTags_resource = Lens.lens (\GetResourceLFTags' {resource} -> resource) (\s@GetResourceLFTags' {} a -> s {resource = a} :: GetResourceLFTags)++instance Core.AWSRequest GetResourceLFTags where+  type+    AWSResponse GetResourceLFTags =+      GetResourceLFTagsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetResourceLFTagsResponse'+            Prelude.<$> (x Data..?> "LFTagOnDatabase")+            Prelude.<*> ( x+                            Data..?> "LFTagsOnColumns"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "LFTagsOnTable")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetResourceLFTags where+  hashWithSalt _salt GetResourceLFTags' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` showAssignedLFTags+      `Prelude.hashWithSalt` resource++instance Prelude.NFData GetResourceLFTags where+  rnf GetResourceLFTags' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf showAssignedLFTags+      `Prelude.seq` Prelude.rnf resource++instance Data.ToHeaders GetResourceLFTags where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetResourceLFTags where+  toJSON GetResourceLFTags' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("ShowAssignedLFTags" Data..=)+              Prelude.<$> showAssignedLFTags,+            Prelude.Just ("Resource" Data..= resource)+          ]+      )++instance Data.ToPath GetResourceLFTags where+  toPath = Prelude.const "/GetResourceLFTags"++instance Data.ToQuery GetResourceLFTags where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetResourceLFTagsResponse' smart constructor.+data GetResourceLFTagsResponse = GetResourceLFTagsResponse'+  { -- | A list of LF-tags applied to a database resource.+    lFTagOnDatabase :: Prelude.Maybe (Prelude.NonEmpty LFTagPair),+    -- | A list of LF-tags applied to a column resource.+    lFTagsOnColumns :: Prelude.Maybe [ColumnLFTag],+    -- | A list of LF-tags applied to a table resource.+    lFTagsOnTable :: Prelude.Maybe (Prelude.NonEmpty LFTagPair),+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetResourceLFTagsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lFTagOnDatabase', 'getResourceLFTagsResponse_lFTagOnDatabase' - A list of LF-tags applied to a database resource.+--+-- 'lFTagsOnColumns', 'getResourceLFTagsResponse_lFTagsOnColumns' - A list of LF-tags applied to a column resource.+--+-- 'lFTagsOnTable', 'getResourceLFTagsResponse_lFTagsOnTable' - A list of LF-tags applied to a table resource.+--+-- 'httpStatus', 'getResourceLFTagsResponse_httpStatus' - The response's http status code.+newGetResourceLFTagsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetResourceLFTagsResponse+newGetResourceLFTagsResponse pHttpStatus_ =+  GetResourceLFTagsResponse'+    { lFTagOnDatabase =+        Prelude.Nothing,+      lFTagsOnColumns = Prelude.Nothing,+      lFTagsOnTable = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of LF-tags applied to a database resource.+getResourceLFTagsResponse_lFTagOnDatabase :: Lens.Lens' GetResourceLFTagsResponse (Prelude.Maybe (Prelude.NonEmpty LFTagPair))+getResourceLFTagsResponse_lFTagOnDatabase = Lens.lens (\GetResourceLFTagsResponse' {lFTagOnDatabase} -> lFTagOnDatabase) (\s@GetResourceLFTagsResponse' {} a -> s {lFTagOnDatabase = a} :: GetResourceLFTagsResponse) Prelude.. Lens.mapping Lens.coerced++-- | A list of LF-tags applied to a column resource.+getResourceLFTagsResponse_lFTagsOnColumns :: Lens.Lens' GetResourceLFTagsResponse (Prelude.Maybe [ColumnLFTag])+getResourceLFTagsResponse_lFTagsOnColumns = Lens.lens (\GetResourceLFTagsResponse' {lFTagsOnColumns} -> lFTagsOnColumns) (\s@GetResourceLFTagsResponse' {} a -> s {lFTagsOnColumns = a} :: GetResourceLFTagsResponse) Prelude.. Lens.mapping Lens.coerced++-- | A list of LF-tags applied to a table resource.+getResourceLFTagsResponse_lFTagsOnTable :: Lens.Lens' GetResourceLFTagsResponse (Prelude.Maybe (Prelude.NonEmpty LFTagPair))+getResourceLFTagsResponse_lFTagsOnTable = Lens.lens (\GetResourceLFTagsResponse' {lFTagsOnTable} -> lFTagsOnTable) (\s@GetResourceLFTagsResponse' {} a -> s {lFTagsOnTable = a} :: GetResourceLFTagsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getResourceLFTagsResponse_httpStatus :: Lens.Lens' GetResourceLFTagsResponse Prelude.Int+getResourceLFTagsResponse_httpStatus = Lens.lens (\GetResourceLFTagsResponse' {httpStatus} -> httpStatus) (\s@GetResourceLFTagsResponse' {} a -> s {httpStatus = a} :: GetResourceLFTagsResponse)++instance Prelude.NFData GetResourceLFTagsResponse where+  rnf GetResourceLFTagsResponse' {..} =+    Prelude.rnf lFTagOnDatabase+      `Prelude.seq` Prelude.rnf lFTagsOnColumns+      `Prelude.seq` Prelude.rnf lFTagsOnTable+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/GetTableObjects.hs view
@@ -0,0 +1,325 @@+{-# 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.LakeFormation.GetTableObjects+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the set of Amazon S3 objects that make up the specified governed+-- table. A transaction ID or timestamp can be specified for time-travel+-- queries.+module Amazonka.LakeFormation.GetTableObjects+  ( -- * Creating a Request+    GetTableObjects (..),+    newGetTableObjects,++    -- * Request Lenses+    getTableObjects_catalogId,+    getTableObjects_maxResults,+    getTableObjects_nextToken,+    getTableObjects_partitionPredicate,+    getTableObjects_queryAsOfTime,+    getTableObjects_transactionId,+    getTableObjects_databaseName,+    getTableObjects_tableName,++    -- * Destructuring the Response+    GetTableObjectsResponse (..),+    newGetTableObjectsResponse,++    -- * Response Lenses+    getTableObjectsResponse_nextToken,+    getTableObjectsResponse_objects,+    getTableObjectsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetTableObjects' smart constructor.+data GetTableObjects = GetTableObjects'+  { -- | The catalog containing the governed table. Defaults to the caller’s+    -- account.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | Specifies how many values to return in a page.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A continuation token if this is not the first call to retrieve these+    -- objects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A predicate to filter the objects returned based on the partition keys+    -- defined in the governed table.+    --+    -- -   The comparison operators supported are: =, >, \<, >=, \<=+    --+    -- -   The logical operators supported are: AND+    --+    -- -   The data types supported are integer, long, date(yyyy-MM-dd),+    --     timestamp(yyyy-MM-dd HH:mm:ssXXX or yyyy-MM-dd HH:mm:ss\"), string+    --     and decimal.+    partitionPredicate :: Prelude.Maybe Prelude.Text,+    -- | The time as of when to read the governed table contents. If not set, the+    -- most recent transaction commit time is used. Cannot be specified along+    -- with @TransactionId@.+    queryAsOfTime :: Prelude.Maybe Data.POSIX,+    -- | The transaction ID at which to read the governed table contents. If this+    -- transaction has aborted, an error is returned. If not set, defaults to+    -- the most recent committed transaction. Cannot be specified along with+    -- @QueryAsOfTime@.+    transactionId :: Prelude.Maybe Prelude.Text,+    -- | The database containing the governed table.+    databaseName :: Prelude.Text,+    -- | The governed table for which to retrieve objects.+    tableName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetTableObjects' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'getTableObjects_catalogId' - The catalog containing the governed table. Defaults to the caller’s+-- account.+--+-- 'maxResults', 'getTableObjects_maxResults' - Specifies how many values to return in a page.+--+-- 'nextToken', 'getTableObjects_nextToken' - A continuation token if this is not the first call to retrieve these+-- objects.+--+-- 'partitionPredicate', 'getTableObjects_partitionPredicate' - A predicate to filter the objects returned based on the partition keys+-- defined in the governed table.+--+-- -   The comparison operators supported are: =, >, \<, >=, \<=+--+-- -   The logical operators supported are: AND+--+-- -   The data types supported are integer, long, date(yyyy-MM-dd),+--     timestamp(yyyy-MM-dd HH:mm:ssXXX or yyyy-MM-dd HH:mm:ss\"), string+--     and decimal.+--+-- 'queryAsOfTime', 'getTableObjects_queryAsOfTime' - The time as of when to read the governed table contents. If not set, the+-- most recent transaction commit time is used. Cannot be specified along+-- with @TransactionId@.+--+-- 'transactionId', 'getTableObjects_transactionId' - The transaction ID at which to read the governed table contents. If this+-- transaction has aborted, an error is returned. If not set, defaults to+-- the most recent committed transaction. Cannot be specified along with+-- @QueryAsOfTime@.+--+-- 'databaseName', 'getTableObjects_databaseName' - The database containing the governed table.+--+-- 'tableName', 'getTableObjects_tableName' - The governed table for which to retrieve objects.+newGetTableObjects ::+  -- | 'databaseName'+  Prelude.Text ->+  -- | 'tableName'+  Prelude.Text ->+  GetTableObjects+newGetTableObjects pDatabaseName_ pTableName_ =+  GetTableObjects'+    { catalogId = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      partitionPredicate = Prelude.Nothing,+      queryAsOfTime = Prelude.Nothing,+      transactionId = Prelude.Nothing,+      databaseName = pDatabaseName_,+      tableName = pTableName_+    }++-- | The catalog containing the governed table. Defaults to the caller’s+-- account.+getTableObjects_catalogId :: Lens.Lens' GetTableObjects (Prelude.Maybe Prelude.Text)+getTableObjects_catalogId = Lens.lens (\GetTableObjects' {catalogId} -> catalogId) (\s@GetTableObjects' {} a -> s {catalogId = a} :: GetTableObjects)++-- | Specifies how many values to return in a page.+getTableObjects_maxResults :: Lens.Lens' GetTableObjects (Prelude.Maybe Prelude.Natural)+getTableObjects_maxResults = Lens.lens (\GetTableObjects' {maxResults} -> maxResults) (\s@GetTableObjects' {} a -> s {maxResults = a} :: GetTableObjects)++-- | A continuation token if this is not the first call to retrieve these+-- objects.+getTableObjects_nextToken :: Lens.Lens' GetTableObjects (Prelude.Maybe Prelude.Text)+getTableObjects_nextToken = Lens.lens (\GetTableObjects' {nextToken} -> nextToken) (\s@GetTableObjects' {} a -> s {nextToken = a} :: GetTableObjects)++-- | A predicate to filter the objects returned based on the partition keys+-- defined in the governed table.+--+-- -   The comparison operators supported are: =, >, \<, >=, \<=+--+-- -   The logical operators supported are: AND+--+-- -   The data types supported are integer, long, date(yyyy-MM-dd),+--     timestamp(yyyy-MM-dd HH:mm:ssXXX or yyyy-MM-dd HH:mm:ss\"), string+--     and decimal.+getTableObjects_partitionPredicate :: Lens.Lens' GetTableObjects (Prelude.Maybe Prelude.Text)+getTableObjects_partitionPredicate = Lens.lens (\GetTableObjects' {partitionPredicate} -> partitionPredicate) (\s@GetTableObjects' {} a -> s {partitionPredicate = a} :: GetTableObjects)++-- | The time as of when to read the governed table contents. If not set, the+-- most recent transaction commit time is used. Cannot be specified along+-- with @TransactionId@.+getTableObjects_queryAsOfTime :: Lens.Lens' GetTableObjects (Prelude.Maybe Prelude.UTCTime)+getTableObjects_queryAsOfTime = Lens.lens (\GetTableObjects' {queryAsOfTime} -> queryAsOfTime) (\s@GetTableObjects' {} a -> s {queryAsOfTime = a} :: GetTableObjects) Prelude.. Lens.mapping Data._Time++-- | The transaction ID at which to read the governed table contents. If this+-- transaction has aborted, an error is returned. If not set, defaults to+-- the most recent committed transaction. Cannot be specified along with+-- @QueryAsOfTime@.+getTableObjects_transactionId :: Lens.Lens' GetTableObjects (Prelude.Maybe Prelude.Text)+getTableObjects_transactionId = Lens.lens (\GetTableObjects' {transactionId} -> transactionId) (\s@GetTableObjects' {} a -> s {transactionId = a} :: GetTableObjects)++-- | The database containing the governed table.+getTableObjects_databaseName :: Lens.Lens' GetTableObjects Prelude.Text+getTableObjects_databaseName = Lens.lens (\GetTableObjects' {databaseName} -> databaseName) (\s@GetTableObjects' {} a -> s {databaseName = a} :: GetTableObjects)++-- | The governed table for which to retrieve objects.+getTableObjects_tableName :: Lens.Lens' GetTableObjects Prelude.Text+getTableObjects_tableName = Lens.lens (\GetTableObjects' {tableName} -> tableName) (\s@GetTableObjects' {} a -> s {tableName = a} :: GetTableObjects)++instance Core.AWSRequest GetTableObjects where+  type+    AWSResponse GetTableObjects =+      GetTableObjectsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetTableObjectsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "Objects" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetTableObjects where+  hashWithSalt _salt GetTableObjects' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` partitionPredicate+      `Prelude.hashWithSalt` queryAsOfTime+      `Prelude.hashWithSalt` transactionId+      `Prelude.hashWithSalt` databaseName+      `Prelude.hashWithSalt` tableName++instance Prelude.NFData GetTableObjects where+  rnf GetTableObjects' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf partitionPredicate+      `Prelude.seq` Prelude.rnf queryAsOfTime+      `Prelude.seq` Prelude.rnf transactionId+      `Prelude.seq` Prelude.rnf databaseName+      `Prelude.seq` Prelude.rnf tableName++instance Data.ToHeaders GetTableObjects where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetTableObjects where+  toJSON GetTableObjects' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("PartitionPredicate" Data..=)+              Prelude.<$> partitionPredicate,+            ("QueryAsOfTime" Data..=) Prelude.<$> queryAsOfTime,+            ("TransactionId" Data..=) Prelude.<$> transactionId,+            Prelude.Just ("DatabaseName" Data..= databaseName),+            Prelude.Just ("TableName" Data..= tableName)+          ]+      )++instance Data.ToPath GetTableObjects where+  toPath = Prelude.const "/GetTableObjects"++instance Data.ToQuery GetTableObjects where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetTableObjectsResponse' smart constructor.+data GetTableObjectsResponse = GetTableObjectsResponse'+  { -- | A continuation token indicating whether additional data is available.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of objects organized by partition keys.+    objects :: Prelude.Maybe [PartitionObjects],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetTableObjectsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'getTableObjectsResponse_nextToken' - A continuation token indicating whether additional data is available.+--+-- 'objects', 'getTableObjectsResponse_objects' - A list of objects organized by partition keys.+--+-- 'httpStatus', 'getTableObjectsResponse_httpStatus' - The response's http status code.+newGetTableObjectsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetTableObjectsResponse+newGetTableObjectsResponse pHttpStatus_ =+  GetTableObjectsResponse'+    { nextToken =+        Prelude.Nothing,+      objects = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A continuation token indicating whether additional data is available.+getTableObjectsResponse_nextToken :: Lens.Lens' GetTableObjectsResponse (Prelude.Maybe Prelude.Text)+getTableObjectsResponse_nextToken = Lens.lens (\GetTableObjectsResponse' {nextToken} -> nextToken) (\s@GetTableObjectsResponse' {} a -> s {nextToken = a} :: GetTableObjectsResponse)++-- | A list of objects organized by partition keys.+getTableObjectsResponse_objects :: Lens.Lens' GetTableObjectsResponse (Prelude.Maybe [PartitionObjects])+getTableObjectsResponse_objects = Lens.lens (\GetTableObjectsResponse' {objects} -> objects) (\s@GetTableObjectsResponse' {} a -> s {objects = a} :: GetTableObjectsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getTableObjectsResponse_httpStatus :: Lens.Lens' GetTableObjectsResponse Prelude.Int+getTableObjectsResponse_httpStatus = Lens.lens (\GetTableObjectsResponse' {httpStatus} -> httpStatus) (\s@GetTableObjectsResponse' {} a -> s {httpStatus = a} :: GetTableObjectsResponse)++instance Prelude.NFData GetTableObjectsResponse where+  rnf GetTableObjectsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf objects+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/GetTemporaryGluePartitionCredentials.hs view
@@ -0,0 +1,331 @@+{-# 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.LakeFormation.GetTemporaryGluePartitionCredentials+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- This API is identical to @GetTemporaryTableCredentials@ except that this+-- is used when the target Data Catalog resource is of type Partition. Lake+-- Formation restricts the permission of the vended credentials with the+-- same scope down policy which restricts access to a single Amazon S3+-- prefix.+module Amazonka.LakeFormation.GetTemporaryGluePartitionCredentials+  ( -- * Creating a Request+    GetTemporaryGluePartitionCredentials (..),+    newGetTemporaryGluePartitionCredentials,++    -- * Request Lenses+    getTemporaryGluePartitionCredentials_auditContext,+    getTemporaryGluePartitionCredentials_durationSeconds,+    getTemporaryGluePartitionCredentials_permissions,+    getTemporaryGluePartitionCredentials_tableArn,+    getTemporaryGluePartitionCredentials_partition,+    getTemporaryGluePartitionCredentials_supportedPermissionTypes,++    -- * Destructuring the Response+    GetTemporaryGluePartitionCredentialsResponse (..),+    newGetTemporaryGluePartitionCredentialsResponse,++    -- * Response Lenses+    getTemporaryGluePartitionCredentialsResponse_accessKeyId,+    getTemporaryGluePartitionCredentialsResponse_expiration,+    getTemporaryGluePartitionCredentialsResponse_secretAccessKey,+    getTemporaryGluePartitionCredentialsResponse_sessionToken,+    getTemporaryGluePartitionCredentialsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetTemporaryGluePartitionCredentials' smart constructor.+data GetTemporaryGluePartitionCredentials = GetTemporaryGluePartitionCredentials'+  { -- | A structure representing context to access a resource (column names,+    -- query ID, etc).+    auditContext :: Prelude.Maybe AuditContext,+    -- | The time period, between 900 and 21,600 seconds, for the timeout of the+    -- temporary credentials.+    durationSeconds :: Prelude.Maybe Prelude.Natural,+    -- | Filters the request based on the user having been granted a list of+    -- specified permissions on the requested resource(s).+    permissions :: Prelude.Maybe [Permission],+    -- | The ARN of the partitions\' table.+    tableArn :: Prelude.Text,+    -- | A list of partition values identifying a single partition.+    partition :: PartitionValueList,+    -- | A list of supported permission types for the partition. Valid values are+    -- @COLUMN_PERMISSION@ and @CELL_FILTER_PERMISSION@.+    supportedPermissionTypes :: Prelude.NonEmpty PermissionType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetTemporaryGluePartitionCredentials' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'auditContext', 'getTemporaryGluePartitionCredentials_auditContext' - A structure representing context to access a resource (column names,+-- query ID, etc).+--+-- 'durationSeconds', 'getTemporaryGluePartitionCredentials_durationSeconds' - The time period, between 900 and 21,600 seconds, for the timeout of the+-- temporary credentials.+--+-- 'permissions', 'getTemporaryGluePartitionCredentials_permissions' - Filters the request based on the user having been granted a list of+-- specified permissions on the requested resource(s).+--+-- 'tableArn', 'getTemporaryGluePartitionCredentials_tableArn' - The ARN of the partitions\' table.+--+-- 'partition', 'getTemporaryGluePartitionCredentials_partition' - A list of partition values identifying a single partition.+--+-- 'supportedPermissionTypes', 'getTemporaryGluePartitionCredentials_supportedPermissionTypes' - A list of supported permission types for the partition. Valid values are+-- @COLUMN_PERMISSION@ and @CELL_FILTER_PERMISSION@.+newGetTemporaryGluePartitionCredentials ::+  -- | 'tableArn'+  Prelude.Text ->+  -- | 'partition'+  PartitionValueList ->+  -- | 'supportedPermissionTypes'+  Prelude.NonEmpty PermissionType ->+  GetTemporaryGluePartitionCredentials+newGetTemporaryGluePartitionCredentials+  pTableArn_+  pPartition_+  pSupportedPermissionTypes_ =+    GetTemporaryGluePartitionCredentials'+      { auditContext =+          Prelude.Nothing,+        durationSeconds = Prelude.Nothing,+        permissions = Prelude.Nothing,+        tableArn = pTableArn_,+        partition = pPartition_,+        supportedPermissionTypes =+          Lens.coerced+            Lens.# pSupportedPermissionTypes_+      }++-- | A structure representing context to access a resource (column names,+-- query ID, etc).+getTemporaryGluePartitionCredentials_auditContext :: Lens.Lens' GetTemporaryGluePartitionCredentials (Prelude.Maybe AuditContext)+getTemporaryGluePartitionCredentials_auditContext = Lens.lens (\GetTemporaryGluePartitionCredentials' {auditContext} -> auditContext) (\s@GetTemporaryGluePartitionCredentials' {} a -> s {auditContext = a} :: GetTemporaryGluePartitionCredentials)++-- | The time period, between 900 and 21,600 seconds, for the timeout of the+-- temporary credentials.+getTemporaryGluePartitionCredentials_durationSeconds :: Lens.Lens' GetTemporaryGluePartitionCredentials (Prelude.Maybe Prelude.Natural)+getTemporaryGluePartitionCredentials_durationSeconds = Lens.lens (\GetTemporaryGluePartitionCredentials' {durationSeconds} -> durationSeconds) (\s@GetTemporaryGluePartitionCredentials' {} a -> s {durationSeconds = a} :: GetTemporaryGluePartitionCredentials)++-- | Filters the request based on the user having been granted a list of+-- specified permissions on the requested resource(s).+getTemporaryGluePartitionCredentials_permissions :: Lens.Lens' GetTemporaryGluePartitionCredentials (Prelude.Maybe [Permission])+getTemporaryGluePartitionCredentials_permissions = Lens.lens (\GetTemporaryGluePartitionCredentials' {permissions} -> permissions) (\s@GetTemporaryGluePartitionCredentials' {} a -> s {permissions = a} :: GetTemporaryGluePartitionCredentials) Prelude.. Lens.mapping Lens.coerced++-- | The ARN of the partitions\' table.+getTemporaryGluePartitionCredentials_tableArn :: Lens.Lens' GetTemporaryGluePartitionCredentials Prelude.Text+getTemporaryGluePartitionCredentials_tableArn = Lens.lens (\GetTemporaryGluePartitionCredentials' {tableArn} -> tableArn) (\s@GetTemporaryGluePartitionCredentials' {} a -> s {tableArn = a} :: GetTemporaryGluePartitionCredentials)++-- | A list of partition values identifying a single partition.+getTemporaryGluePartitionCredentials_partition :: Lens.Lens' GetTemporaryGluePartitionCredentials PartitionValueList+getTemporaryGluePartitionCredentials_partition = Lens.lens (\GetTemporaryGluePartitionCredentials' {partition} -> partition) (\s@GetTemporaryGluePartitionCredentials' {} a -> s {partition = a} :: GetTemporaryGluePartitionCredentials)++-- | A list of supported permission types for the partition. Valid values are+-- @COLUMN_PERMISSION@ and @CELL_FILTER_PERMISSION@.+getTemporaryGluePartitionCredentials_supportedPermissionTypes :: Lens.Lens' GetTemporaryGluePartitionCredentials (Prelude.NonEmpty PermissionType)+getTemporaryGluePartitionCredentials_supportedPermissionTypes = Lens.lens (\GetTemporaryGluePartitionCredentials' {supportedPermissionTypes} -> supportedPermissionTypes) (\s@GetTemporaryGluePartitionCredentials' {} a -> s {supportedPermissionTypes = a} :: GetTemporaryGluePartitionCredentials) Prelude.. Lens.coerced++instance+  Core.AWSRequest+    GetTemporaryGluePartitionCredentials+  where+  type+    AWSResponse GetTemporaryGluePartitionCredentials =+      GetTemporaryGluePartitionCredentialsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetTemporaryGluePartitionCredentialsResponse'+            Prelude.<$> (x Data..?> "AccessKeyId")+            Prelude.<*> (x Data..?> "Expiration")+            Prelude.<*> (x Data..?> "SecretAccessKey")+            Prelude.<*> (x Data..?> "SessionToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    GetTemporaryGluePartitionCredentials+  where+  hashWithSalt+    _salt+    GetTemporaryGluePartitionCredentials' {..} =+      _salt+        `Prelude.hashWithSalt` auditContext+        `Prelude.hashWithSalt` durationSeconds+        `Prelude.hashWithSalt` permissions+        `Prelude.hashWithSalt` tableArn+        `Prelude.hashWithSalt` partition+        `Prelude.hashWithSalt` supportedPermissionTypes++instance+  Prelude.NFData+    GetTemporaryGluePartitionCredentials+  where+  rnf GetTemporaryGluePartitionCredentials' {..} =+    Prelude.rnf auditContext+      `Prelude.seq` Prelude.rnf durationSeconds+      `Prelude.seq` Prelude.rnf permissions+      `Prelude.seq` Prelude.rnf tableArn+      `Prelude.seq` Prelude.rnf partition+      `Prelude.seq` Prelude.rnf supportedPermissionTypes++instance+  Data.ToHeaders+    GetTemporaryGluePartitionCredentials+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    GetTemporaryGluePartitionCredentials+  where+  toJSON GetTemporaryGluePartitionCredentials' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AuditContext" Data..=) Prelude.<$> auditContext,+            ("DurationSeconds" Data..=)+              Prelude.<$> durationSeconds,+            ("Permissions" Data..=) Prelude.<$> permissions,+            Prelude.Just ("TableArn" Data..= tableArn),+            Prelude.Just ("Partition" Data..= partition),+            Prelude.Just+              ( "SupportedPermissionTypes"+                  Data..= supportedPermissionTypes+              )+          ]+      )++instance+  Data.ToPath+    GetTemporaryGluePartitionCredentials+  where+  toPath =+    Prelude.const+      "/GetTemporaryGluePartitionCredentials"++instance+  Data.ToQuery+    GetTemporaryGluePartitionCredentials+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetTemporaryGluePartitionCredentialsResponse' smart constructor.+data GetTemporaryGluePartitionCredentialsResponse = GetTemporaryGluePartitionCredentialsResponse'+  { -- | The access key ID for the temporary credentials.+    accessKeyId :: Prelude.Maybe Prelude.Text,+    -- | The date and time when the temporary credentials expire.+    expiration :: Prelude.Maybe Data.POSIX,+    -- | The secret key for the temporary credentials.+    secretAccessKey :: Prelude.Maybe Prelude.Text,+    -- | The session token for the temporary credentials.+    sessionToken :: 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 'GetTemporaryGluePartitionCredentialsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accessKeyId', 'getTemporaryGluePartitionCredentialsResponse_accessKeyId' - The access key ID for the temporary credentials.+--+-- 'expiration', 'getTemporaryGluePartitionCredentialsResponse_expiration' - The date and time when the temporary credentials expire.+--+-- 'secretAccessKey', 'getTemporaryGluePartitionCredentialsResponse_secretAccessKey' - The secret key for the temporary credentials.+--+-- 'sessionToken', 'getTemporaryGluePartitionCredentialsResponse_sessionToken' - The session token for the temporary credentials.+--+-- 'httpStatus', 'getTemporaryGluePartitionCredentialsResponse_httpStatus' - The response's http status code.+newGetTemporaryGluePartitionCredentialsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetTemporaryGluePartitionCredentialsResponse+newGetTemporaryGluePartitionCredentialsResponse+  pHttpStatus_ =+    GetTemporaryGluePartitionCredentialsResponse'+      { accessKeyId =+          Prelude.Nothing,+        expiration = Prelude.Nothing,+        secretAccessKey =+          Prelude.Nothing,+        sessionToken =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The access key ID for the temporary credentials.+getTemporaryGluePartitionCredentialsResponse_accessKeyId :: Lens.Lens' GetTemporaryGluePartitionCredentialsResponse (Prelude.Maybe Prelude.Text)+getTemporaryGluePartitionCredentialsResponse_accessKeyId = Lens.lens (\GetTemporaryGluePartitionCredentialsResponse' {accessKeyId} -> accessKeyId) (\s@GetTemporaryGluePartitionCredentialsResponse' {} a -> s {accessKeyId = a} :: GetTemporaryGluePartitionCredentialsResponse)++-- | The date and time when the temporary credentials expire.+getTemporaryGluePartitionCredentialsResponse_expiration :: Lens.Lens' GetTemporaryGluePartitionCredentialsResponse (Prelude.Maybe Prelude.UTCTime)+getTemporaryGluePartitionCredentialsResponse_expiration = Lens.lens (\GetTemporaryGluePartitionCredentialsResponse' {expiration} -> expiration) (\s@GetTemporaryGluePartitionCredentialsResponse' {} a -> s {expiration = a} :: GetTemporaryGluePartitionCredentialsResponse) Prelude.. Lens.mapping Data._Time++-- | The secret key for the temporary credentials.+getTemporaryGluePartitionCredentialsResponse_secretAccessKey :: Lens.Lens' GetTemporaryGluePartitionCredentialsResponse (Prelude.Maybe Prelude.Text)+getTemporaryGluePartitionCredentialsResponse_secretAccessKey = Lens.lens (\GetTemporaryGluePartitionCredentialsResponse' {secretAccessKey} -> secretAccessKey) (\s@GetTemporaryGluePartitionCredentialsResponse' {} a -> s {secretAccessKey = a} :: GetTemporaryGluePartitionCredentialsResponse)++-- | The session token for the temporary credentials.+getTemporaryGluePartitionCredentialsResponse_sessionToken :: Lens.Lens' GetTemporaryGluePartitionCredentialsResponse (Prelude.Maybe Prelude.Text)+getTemporaryGluePartitionCredentialsResponse_sessionToken = Lens.lens (\GetTemporaryGluePartitionCredentialsResponse' {sessionToken} -> sessionToken) (\s@GetTemporaryGluePartitionCredentialsResponse' {} a -> s {sessionToken = a} :: GetTemporaryGluePartitionCredentialsResponse)++-- | The response's http status code.+getTemporaryGluePartitionCredentialsResponse_httpStatus :: Lens.Lens' GetTemporaryGluePartitionCredentialsResponse Prelude.Int+getTemporaryGluePartitionCredentialsResponse_httpStatus = Lens.lens (\GetTemporaryGluePartitionCredentialsResponse' {httpStatus} -> httpStatus) (\s@GetTemporaryGluePartitionCredentialsResponse' {} a -> s {httpStatus = a} :: GetTemporaryGluePartitionCredentialsResponse)++instance+  Prelude.NFData+    GetTemporaryGluePartitionCredentialsResponse+  where+  rnf GetTemporaryGluePartitionCredentialsResponse' {..} =+    Prelude.rnf accessKeyId+      `Prelude.seq` Prelude.rnf expiration+      `Prelude.seq` Prelude.rnf secretAccessKey+      `Prelude.seq` Prelude.rnf sessionToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/GetTemporaryGlueTableCredentials.hs view
@@ -0,0 +1,309 @@+{-# 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.LakeFormation.GetTemporaryGlueTableCredentials+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Allows a caller in a secure environment to assume a role with permission+-- to access Amazon S3. In order to vend such credentials, Lake Formation+-- assumes the role associated with a registered location, for example an+-- Amazon S3 bucket, with a scope down policy which restricts the access to+-- a single prefix.+module Amazonka.LakeFormation.GetTemporaryGlueTableCredentials+  ( -- * Creating a Request+    GetTemporaryGlueTableCredentials (..),+    newGetTemporaryGlueTableCredentials,++    -- * Request Lenses+    getTemporaryGlueTableCredentials_auditContext,+    getTemporaryGlueTableCredentials_durationSeconds,+    getTemporaryGlueTableCredentials_permissions,+    getTemporaryGlueTableCredentials_tableArn,+    getTemporaryGlueTableCredentials_supportedPermissionTypes,++    -- * Destructuring the Response+    GetTemporaryGlueTableCredentialsResponse (..),+    newGetTemporaryGlueTableCredentialsResponse,++    -- * Response Lenses+    getTemporaryGlueTableCredentialsResponse_accessKeyId,+    getTemporaryGlueTableCredentialsResponse_expiration,+    getTemporaryGlueTableCredentialsResponse_secretAccessKey,+    getTemporaryGlueTableCredentialsResponse_sessionToken,+    getTemporaryGlueTableCredentialsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetTemporaryGlueTableCredentials' smart constructor.+data GetTemporaryGlueTableCredentials = GetTemporaryGlueTableCredentials'+  { -- | A structure representing context to access a resource (column names,+    -- query ID, etc).+    auditContext :: Prelude.Maybe AuditContext,+    -- | The time period, between 900 and 21,600 seconds, for the timeout of the+    -- temporary credentials.+    durationSeconds :: Prelude.Maybe Prelude.Natural,+    -- | Filters the request based on the user having been granted a list of+    -- specified permissions on the requested resource(s).+    permissions :: Prelude.Maybe [Permission],+    -- | The ARN identifying a table in the Data Catalog for the temporary+    -- credentials request.+    tableArn :: Prelude.Text,+    -- | A list of supported permission types for the table. Valid values are+    -- @COLUMN_PERMISSION@ and @CELL_FILTER_PERMISSION@.+    supportedPermissionTypes :: Prelude.NonEmpty PermissionType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetTemporaryGlueTableCredentials' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'auditContext', 'getTemporaryGlueTableCredentials_auditContext' - A structure representing context to access a resource (column names,+-- query ID, etc).+--+-- 'durationSeconds', 'getTemporaryGlueTableCredentials_durationSeconds' - The time period, between 900 and 21,600 seconds, for the timeout of the+-- temporary credentials.+--+-- 'permissions', 'getTemporaryGlueTableCredentials_permissions' - Filters the request based on the user having been granted a list of+-- specified permissions on the requested resource(s).+--+-- 'tableArn', 'getTemporaryGlueTableCredentials_tableArn' - The ARN identifying a table in the Data Catalog for the temporary+-- credentials request.+--+-- 'supportedPermissionTypes', 'getTemporaryGlueTableCredentials_supportedPermissionTypes' - A list of supported permission types for the table. Valid values are+-- @COLUMN_PERMISSION@ and @CELL_FILTER_PERMISSION@.+newGetTemporaryGlueTableCredentials ::+  -- | 'tableArn'+  Prelude.Text ->+  -- | 'supportedPermissionTypes'+  Prelude.NonEmpty PermissionType ->+  GetTemporaryGlueTableCredentials+newGetTemporaryGlueTableCredentials+  pTableArn_+  pSupportedPermissionTypes_ =+    GetTemporaryGlueTableCredentials'+      { auditContext =+          Prelude.Nothing,+        durationSeconds = Prelude.Nothing,+        permissions = Prelude.Nothing,+        tableArn = pTableArn_,+        supportedPermissionTypes =+          Lens.coerced+            Lens.# pSupportedPermissionTypes_+      }++-- | A structure representing context to access a resource (column names,+-- query ID, etc).+getTemporaryGlueTableCredentials_auditContext :: Lens.Lens' GetTemporaryGlueTableCredentials (Prelude.Maybe AuditContext)+getTemporaryGlueTableCredentials_auditContext = Lens.lens (\GetTemporaryGlueTableCredentials' {auditContext} -> auditContext) (\s@GetTemporaryGlueTableCredentials' {} a -> s {auditContext = a} :: GetTemporaryGlueTableCredentials)++-- | The time period, between 900 and 21,600 seconds, for the timeout of the+-- temporary credentials.+getTemporaryGlueTableCredentials_durationSeconds :: Lens.Lens' GetTemporaryGlueTableCredentials (Prelude.Maybe Prelude.Natural)+getTemporaryGlueTableCredentials_durationSeconds = Lens.lens (\GetTemporaryGlueTableCredentials' {durationSeconds} -> durationSeconds) (\s@GetTemporaryGlueTableCredentials' {} a -> s {durationSeconds = a} :: GetTemporaryGlueTableCredentials)++-- | Filters the request based on the user having been granted a list of+-- specified permissions on the requested resource(s).+getTemporaryGlueTableCredentials_permissions :: Lens.Lens' GetTemporaryGlueTableCredentials (Prelude.Maybe [Permission])+getTemporaryGlueTableCredentials_permissions = Lens.lens (\GetTemporaryGlueTableCredentials' {permissions} -> permissions) (\s@GetTemporaryGlueTableCredentials' {} a -> s {permissions = a} :: GetTemporaryGlueTableCredentials) Prelude.. Lens.mapping Lens.coerced++-- | The ARN identifying a table in the Data Catalog for the temporary+-- credentials request.+getTemporaryGlueTableCredentials_tableArn :: Lens.Lens' GetTemporaryGlueTableCredentials Prelude.Text+getTemporaryGlueTableCredentials_tableArn = Lens.lens (\GetTemporaryGlueTableCredentials' {tableArn} -> tableArn) (\s@GetTemporaryGlueTableCredentials' {} a -> s {tableArn = a} :: GetTemporaryGlueTableCredentials)++-- | A list of supported permission types for the table. Valid values are+-- @COLUMN_PERMISSION@ and @CELL_FILTER_PERMISSION@.+getTemporaryGlueTableCredentials_supportedPermissionTypes :: Lens.Lens' GetTemporaryGlueTableCredentials (Prelude.NonEmpty PermissionType)+getTemporaryGlueTableCredentials_supportedPermissionTypes = Lens.lens (\GetTemporaryGlueTableCredentials' {supportedPermissionTypes} -> supportedPermissionTypes) (\s@GetTemporaryGlueTableCredentials' {} a -> s {supportedPermissionTypes = a} :: GetTemporaryGlueTableCredentials) Prelude.. Lens.coerced++instance+  Core.AWSRequest+    GetTemporaryGlueTableCredentials+  where+  type+    AWSResponse GetTemporaryGlueTableCredentials =+      GetTemporaryGlueTableCredentialsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetTemporaryGlueTableCredentialsResponse'+            Prelude.<$> (x Data..?> "AccessKeyId")+            Prelude.<*> (x Data..?> "Expiration")+            Prelude.<*> (x Data..?> "SecretAccessKey")+            Prelude.<*> (x Data..?> "SessionToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    GetTemporaryGlueTableCredentials+  where+  hashWithSalt+    _salt+    GetTemporaryGlueTableCredentials' {..} =+      _salt+        `Prelude.hashWithSalt` auditContext+        `Prelude.hashWithSalt` durationSeconds+        `Prelude.hashWithSalt` permissions+        `Prelude.hashWithSalt` tableArn+        `Prelude.hashWithSalt` supportedPermissionTypes++instance+  Prelude.NFData+    GetTemporaryGlueTableCredentials+  where+  rnf GetTemporaryGlueTableCredentials' {..} =+    Prelude.rnf auditContext+      `Prelude.seq` Prelude.rnf durationSeconds+      `Prelude.seq` Prelude.rnf permissions+      `Prelude.seq` Prelude.rnf tableArn+      `Prelude.seq` Prelude.rnf supportedPermissionTypes++instance+  Data.ToHeaders+    GetTemporaryGlueTableCredentials+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetTemporaryGlueTableCredentials where+  toJSON GetTemporaryGlueTableCredentials' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AuditContext" Data..=) Prelude.<$> auditContext,+            ("DurationSeconds" Data..=)+              Prelude.<$> durationSeconds,+            ("Permissions" Data..=) Prelude.<$> permissions,+            Prelude.Just ("TableArn" Data..= tableArn),+            Prelude.Just+              ( "SupportedPermissionTypes"+                  Data..= supportedPermissionTypes+              )+          ]+      )++instance Data.ToPath GetTemporaryGlueTableCredentials where+  toPath =+    Prelude.const "/GetTemporaryGlueTableCredentials"++instance+  Data.ToQuery+    GetTemporaryGlueTableCredentials+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetTemporaryGlueTableCredentialsResponse' smart constructor.+data GetTemporaryGlueTableCredentialsResponse = GetTemporaryGlueTableCredentialsResponse'+  { -- | The access key ID for the temporary credentials.+    accessKeyId :: Prelude.Maybe Prelude.Text,+    -- | The date and time when the temporary credentials expire.+    expiration :: Prelude.Maybe Data.POSIX,+    -- | The secret key for the temporary credentials.+    secretAccessKey :: Prelude.Maybe Prelude.Text,+    -- | The session token for the temporary credentials.+    sessionToken :: 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 'GetTemporaryGlueTableCredentialsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accessKeyId', 'getTemporaryGlueTableCredentialsResponse_accessKeyId' - The access key ID for the temporary credentials.+--+-- 'expiration', 'getTemporaryGlueTableCredentialsResponse_expiration' - The date and time when the temporary credentials expire.+--+-- 'secretAccessKey', 'getTemporaryGlueTableCredentialsResponse_secretAccessKey' - The secret key for the temporary credentials.+--+-- 'sessionToken', 'getTemporaryGlueTableCredentialsResponse_sessionToken' - The session token for the temporary credentials.+--+-- 'httpStatus', 'getTemporaryGlueTableCredentialsResponse_httpStatus' - The response's http status code.+newGetTemporaryGlueTableCredentialsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetTemporaryGlueTableCredentialsResponse+newGetTemporaryGlueTableCredentialsResponse+  pHttpStatus_ =+    GetTemporaryGlueTableCredentialsResponse'+      { accessKeyId =+          Prelude.Nothing,+        expiration = Prelude.Nothing,+        secretAccessKey = Prelude.Nothing,+        sessionToken = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The access key ID for the temporary credentials.+getTemporaryGlueTableCredentialsResponse_accessKeyId :: Lens.Lens' GetTemporaryGlueTableCredentialsResponse (Prelude.Maybe Prelude.Text)+getTemporaryGlueTableCredentialsResponse_accessKeyId = Lens.lens (\GetTemporaryGlueTableCredentialsResponse' {accessKeyId} -> accessKeyId) (\s@GetTemporaryGlueTableCredentialsResponse' {} a -> s {accessKeyId = a} :: GetTemporaryGlueTableCredentialsResponse)++-- | The date and time when the temporary credentials expire.+getTemporaryGlueTableCredentialsResponse_expiration :: Lens.Lens' GetTemporaryGlueTableCredentialsResponse (Prelude.Maybe Prelude.UTCTime)+getTemporaryGlueTableCredentialsResponse_expiration = Lens.lens (\GetTemporaryGlueTableCredentialsResponse' {expiration} -> expiration) (\s@GetTemporaryGlueTableCredentialsResponse' {} a -> s {expiration = a} :: GetTemporaryGlueTableCredentialsResponse) Prelude.. Lens.mapping Data._Time++-- | The secret key for the temporary credentials.+getTemporaryGlueTableCredentialsResponse_secretAccessKey :: Lens.Lens' GetTemporaryGlueTableCredentialsResponse (Prelude.Maybe Prelude.Text)+getTemporaryGlueTableCredentialsResponse_secretAccessKey = Lens.lens (\GetTemporaryGlueTableCredentialsResponse' {secretAccessKey} -> secretAccessKey) (\s@GetTemporaryGlueTableCredentialsResponse' {} a -> s {secretAccessKey = a} :: GetTemporaryGlueTableCredentialsResponse)++-- | The session token for the temporary credentials.+getTemporaryGlueTableCredentialsResponse_sessionToken :: Lens.Lens' GetTemporaryGlueTableCredentialsResponse (Prelude.Maybe Prelude.Text)+getTemporaryGlueTableCredentialsResponse_sessionToken = Lens.lens (\GetTemporaryGlueTableCredentialsResponse' {sessionToken} -> sessionToken) (\s@GetTemporaryGlueTableCredentialsResponse' {} a -> s {sessionToken = a} :: GetTemporaryGlueTableCredentialsResponse)++-- | The response's http status code.+getTemporaryGlueTableCredentialsResponse_httpStatus :: Lens.Lens' GetTemporaryGlueTableCredentialsResponse Prelude.Int+getTemporaryGlueTableCredentialsResponse_httpStatus = Lens.lens (\GetTemporaryGlueTableCredentialsResponse' {httpStatus} -> httpStatus) (\s@GetTemporaryGlueTableCredentialsResponse' {} a -> s {httpStatus = a} :: GetTemporaryGlueTableCredentialsResponse)++instance+  Prelude.NFData+    GetTemporaryGlueTableCredentialsResponse+  where+  rnf GetTemporaryGlueTableCredentialsResponse' {..} =+    Prelude.rnf accessKeyId+      `Prelude.seq` Prelude.rnf expiration+      `Prelude.seq` Prelude.rnf secretAccessKey+      `Prelude.seq` Prelude.rnf sessionToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/GetWorkUnitResults.hs view
@@ -0,0 +1,218 @@+{-# 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.LakeFormation.GetWorkUnitResults+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the work units resulting from the query. Work units can be+-- executed in any order and in parallel.+module Amazonka.LakeFormation.GetWorkUnitResults+  ( -- * Creating a Request+    GetWorkUnitResults (..),+    newGetWorkUnitResults,++    -- * Request Lenses+    getWorkUnitResults_queryId,+    getWorkUnitResults_workUnitId,+    getWorkUnitResults_workUnitToken,++    -- * Destructuring the Response+    GetWorkUnitResultsResponse (..),+    newGetWorkUnitResultsResponse,++    -- * Response Lenses+    getWorkUnitResultsResponse_httpStatus,+    getWorkUnitResultsResponse_resultStream,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetWorkUnitResults' smart constructor.+data GetWorkUnitResults = GetWorkUnitResults'+  { -- | The ID of the plan query operation for which to get results.+    queryId :: Prelude.Text,+    -- | The work unit ID for which to get results. Value generated by+    -- enumerating @WorkUnitIdMin@ to @WorkUnitIdMax@ (inclusive) from the+    -- @WorkUnitRange@ in the output of @GetWorkUnits@.+    workUnitId :: Prelude.Natural,+    -- | A work token used to query the execution service. Token output from+    -- @GetWorkUnits@.+    workUnitToken :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetWorkUnitResults' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'queryId', 'getWorkUnitResults_queryId' - The ID of the plan query operation for which to get results.+--+-- 'workUnitId', 'getWorkUnitResults_workUnitId' - The work unit ID for which to get results. Value generated by+-- enumerating @WorkUnitIdMin@ to @WorkUnitIdMax@ (inclusive) from the+-- @WorkUnitRange@ in the output of @GetWorkUnits@.+--+-- 'workUnitToken', 'getWorkUnitResults_workUnitToken' - A work token used to query the execution service. Token output from+-- @GetWorkUnits@.+newGetWorkUnitResults ::+  -- | 'queryId'+  Prelude.Text ->+  -- | 'workUnitId'+  Prelude.Natural ->+  -- | 'workUnitToken'+  Prelude.Text ->+  GetWorkUnitResults+newGetWorkUnitResults+  pQueryId_+  pWorkUnitId_+  pWorkUnitToken_ =+    GetWorkUnitResults'+      { queryId = pQueryId_,+        workUnitId = pWorkUnitId_,+        workUnitToken =+          Data._Sensitive Lens.# pWorkUnitToken_+      }++-- | The ID of the plan query operation for which to get results.+getWorkUnitResults_queryId :: Lens.Lens' GetWorkUnitResults Prelude.Text+getWorkUnitResults_queryId = Lens.lens (\GetWorkUnitResults' {queryId} -> queryId) (\s@GetWorkUnitResults' {} a -> s {queryId = a} :: GetWorkUnitResults)++-- | The work unit ID for which to get results. Value generated by+-- enumerating @WorkUnitIdMin@ to @WorkUnitIdMax@ (inclusive) from the+-- @WorkUnitRange@ in the output of @GetWorkUnits@.+getWorkUnitResults_workUnitId :: Lens.Lens' GetWorkUnitResults Prelude.Natural+getWorkUnitResults_workUnitId = Lens.lens (\GetWorkUnitResults' {workUnitId} -> workUnitId) (\s@GetWorkUnitResults' {} a -> s {workUnitId = a} :: GetWorkUnitResults)++-- | A work token used to query the execution service. Token output from+-- @GetWorkUnits@.+getWorkUnitResults_workUnitToken :: Lens.Lens' GetWorkUnitResults Prelude.Text+getWorkUnitResults_workUnitToken = Lens.lens (\GetWorkUnitResults' {workUnitToken} -> workUnitToken) (\s@GetWorkUnitResults' {} a -> s {workUnitToken = a} :: GetWorkUnitResults) Prelude.. Data._Sensitive++instance Core.AWSRequest GetWorkUnitResults where+  type+    AWSResponse GetWorkUnitResults =+      GetWorkUnitResultsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveBody+      ( \s h x ->+          GetWorkUnitResultsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Prelude.pure x)+      )++instance Prelude.Hashable GetWorkUnitResults where+  hashWithSalt _salt GetWorkUnitResults' {..} =+    _salt+      `Prelude.hashWithSalt` queryId+      `Prelude.hashWithSalt` workUnitId+      `Prelude.hashWithSalt` workUnitToken++instance Prelude.NFData GetWorkUnitResults where+  rnf GetWorkUnitResults' {..} =+    Prelude.rnf queryId+      `Prelude.seq` Prelude.rnf workUnitId+      `Prelude.seq` Prelude.rnf workUnitToken++instance Data.ToHeaders GetWorkUnitResults where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetWorkUnitResults where+  toJSON GetWorkUnitResults' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("QueryId" Data..= queryId),+            Prelude.Just ("WorkUnitId" Data..= workUnitId),+            Prelude.Just+              ("WorkUnitToken" Data..= workUnitToken)+          ]+      )++instance Data.ToPath GetWorkUnitResults where+  toPath = Prelude.const "/GetWorkUnitResults"++instance Data.ToQuery GetWorkUnitResults where+  toQuery = Prelude.const Prelude.mempty++-- | A structure for the output.+--+-- /See:/ 'newGetWorkUnitResultsResponse' smart constructor.+data GetWorkUnitResultsResponse = GetWorkUnitResultsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Rows returned from the @GetWorkUnitResults@ operation as a stream of+    -- Apache Arrow v1.0 messages.+    resultStream :: Data.ResponseBody+  }+  deriving (Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetWorkUnitResultsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'getWorkUnitResultsResponse_httpStatus' - The response's http status code.+--+-- 'resultStream', 'getWorkUnitResultsResponse_resultStream' - Rows returned from the @GetWorkUnitResults@ operation as a stream of+-- Apache Arrow v1.0 messages.+newGetWorkUnitResultsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'resultStream'+  Data.ResponseBody ->+  GetWorkUnitResultsResponse+newGetWorkUnitResultsResponse+  pHttpStatus_+  pResultStream_ =+    GetWorkUnitResultsResponse'+      { httpStatus =+          pHttpStatus_,+        resultStream = pResultStream_+      }++-- | The response's http status code.+getWorkUnitResultsResponse_httpStatus :: Lens.Lens' GetWorkUnitResultsResponse Prelude.Int+getWorkUnitResultsResponse_httpStatus = Lens.lens (\GetWorkUnitResultsResponse' {httpStatus} -> httpStatus) (\s@GetWorkUnitResultsResponse' {} a -> s {httpStatus = a} :: GetWorkUnitResultsResponse)++-- | Rows returned from the @GetWorkUnitResults@ operation as a stream of+-- Apache Arrow v1.0 messages.+getWorkUnitResultsResponse_resultStream :: Lens.Lens' GetWorkUnitResultsResponse Data.ResponseBody+getWorkUnitResultsResponse_resultStream = Lens.lens (\GetWorkUnitResultsResponse' {resultStream} -> resultStream) (\s@GetWorkUnitResultsResponse' {} a -> s {resultStream = a} :: GetWorkUnitResultsResponse)
+ gen/Amazonka/LakeFormation/GetWorkUnits.hs view
@@ -0,0 +1,263 @@+{-# 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.LakeFormation.GetWorkUnits+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the work units generated by the @StartQueryPlanning@+-- operation.+--+-- This operation returns paginated results.+module Amazonka.LakeFormation.GetWorkUnits+  ( -- * Creating a Request+    GetWorkUnits (..),+    newGetWorkUnits,++    -- * Request Lenses+    getWorkUnits_nextToken,+    getWorkUnits_pageSize,+    getWorkUnits_queryId,++    -- * Destructuring the Response+    GetWorkUnitsResponse (..),+    newGetWorkUnitsResponse,++    -- * Response Lenses+    getWorkUnitsResponse_nextToken,+    getWorkUnitsResponse_httpStatus,+    getWorkUnitsResponse_queryId,+    getWorkUnitsResponse_workUnitRanges,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetWorkUnits' smart constructor.+data GetWorkUnits = GetWorkUnits'+  { -- | A continuation token, if this is a continuation call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The size of each page to get in the Amazon Web Services service call.+    -- This does not affect the number of items returned in the command\'s+    -- output. Setting a smaller page size results in more calls to the Amazon+    -- Web Services service, retrieving fewer items in each call. This can help+    -- prevent the Amazon Web Services service calls from timing out.+    pageSize :: Prelude.Maybe Prelude.Int,+    -- | The ID of the plan query operation.+    queryId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetWorkUnits' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'getWorkUnits_nextToken' - A continuation token, if this is a continuation call.+--+-- 'pageSize', 'getWorkUnits_pageSize' - The size of each page to get in the Amazon Web Services service call.+-- This does not affect the number of items returned in the command\'s+-- output. Setting a smaller page size results in more calls to the Amazon+-- Web Services service, retrieving fewer items in each call. This can help+-- prevent the Amazon Web Services service calls from timing out.+--+-- 'queryId', 'getWorkUnits_queryId' - The ID of the plan query operation.+newGetWorkUnits ::+  -- | 'queryId'+  Prelude.Text ->+  GetWorkUnits+newGetWorkUnits pQueryId_ =+  GetWorkUnits'+    { nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing,+      queryId = pQueryId_+    }++-- | A continuation token, if this is a continuation call.+getWorkUnits_nextToken :: Lens.Lens' GetWorkUnits (Prelude.Maybe Prelude.Text)+getWorkUnits_nextToken = Lens.lens (\GetWorkUnits' {nextToken} -> nextToken) (\s@GetWorkUnits' {} a -> s {nextToken = a} :: GetWorkUnits)++-- | The size of each page to get in the Amazon Web Services service call.+-- This does not affect the number of items returned in the command\'s+-- output. Setting a smaller page size results in more calls to the Amazon+-- Web Services service, retrieving fewer items in each call. This can help+-- prevent the Amazon Web Services service calls from timing out.+getWorkUnits_pageSize :: Lens.Lens' GetWorkUnits (Prelude.Maybe Prelude.Int)+getWorkUnits_pageSize = Lens.lens (\GetWorkUnits' {pageSize} -> pageSize) (\s@GetWorkUnits' {} a -> s {pageSize = a} :: GetWorkUnits)++-- | The ID of the plan query operation.+getWorkUnits_queryId :: Lens.Lens' GetWorkUnits Prelude.Text+getWorkUnits_queryId = Lens.lens (\GetWorkUnits' {queryId} -> queryId) (\s@GetWorkUnits' {} a -> s {queryId = a} :: GetWorkUnits)++instance Core.AWSPager GetWorkUnits where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? getWorkUnitsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. getWorkUnitsResponse_workUnitRanges) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& getWorkUnits_nextToken+          Lens..~ rs+          Lens.^? getWorkUnitsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest GetWorkUnits where+  type AWSResponse GetWorkUnits = GetWorkUnitsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetWorkUnitsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "QueryId")+            Prelude.<*> ( x+                            Data..?> "WorkUnitRanges"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable GetWorkUnits where+  hashWithSalt _salt GetWorkUnits' {..} =+    _salt+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize+      `Prelude.hashWithSalt` queryId++instance Prelude.NFData GetWorkUnits where+  rnf GetWorkUnits' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize+      `Prelude.seq` Prelude.rnf queryId++instance Data.ToHeaders GetWorkUnits where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetWorkUnits where+  toJSON GetWorkUnits' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("NextToken" Data..=) Prelude.<$> nextToken,+            ("PageSize" Data..=) Prelude.<$> pageSize,+            Prelude.Just ("QueryId" Data..= queryId)+          ]+      )++instance Data.ToPath GetWorkUnits where+  toPath = Prelude.const "/GetWorkUnits"++instance Data.ToQuery GetWorkUnits where+  toQuery = Prelude.const Prelude.mempty++-- | A structure for the output.+--+-- /See:/ 'newGetWorkUnitsResponse' smart constructor.+data GetWorkUnitsResponse = GetWorkUnitsResponse'+  { -- | A continuation token for paginating the returned list of tokens,+    -- returned if the current segment of the list is not the last.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the plan query operation.+    queryId :: Prelude.Text,+    -- | A @WorkUnitRangeList@ object that specifies the valid range of work unit+    -- IDs for querying the execution service.+    workUnitRanges :: [WorkUnitRange]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetWorkUnitsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'getWorkUnitsResponse_nextToken' - A continuation token for paginating the returned list of tokens,+-- returned if the current segment of the list is not the last.+--+-- 'httpStatus', 'getWorkUnitsResponse_httpStatus' - The response's http status code.+--+-- 'queryId', 'getWorkUnitsResponse_queryId' - The ID of the plan query operation.+--+-- 'workUnitRanges', 'getWorkUnitsResponse_workUnitRanges' - A @WorkUnitRangeList@ object that specifies the valid range of work unit+-- IDs for querying the execution service.+newGetWorkUnitsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'queryId'+  Prelude.Text ->+  GetWorkUnitsResponse+newGetWorkUnitsResponse pHttpStatus_ pQueryId_ =+  GetWorkUnitsResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      queryId = pQueryId_,+      workUnitRanges = Prelude.mempty+    }++-- | A continuation token for paginating the returned list of tokens,+-- returned if the current segment of the list is not the last.+getWorkUnitsResponse_nextToken :: Lens.Lens' GetWorkUnitsResponse (Prelude.Maybe Prelude.Text)+getWorkUnitsResponse_nextToken = Lens.lens (\GetWorkUnitsResponse' {nextToken} -> nextToken) (\s@GetWorkUnitsResponse' {} a -> s {nextToken = a} :: GetWorkUnitsResponse)++-- | The response's http status code.+getWorkUnitsResponse_httpStatus :: Lens.Lens' GetWorkUnitsResponse Prelude.Int+getWorkUnitsResponse_httpStatus = Lens.lens (\GetWorkUnitsResponse' {httpStatus} -> httpStatus) (\s@GetWorkUnitsResponse' {} a -> s {httpStatus = a} :: GetWorkUnitsResponse)++-- | The ID of the plan query operation.+getWorkUnitsResponse_queryId :: Lens.Lens' GetWorkUnitsResponse Prelude.Text+getWorkUnitsResponse_queryId = Lens.lens (\GetWorkUnitsResponse' {queryId} -> queryId) (\s@GetWorkUnitsResponse' {} a -> s {queryId = a} :: GetWorkUnitsResponse)++-- | A @WorkUnitRangeList@ object that specifies the valid range of work unit+-- IDs for querying the execution service.+getWorkUnitsResponse_workUnitRanges :: Lens.Lens' GetWorkUnitsResponse [WorkUnitRange]+getWorkUnitsResponse_workUnitRanges = Lens.lens (\GetWorkUnitsResponse' {workUnitRanges} -> workUnitRanges) (\s@GetWorkUnitsResponse' {} a -> s {workUnitRanges = a} :: GetWorkUnitsResponse) Prelude.. Lens.coerced++instance Prelude.NFData GetWorkUnitsResponse where+  rnf GetWorkUnitsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf queryId+      `Prelude.seq` Prelude.rnf workUnitRanges
+ gen/Amazonka/LakeFormation/GrantPermissions.hs view
@@ -0,0 +1,264 @@+{-# 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.LakeFormation.GrantPermissions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Grants permissions to the principal to access metadata in the Data+-- Catalog and data organized in underlying data storage such as Amazon S3.+--+-- For information about permissions, see+-- <https://docs-aws.amazon.com/lake-formation/latest/dg/security-data-access.html Security and Access Control to Metadata and Data>.+module Amazonka.LakeFormation.GrantPermissions+  ( -- * Creating a Request+    GrantPermissions (..),+    newGrantPermissions,++    -- * Request Lenses+    grantPermissions_catalogId,+    grantPermissions_permissionsWithGrantOption,+    grantPermissions_principal,+    grantPermissions_resource,+    grantPermissions_permissions,++    -- * Destructuring the Response+    GrantPermissionsResponse (..),+    newGrantPermissionsResponse,++    -- * Response Lenses+    grantPermissionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGrantPermissions' smart constructor.+data GrantPermissions = GrantPermissions'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | Indicates a list of the granted permissions that the principal may pass+    -- to other users. These permissions may only be a subset of the+    -- permissions granted in the @Privileges@.+    permissionsWithGrantOption :: Prelude.Maybe [Permission],+    -- | The principal to be granted the permissions on the resource. Supported+    -- principals are IAM users or IAM roles, and they are defined by their+    -- principal type and their ARN.+    --+    -- Note that if you define a resource with a particular ARN, then later+    -- delete, and recreate a resource with that same ARN, the resource+    -- maintains the permissions already granted.+    principal :: DataLakePrincipal,+    -- | The resource to which permissions are to be granted. Resources in Lake+    -- Formation are the Data Catalog, databases, and tables.+    resource :: Resource,+    -- | The permissions granted to the principal on the resource. Lake Formation+    -- defines privileges to grant and revoke access to metadata in the Data+    -- Catalog and data organized in underlying data storage such as Amazon S3.+    -- Lake Formation requires that each principal be authorized to perform a+    -- specific task on Lake Formation resources.+    permissions :: [Permission]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrantPermissions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'grantPermissions_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'permissionsWithGrantOption', 'grantPermissions_permissionsWithGrantOption' - Indicates a list of the granted permissions that the principal may pass+-- to other users. These permissions may only be a subset of the+-- permissions granted in the @Privileges@.+--+-- 'principal', 'grantPermissions_principal' - The principal to be granted the permissions on the resource. Supported+-- principals are IAM users or IAM roles, and they are defined by their+-- principal type and their ARN.+--+-- Note that if you define a resource with a particular ARN, then later+-- delete, and recreate a resource with that same ARN, the resource+-- maintains the permissions already granted.+--+-- 'resource', 'grantPermissions_resource' - The resource to which permissions are to be granted. Resources in Lake+-- Formation are the Data Catalog, databases, and tables.+--+-- 'permissions', 'grantPermissions_permissions' - The permissions granted to the principal on the resource. Lake Formation+-- defines privileges to grant and revoke access to metadata in the Data+-- Catalog and data organized in underlying data storage such as Amazon S3.+-- Lake Formation requires that each principal be authorized to perform a+-- specific task on Lake Formation resources.+newGrantPermissions ::+  -- | 'principal'+  DataLakePrincipal ->+  -- | 'resource'+  Resource ->+  GrantPermissions+newGrantPermissions pPrincipal_ pResource_ =+  GrantPermissions'+    { catalogId = Prelude.Nothing,+      permissionsWithGrantOption = Prelude.Nothing,+      principal = pPrincipal_,+      resource = pResource_,+      permissions = Prelude.mempty+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+grantPermissions_catalogId :: Lens.Lens' GrantPermissions (Prelude.Maybe Prelude.Text)+grantPermissions_catalogId = Lens.lens (\GrantPermissions' {catalogId} -> catalogId) (\s@GrantPermissions' {} a -> s {catalogId = a} :: GrantPermissions)++-- | Indicates a list of the granted permissions that the principal may pass+-- to other users. These permissions may only be a subset of the+-- permissions granted in the @Privileges@.+grantPermissions_permissionsWithGrantOption :: Lens.Lens' GrantPermissions (Prelude.Maybe [Permission])+grantPermissions_permissionsWithGrantOption = Lens.lens (\GrantPermissions' {permissionsWithGrantOption} -> permissionsWithGrantOption) (\s@GrantPermissions' {} a -> s {permissionsWithGrantOption = a} :: GrantPermissions) Prelude.. Lens.mapping Lens.coerced++-- | The principal to be granted the permissions on the resource. Supported+-- principals are IAM users or IAM roles, and they are defined by their+-- principal type and their ARN.+--+-- Note that if you define a resource with a particular ARN, then later+-- delete, and recreate a resource with that same ARN, the resource+-- maintains the permissions already granted.+grantPermissions_principal :: Lens.Lens' GrantPermissions DataLakePrincipal+grantPermissions_principal = Lens.lens (\GrantPermissions' {principal} -> principal) (\s@GrantPermissions' {} a -> s {principal = a} :: GrantPermissions)++-- | The resource to which permissions are to be granted. Resources in Lake+-- Formation are the Data Catalog, databases, and tables.+grantPermissions_resource :: Lens.Lens' GrantPermissions Resource+grantPermissions_resource = Lens.lens (\GrantPermissions' {resource} -> resource) (\s@GrantPermissions' {} a -> s {resource = a} :: GrantPermissions)++-- | The permissions granted to the principal on the resource. Lake Formation+-- defines privileges to grant and revoke access to metadata in the Data+-- Catalog and data organized in underlying data storage such as Amazon S3.+-- Lake Formation requires that each principal be authorized to perform a+-- specific task on Lake Formation resources.+grantPermissions_permissions :: Lens.Lens' GrantPermissions [Permission]+grantPermissions_permissions = Lens.lens (\GrantPermissions' {permissions} -> permissions) (\s@GrantPermissions' {} a -> s {permissions = a} :: GrantPermissions) Prelude.. Lens.coerced++instance Core.AWSRequest GrantPermissions where+  type+    AWSResponse GrantPermissions =+      GrantPermissionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          GrantPermissionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GrantPermissions where+  hashWithSalt _salt GrantPermissions' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` permissionsWithGrantOption+      `Prelude.hashWithSalt` principal+      `Prelude.hashWithSalt` resource+      `Prelude.hashWithSalt` permissions++instance Prelude.NFData GrantPermissions where+  rnf GrantPermissions' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf permissionsWithGrantOption+      `Prelude.seq` Prelude.rnf principal+      `Prelude.seq` Prelude.rnf resource+      `Prelude.seq` Prelude.rnf permissions++instance Data.ToHeaders GrantPermissions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GrantPermissions where+  toJSON GrantPermissions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("PermissionsWithGrantOption" Data..=)+              Prelude.<$> permissionsWithGrantOption,+            Prelude.Just ("Principal" Data..= principal),+            Prelude.Just ("Resource" Data..= resource),+            Prelude.Just ("Permissions" Data..= permissions)+          ]+      )++instance Data.ToPath GrantPermissions where+  toPath = Prelude.const "/GrantPermissions"++instance Data.ToQuery GrantPermissions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGrantPermissionsResponse' smart constructor.+data GrantPermissionsResponse = GrantPermissionsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrantPermissionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'grantPermissionsResponse_httpStatus' - The response's http status code.+newGrantPermissionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GrantPermissionsResponse+newGrantPermissionsResponse pHttpStatus_ =+  GrantPermissionsResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+grantPermissionsResponse_httpStatus :: Lens.Lens' GrantPermissionsResponse Prelude.Int+grantPermissionsResponse_httpStatus = Lens.lens (\GrantPermissionsResponse' {httpStatus} -> httpStatus) (\s@GrantPermissionsResponse' {} a -> s {httpStatus = a} :: GrantPermissionsResponse)++instance Prelude.NFData GrantPermissionsResponse where+  rnf GrantPermissionsResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/Lens.hs view
@@ -0,0 +1,660 @@+{-# 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.LakeFormation.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.LakeFormation.Lens+  ( -- * Operations++    -- ** AddLFTagsToResource+    addLFTagsToResource_catalogId,+    addLFTagsToResource_resource,+    addLFTagsToResource_lFTags,+    addLFTagsToResourceResponse_failures,+    addLFTagsToResourceResponse_httpStatus,++    -- ** AssumeDecoratedRoleWithSAML+    assumeDecoratedRoleWithSAML_durationSeconds,+    assumeDecoratedRoleWithSAML_sAMLAssertion,+    assumeDecoratedRoleWithSAML_roleArn,+    assumeDecoratedRoleWithSAML_principalArn,+    assumeDecoratedRoleWithSAMLResponse_accessKeyId,+    assumeDecoratedRoleWithSAMLResponse_expiration,+    assumeDecoratedRoleWithSAMLResponse_secretAccessKey,+    assumeDecoratedRoleWithSAMLResponse_sessionToken,+    assumeDecoratedRoleWithSAMLResponse_httpStatus,++    -- ** BatchGrantPermissions+    batchGrantPermissions_catalogId,+    batchGrantPermissions_entries,+    batchGrantPermissionsResponse_failures,+    batchGrantPermissionsResponse_httpStatus,++    -- ** BatchRevokePermissions+    batchRevokePermissions_catalogId,+    batchRevokePermissions_entries,+    batchRevokePermissionsResponse_failures,+    batchRevokePermissionsResponse_httpStatus,++    -- ** CancelTransaction+    cancelTransaction_transactionId,+    cancelTransactionResponse_httpStatus,++    -- ** CommitTransaction+    commitTransaction_transactionId,+    commitTransactionResponse_transactionStatus,+    commitTransactionResponse_httpStatus,++    -- ** CreateDataCellsFilter+    createDataCellsFilter_tableData,+    createDataCellsFilterResponse_httpStatus,++    -- ** CreateLFTag+    createLFTag_catalogId,+    createLFTag_tagKey,+    createLFTag_tagValues,+    createLFTagResponse_httpStatus,++    -- ** DeleteDataCellsFilter+    deleteDataCellsFilter_databaseName,+    deleteDataCellsFilter_name,+    deleteDataCellsFilter_tableCatalogId,+    deleteDataCellsFilter_tableName,+    deleteDataCellsFilterResponse_httpStatus,++    -- ** DeleteLFTag+    deleteLFTag_catalogId,+    deleteLFTag_tagKey,+    deleteLFTagResponse_httpStatus,++    -- ** DeleteObjectsOnCancel+    deleteObjectsOnCancel_catalogId,+    deleteObjectsOnCancel_databaseName,+    deleteObjectsOnCancel_tableName,+    deleteObjectsOnCancel_transactionId,+    deleteObjectsOnCancel_objects,+    deleteObjectsOnCancelResponse_httpStatus,++    -- ** DeregisterResource+    deregisterResource_resourceArn,+    deregisterResourceResponse_httpStatus,++    -- ** DescribeResource+    describeResource_resourceArn,+    describeResourceResponse_resourceInfo,+    describeResourceResponse_httpStatus,++    -- ** DescribeTransaction+    describeTransaction_transactionId,+    describeTransactionResponse_transactionDescription,+    describeTransactionResponse_httpStatus,++    -- ** ExtendTransaction+    extendTransaction_transactionId,+    extendTransactionResponse_httpStatus,++    -- ** GetDataLakeSettings+    getDataLakeSettings_catalogId,+    getDataLakeSettingsResponse_dataLakeSettings,+    getDataLakeSettingsResponse_httpStatus,++    -- ** GetEffectivePermissionsForPath+    getEffectivePermissionsForPath_catalogId,+    getEffectivePermissionsForPath_maxResults,+    getEffectivePermissionsForPath_nextToken,+    getEffectivePermissionsForPath_resourceArn,+    getEffectivePermissionsForPathResponse_nextToken,+    getEffectivePermissionsForPathResponse_permissions,+    getEffectivePermissionsForPathResponse_httpStatus,++    -- ** GetLFTag+    getLFTag_catalogId,+    getLFTag_tagKey,+    getLFTagResponse_catalogId,+    getLFTagResponse_tagKey,+    getLFTagResponse_tagValues,+    getLFTagResponse_httpStatus,++    -- ** GetQueryState+    getQueryState_queryId,+    getQueryStateResponse_error,+    getQueryStateResponse_httpStatus,+    getQueryStateResponse_state,++    -- ** GetQueryStatistics+    getQueryStatistics_queryId,+    getQueryStatisticsResponse_executionStatistics,+    getQueryStatisticsResponse_planningStatistics,+    getQueryStatisticsResponse_querySubmissionTime,+    getQueryStatisticsResponse_httpStatus,++    -- ** GetResourceLFTags+    getResourceLFTags_catalogId,+    getResourceLFTags_showAssignedLFTags,+    getResourceLFTags_resource,+    getResourceLFTagsResponse_lFTagOnDatabase,+    getResourceLFTagsResponse_lFTagsOnColumns,+    getResourceLFTagsResponse_lFTagsOnTable,+    getResourceLFTagsResponse_httpStatus,++    -- ** GetTableObjects+    getTableObjects_catalogId,+    getTableObjects_maxResults,+    getTableObjects_nextToken,+    getTableObjects_partitionPredicate,+    getTableObjects_queryAsOfTime,+    getTableObjects_transactionId,+    getTableObjects_databaseName,+    getTableObjects_tableName,+    getTableObjectsResponse_nextToken,+    getTableObjectsResponse_objects,+    getTableObjectsResponse_httpStatus,++    -- ** GetTemporaryGluePartitionCredentials+    getTemporaryGluePartitionCredentials_auditContext,+    getTemporaryGluePartitionCredentials_durationSeconds,+    getTemporaryGluePartitionCredentials_permissions,+    getTemporaryGluePartitionCredentials_tableArn,+    getTemporaryGluePartitionCredentials_partition,+    getTemporaryGluePartitionCredentials_supportedPermissionTypes,+    getTemporaryGluePartitionCredentialsResponse_accessKeyId,+    getTemporaryGluePartitionCredentialsResponse_expiration,+    getTemporaryGluePartitionCredentialsResponse_secretAccessKey,+    getTemporaryGluePartitionCredentialsResponse_sessionToken,+    getTemporaryGluePartitionCredentialsResponse_httpStatus,++    -- ** GetTemporaryGlueTableCredentials+    getTemporaryGlueTableCredentials_auditContext,+    getTemporaryGlueTableCredentials_durationSeconds,+    getTemporaryGlueTableCredentials_permissions,+    getTemporaryGlueTableCredentials_tableArn,+    getTemporaryGlueTableCredentials_supportedPermissionTypes,+    getTemporaryGlueTableCredentialsResponse_accessKeyId,+    getTemporaryGlueTableCredentialsResponse_expiration,+    getTemporaryGlueTableCredentialsResponse_secretAccessKey,+    getTemporaryGlueTableCredentialsResponse_sessionToken,+    getTemporaryGlueTableCredentialsResponse_httpStatus,++    -- ** GetWorkUnitResults+    getWorkUnitResults_queryId,+    getWorkUnitResults_workUnitId,+    getWorkUnitResults_workUnitToken,+    getWorkUnitResultsResponse_httpStatus,+    getWorkUnitResultsResponse_resultStream,++    -- ** GetWorkUnits+    getWorkUnits_nextToken,+    getWorkUnits_pageSize,+    getWorkUnits_queryId,+    getWorkUnitsResponse_nextToken,+    getWorkUnitsResponse_httpStatus,+    getWorkUnitsResponse_queryId,+    getWorkUnitsResponse_workUnitRanges,++    -- ** GrantPermissions+    grantPermissions_catalogId,+    grantPermissions_permissionsWithGrantOption,+    grantPermissions_principal,+    grantPermissions_resource,+    grantPermissions_permissions,+    grantPermissionsResponse_httpStatus,++    -- ** ListDataCellsFilter+    listDataCellsFilter_maxResults,+    listDataCellsFilter_nextToken,+    listDataCellsFilter_table,+    listDataCellsFilterResponse_dataCellsFilters,+    listDataCellsFilterResponse_nextToken,+    listDataCellsFilterResponse_httpStatus,++    -- ** ListLFTags+    listLFTags_catalogId,+    listLFTags_maxResults,+    listLFTags_nextToken,+    listLFTags_resourceShareType,+    listLFTagsResponse_lFTags,+    listLFTagsResponse_nextToken,+    listLFTagsResponse_httpStatus,++    -- ** ListPermissions+    listPermissions_catalogId,+    listPermissions_includeRelated,+    listPermissions_maxResults,+    listPermissions_nextToken,+    listPermissions_principal,+    listPermissions_resource,+    listPermissions_resourceType,+    listPermissionsResponse_nextToken,+    listPermissionsResponse_principalResourcePermissions,+    listPermissionsResponse_httpStatus,++    -- ** ListResources+    listResources_filterConditionList,+    listResources_maxResults,+    listResources_nextToken,+    listResourcesResponse_nextToken,+    listResourcesResponse_resourceInfoList,+    listResourcesResponse_httpStatus,++    -- ** ListTableStorageOptimizers+    listTableStorageOptimizers_catalogId,+    listTableStorageOptimizers_maxResults,+    listTableStorageOptimizers_nextToken,+    listTableStorageOptimizers_storageOptimizerType,+    listTableStorageOptimizers_databaseName,+    listTableStorageOptimizers_tableName,+    listTableStorageOptimizersResponse_nextToken,+    listTableStorageOptimizersResponse_storageOptimizerList,+    listTableStorageOptimizersResponse_httpStatus,++    -- ** ListTransactions+    listTransactions_catalogId,+    listTransactions_maxResults,+    listTransactions_nextToken,+    listTransactions_statusFilter,+    listTransactionsResponse_nextToken,+    listTransactionsResponse_transactions,+    listTransactionsResponse_httpStatus,++    -- ** PutDataLakeSettings+    putDataLakeSettings_catalogId,+    putDataLakeSettings_dataLakeSettings,+    putDataLakeSettingsResponse_httpStatus,++    -- ** RegisterResource+    registerResource_roleArn,+    registerResource_useServiceLinkedRole,+    registerResource_resourceArn,+    registerResourceResponse_httpStatus,++    -- ** RemoveLFTagsFromResource+    removeLFTagsFromResource_catalogId,+    removeLFTagsFromResource_resource,+    removeLFTagsFromResource_lFTags,+    removeLFTagsFromResourceResponse_failures,+    removeLFTagsFromResourceResponse_httpStatus,++    -- ** RevokePermissions+    revokePermissions_catalogId,+    revokePermissions_permissionsWithGrantOption,+    revokePermissions_principal,+    revokePermissions_resource,+    revokePermissions_permissions,+    revokePermissionsResponse_httpStatus,++    -- ** SearchDatabasesByLFTags+    searchDatabasesByLFTags_catalogId,+    searchDatabasesByLFTags_maxResults,+    searchDatabasesByLFTags_nextToken,+    searchDatabasesByLFTags_expression,+    searchDatabasesByLFTagsResponse_databaseList,+    searchDatabasesByLFTagsResponse_nextToken,+    searchDatabasesByLFTagsResponse_httpStatus,++    -- ** SearchTablesByLFTags+    searchTablesByLFTags_catalogId,+    searchTablesByLFTags_maxResults,+    searchTablesByLFTags_nextToken,+    searchTablesByLFTags_expression,+    searchTablesByLFTagsResponse_nextToken,+    searchTablesByLFTagsResponse_tableList,+    searchTablesByLFTagsResponse_httpStatus,++    -- ** StartQueryPlanning+    startQueryPlanning_queryPlanningContext,+    startQueryPlanning_queryString,+    startQueryPlanningResponse_httpStatus,+    startQueryPlanningResponse_queryId,++    -- ** StartTransaction+    startTransaction_transactionType,+    startTransactionResponse_transactionId,+    startTransactionResponse_httpStatus,++    -- ** UpdateLFTag+    updateLFTag_catalogId,+    updateLFTag_tagValuesToAdd,+    updateLFTag_tagValuesToDelete,+    updateLFTag_tagKey,+    updateLFTagResponse_httpStatus,++    -- ** UpdateResource+    updateResource_roleArn,+    updateResource_resourceArn,+    updateResourceResponse_httpStatus,++    -- ** UpdateTableObjects+    updateTableObjects_catalogId,+    updateTableObjects_transactionId,+    updateTableObjects_databaseName,+    updateTableObjects_tableName,+    updateTableObjects_writeOperations,+    updateTableObjectsResponse_httpStatus,++    -- ** UpdateTableStorageOptimizer+    updateTableStorageOptimizer_catalogId,+    updateTableStorageOptimizer_databaseName,+    updateTableStorageOptimizer_tableName,+    updateTableStorageOptimizer_storageOptimizerConfig,+    updateTableStorageOptimizerResponse_result,+    updateTableStorageOptimizerResponse_httpStatus,++    -- * Types++    -- ** AddObjectInput+    addObjectInput_partitionValues,+    addObjectInput_uri,+    addObjectInput_eTag,+    addObjectInput_size,++    -- ** AllRowsWildcard++    -- ** AuditContext+    auditContext_additionalAuditContext,++    -- ** BatchPermissionsFailureEntry+    batchPermissionsFailureEntry_error,+    batchPermissionsFailureEntry_requestEntry,++    -- ** BatchPermissionsRequestEntry+    batchPermissionsRequestEntry_permissions,+    batchPermissionsRequestEntry_permissionsWithGrantOption,+    batchPermissionsRequestEntry_principal,+    batchPermissionsRequestEntry_resource,+    batchPermissionsRequestEntry_id,++    -- ** CatalogResource++    -- ** ColumnLFTag+    columnLFTag_lFTags,+    columnLFTag_name,++    -- ** ColumnWildcard+    columnWildcard_excludedColumnNames,++    -- ** DataCellsFilter+    dataCellsFilter_columnNames,+    dataCellsFilter_columnWildcard,+    dataCellsFilter_rowFilter,+    dataCellsFilter_tableCatalogId,+    dataCellsFilter_databaseName,+    dataCellsFilter_tableName,+    dataCellsFilter_name,++    -- ** DataCellsFilterResource+    dataCellsFilterResource_databaseName,+    dataCellsFilterResource_name,+    dataCellsFilterResource_tableCatalogId,+    dataCellsFilterResource_tableName,++    -- ** DataLakePrincipal+    dataLakePrincipal_dataLakePrincipalIdentifier,++    -- ** DataLakeSettings+    dataLakeSettings_allowExternalDataFiltering,+    dataLakeSettings_authorizedSessionTagValueList,+    dataLakeSettings_createDatabaseDefaultPermissions,+    dataLakeSettings_createTableDefaultPermissions,+    dataLakeSettings_dataLakeAdmins,+    dataLakeSettings_externalDataFilteringAllowList,+    dataLakeSettings_parameters,+    dataLakeSettings_trustedResourceOwners,++    -- ** DataLocationResource+    dataLocationResource_catalogId,+    dataLocationResource_resourceArn,++    -- ** DatabaseResource+    databaseResource_catalogId,+    databaseResource_name,++    -- ** DeleteObjectInput+    deleteObjectInput_eTag,+    deleteObjectInput_partitionValues,+    deleteObjectInput_uri,++    -- ** DetailsMap+    detailsMap_resourceShare,++    -- ** ErrorDetail+    errorDetail_errorCode,+    errorDetail_errorMessage,++    -- ** ExecutionStatistics+    executionStatistics_averageExecutionTimeMillis,+    executionStatistics_dataScannedBytes,+    executionStatistics_workUnitsExecutedCount,++    -- ** FilterCondition+    filterCondition_comparisonOperator,+    filterCondition_field,+    filterCondition_stringValueList,++    -- ** LFTag+    lFTag_tagKey,+    lFTag_tagValues,++    -- ** LFTagError+    lFTagError_error,+    lFTagError_lFTag,++    -- ** LFTagKeyResource+    lFTagKeyResource_catalogId,+    lFTagKeyResource_tagKey,+    lFTagKeyResource_tagValues,++    -- ** LFTagPair+    lFTagPair_catalogId,+    lFTagPair_tagKey,+    lFTagPair_tagValues,++    -- ** LFTagPolicyResource+    lFTagPolicyResource_catalogId,+    lFTagPolicyResource_resourceType,+    lFTagPolicyResource_expression,++    -- ** PartitionObjects+    partitionObjects_objects,+    partitionObjects_partitionValues,++    -- ** PartitionValueList+    partitionValueList_values,++    -- ** PlanningStatistics+    planningStatistics_estimatedDataToScanBytes,+    planningStatistics_planningTimeMillis,+    planningStatistics_queueTimeMillis,+    planningStatistics_workUnitsGeneratedCount,++    -- ** PrincipalPermissions+    principalPermissions_permissions,+    principalPermissions_principal,++    -- ** PrincipalResourcePermissions+    principalResourcePermissions_additionalDetails,+    principalResourcePermissions_permissions,+    principalResourcePermissions_permissionsWithGrantOption,+    principalResourcePermissions_principal,+    principalResourcePermissions_resource,++    -- ** QueryPlanningContext+    queryPlanningContext_catalogId,+    queryPlanningContext_queryAsOfTime,+    queryPlanningContext_queryParameters,+    queryPlanningContext_transactionId,+    queryPlanningContext_databaseName,++    -- ** Resource+    resource_catalog,+    resource_dataCellsFilter,+    resource_dataLocation,+    resource_database,+    resource_lFTag,+    resource_lFTagPolicy,+    resource_table,+    resource_tableWithColumns,++    -- ** ResourceInfo+    resourceInfo_lastModified,+    resourceInfo_resourceArn,+    resourceInfo_roleArn,++    -- ** RowFilter+    rowFilter_allRowsWildcard,+    rowFilter_filterExpression,++    -- ** StorageOptimizer+    storageOptimizer_config,+    storageOptimizer_errorMessage,+    storageOptimizer_lastRunDetails,+    storageOptimizer_storageOptimizerType,+    storageOptimizer_warnings,++    -- ** TableObject+    tableObject_eTag,+    tableObject_size,+    tableObject_uri,++    -- ** TableResource+    tableResource_catalogId,+    tableResource_name,+    tableResource_tableWildcard,+    tableResource_databaseName,++    -- ** TableWildcard++    -- ** TableWithColumnsResource+    tableWithColumnsResource_catalogId,+    tableWithColumnsResource_columnNames,+    tableWithColumnsResource_columnWildcard,+    tableWithColumnsResource_databaseName,+    tableWithColumnsResource_name,++    -- ** TaggedDatabase+    taggedDatabase_database,+    taggedDatabase_lFTags,++    -- ** TaggedTable+    taggedTable_lFTagOnDatabase,+    taggedTable_lFTagsOnColumns,+    taggedTable_lFTagsOnTable,+    taggedTable_table,++    -- ** TransactionDescription+    transactionDescription_transactionEndTime,+    transactionDescription_transactionId,+    transactionDescription_transactionStartTime,+    transactionDescription_transactionStatus,++    -- ** VirtualObject+    virtualObject_eTag,+    virtualObject_uri,++    -- ** WorkUnitRange+    workUnitRange_workUnitIdMax,+    workUnitRange_workUnitIdMin,+    workUnitRange_workUnitToken,++    -- ** WriteOperation+    writeOperation_addObject,+    writeOperation_deleteObject,+  )+where++import Amazonka.LakeFormation.AddLFTagsToResource+import Amazonka.LakeFormation.AssumeDecoratedRoleWithSAML+import Amazonka.LakeFormation.BatchGrantPermissions+import Amazonka.LakeFormation.BatchRevokePermissions+import Amazonka.LakeFormation.CancelTransaction+import Amazonka.LakeFormation.CommitTransaction+import Amazonka.LakeFormation.CreateDataCellsFilter+import Amazonka.LakeFormation.CreateLFTag+import Amazonka.LakeFormation.DeleteDataCellsFilter+import Amazonka.LakeFormation.DeleteLFTag+import Amazonka.LakeFormation.DeleteObjectsOnCancel+import Amazonka.LakeFormation.DeregisterResource+import Amazonka.LakeFormation.DescribeResource+import Amazonka.LakeFormation.DescribeTransaction+import Amazonka.LakeFormation.ExtendTransaction+import Amazonka.LakeFormation.GetDataLakeSettings+import Amazonka.LakeFormation.GetEffectivePermissionsForPath+import Amazonka.LakeFormation.GetLFTag+import Amazonka.LakeFormation.GetQueryState+import Amazonka.LakeFormation.GetQueryStatistics+import Amazonka.LakeFormation.GetResourceLFTags+import Amazonka.LakeFormation.GetTableObjects+import Amazonka.LakeFormation.GetTemporaryGluePartitionCredentials+import Amazonka.LakeFormation.GetTemporaryGlueTableCredentials+import Amazonka.LakeFormation.GetWorkUnitResults+import Amazonka.LakeFormation.GetWorkUnits+import Amazonka.LakeFormation.GrantPermissions+import Amazonka.LakeFormation.ListDataCellsFilter+import Amazonka.LakeFormation.ListLFTags+import Amazonka.LakeFormation.ListPermissions+import Amazonka.LakeFormation.ListResources+import Amazonka.LakeFormation.ListTableStorageOptimizers+import Amazonka.LakeFormation.ListTransactions+import Amazonka.LakeFormation.PutDataLakeSettings+import Amazonka.LakeFormation.RegisterResource+import Amazonka.LakeFormation.RemoveLFTagsFromResource+import Amazonka.LakeFormation.RevokePermissions+import Amazonka.LakeFormation.SearchDatabasesByLFTags+import Amazonka.LakeFormation.SearchTablesByLFTags+import Amazonka.LakeFormation.StartQueryPlanning+import Amazonka.LakeFormation.StartTransaction+import Amazonka.LakeFormation.Types.AddObjectInput+import Amazonka.LakeFormation.Types.AllRowsWildcard+import Amazonka.LakeFormation.Types.AuditContext+import Amazonka.LakeFormation.Types.BatchPermissionsFailureEntry+import Amazonka.LakeFormation.Types.BatchPermissionsRequestEntry+import Amazonka.LakeFormation.Types.CatalogResource+import Amazonka.LakeFormation.Types.ColumnLFTag+import Amazonka.LakeFormation.Types.ColumnWildcard+import Amazonka.LakeFormation.Types.DataCellsFilter+import Amazonka.LakeFormation.Types.DataCellsFilterResource+import Amazonka.LakeFormation.Types.DataLakePrincipal+import Amazonka.LakeFormation.Types.DataLakeSettings+import Amazonka.LakeFormation.Types.DataLocationResource+import Amazonka.LakeFormation.Types.DatabaseResource+import Amazonka.LakeFormation.Types.DeleteObjectInput+import Amazonka.LakeFormation.Types.DetailsMap+import Amazonka.LakeFormation.Types.ErrorDetail+import Amazonka.LakeFormation.Types.ExecutionStatistics+import Amazonka.LakeFormation.Types.FilterCondition+import Amazonka.LakeFormation.Types.LFTag+import Amazonka.LakeFormation.Types.LFTagError+import Amazonka.LakeFormation.Types.LFTagKeyResource+import Amazonka.LakeFormation.Types.LFTagPair+import Amazonka.LakeFormation.Types.LFTagPolicyResource+import Amazonka.LakeFormation.Types.PartitionObjects+import Amazonka.LakeFormation.Types.PartitionValueList+import Amazonka.LakeFormation.Types.PlanningStatistics+import Amazonka.LakeFormation.Types.PrincipalPermissions+import Amazonka.LakeFormation.Types.PrincipalResourcePermissions+import Amazonka.LakeFormation.Types.QueryPlanningContext+import Amazonka.LakeFormation.Types.Resource+import Amazonka.LakeFormation.Types.ResourceInfo+import Amazonka.LakeFormation.Types.RowFilter+import Amazonka.LakeFormation.Types.StorageOptimizer+import Amazonka.LakeFormation.Types.TableObject+import Amazonka.LakeFormation.Types.TableResource+import Amazonka.LakeFormation.Types.TableWildcard+import Amazonka.LakeFormation.Types.TableWithColumnsResource+import Amazonka.LakeFormation.Types.TaggedDatabase+import Amazonka.LakeFormation.Types.TaggedTable+import Amazonka.LakeFormation.Types.TransactionDescription+import Amazonka.LakeFormation.Types.VirtualObject+import Amazonka.LakeFormation.Types.WorkUnitRange+import Amazonka.LakeFormation.Types.WriteOperation+import Amazonka.LakeFormation.UpdateLFTag+import Amazonka.LakeFormation.UpdateResource+import Amazonka.LakeFormation.UpdateTableObjects+import Amazonka.LakeFormation.UpdateTableStorageOptimizer
+ gen/Amazonka/LakeFormation/ListDataCellsFilter.hs view
@@ -0,0 +1,235 @@+{-# 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.LakeFormation.ListDataCellsFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists all the data cell filters on a table.+--+-- This operation returns paginated results.+module Amazonka.LakeFormation.ListDataCellsFilter+  ( -- * Creating a Request+    ListDataCellsFilter (..),+    newListDataCellsFilter,++    -- * Request Lenses+    listDataCellsFilter_maxResults,+    listDataCellsFilter_nextToken,+    listDataCellsFilter_table,++    -- * Destructuring the Response+    ListDataCellsFilterResponse (..),+    newListDataCellsFilterResponse,++    -- * Response Lenses+    listDataCellsFilterResponse_dataCellsFilters,+    listDataCellsFilterResponse_nextToken,+    listDataCellsFilterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListDataCellsFilter' smart constructor.+data ListDataCellsFilter = ListDataCellsFilter'+  { -- | The maximum size of the response.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A continuation token, if this is a continuation call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A table in the Glue Data Catalog.+    table :: Prelude.Maybe TableResource+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDataCellsFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listDataCellsFilter_maxResults' - The maximum size of the response.+--+-- 'nextToken', 'listDataCellsFilter_nextToken' - A continuation token, if this is a continuation call.+--+-- 'table', 'listDataCellsFilter_table' - A table in the Glue Data Catalog.+newListDataCellsFilter ::+  ListDataCellsFilter+newListDataCellsFilter =+  ListDataCellsFilter'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      table = Prelude.Nothing+    }++-- | The maximum size of the response.+listDataCellsFilter_maxResults :: Lens.Lens' ListDataCellsFilter (Prelude.Maybe Prelude.Natural)+listDataCellsFilter_maxResults = Lens.lens (\ListDataCellsFilter' {maxResults} -> maxResults) (\s@ListDataCellsFilter' {} a -> s {maxResults = a} :: ListDataCellsFilter)++-- | A continuation token, if this is a continuation call.+listDataCellsFilter_nextToken :: Lens.Lens' ListDataCellsFilter (Prelude.Maybe Prelude.Text)+listDataCellsFilter_nextToken = Lens.lens (\ListDataCellsFilter' {nextToken} -> nextToken) (\s@ListDataCellsFilter' {} a -> s {nextToken = a} :: ListDataCellsFilter)++-- | A table in the Glue Data Catalog.+listDataCellsFilter_table :: Lens.Lens' ListDataCellsFilter (Prelude.Maybe TableResource)+listDataCellsFilter_table = Lens.lens (\ListDataCellsFilter' {table} -> table) (\s@ListDataCellsFilter' {} a -> s {table = a} :: ListDataCellsFilter)++instance Core.AWSPager ListDataCellsFilter where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listDataCellsFilterResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listDataCellsFilterResponse_dataCellsFilters+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listDataCellsFilter_nextToken+          Lens..~ rs+          Lens.^? listDataCellsFilterResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListDataCellsFilter where+  type+    AWSResponse ListDataCellsFilter =+      ListDataCellsFilterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListDataCellsFilterResponse'+            Prelude.<$> ( x+                            Data..?> "DataCellsFilters"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListDataCellsFilter where+  hashWithSalt _salt ListDataCellsFilter' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` table++instance Prelude.NFData ListDataCellsFilter where+  rnf ListDataCellsFilter' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf table++instance Data.ToHeaders ListDataCellsFilter where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListDataCellsFilter where+  toJSON ListDataCellsFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("Table" Data..=) Prelude.<$> table+          ]+      )++instance Data.ToPath ListDataCellsFilter where+  toPath = Prelude.const "/ListDataCellsFilter"++instance Data.ToQuery ListDataCellsFilter where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListDataCellsFilterResponse' smart constructor.+data ListDataCellsFilterResponse = ListDataCellsFilterResponse'+  { -- | A list of @DataCellFilter@ structures.+    dataCellsFilters :: Prelude.Maybe [DataCellsFilter],+    -- | A continuation token, if not all requested data cell filters have been+    -- returned.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDataCellsFilterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataCellsFilters', 'listDataCellsFilterResponse_dataCellsFilters' - A list of @DataCellFilter@ structures.+--+-- 'nextToken', 'listDataCellsFilterResponse_nextToken' - A continuation token, if not all requested data cell filters have been+-- returned.+--+-- 'httpStatus', 'listDataCellsFilterResponse_httpStatus' - The response's http status code.+newListDataCellsFilterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListDataCellsFilterResponse+newListDataCellsFilterResponse pHttpStatus_ =+  ListDataCellsFilterResponse'+    { dataCellsFilters =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of @DataCellFilter@ structures.+listDataCellsFilterResponse_dataCellsFilters :: Lens.Lens' ListDataCellsFilterResponse (Prelude.Maybe [DataCellsFilter])+listDataCellsFilterResponse_dataCellsFilters = Lens.lens (\ListDataCellsFilterResponse' {dataCellsFilters} -> dataCellsFilters) (\s@ListDataCellsFilterResponse' {} a -> s {dataCellsFilters = a} :: ListDataCellsFilterResponse) Prelude.. Lens.mapping Lens.coerced++-- | A continuation token, if not all requested data cell filters have been+-- returned.+listDataCellsFilterResponse_nextToken :: Lens.Lens' ListDataCellsFilterResponse (Prelude.Maybe Prelude.Text)+listDataCellsFilterResponse_nextToken = Lens.lens (\ListDataCellsFilterResponse' {nextToken} -> nextToken) (\s@ListDataCellsFilterResponse' {} a -> s {nextToken = a} :: ListDataCellsFilterResponse)++-- | The response's http status code.+listDataCellsFilterResponse_httpStatus :: Lens.Lens' ListDataCellsFilterResponse Prelude.Int+listDataCellsFilterResponse_httpStatus = Lens.lens (\ListDataCellsFilterResponse' {httpStatus} -> httpStatus) (\s@ListDataCellsFilterResponse' {} a -> s {httpStatus = a} :: ListDataCellsFilterResponse)++instance Prelude.NFData ListDataCellsFilterResponse where+  rnf ListDataCellsFilterResponse' {..} =+    Prelude.rnf dataCellsFilters+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/ListLFTags.hs view
@@ -0,0 +1,268 @@+{-# 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.LakeFormation.ListLFTags+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists LF-tags that the requester has permission to view.+--+-- This operation returns paginated results.+module Amazonka.LakeFormation.ListLFTags+  ( -- * Creating a Request+    ListLFTags (..),+    newListLFTags,++    -- * Request Lenses+    listLFTags_catalogId,+    listLFTags_maxResults,+    listLFTags_nextToken,+    listLFTags_resourceShareType,++    -- * Destructuring the Response+    ListLFTagsResponse (..),+    newListLFTagsResponse,++    -- * Response Lenses+    listLFTagsResponse_lFTags,+    listLFTagsResponse_nextToken,+    listLFTagsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListLFTags' smart constructor.+data ListLFTags = ListLFTags'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of results to return.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A continuation token, if this is not the first call to retrieve this+    -- list.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | If resource share type is @ALL@, returns both in-account LF-tags and+    -- shared LF-tags that the requester has permission to view. If resource+    -- share type is @FOREIGN@, returns all share LF-tags that the requester+    -- can view. If no resource share type is passed, lists LF-tags in the+    -- given catalog ID that the requester has permission to view.+    resourceShareType :: Prelude.Maybe ResourceShareType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListLFTags' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'listLFTags_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'maxResults', 'listLFTags_maxResults' - The maximum number of results to return.+--+-- 'nextToken', 'listLFTags_nextToken' - A continuation token, if this is not the first call to retrieve this+-- list.+--+-- 'resourceShareType', 'listLFTags_resourceShareType' - If resource share type is @ALL@, returns both in-account LF-tags and+-- shared LF-tags that the requester has permission to view. If resource+-- share type is @FOREIGN@, returns all share LF-tags that the requester+-- can view. If no resource share type is passed, lists LF-tags in the+-- given catalog ID that the requester has permission to view.+newListLFTags ::+  ListLFTags+newListLFTags =+  ListLFTags'+    { catalogId = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      resourceShareType = Prelude.Nothing+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+listLFTags_catalogId :: Lens.Lens' ListLFTags (Prelude.Maybe Prelude.Text)+listLFTags_catalogId = Lens.lens (\ListLFTags' {catalogId} -> catalogId) (\s@ListLFTags' {} a -> s {catalogId = a} :: ListLFTags)++-- | The maximum number of results to return.+listLFTags_maxResults :: Lens.Lens' ListLFTags (Prelude.Maybe Prelude.Natural)+listLFTags_maxResults = Lens.lens (\ListLFTags' {maxResults} -> maxResults) (\s@ListLFTags' {} a -> s {maxResults = a} :: ListLFTags)++-- | A continuation token, if this is not the first call to retrieve this+-- list.+listLFTags_nextToken :: Lens.Lens' ListLFTags (Prelude.Maybe Prelude.Text)+listLFTags_nextToken = Lens.lens (\ListLFTags' {nextToken} -> nextToken) (\s@ListLFTags' {} a -> s {nextToken = a} :: ListLFTags)++-- | If resource share type is @ALL@, returns both in-account LF-tags and+-- shared LF-tags that the requester has permission to view. If resource+-- share type is @FOREIGN@, returns all share LF-tags that the requester+-- can view. If no resource share type is passed, lists LF-tags in the+-- given catalog ID that the requester has permission to view.+listLFTags_resourceShareType :: Lens.Lens' ListLFTags (Prelude.Maybe ResourceShareType)+listLFTags_resourceShareType = Lens.lens (\ListLFTags' {resourceShareType} -> resourceShareType) (\s@ListLFTags' {} a -> s {resourceShareType = a} :: ListLFTags)++instance Core.AWSPager ListLFTags where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listLFTagsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listLFTagsResponse_lFTags+            Prelude.. Lens._Just+            Prelude.. Lens.to Prelude.toList+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listLFTags_nextToken+          Lens..~ rs+          Lens.^? listLFTagsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListLFTags where+  type AWSResponse ListLFTags = ListLFTagsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListLFTagsResponse'+            Prelude.<$> (x Data..?> "LFTags")+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListLFTags where+  hashWithSalt _salt ListLFTags' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` resourceShareType++instance Prelude.NFData ListLFTags where+  rnf ListLFTags' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf resourceShareType++instance Data.ToHeaders ListLFTags where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListLFTags where+  toJSON ListLFTags' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("ResourceShareType" Data..=)+              Prelude.<$> resourceShareType+          ]+      )++instance Data.ToPath ListLFTags where+  toPath = Prelude.const "/ListLFTags"++instance Data.ToQuery ListLFTags where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListLFTagsResponse' smart constructor.+data ListLFTagsResponse = ListLFTagsResponse'+  { -- | A list of LF-tags that the requested has permission to view.+    lFTags :: Prelude.Maybe (Prelude.NonEmpty LFTagPair),+    -- | A continuation token, present if the current list segment is not the+    -- last.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListLFTagsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lFTags', 'listLFTagsResponse_lFTags' - A list of LF-tags that the requested has permission to view.+--+-- 'nextToken', 'listLFTagsResponse_nextToken' - A continuation token, present if the current list segment is not the+-- last.+--+-- 'httpStatus', 'listLFTagsResponse_httpStatus' - The response's http status code.+newListLFTagsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListLFTagsResponse+newListLFTagsResponse pHttpStatus_ =+  ListLFTagsResponse'+    { lFTags = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of LF-tags that the requested has permission to view.+listLFTagsResponse_lFTags :: Lens.Lens' ListLFTagsResponse (Prelude.Maybe (Prelude.NonEmpty LFTagPair))+listLFTagsResponse_lFTags = Lens.lens (\ListLFTagsResponse' {lFTags} -> lFTags) (\s@ListLFTagsResponse' {} a -> s {lFTags = a} :: ListLFTagsResponse) Prelude.. Lens.mapping Lens.coerced++-- | A continuation token, present if the current list segment is not the+-- last.+listLFTagsResponse_nextToken :: Lens.Lens' ListLFTagsResponse (Prelude.Maybe Prelude.Text)+listLFTagsResponse_nextToken = Lens.lens (\ListLFTagsResponse' {nextToken} -> nextToken) (\s@ListLFTagsResponse' {} a -> s {nextToken = a} :: ListLFTagsResponse)++-- | The response's http status code.+listLFTagsResponse_httpStatus :: Lens.Lens' ListLFTagsResponse Prelude.Int+listLFTagsResponse_httpStatus = Lens.lens (\ListLFTagsResponse' {httpStatus} -> httpStatus) (\s@ListLFTagsResponse' {} a -> s {httpStatus = a} :: ListLFTagsResponse)++instance Prelude.NFData ListLFTagsResponse where+  rnf ListLFTagsResponse' {..} =+    Prelude.rnf lFTags+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/ListPermissions.hs view
@@ -0,0 +1,300 @@+{-# 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.LakeFormation.ListPermissions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of the principal permissions on the resource, filtered by+-- the permissions of the caller. For example, if you are granted an ALTER+-- permission, you are able to see only the principal permissions for+-- ALTER.+--+-- This operation returns only those permissions that have been explicitly+-- granted.+--+-- For information about permissions, see+-- <https://docs-aws.amazon.com/lake-formation/latest/dg/security-data-access.html Security and Access Control to Metadata and Data>.+module Amazonka.LakeFormation.ListPermissions+  ( -- * Creating a Request+    ListPermissions (..),+    newListPermissions,++    -- * Request Lenses+    listPermissions_catalogId,+    listPermissions_includeRelated,+    listPermissions_maxResults,+    listPermissions_nextToken,+    listPermissions_principal,+    listPermissions_resource,+    listPermissions_resourceType,++    -- * Destructuring the Response+    ListPermissionsResponse (..),+    newListPermissionsResponse,++    -- * Response Lenses+    listPermissionsResponse_nextToken,+    listPermissionsResponse_principalResourcePermissions,+    listPermissionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListPermissions' smart constructor.+data ListPermissions = ListPermissions'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | Indicates that related permissions should be included in the results.+    includeRelated :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of results to return.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A continuation token, if this is not the first call to retrieve this+    -- list.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Specifies a principal to filter the permissions returned.+    principal :: Prelude.Maybe DataLakePrincipal,+    -- | A resource where you will get a list of the principal permissions.+    --+    -- This operation does not support getting privileges on a table with+    -- columns. Instead, call this operation on the table, and the operation+    -- returns the table and the table w columns.+    resource :: Prelude.Maybe Resource,+    -- | Specifies a resource type to filter the permissions returned.+    resourceType :: Prelude.Maybe DataLakeResourceType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListPermissions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'listPermissions_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'includeRelated', 'listPermissions_includeRelated' - Indicates that related permissions should be included in the results.+--+-- 'maxResults', 'listPermissions_maxResults' - The maximum number of results to return.+--+-- 'nextToken', 'listPermissions_nextToken' - A continuation token, if this is not the first call to retrieve this+-- list.+--+-- 'principal', 'listPermissions_principal' - Specifies a principal to filter the permissions returned.+--+-- 'resource', 'listPermissions_resource' - A resource where you will get a list of the principal permissions.+--+-- This operation does not support getting privileges on a table with+-- columns. Instead, call this operation on the table, and the operation+-- returns the table and the table w columns.+--+-- 'resourceType', 'listPermissions_resourceType' - Specifies a resource type to filter the permissions returned.+newListPermissions ::+  ListPermissions+newListPermissions =+  ListPermissions'+    { catalogId = Prelude.Nothing,+      includeRelated = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      principal = Prelude.Nothing,+      resource = Prelude.Nothing,+      resourceType = Prelude.Nothing+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+listPermissions_catalogId :: Lens.Lens' ListPermissions (Prelude.Maybe Prelude.Text)+listPermissions_catalogId = Lens.lens (\ListPermissions' {catalogId} -> catalogId) (\s@ListPermissions' {} a -> s {catalogId = a} :: ListPermissions)++-- | Indicates that related permissions should be included in the results.+listPermissions_includeRelated :: Lens.Lens' ListPermissions (Prelude.Maybe Prelude.Text)+listPermissions_includeRelated = Lens.lens (\ListPermissions' {includeRelated} -> includeRelated) (\s@ListPermissions' {} a -> s {includeRelated = a} :: ListPermissions)++-- | The maximum number of results to return.+listPermissions_maxResults :: Lens.Lens' ListPermissions (Prelude.Maybe Prelude.Natural)+listPermissions_maxResults = Lens.lens (\ListPermissions' {maxResults} -> maxResults) (\s@ListPermissions' {} a -> s {maxResults = a} :: ListPermissions)++-- | A continuation token, if this is not the first call to retrieve this+-- list.+listPermissions_nextToken :: Lens.Lens' ListPermissions (Prelude.Maybe Prelude.Text)+listPermissions_nextToken = Lens.lens (\ListPermissions' {nextToken} -> nextToken) (\s@ListPermissions' {} a -> s {nextToken = a} :: ListPermissions)++-- | Specifies a principal to filter the permissions returned.+listPermissions_principal :: Lens.Lens' ListPermissions (Prelude.Maybe DataLakePrincipal)+listPermissions_principal = Lens.lens (\ListPermissions' {principal} -> principal) (\s@ListPermissions' {} a -> s {principal = a} :: ListPermissions)++-- | A resource where you will get a list of the principal permissions.+--+-- This operation does not support getting privileges on a table with+-- columns. Instead, call this operation on the table, and the operation+-- returns the table and the table w columns.+listPermissions_resource :: Lens.Lens' ListPermissions (Prelude.Maybe Resource)+listPermissions_resource = Lens.lens (\ListPermissions' {resource} -> resource) (\s@ListPermissions' {} a -> s {resource = a} :: ListPermissions)++-- | Specifies a resource type to filter the permissions returned.+listPermissions_resourceType :: Lens.Lens' ListPermissions (Prelude.Maybe DataLakeResourceType)+listPermissions_resourceType = Lens.lens (\ListPermissions' {resourceType} -> resourceType) (\s@ListPermissions' {} a -> s {resourceType = a} :: ListPermissions)++instance Core.AWSRequest ListPermissions where+  type+    AWSResponse ListPermissions =+      ListPermissionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListPermissionsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "PrincipalResourcePermissions"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListPermissions where+  hashWithSalt _salt ListPermissions' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` includeRelated+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` principal+      `Prelude.hashWithSalt` resource+      `Prelude.hashWithSalt` resourceType++instance Prelude.NFData ListPermissions where+  rnf ListPermissions' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf includeRelated+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf principal+      `Prelude.seq` Prelude.rnf resource+      `Prelude.seq` Prelude.rnf resourceType++instance Data.ToHeaders ListPermissions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListPermissions where+  toJSON ListPermissions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("IncludeRelated" Data..=)+              Prelude.<$> includeRelated,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("Principal" Data..=) Prelude.<$> principal,+            ("Resource" Data..=) Prelude.<$> resource,+            ("ResourceType" Data..=) Prelude.<$> resourceType+          ]+      )++instance Data.ToPath ListPermissions where+  toPath = Prelude.const "/ListPermissions"++instance Data.ToQuery ListPermissions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListPermissionsResponse' smart constructor.+data ListPermissionsResponse = ListPermissionsResponse'+  { -- | A continuation token, if this is not the first call to retrieve this+    -- list.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of principals and their permissions on the resource for the+    -- specified principal and resource types.+    principalResourcePermissions :: Prelude.Maybe [PrincipalResourcePermissions],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListPermissionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listPermissionsResponse_nextToken' - A continuation token, if this is not the first call to retrieve this+-- list.+--+-- 'principalResourcePermissions', 'listPermissionsResponse_principalResourcePermissions' - A list of principals and their permissions on the resource for the+-- specified principal and resource types.+--+-- 'httpStatus', 'listPermissionsResponse_httpStatus' - The response's http status code.+newListPermissionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListPermissionsResponse+newListPermissionsResponse pHttpStatus_ =+  ListPermissionsResponse'+    { nextToken =+        Prelude.Nothing,+      principalResourcePermissions = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A continuation token, if this is not the first call to retrieve this+-- list.+listPermissionsResponse_nextToken :: Lens.Lens' ListPermissionsResponse (Prelude.Maybe Prelude.Text)+listPermissionsResponse_nextToken = Lens.lens (\ListPermissionsResponse' {nextToken} -> nextToken) (\s@ListPermissionsResponse' {} a -> s {nextToken = a} :: ListPermissionsResponse)++-- | A list of principals and their permissions on the resource for the+-- specified principal and resource types.+listPermissionsResponse_principalResourcePermissions :: Lens.Lens' ListPermissionsResponse (Prelude.Maybe [PrincipalResourcePermissions])+listPermissionsResponse_principalResourcePermissions = Lens.lens (\ListPermissionsResponse' {principalResourcePermissions} -> principalResourcePermissions) (\s@ListPermissionsResponse' {} a -> s {principalResourcePermissions = a} :: ListPermissionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listPermissionsResponse_httpStatus :: Lens.Lens' ListPermissionsResponse Prelude.Int+listPermissionsResponse_httpStatus = Lens.lens (\ListPermissionsResponse' {httpStatus} -> httpStatus) (\s@ListPermissionsResponse' {} a -> s {httpStatus = a} :: ListPermissionsResponse)++instance Prelude.NFData ListPermissionsResponse where+  rnf ListPermissionsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf principalResourcePermissions+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/ListResources.hs view
@@ -0,0 +1,218 @@+{-# 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.LakeFormation.ListResources+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists the resources registered to be managed by the Data Catalog.+module Amazonka.LakeFormation.ListResources+  ( -- * Creating a Request+    ListResources (..),+    newListResources,++    -- * Request Lenses+    listResources_filterConditionList,+    listResources_maxResults,+    listResources_nextToken,++    -- * Destructuring the Response+    ListResourcesResponse (..),+    newListResourcesResponse,++    -- * Response Lenses+    listResourcesResponse_nextToken,+    listResourcesResponse_resourceInfoList,+    listResourcesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListResources' smart constructor.+data ListResources = ListResources'+  { -- | Any applicable row-level and\/or column-level filtering conditions for+    -- the resources.+    filterConditionList :: Prelude.Maybe (Prelude.NonEmpty FilterCondition),+    -- | The maximum number of resource results.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A continuation token, if this is not the first call to retrieve these+    -- resources.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListResources' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filterConditionList', 'listResources_filterConditionList' - Any applicable row-level and\/or column-level filtering conditions for+-- the resources.+--+-- 'maxResults', 'listResources_maxResults' - The maximum number of resource results.+--+-- 'nextToken', 'listResources_nextToken' - A continuation token, if this is not the first call to retrieve these+-- resources.+newListResources ::+  ListResources+newListResources =+  ListResources'+    { filterConditionList =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | Any applicable row-level and\/or column-level filtering conditions for+-- the resources.+listResources_filterConditionList :: Lens.Lens' ListResources (Prelude.Maybe (Prelude.NonEmpty FilterCondition))+listResources_filterConditionList = Lens.lens (\ListResources' {filterConditionList} -> filterConditionList) (\s@ListResources' {} a -> s {filterConditionList = a} :: ListResources) Prelude.. Lens.mapping Lens.coerced++-- | The maximum number of resource results.+listResources_maxResults :: Lens.Lens' ListResources (Prelude.Maybe Prelude.Natural)+listResources_maxResults = Lens.lens (\ListResources' {maxResults} -> maxResults) (\s@ListResources' {} a -> s {maxResults = a} :: ListResources)++-- | A continuation token, if this is not the first call to retrieve these+-- resources.+listResources_nextToken :: Lens.Lens' ListResources (Prelude.Maybe Prelude.Text)+listResources_nextToken = Lens.lens (\ListResources' {nextToken} -> nextToken) (\s@ListResources' {} a -> s {nextToken = a} :: ListResources)++instance Core.AWSRequest ListResources where+  type+    AWSResponse ListResources =+      ListResourcesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListResourcesResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "ResourceInfoList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListResources where+  hashWithSalt _salt ListResources' {..} =+    _salt+      `Prelude.hashWithSalt` filterConditionList+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListResources where+  rnf ListResources' {..} =+    Prelude.rnf filterConditionList+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListResources where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListResources where+  toJSON ListResources' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FilterConditionList" Data..=)+              Prelude.<$> filterConditionList,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListResources where+  toPath = Prelude.const "/ListResources"++instance Data.ToQuery ListResources where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListResourcesResponse' smart constructor.+data ListResourcesResponse = ListResourcesResponse'+  { -- | A continuation token, if this is not the first call to retrieve these+    -- resources.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A summary of the data lake resources.+    resourceInfoList :: Prelude.Maybe [ResourceInfo],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListResourcesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listResourcesResponse_nextToken' - A continuation token, if this is not the first call to retrieve these+-- resources.+--+-- 'resourceInfoList', 'listResourcesResponse_resourceInfoList' - A summary of the data lake resources.+--+-- 'httpStatus', 'listResourcesResponse_httpStatus' - The response's http status code.+newListResourcesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListResourcesResponse+newListResourcesResponse pHttpStatus_ =+  ListResourcesResponse'+    { nextToken = Prelude.Nothing,+      resourceInfoList = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A continuation token, if this is not the first call to retrieve these+-- resources.+listResourcesResponse_nextToken :: Lens.Lens' ListResourcesResponse (Prelude.Maybe Prelude.Text)+listResourcesResponse_nextToken = Lens.lens (\ListResourcesResponse' {nextToken} -> nextToken) (\s@ListResourcesResponse' {} a -> s {nextToken = a} :: ListResourcesResponse)++-- | A summary of the data lake resources.+listResourcesResponse_resourceInfoList :: Lens.Lens' ListResourcesResponse (Prelude.Maybe [ResourceInfo])+listResourcesResponse_resourceInfoList = Lens.lens (\ListResourcesResponse' {resourceInfoList} -> resourceInfoList) (\s@ListResourcesResponse' {} a -> s {resourceInfoList = a} :: ListResourcesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listResourcesResponse_httpStatus :: Lens.Lens' ListResourcesResponse Prelude.Int+listResourcesResponse_httpStatus = Lens.lens (\ListResourcesResponse' {httpStatus} -> httpStatus) (\s@ListResourcesResponse' {} a -> s {httpStatus = a} :: ListResourcesResponse)++instance Prelude.NFData ListResourcesResponse where+  rnf ListResourcesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf resourceInfoList+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/ListTableStorageOptimizers.hs view
@@ -0,0 +1,265 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.ListTableStorageOptimizers+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the configuration of all storage optimizers associated with a+-- specified table.+module Amazonka.LakeFormation.ListTableStorageOptimizers+  ( -- * Creating a Request+    ListTableStorageOptimizers (..),+    newListTableStorageOptimizers,++    -- * Request Lenses+    listTableStorageOptimizers_catalogId,+    listTableStorageOptimizers_maxResults,+    listTableStorageOptimizers_nextToken,+    listTableStorageOptimizers_storageOptimizerType,+    listTableStorageOptimizers_databaseName,+    listTableStorageOptimizers_tableName,++    -- * Destructuring the Response+    ListTableStorageOptimizersResponse (..),+    newListTableStorageOptimizersResponse,++    -- * Response Lenses+    listTableStorageOptimizersResponse_nextToken,+    listTableStorageOptimizersResponse_storageOptimizerList,+    listTableStorageOptimizersResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTableStorageOptimizers' smart constructor.+data ListTableStorageOptimizers = ListTableStorageOptimizers'+  { -- | The Catalog ID of the table.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The number of storage optimizers to return on each call.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A continuation token, if this is a continuation call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The specific type of storage optimizers to list. The supported value is+    -- @compaction@.+    storageOptimizerType :: Prelude.Maybe OptimizerType,+    -- | Name of the database where the table is present.+    databaseName :: Prelude.Text,+    -- | Name of the table.+    tableName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTableStorageOptimizers' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'listTableStorageOptimizers_catalogId' - The Catalog ID of the table.+--+-- 'maxResults', 'listTableStorageOptimizers_maxResults' - The number of storage optimizers to return on each call.+--+-- 'nextToken', 'listTableStorageOptimizers_nextToken' - A continuation token, if this is a continuation call.+--+-- 'storageOptimizerType', 'listTableStorageOptimizers_storageOptimizerType' - The specific type of storage optimizers to list. The supported value is+-- @compaction@.+--+-- 'databaseName', 'listTableStorageOptimizers_databaseName' - Name of the database where the table is present.+--+-- 'tableName', 'listTableStorageOptimizers_tableName' - Name of the table.+newListTableStorageOptimizers ::+  -- | 'databaseName'+  Prelude.Text ->+  -- | 'tableName'+  Prelude.Text ->+  ListTableStorageOptimizers+newListTableStorageOptimizers+  pDatabaseName_+  pTableName_ =+    ListTableStorageOptimizers'+      { catalogId =+          Prelude.Nothing,+        maxResults = Prelude.Nothing,+        nextToken = Prelude.Nothing,+        storageOptimizerType = Prelude.Nothing,+        databaseName = pDatabaseName_,+        tableName = pTableName_+      }++-- | The Catalog ID of the table.+listTableStorageOptimizers_catalogId :: Lens.Lens' ListTableStorageOptimizers (Prelude.Maybe Prelude.Text)+listTableStorageOptimizers_catalogId = Lens.lens (\ListTableStorageOptimizers' {catalogId} -> catalogId) (\s@ListTableStorageOptimizers' {} a -> s {catalogId = a} :: ListTableStorageOptimizers)++-- | The number of storage optimizers to return on each call.+listTableStorageOptimizers_maxResults :: Lens.Lens' ListTableStorageOptimizers (Prelude.Maybe Prelude.Natural)+listTableStorageOptimizers_maxResults = Lens.lens (\ListTableStorageOptimizers' {maxResults} -> maxResults) (\s@ListTableStorageOptimizers' {} a -> s {maxResults = a} :: ListTableStorageOptimizers)++-- | A continuation token, if this is a continuation call.+listTableStorageOptimizers_nextToken :: Lens.Lens' ListTableStorageOptimizers (Prelude.Maybe Prelude.Text)+listTableStorageOptimizers_nextToken = Lens.lens (\ListTableStorageOptimizers' {nextToken} -> nextToken) (\s@ListTableStorageOptimizers' {} a -> s {nextToken = a} :: ListTableStorageOptimizers)++-- | The specific type of storage optimizers to list. The supported value is+-- @compaction@.+listTableStorageOptimizers_storageOptimizerType :: Lens.Lens' ListTableStorageOptimizers (Prelude.Maybe OptimizerType)+listTableStorageOptimizers_storageOptimizerType = Lens.lens (\ListTableStorageOptimizers' {storageOptimizerType} -> storageOptimizerType) (\s@ListTableStorageOptimizers' {} a -> s {storageOptimizerType = a} :: ListTableStorageOptimizers)++-- | Name of the database where the table is present.+listTableStorageOptimizers_databaseName :: Lens.Lens' ListTableStorageOptimizers Prelude.Text+listTableStorageOptimizers_databaseName = Lens.lens (\ListTableStorageOptimizers' {databaseName} -> databaseName) (\s@ListTableStorageOptimizers' {} a -> s {databaseName = a} :: ListTableStorageOptimizers)++-- | Name of the table.+listTableStorageOptimizers_tableName :: Lens.Lens' ListTableStorageOptimizers Prelude.Text+listTableStorageOptimizers_tableName = Lens.lens (\ListTableStorageOptimizers' {tableName} -> tableName) (\s@ListTableStorageOptimizers' {} a -> s {tableName = a} :: ListTableStorageOptimizers)++instance Core.AWSRequest ListTableStorageOptimizers where+  type+    AWSResponse ListTableStorageOptimizers =+      ListTableStorageOptimizersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTableStorageOptimizersResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "StorageOptimizerList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTableStorageOptimizers where+  hashWithSalt _salt ListTableStorageOptimizers' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` storageOptimizerType+      `Prelude.hashWithSalt` databaseName+      `Prelude.hashWithSalt` tableName++instance Prelude.NFData ListTableStorageOptimizers where+  rnf ListTableStorageOptimizers' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf storageOptimizerType+      `Prelude.seq` Prelude.rnf databaseName+      `Prelude.seq` Prelude.rnf tableName++instance Data.ToHeaders ListTableStorageOptimizers where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListTableStorageOptimizers where+  toJSON ListTableStorageOptimizers' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("StorageOptimizerType" Data..=)+              Prelude.<$> storageOptimizerType,+            Prelude.Just ("DatabaseName" Data..= databaseName),+            Prelude.Just ("TableName" Data..= tableName)+          ]+      )++instance Data.ToPath ListTableStorageOptimizers where+  toPath = Prelude.const "/ListTableStorageOptimizers"++instance Data.ToQuery ListTableStorageOptimizers where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTableStorageOptimizersResponse' smart constructor.+data ListTableStorageOptimizersResponse = ListTableStorageOptimizersResponse'+  { -- | A continuation token for paginating the returned list of tokens,+    -- returned if the current segment of the list is not the last.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of the storage optimizers associated with a table.+    storageOptimizerList :: Prelude.Maybe [StorageOptimizer],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTableStorageOptimizersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listTableStorageOptimizersResponse_nextToken' - A continuation token for paginating the returned list of tokens,+-- returned if the current segment of the list is not the last.+--+-- 'storageOptimizerList', 'listTableStorageOptimizersResponse_storageOptimizerList' - A list of the storage optimizers associated with a table.+--+-- 'httpStatus', 'listTableStorageOptimizersResponse_httpStatus' - The response's http status code.+newListTableStorageOptimizersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTableStorageOptimizersResponse+newListTableStorageOptimizersResponse pHttpStatus_ =+  ListTableStorageOptimizersResponse'+    { nextToken =+        Prelude.Nothing,+      storageOptimizerList = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A continuation token for paginating the returned list of tokens,+-- returned if the current segment of the list is not the last.+listTableStorageOptimizersResponse_nextToken :: Lens.Lens' ListTableStorageOptimizersResponse (Prelude.Maybe Prelude.Text)+listTableStorageOptimizersResponse_nextToken = Lens.lens (\ListTableStorageOptimizersResponse' {nextToken} -> nextToken) (\s@ListTableStorageOptimizersResponse' {} a -> s {nextToken = a} :: ListTableStorageOptimizersResponse)++-- | A list of the storage optimizers associated with a table.+listTableStorageOptimizersResponse_storageOptimizerList :: Lens.Lens' ListTableStorageOptimizersResponse (Prelude.Maybe [StorageOptimizer])+listTableStorageOptimizersResponse_storageOptimizerList = Lens.lens (\ListTableStorageOptimizersResponse' {storageOptimizerList} -> storageOptimizerList) (\s@ListTableStorageOptimizersResponse' {} a -> s {storageOptimizerList = a} :: ListTableStorageOptimizersResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTableStorageOptimizersResponse_httpStatus :: Lens.Lens' ListTableStorageOptimizersResponse Prelude.Int+listTableStorageOptimizersResponse_httpStatus = Lens.lens (\ListTableStorageOptimizersResponse' {httpStatus} -> httpStatus) (\s@ListTableStorageOptimizersResponse' {} a -> s {httpStatus = a} :: ListTableStorageOptimizersResponse)++instance+  Prelude.NFData+    ListTableStorageOptimizersResponse+  where+  rnf ListTableStorageOptimizersResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf storageOptimizerList+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/ListTransactions.hs view
@@ -0,0 +1,235 @@+{-# 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.LakeFormation.ListTransactions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns metadata about transactions and their status. To prevent the+-- response from growing indefinitely, only uncommitted transactions and+-- those available for time-travel queries are returned.+--+-- This operation can help you identify uncommitted transactions or to get+-- information about transactions.+module Amazonka.LakeFormation.ListTransactions+  ( -- * Creating a Request+    ListTransactions (..),+    newListTransactions,++    -- * Request Lenses+    listTransactions_catalogId,+    listTransactions_maxResults,+    listTransactions_nextToken,+    listTransactions_statusFilter,++    -- * Destructuring the Response+    ListTransactionsResponse (..),+    newListTransactionsResponse,++    -- * Response Lenses+    listTransactionsResponse_nextToken,+    listTransactionsResponse_transactions,+    listTransactionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTransactions' smart constructor.+data ListTransactions = ListTransactions'+  { -- | The catalog for which to list transactions. Defaults to the account ID+    -- of the caller.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of transactions to return in a single call.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A continuation token if this is not the first call to retrieve+    -- transactions.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A filter indicating the status of transactions to return. Options are+    -- ALL | COMPLETED | COMMITTED | ABORTED | ACTIVE. The default is @ALL@.+    statusFilter :: Prelude.Maybe TransactionStatusFilter+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTransactions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'listTransactions_catalogId' - The catalog for which to list transactions. Defaults to the account ID+-- of the caller.+--+-- 'maxResults', 'listTransactions_maxResults' - The maximum number of transactions to return in a single call.+--+-- 'nextToken', 'listTransactions_nextToken' - A continuation token if this is not the first call to retrieve+-- transactions.+--+-- 'statusFilter', 'listTransactions_statusFilter' - A filter indicating the status of transactions to return. Options are+-- ALL | COMPLETED | COMMITTED | ABORTED | ACTIVE. The default is @ALL@.+newListTransactions ::+  ListTransactions+newListTransactions =+  ListTransactions'+    { catalogId = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      statusFilter = Prelude.Nothing+    }++-- | The catalog for which to list transactions. Defaults to the account ID+-- of the caller.+listTransactions_catalogId :: Lens.Lens' ListTransactions (Prelude.Maybe Prelude.Text)+listTransactions_catalogId = Lens.lens (\ListTransactions' {catalogId} -> catalogId) (\s@ListTransactions' {} a -> s {catalogId = a} :: ListTransactions)++-- | The maximum number of transactions to return in a single call.+listTransactions_maxResults :: Lens.Lens' ListTransactions (Prelude.Maybe Prelude.Natural)+listTransactions_maxResults = Lens.lens (\ListTransactions' {maxResults} -> maxResults) (\s@ListTransactions' {} a -> s {maxResults = a} :: ListTransactions)++-- | A continuation token if this is not the first call to retrieve+-- transactions.+listTransactions_nextToken :: Lens.Lens' ListTransactions (Prelude.Maybe Prelude.Text)+listTransactions_nextToken = Lens.lens (\ListTransactions' {nextToken} -> nextToken) (\s@ListTransactions' {} a -> s {nextToken = a} :: ListTransactions)++-- | A filter indicating the status of transactions to return. Options are+-- ALL | COMPLETED | COMMITTED | ABORTED | ACTIVE. The default is @ALL@.+listTransactions_statusFilter :: Lens.Lens' ListTransactions (Prelude.Maybe TransactionStatusFilter)+listTransactions_statusFilter = Lens.lens (\ListTransactions' {statusFilter} -> statusFilter) (\s@ListTransactions' {} a -> s {statusFilter = a} :: ListTransactions)++instance Core.AWSRequest ListTransactions where+  type+    AWSResponse ListTransactions =+      ListTransactionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTransactionsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "Transactions" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTransactions where+  hashWithSalt _salt ListTransactions' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` statusFilter++instance Prelude.NFData ListTransactions where+  rnf ListTransactions' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf statusFilter++instance Data.ToHeaders ListTransactions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListTransactions where+  toJSON ListTransactions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("StatusFilter" Data..=) Prelude.<$> statusFilter+          ]+      )++instance Data.ToPath ListTransactions where+  toPath = Prelude.const "/ListTransactions"++instance Data.ToQuery ListTransactions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTransactionsResponse' smart constructor.+data ListTransactionsResponse = ListTransactionsResponse'+  { -- | A continuation token indicating whether additional data is available.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of transactions. The record for each transaction is a+    -- @TransactionDescription@ object.+    transactions :: Prelude.Maybe [TransactionDescription],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTransactionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listTransactionsResponse_nextToken' - A continuation token indicating whether additional data is available.+--+-- 'transactions', 'listTransactionsResponse_transactions' - A list of transactions. The record for each transaction is a+-- @TransactionDescription@ object.+--+-- 'httpStatus', 'listTransactionsResponse_httpStatus' - The response's http status code.+newListTransactionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTransactionsResponse+newListTransactionsResponse pHttpStatus_ =+  ListTransactionsResponse'+    { nextToken =+        Prelude.Nothing,+      transactions = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A continuation token indicating whether additional data is available.+listTransactionsResponse_nextToken :: Lens.Lens' ListTransactionsResponse (Prelude.Maybe Prelude.Text)+listTransactionsResponse_nextToken = Lens.lens (\ListTransactionsResponse' {nextToken} -> nextToken) (\s@ListTransactionsResponse' {} a -> s {nextToken = a} :: ListTransactionsResponse)++-- | A list of transactions. The record for each transaction is a+-- @TransactionDescription@ object.+listTransactionsResponse_transactions :: Lens.Lens' ListTransactionsResponse (Prelude.Maybe [TransactionDescription])+listTransactionsResponse_transactions = Lens.lens (\ListTransactionsResponse' {transactions} -> transactions) (\s@ListTransactionsResponse' {} a -> s {transactions = a} :: ListTransactionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTransactionsResponse_httpStatus :: Lens.Lens' ListTransactionsResponse Prelude.Int+listTransactionsResponse_httpStatus = Lens.lens (\ListTransactionsResponse' {httpStatus} -> httpStatus) (\s@ListTransactionsResponse' {} a -> s {httpStatus = a} :: ListTransactionsResponse)++instance Prelude.NFData ListTransactionsResponse where+  rnf ListTransactionsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf transactions+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/PutDataLakeSettings.hs view
@@ -0,0 +1,190 @@+{-# 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.LakeFormation.PutDataLakeSettings+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Sets the list of data lake administrators who have admin privileges on+-- all resources managed by Lake Formation. For more information on admin+-- privileges, see+-- <https://docs.aws.amazon.com/lake-formation/latest/dg/lake-formation-permissions.html Granting Lake Formation Permissions>.+--+-- This API replaces the current list of data lake admins with the new list+-- being passed. To add an admin, fetch the current list and add the new+-- admin to that list and pass that list in this API.+module Amazonka.LakeFormation.PutDataLakeSettings+  ( -- * Creating a Request+    PutDataLakeSettings (..),+    newPutDataLakeSettings,++    -- * Request Lenses+    putDataLakeSettings_catalogId,+    putDataLakeSettings_dataLakeSettings,++    -- * Destructuring the Response+    PutDataLakeSettingsResponse (..),+    newPutDataLakeSettingsResponse,++    -- * Response Lenses+    putDataLakeSettingsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutDataLakeSettings' smart constructor.+data PutDataLakeSettings = PutDataLakeSettings'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | A structure representing a list of Lake Formation principals designated+    -- as data lake administrators.+    dataLakeSettings :: DataLakeSettings+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutDataLakeSettings' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'putDataLakeSettings_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'dataLakeSettings', 'putDataLakeSettings_dataLakeSettings' - A structure representing a list of Lake Formation principals designated+-- as data lake administrators.+newPutDataLakeSettings ::+  -- | 'dataLakeSettings'+  DataLakeSettings ->+  PutDataLakeSettings+newPutDataLakeSettings pDataLakeSettings_ =+  PutDataLakeSettings'+    { catalogId = Prelude.Nothing,+      dataLakeSettings = pDataLakeSettings_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+putDataLakeSettings_catalogId :: Lens.Lens' PutDataLakeSettings (Prelude.Maybe Prelude.Text)+putDataLakeSettings_catalogId = Lens.lens (\PutDataLakeSettings' {catalogId} -> catalogId) (\s@PutDataLakeSettings' {} a -> s {catalogId = a} :: PutDataLakeSettings)++-- | A structure representing a list of Lake Formation principals designated+-- as data lake administrators.+putDataLakeSettings_dataLakeSettings :: Lens.Lens' PutDataLakeSettings DataLakeSettings+putDataLakeSettings_dataLakeSettings = Lens.lens (\PutDataLakeSettings' {dataLakeSettings} -> dataLakeSettings) (\s@PutDataLakeSettings' {} a -> s {dataLakeSettings = a} :: PutDataLakeSettings)++instance Core.AWSRequest PutDataLakeSettings where+  type+    AWSResponse PutDataLakeSettings =+      PutDataLakeSettingsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutDataLakeSettingsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutDataLakeSettings where+  hashWithSalt _salt PutDataLakeSettings' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` dataLakeSettings++instance Prelude.NFData PutDataLakeSettings where+  rnf PutDataLakeSettings' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf dataLakeSettings++instance Data.ToHeaders PutDataLakeSettings where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutDataLakeSettings where+  toJSON PutDataLakeSettings' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just+              ("DataLakeSettings" Data..= dataLakeSettings)+          ]+      )++instance Data.ToPath PutDataLakeSettings where+  toPath = Prelude.const "/PutDataLakeSettings"++instance Data.ToQuery PutDataLakeSettings where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutDataLakeSettingsResponse' smart constructor.+data PutDataLakeSettingsResponse = PutDataLakeSettingsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutDataLakeSettingsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'putDataLakeSettingsResponse_httpStatus' - The response's http status code.+newPutDataLakeSettingsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutDataLakeSettingsResponse+newPutDataLakeSettingsResponse pHttpStatus_ =+  PutDataLakeSettingsResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+putDataLakeSettingsResponse_httpStatus :: Lens.Lens' PutDataLakeSettingsResponse Prelude.Int+putDataLakeSettingsResponse_httpStatus = Lens.lens (\PutDataLakeSettingsResponse' {httpStatus} -> httpStatus) (\s@PutDataLakeSettingsResponse' {} a -> s {httpStatus = a} :: PutDataLakeSettingsResponse)++instance Prelude.NFData PutDataLakeSettingsResponse where+  rnf PutDataLakeSettingsResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/RegisterResource.hs view
@@ -0,0 +1,221 @@+{-# 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.LakeFormation.RegisterResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Registers the resource as managed by the Data Catalog.+--+-- To add or update data, Lake Formation needs read\/write access to the+-- chosen Amazon S3 path. Choose a role that you know has permission to do+-- this, or choose the AWSServiceRoleForLakeFormationDataAccess+-- service-linked role. When you register the first Amazon S3 path, the+-- service-linked role and a new inline policy are created on your behalf.+-- Lake Formation adds the first path to the inline policy and attaches it+-- to the service-linked role. When you register subsequent paths, Lake+-- Formation adds the path to the existing policy.+--+-- The following request registers a new location and gives Lake Formation+-- permission to use the service-linked role to access that location.+--+-- @ResourceArn = arn:aws:s3:::my-bucket UseServiceLinkedRole = true@+--+-- If @UseServiceLinkedRole@ is not set to true, you must provide or set+-- the @RoleArn@:+--+-- @arn:aws:iam::12345:role\/my-data-access-role@+module Amazonka.LakeFormation.RegisterResource+  ( -- * Creating a Request+    RegisterResource (..),+    newRegisterResource,++    -- * Request Lenses+    registerResource_roleArn,+    registerResource_useServiceLinkedRole,+    registerResource_resourceArn,++    -- * Destructuring the Response+    RegisterResourceResponse (..),+    newRegisterResourceResponse,++    -- * Response Lenses+    registerResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newRegisterResource' smart constructor.+data RegisterResource = RegisterResource'+  { -- | The identifier for the role that registers the resource.+    roleArn :: Prelude.Maybe Prelude.Text,+    -- | Designates an Identity and Access Management (IAM) service-linked role+    -- by registering this role with the Data Catalog. A service-linked role is+    -- a unique type of IAM role that is linked directly to Lake Formation.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/lake-formation/latest/dg/service-linked-roles.html Using Service-Linked Roles for Lake Formation>.+    useServiceLinkedRole :: Prelude.Maybe Prelude.Bool,+    -- | The Amazon Resource Name (ARN) of the resource that you want to+    -- register.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RegisterResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'roleArn', 'registerResource_roleArn' - The identifier for the role that registers the resource.+--+-- 'useServiceLinkedRole', 'registerResource_useServiceLinkedRole' - Designates an Identity and Access Management (IAM) service-linked role+-- by registering this role with the Data Catalog. A service-linked role is+-- a unique type of IAM role that is linked directly to Lake Formation.+--+-- For more information, see+-- <https://docs.aws.amazon.com/lake-formation/latest/dg/service-linked-roles.html Using Service-Linked Roles for Lake Formation>.+--+-- 'resourceArn', 'registerResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to+-- register.+newRegisterResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  RegisterResource+newRegisterResource pResourceArn_ =+  RegisterResource'+    { roleArn = Prelude.Nothing,+      useServiceLinkedRole = Prelude.Nothing,+      resourceArn = pResourceArn_+    }++-- | The identifier for the role that registers the resource.+registerResource_roleArn :: Lens.Lens' RegisterResource (Prelude.Maybe Prelude.Text)+registerResource_roleArn = Lens.lens (\RegisterResource' {roleArn} -> roleArn) (\s@RegisterResource' {} a -> s {roleArn = a} :: RegisterResource)++-- | Designates an Identity and Access Management (IAM) service-linked role+-- by registering this role with the Data Catalog. A service-linked role is+-- a unique type of IAM role that is linked directly to Lake Formation.+--+-- For more information, see+-- <https://docs.aws.amazon.com/lake-formation/latest/dg/service-linked-roles.html Using Service-Linked Roles for Lake Formation>.+registerResource_useServiceLinkedRole :: Lens.Lens' RegisterResource (Prelude.Maybe Prelude.Bool)+registerResource_useServiceLinkedRole = Lens.lens (\RegisterResource' {useServiceLinkedRole} -> useServiceLinkedRole) (\s@RegisterResource' {} a -> s {useServiceLinkedRole = a} :: RegisterResource)++-- | The Amazon Resource Name (ARN) of the resource that you want to+-- register.+registerResource_resourceArn :: Lens.Lens' RegisterResource Prelude.Text+registerResource_resourceArn = Lens.lens (\RegisterResource' {resourceArn} -> resourceArn) (\s@RegisterResource' {} a -> s {resourceArn = a} :: RegisterResource)++instance Core.AWSRequest RegisterResource where+  type+    AWSResponse RegisterResource =+      RegisterResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          RegisterResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable RegisterResource where+  hashWithSalt _salt RegisterResource' {..} =+    _salt+      `Prelude.hashWithSalt` roleArn+      `Prelude.hashWithSalt` useServiceLinkedRole+      `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData RegisterResource where+  rnf RegisterResource' {..} =+    Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf useServiceLinkedRole+      `Prelude.seq` Prelude.rnf resourceArn++instance Data.ToHeaders RegisterResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON RegisterResource where+  toJSON RegisterResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("RoleArn" Data..=) Prelude.<$> roleArn,+            ("UseServiceLinkedRole" Data..=)+              Prelude.<$> useServiceLinkedRole,+            Prelude.Just ("ResourceArn" Data..= resourceArn)+          ]+      )++instance Data.ToPath RegisterResource where+  toPath = Prelude.const "/RegisterResource"++instance Data.ToQuery RegisterResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newRegisterResourceResponse' smart constructor.+data RegisterResourceResponse = RegisterResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RegisterResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'registerResourceResponse_httpStatus' - The response's http status code.+newRegisterResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  RegisterResourceResponse+newRegisterResourceResponse pHttpStatus_ =+  RegisterResourceResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+registerResourceResponse_httpStatus :: Lens.Lens' RegisterResourceResponse Prelude.Int+registerResourceResponse_httpStatus = Lens.lens (\RegisterResourceResponse' {httpStatus} -> httpStatus) (\s@RegisterResourceResponse' {} a -> s {httpStatus = a} :: RegisterResourceResponse)++instance Prelude.NFData RegisterResourceResponse where+  rnf RegisterResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/RemoveLFTagsFromResource.hs view
@@ -0,0 +1,215 @@+{-# 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.LakeFormation.RemoveLFTagsFromResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Removes an LF-tag from the resource. Only database, table, or+-- tableWithColumns resource are allowed. To tag columns, use the column+-- inclusion list in @tableWithColumns@ to specify column input.+module Amazonka.LakeFormation.RemoveLFTagsFromResource+  ( -- * Creating a Request+    RemoveLFTagsFromResource (..),+    newRemoveLFTagsFromResource,++    -- * Request Lenses+    removeLFTagsFromResource_catalogId,+    removeLFTagsFromResource_resource,+    removeLFTagsFromResource_lFTags,++    -- * Destructuring the Response+    RemoveLFTagsFromResourceResponse (..),+    newRemoveLFTagsFromResourceResponse,++    -- * Response Lenses+    removeLFTagsFromResourceResponse_failures,+    removeLFTagsFromResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newRemoveLFTagsFromResource' smart constructor.+data RemoveLFTagsFromResource = RemoveLFTagsFromResource'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The database, table, or column resource where you want to remove an+    -- LF-tag.+    resource :: Resource,+    -- | The LF-tags to be removed from the resource.+    lFTags :: Prelude.NonEmpty LFTagPair+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemoveLFTagsFromResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'removeLFTagsFromResource_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'resource', 'removeLFTagsFromResource_resource' - The database, table, or column resource where you want to remove an+-- LF-tag.+--+-- 'lFTags', 'removeLFTagsFromResource_lFTags' - The LF-tags to be removed from the resource.+newRemoveLFTagsFromResource ::+  -- | 'resource'+  Resource ->+  -- | 'lFTags'+  Prelude.NonEmpty LFTagPair ->+  RemoveLFTagsFromResource+newRemoveLFTagsFromResource pResource_ pLFTags_ =+  RemoveLFTagsFromResource'+    { catalogId =+        Prelude.Nothing,+      resource = pResource_,+      lFTags = Lens.coerced Lens.# pLFTags_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+removeLFTagsFromResource_catalogId :: Lens.Lens' RemoveLFTagsFromResource (Prelude.Maybe Prelude.Text)+removeLFTagsFromResource_catalogId = Lens.lens (\RemoveLFTagsFromResource' {catalogId} -> catalogId) (\s@RemoveLFTagsFromResource' {} a -> s {catalogId = a} :: RemoveLFTagsFromResource)++-- | The database, table, or column resource where you want to remove an+-- LF-tag.+removeLFTagsFromResource_resource :: Lens.Lens' RemoveLFTagsFromResource Resource+removeLFTagsFromResource_resource = Lens.lens (\RemoveLFTagsFromResource' {resource} -> resource) (\s@RemoveLFTagsFromResource' {} a -> s {resource = a} :: RemoveLFTagsFromResource)++-- | The LF-tags to be removed from the resource.+removeLFTagsFromResource_lFTags :: Lens.Lens' RemoveLFTagsFromResource (Prelude.NonEmpty LFTagPair)+removeLFTagsFromResource_lFTags = Lens.lens (\RemoveLFTagsFromResource' {lFTags} -> lFTags) (\s@RemoveLFTagsFromResource' {} a -> s {lFTags = a} :: RemoveLFTagsFromResource) Prelude.. Lens.coerced++instance Core.AWSRequest RemoveLFTagsFromResource where+  type+    AWSResponse RemoveLFTagsFromResource =+      RemoveLFTagsFromResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          RemoveLFTagsFromResourceResponse'+            Prelude.<$> (x Data..?> "Failures" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable RemoveLFTagsFromResource where+  hashWithSalt _salt RemoveLFTagsFromResource' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` resource+      `Prelude.hashWithSalt` lFTags++instance Prelude.NFData RemoveLFTagsFromResource where+  rnf RemoveLFTagsFromResource' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf resource+      `Prelude.seq` Prelude.rnf lFTags++instance Data.ToHeaders RemoveLFTagsFromResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON RemoveLFTagsFromResource where+  toJSON RemoveLFTagsFromResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("Resource" Data..= resource),+            Prelude.Just ("LFTags" Data..= lFTags)+          ]+      )++instance Data.ToPath RemoveLFTagsFromResource where+  toPath = Prelude.const "/RemoveLFTagsFromResource"++instance Data.ToQuery RemoveLFTagsFromResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newRemoveLFTagsFromResourceResponse' smart constructor.+data RemoveLFTagsFromResourceResponse = RemoveLFTagsFromResourceResponse'+  { -- | A list of failures to untag a resource.+    failures :: Prelude.Maybe [LFTagError],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemoveLFTagsFromResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'failures', 'removeLFTagsFromResourceResponse_failures' - A list of failures to untag a resource.+--+-- 'httpStatus', 'removeLFTagsFromResourceResponse_httpStatus' - The response's http status code.+newRemoveLFTagsFromResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  RemoveLFTagsFromResourceResponse+newRemoveLFTagsFromResourceResponse pHttpStatus_ =+  RemoveLFTagsFromResourceResponse'+    { failures =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of failures to untag a resource.+removeLFTagsFromResourceResponse_failures :: Lens.Lens' RemoveLFTagsFromResourceResponse (Prelude.Maybe [LFTagError])+removeLFTagsFromResourceResponse_failures = Lens.lens (\RemoveLFTagsFromResourceResponse' {failures} -> failures) (\s@RemoveLFTagsFromResourceResponse' {} a -> s {failures = a} :: RemoveLFTagsFromResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+removeLFTagsFromResourceResponse_httpStatus :: Lens.Lens' RemoveLFTagsFromResourceResponse Prelude.Int+removeLFTagsFromResourceResponse_httpStatus = Lens.lens (\RemoveLFTagsFromResourceResponse' {httpStatus} -> httpStatus) (\s@RemoveLFTagsFromResourceResponse' {} a -> s {httpStatus = a} :: RemoveLFTagsFromResourceResponse)++instance+  Prelude.NFData+    RemoveLFTagsFromResourceResponse+  where+  rnf RemoveLFTagsFromResourceResponse' {..} =+    Prelude.rnf failures+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/RevokePermissions.hs view
@@ -0,0 +1,231 @@+{-# 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.LakeFormation.RevokePermissions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Revokes permissions to the principal to access metadata in the Data+-- Catalog and data organized in underlying data storage such as Amazon S3.+module Amazonka.LakeFormation.RevokePermissions+  ( -- * Creating a Request+    RevokePermissions (..),+    newRevokePermissions,++    -- * Request Lenses+    revokePermissions_catalogId,+    revokePermissions_permissionsWithGrantOption,+    revokePermissions_principal,+    revokePermissions_resource,+    revokePermissions_permissions,++    -- * Destructuring the Response+    RevokePermissionsResponse (..),+    newRevokePermissionsResponse,++    -- * Response Lenses+    revokePermissionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newRevokePermissions' smart constructor.+data RevokePermissions = RevokePermissions'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | Indicates a list of permissions for which to revoke the grant option+    -- allowing the principal to pass permissions to other principals.+    permissionsWithGrantOption :: Prelude.Maybe [Permission],+    -- | The principal to be revoked permissions on the resource.+    principal :: DataLakePrincipal,+    -- | The resource to which permissions are to be revoked.+    resource :: Resource,+    -- | The permissions revoked to the principal on the resource. For+    -- information about permissions, see+    -- <https://docs-aws.amazon.com/lake-formation/latest/dg/security-data-access.html Security and Access Control to Metadata and Data>.+    permissions :: [Permission]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RevokePermissions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'revokePermissions_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'permissionsWithGrantOption', 'revokePermissions_permissionsWithGrantOption' - Indicates a list of permissions for which to revoke the grant option+-- allowing the principal to pass permissions to other principals.+--+-- 'principal', 'revokePermissions_principal' - The principal to be revoked permissions on the resource.+--+-- 'resource', 'revokePermissions_resource' - The resource to which permissions are to be revoked.+--+-- 'permissions', 'revokePermissions_permissions' - The permissions revoked to the principal on the resource. For+-- information about permissions, see+-- <https://docs-aws.amazon.com/lake-formation/latest/dg/security-data-access.html Security and Access Control to Metadata and Data>.+newRevokePermissions ::+  -- | 'principal'+  DataLakePrincipal ->+  -- | 'resource'+  Resource ->+  RevokePermissions+newRevokePermissions pPrincipal_ pResource_ =+  RevokePermissions'+    { catalogId = Prelude.Nothing,+      permissionsWithGrantOption = Prelude.Nothing,+      principal = pPrincipal_,+      resource = pResource_,+      permissions = Prelude.mempty+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+revokePermissions_catalogId :: Lens.Lens' RevokePermissions (Prelude.Maybe Prelude.Text)+revokePermissions_catalogId = Lens.lens (\RevokePermissions' {catalogId} -> catalogId) (\s@RevokePermissions' {} a -> s {catalogId = a} :: RevokePermissions)++-- | Indicates a list of permissions for which to revoke the grant option+-- allowing the principal to pass permissions to other principals.+revokePermissions_permissionsWithGrantOption :: Lens.Lens' RevokePermissions (Prelude.Maybe [Permission])+revokePermissions_permissionsWithGrantOption = Lens.lens (\RevokePermissions' {permissionsWithGrantOption} -> permissionsWithGrantOption) (\s@RevokePermissions' {} a -> s {permissionsWithGrantOption = a} :: RevokePermissions) Prelude.. Lens.mapping Lens.coerced++-- | The principal to be revoked permissions on the resource.+revokePermissions_principal :: Lens.Lens' RevokePermissions DataLakePrincipal+revokePermissions_principal = Lens.lens (\RevokePermissions' {principal} -> principal) (\s@RevokePermissions' {} a -> s {principal = a} :: RevokePermissions)++-- | The resource to which permissions are to be revoked.+revokePermissions_resource :: Lens.Lens' RevokePermissions Resource+revokePermissions_resource = Lens.lens (\RevokePermissions' {resource} -> resource) (\s@RevokePermissions' {} a -> s {resource = a} :: RevokePermissions)++-- | The permissions revoked to the principal on the resource. For+-- information about permissions, see+-- <https://docs-aws.amazon.com/lake-formation/latest/dg/security-data-access.html Security and Access Control to Metadata and Data>.+revokePermissions_permissions :: Lens.Lens' RevokePermissions [Permission]+revokePermissions_permissions = Lens.lens (\RevokePermissions' {permissions} -> permissions) (\s@RevokePermissions' {} a -> s {permissions = a} :: RevokePermissions) Prelude.. Lens.coerced++instance Core.AWSRequest RevokePermissions where+  type+    AWSResponse RevokePermissions =+      RevokePermissionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          RevokePermissionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable RevokePermissions where+  hashWithSalt _salt RevokePermissions' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` permissionsWithGrantOption+      `Prelude.hashWithSalt` principal+      `Prelude.hashWithSalt` resource+      `Prelude.hashWithSalt` permissions++instance Prelude.NFData RevokePermissions where+  rnf RevokePermissions' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf permissionsWithGrantOption+      `Prelude.seq` Prelude.rnf principal+      `Prelude.seq` Prelude.rnf resource+      `Prelude.seq` Prelude.rnf permissions++instance Data.ToHeaders RevokePermissions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON RevokePermissions where+  toJSON RevokePermissions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("PermissionsWithGrantOption" Data..=)+              Prelude.<$> permissionsWithGrantOption,+            Prelude.Just ("Principal" Data..= principal),+            Prelude.Just ("Resource" Data..= resource),+            Prelude.Just ("Permissions" Data..= permissions)+          ]+      )++instance Data.ToPath RevokePermissions where+  toPath = Prelude.const "/RevokePermissions"++instance Data.ToQuery RevokePermissions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newRevokePermissionsResponse' smart constructor.+data RevokePermissionsResponse = RevokePermissionsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RevokePermissionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'revokePermissionsResponse_httpStatus' - The response's http status code.+newRevokePermissionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  RevokePermissionsResponse+newRevokePermissionsResponse pHttpStatus_ =+  RevokePermissionsResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+revokePermissionsResponse_httpStatus :: Lens.Lens' RevokePermissionsResponse Prelude.Int+revokePermissionsResponse_httpStatus = Lens.lens (\RevokePermissionsResponse' {httpStatus} -> httpStatus) (\s@RevokePermissionsResponse' {} a -> s {httpStatus = a} :: RevokePermissionsResponse)++instance Prelude.NFData RevokePermissionsResponse where+  rnf RevokePermissionsResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/SearchDatabasesByLFTags.hs view
@@ -0,0 +1,271 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.SearchDatabasesByLFTags+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- This operation allows a search on @DATABASE@ resources by+-- @TagCondition@. This operation is used by admins who want to grant user+-- permissions on certain @TagConditions@. Before making a grant, the admin+-- can use @SearchDatabasesByTags@ to find all resources where the given+-- @TagConditions@ are valid to verify whether the returned resources can+-- be shared.+--+-- This operation returns paginated results.+module Amazonka.LakeFormation.SearchDatabasesByLFTags+  ( -- * Creating a Request+    SearchDatabasesByLFTags (..),+    newSearchDatabasesByLFTags,++    -- * Request Lenses+    searchDatabasesByLFTags_catalogId,+    searchDatabasesByLFTags_maxResults,+    searchDatabasesByLFTags_nextToken,+    searchDatabasesByLFTags_expression,++    -- * Destructuring the Response+    SearchDatabasesByLFTagsResponse (..),+    newSearchDatabasesByLFTagsResponse,++    -- * Response Lenses+    searchDatabasesByLFTagsResponse_databaseList,+    searchDatabasesByLFTagsResponse_nextToken,+    searchDatabasesByLFTagsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newSearchDatabasesByLFTags' smart constructor.+data SearchDatabasesByLFTags = SearchDatabasesByLFTags'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of results to return.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A continuation token, if this is not the first call to retrieve this+    -- list.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of conditions (@LFTag@ structures) to search for in database+    -- resources.+    expression :: Prelude.NonEmpty LFTag+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchDatabasesByLFTags' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'searchDatabasesByLFTags_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'maxResults', 'searchDatabasesByLFTags_maxResults' - The maximum number of results to return.+--+-- 'nextToken', 'searchDatabasesByLFTags_nextToken' - A continuation token, if this is not the first call to retrieve this+-- list.+--+-- 'expression', 'searchDatabasesByLFTags_expression' - A list of conditions (@LFTag@ structures) to search for in database+-- resources.+newSearchDatabasesByLFTags ::+  -- | 'expression'+  Prelude.NonEmpty LFTag ->+  SearchDatabasesByLFTags+newSearchDatabasesByLFTags pExpression_ =+  SearchDatabasesByLFTags'+    { catalogId =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      expression = Lens.coerced Lens.# pExpression_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+searchDatabasesByLFTags_catalogId :: Lens.Lens' SearchDatabasesByLFTags (Prelude.Maybe Prelude.Text)+searchDatabasesByLFTags_catalogId = Lens.lens (\SearchDatabasesByLFTags' {catalogId} -> catalogId) (\s@SearchDatabasesByLFTags' {} a -> s {catalogId = a} :: SearchDatabasesByLFTags)++-- | The maximum number of results to return.+searchDatabasesByLFTags_maxResults :: Lens.Lens' SearchDatabasesByLFTags (Prelude.Maybe Prelude.Natural)+searchDatabasesByLFTags_maxResults = Lens.lens (\SearchDatabasesByLFTags' {maxResults} -> maxResults) (\s@SearchDatabasesByLFTags' {} a -> s {maxResults = a} :: SearchDatabasesByLFTags)++-- | A continuation token, if this is not the first call to retrieve this+-- list.+searchDatabasesByLFTags_nextToken :: Lens.Lens' SearchDatabasesByLFTags (Prelude.Maybe Prelude.Text)+searchDatabasesByLFTags_nextToken = Lens.lens (\SearchDatabasesByLFTags' {nextToken} -> nextToken) (\s@SearchDatabasesByLFTags' {} a -> s {nextToken = a} :: SearchDatabasesByLFTags)++-- | A list of conditions (@LFTag@ structures) to search for in database+-- resources.+searchDatabasesByLFTags_expression :: Lens.Lens' SearchDatabasesByLFTags (Prelude.NonEmpty LFTag)+searchDatabasesByLFTags_expression = Lens.lens (\SearchDatabasesByLFTags' {expression} -> expression) (\s@SearchDatabasesByLFTags' {} a -> s {expression = a} :: SearchDatabasesByLFTags) Prelude.. Lens.coerced++instance Core.AWSPager SearchDatabasesByLFTags where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? searchDatabasesByLFTagsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? searchDatabasesByLFTagsResponse_databaseList+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& searchDatabasesByLFTags_nextToken+          Lens..~ rs+          Lens.^? searchDatabasesByLFTagsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest SearchDatabasesByLFTags where+  type+    AWSResponse SearchDatabasesByLFTags =+      SearchDatabasesByLFTagsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SearchDatabasesByLFTagsResponse'+            Prelude.<$> (x Data..?> "DatabaseList" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable SearchDatabasesByLFTags where+  hashWithSalt _salt SearchDatabasesByLFTags' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` expression++instance Prelude.NFData SearchDatabasesByLFTags where+  rnf SearchDatabasesByLFTags' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf expression++instance Data.ToHeaders SearchDatabasesByLFTags where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SearchDatabasesByLFTags where+  toJSON SearchDatabasesByLFTags' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("Expression" Data..= expression)+          ]+      )++instance Data.ToPath SearchDatabasesByLFTags where+  toPath = Prelude.const "/SearchDatabasesByLFTags"++instance Data.ToQuery SearchDatabasesByLFTags where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newSearchDatabasesByLFTagsResponse' smart constructor.+data SearchDatabasesByLFTagsResponse = SearchDatabasesByLFTagsResponse'+  { -- | A list of databases that meet the LF-tag conditions.+    databaseList :: Prelude.Maybe [TaggedDatabase],+    -- | A continuation token, present if the current list segment is not the+    -- last.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchDatabasesByLFTagsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'databaseList', 'searchDatabasesByLFTagsResponse_databaseList' - A list of databases that meet the LF-tag conditions.+--+-- 'nextToken', 'searchDatabasesByLFTagsResponse_nextToken' - A continuation token, present if the current list segment is not the+-- last.+--+-- 'httpStatus', 'searchDatabasesByLFTagsResponse_httpStatus' - The response's http status code.+newSearchDatabasesByLFTagsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  SearchDatabasesByLFTagsResponse+newSearchDatabasesByLFTagsResponse pHttpStatus_ =+  SearchDatabasesByLFTagsResponse'+    { databaseList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of databases that meet the LF-tag conditions.+searchDatabasesByLFTagsResponse_databaseList :: Lens.Lens' SearchDatabasesByLFTagsResponse (Prelude.Maybe [TaggedDatabase])+searchDatabasesByLFTagsResponse_databaseList = Lens.lens (\SearchDatabasesByLFTagsResponse' {databaseList} -> databaseList) (\s@SearchDatabasesByLFTagsResponse' {} a -> s {databaseList = a} :: SearchDatabasesByLFTagsResponse) Prelude.. Lens.mapping Lens.coerced++-- | A continuation token, present if the current list segment is not the+-- last.+searchDatabasesByLFTagsResponse_nextToken :: Lens.Lens' SearchDatabasesByLFTagsResponse (Prelude.Maybe Prelude.Text)+searchDatabasesByLFTagsResponse_nextToken = Lens.lens (\SearchDatabasesByLFTagsResponse' {nextToken} -> nextToken) (\s@SearchDatabasesByLFTagsResponse' {} a -> s {nextToken = a} :: SearchDatabasesByLFTagsResponse)++-- | The response's http status code.+searchDatabasesByLFTagsResponse_httpStatus :: Lens.Lens' SearchDatabasesByLFTagsResponse Prelude.Int+searchDatabasesByLFTagsResponse_httpStatus = Lens.lens (\SearchDatabasesByLFTagsResponse' {httpStatus} -> httpStatus) (\s@SearchDatabasesByLFTagsResponse' {} a -> s {httpStatus = a} :: SearchDatabasesByLFTagsResponse)++instance+  Prelude.NFData+    SearchDatabasesByLFTagsResponse+  where+  rnf SearchDatabasesByLFTagsResponse' {..} =+    Prelude.rnf databaseList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/SearchTablesByLFTags.hs view
@@ -0,0 +1,266 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.SearchTablesByLFTags+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- This operation allows a search on @TABLE@ resources by @LFTag@s. This+-- will be used by admins who want to grant user permissions on certain+-- LF-tags. Before making a grant, the admin can use @SearchTablesByLFTags@+-- to find all resources where the given @LFTag@s are valid to verify+-- whether the returned resources can be shared.+--+-- This operation returns paginated results.+module Amazonka.LakeFormation.SearchTablesByLFTags+  ( -- * Creating a Request+    SearchTablesByLFTags (..),+    newSearchTablesByLFTags,++    -- * Request Lenses+    searchTablesByLFTags_catalogId,+    searchTablesByLFTags_maxResults,+    searchTablesByLFTags_nextToken,+    searchTablesByLFTags_expression,++    -- * Destructuring the Response+    SearchTablesByLFTagsResponse (..),+    newSearchTablesByLFTagsResponse,++    -- * Response Lenses+    searchTablesByLFTagsResponse_nextToken,+    searchTablesByLFTagsResponse_tableList,+    searchTablesByLFTagsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newSearchTablesByLFTags' smart constructor.+data SearchTablesByLFTags = SearchTablesByLFTags'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of results to return.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A continuation token, if this is not the first call to retrieve this+    -- list.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of conditions (@LFTag@ structures) to search for in table+    -- resources.+    expression :: Prelude.NonEmpty LFTag+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchTablesByLFTags' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'searchTablesByLFTags_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'maxResults', 'searchTablesByLFTags_maxResults' - The maximum number of results to return.+--+-- 'nextToken', 'searchTablesByLFTags_nextToken' - A continuation token, if this is not the first call to retrieve this+-- list.+--+-- 'expression', 'searchTablesByLFTags_expression' - A list of conditions (@LFTag@ structures) to search for in table+-- resources.+newSearchTablesByLFTags ::+  -- | 'expression'+  Prelude.NonEmpty LFTag ->+  SearchTablesByLFTags+newSearchTablesByLFTags pExpression_ =+  SearchTablesByLFTags'+    { catalogId = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      expression = Lens.coerced Lens.# pExpression_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+searchTablesByLFTags_catalogId :: Lens.Lens' SearchTablesByLFTags (Prelude.Maybe Prelude.Text)+searchTablesByLFTags_catalogId = Lens.lens (\SearchTablesByLFTags' {catalogId} -> catalogId) (\s@SearchTablesByLFTags' {} a -> s {catalogId = a} :: SearchTablesByLFTags)++-- | The maximum number of results to return.+searchTablesByLFTags_maxResults :: Lens.Lens' SearchTablesByLFTags (Prelude.Maybe Prelude.Natural)+searchTablesByLFTags_maxResults = Lens.lens (\SearchTablesByLFTags' {maxResults} -> maxResults) (\s@SearchTablesByLFTags' {} a -> s {maxResults = a} :: SearchTablesByLFTags)++-- | A continuation token, if this is not the first call to retrieve this+-- list.+searchTablesByLFTags_nextToken :: Lens.Lens' SearchTablesByLFTags (Prelude.Maybe Prelude.Text)+searchTablesByLFTags_nextToken = Lens.lens (\SearchTablesByLFTags' {nextToken} -> nextToken) (\s@SearchTablesByLFTags' {} a -> s {nextToken = a} :: SearchTablesByLFTags)++-- | A list of conditions (@LFTag@ structures) to search for in table+-- resources.+searchTablesByLFTags_expression :: Lens.Lens' SearchTablesByLFTags (Prelude.NonEmpty LFTag)+searchTablesByLFTags_expression = Lens.lens (\SearchTablesByLFTags' {expression} -> expression) (\s@SearchTablesByLFTags' {} a -> s {expression = a} :: SearchTablesByLFTags) Prelude.. Lens.coerced++instance Core.AWSPager SearchTablesByLFTags where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? searchTablesByLFTagsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? searchTablesByLFTagsResponse_tableList+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& searchTablesByLFTags_nextToken+          Lens..~ rs+          Lens.^? searchTablesByLFTagsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest SearchTablesByLFTags where+  type+    AWSResponse SearchTablesByLFTags =+      SearchTablesByLFTagsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SearchTablesByLFTagsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "TableList" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable SearchTablesByLFTags where+  hashWithSalt _salt SearchTablesByLFTags' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` expression++instance Prelude.NFData SearchTablesByLFTags where+  rnf SearchTablesByLFTags' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf expression++instance Data.ToHeaders SearchTablesByLFTags where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SearchTablesByLFTags where+  toJSON SearchTablesByLFTags' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("Expression" Data..= expression)+          ]+      )++instance Data.ToPath SearchTablesByLFTags where+  toPath = Prelude.const "/SearchTablesByLFTags"++instance Data.ToQuery SearchTablesByLFTags where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newSearchTablesByLFTagsResponse' smart constructor.+data SearchTablesByLFTagsResponse = SearchTablesByLFTagsResponse'+  { -- | A continuation token, present if the current list segment is not the+    -- last.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of tables that meet the LF-tag conditions.+    tableList :: Prelude.Maybe [TaggedTable],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchTablesByLFTagsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'searchTablesByLFTagsResponse_nextToken' - A continuation token, present if the current list segment is not the+-- last.+--+-- 'tableList', 'searchTablesByLFTagsResponse_tableList' - A list of tables that meet the LF-tag conditions.+--+-- 'httpStatus', 'searchTablesByLFTagsResponse_httpStatus' - The response's http status code.+newSearchTablesByLFTagsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  SearchTablesByLFTagsResponse+newSearchTablesByLFTagsResponse pHttpStatus_ =+  SearchTablesByLFTagsResponse'+    { nextToken =+        Prelude.Nothing,+      tableList = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A continuation token, present if the current list segment is not the+-- last.+searchTablesByLFTagsResponse_nextToken :: Lens.Lens' SearchTablesByLFTagsResponse (Prelude.Maybe Prelude.Text)+searchTablesByLFTagsResponse_nextToken = Lens.lens (\SearchTablesByLFTagsResponse' {nextToken} -> nextToken) (\s@SearchTablesByLFTagsResponse' {} a -> s {nextToken = a} :: SearchTablesByLFTagsResponse)++-- | A list of tables that meet the LF-tag conditions.+searchTablesByLFTagsResponse_tableList :: Lens.Lens' SearchTablesByLFTagsResponse (Prelude.Maybe [TaggedTable])+searchTablesByLFTagsResponse_tableList = Lens.lens (\SearchTablesByLFTagsResponse' {tableList} -> tableList) (\s@SearchTablesByLFTagsResponse' {} a -> s {tableList = a} :: SearchTablesByLFTagsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+searchTablesByLFTagsResponse_httpStatus :: Lens.Lens' SearchTablesByLFTagsResponse Prelude.Int+searchTablesByLFTagsResponse_httpStatus = Lens.lens (\SearchTablesByLFTagsResponse' {httpStatus} -> httpStatus) (\s@SearchTablesByLFTagsResponse' {} a -> s {httpStatus = a} :: SearchTablesByLFTagsResponse)++instance Prelude.NFData SearchTablesByLFTagsResponse where+  rnf SearchTablesByLFTagsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf tableList+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/StartQueryPlanning.hs view
@@ -0,0 +1,207 @@+{-# 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.LakeFormation.StartQueryPlanning+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Submits a request to process a query statement.+--+-- This operation generates work units that can be retrieved with the+-- @GetWorkUnits@ operation as soon as the query state is+-- WORKUNITS_AVAILABLE or FINISHED.+module Amazonka.LakeFormation.StartQueryPlanning+  ( -- * Creating a Request+    StartQueryPlanning (..),+    newStartQueryPlanning,++    -- * Request Lenses+    startQueryPlanning_queryPlanningContext,+    startQueryPlanning_queryString,++    -- * Destructuring the Response+    StartQueryPlanningResponse (..),+    newStartQueryPlanningResponse,++    -- * Response Lenses+    startQueryPlanningResponse_httpStatus,+    startQueryPlanningResponse_queryId,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStartQueryPlanning' smart constructor.+data StartQueryPlanning = StartQueryPlanning'+  { -- | A structure containing information about the query plan.+    queryPlanningContext :: QueryPlanningContext,+    -- | A PartiQL query statement used as an input to the planner service.+    queryString :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartQueryPlanning' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'queryPlanningContext', 'startQueryPlanning_queryPlanningContext' - A structure containing information about the query plan.+--+-- 'queryString', 'startQueryPlanning_queryString' - A PartiQL query statement used as an input to the planner service.+newStartQueryPlanning ::+  -- | 'queryPlanningContext'+  QueryPlanningContext ->+  -- | 'queryString'+  Prelude.Text ->+  StartQueryPlanning+newStartQueryPlanning+  pQueryPlanningContext_+  pQueryString_ =+    StartQueryPlanning'+      { queryPlanningContext =+          pQueryPlanningContext_,+        queryString = Data._Sensitive Lens.# pQueryString_+      }++-- | A structure containing information about the query plan.+startQueryPlanning_queryPlanningContext :: Lens.Lens' StartQueryPlanning QueryPlanningContext+startQueryPlanning_queryPlanningContext = Lens.lens (\StartQueryPlanning' {queryPlanningContext} -> queryPlanningContext) (\s@StartQueryPlanning' {} a -> s {queryPlanningContext = a} :: StartQueryPlanning)++-- | A PartiQL query statement used as an input to the planner service.+startQueryPlanning_queryString :: Lens.Lens' StartQueryPlanning Prelude.Text+startQueryPlanning_queryString = Lens.lens (\StartQueryPlanning' {queryString} -> queryString) (\s@StartQueryPlanning' {} a -> s {queryString = a} :: StartQueryPlanning) Prelude.. Data._Sensitive++instance Core.AWSRequest StartQueryPlanning where+  type+    AWSResponse StartQueryPlanning =+      StartQueryPlanningResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartQueryPlanningResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "QueryId")+      )++instance Prelude.Hashable StartQueryPlanning where+  hashWithSalt _salt StartQueryPlanning' {..} =+    _salt+      `Prelude.hashWithSalt` queryPlanningContext+      `Prelude.hashWithSalt` queryString++instance Prelude.NFData StartQueryPlanning where+  rnf StartQueryPlanning' {..} =+    Prelude.rnf queryPlanningContext+      `Prelude.seq` Prelude.rnf queryString++instance Data.ToHeaders StartQueryPlanning where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartQueryPlanning where+  toJSON StartQueryPlanning' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "QueryPlanningContext"+                  Data..= queryPlanningContext+              ),+            Prelude.Just ("QueryString" Data..= queryString)+          ]+      )++instance Data.ToPath StartQueryPlanning where+  toPath = Prelude.const "/StartQueryPlanning"++instance Data.ToQuery StartQueryPlanning where+  toQuery = Prelude.const Prelude.mempty++-- | A structure for the output.+--+-- /See:/ 'newStartQueryPlanningResponse' smart constructor.+data StartQueryPlanningResponse = StartQueryPlanningResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the plan query operation can be used to fetch the actual work+    -- unit descriptors that are produced as the result of the operation. The+    -- ID is also used to get the query state and as an input to the @Execute@+    -- operation.+    queryId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartQueryPlanningResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'startQueryPlanningResponse_httpStatus' - The response's http status code.+--+-- 'queryId', 'startQueryPlanningResponse_queryId' - The ID of the plan query operation can be used to fetch the actual work+-- unit descriptors that are produced as the result of the operation. The+-- ID is also used to get the query state and as an input to the @Execute@+-- operation.+newStartQueryPlanningResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'queryId'+  Prelude.Text ->+  StartQueryPlanningResponse+newStartQueryPlanningResponse pHttpStatus_ pQueryId_ =+  StartQueryPlanningResponse'+    { httpStatus =+        pHttpStatus_,+      queryId = pQueryId_+    }++-- | The response's http status code.+startQueryPlanningResponse_httpStatus :: Lens.Lens' StartQueryPlanningResponse Prelude.Int+startQueryPlanningResponse_httpStatus = Lens.lens (\StartQueryPlanningResponse' {httpStatus} -> httpStatus) (\s@StartQueryPlanningResponse' {} a -> s {httpStatus = a} :: StartQueryPlanningResponse)++-- | The ID of the plan query operation can be used to fetch the actual work+-- unit descriptors that are produced as the result of the operation. The+-- ID is also used to get the query state and as an input to the @Execute@+-- operation.+startQueryPlanningResponse_queryId :: Lens.Lens' StartQueryPlanningResponse Prelude.Text+startQueryPlanningResponse_queryId = Lens.lens (\StartQueryPlanningResponse' {queryId} -> queryId) (\s@StartQueryPlanningResponse' {} a -> s {queryId = a} :: StartQueryPlanningResponse)++instance Prelude.NFData StartQueryPlanningResponse where+  rnf StartQueryPlanningResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf queryId
+ gen/Amazonka/LakeFormation/StartTransaction.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.StartTransaction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Starts a new transaction and returns its transaction ID. Transaction IDs+-- are opaque objects that you can use to identify a transaction.+module Amazonka.LakeFormation.StartTransaction+  ( -- * Creating a Request+    StartTransaction (..),+    newStartTransaction,++    -- * Request Lenses+    startTransaction_transactionType,++    -- * Destructuring the Response+    StartTransactionResponse (..),+    newStartTransactionResponse,++    -- * Response Lenses+    startTransactionResponse_transactionId,+    startTransactionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStartTransaction' smart constructor.+data StartTransaction = StartTransaction'+  { -- | Indicates whether this transaction should be read only or read and+    -- write. Writes made using a read-only transaction ID will be rejected.+    -- Read-only transactions do not need to be committed.+    transactionType :: Prelude.Maybe TransactionType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartTransaction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'transactionType', 'startTransaction_transactionType' - Indicates whether this transaction should be read only or read and+-- write. Writes made using a read-only transaction ID will be rejected.+-- Read-only transactions do not need to be committed.+newStartTransaction ::+  StartTransaction+newStartTransaction =+  StartTransaction'+    { transactionType =+        Prelude.Nothing+    }++-- | Indicates whether this transaction should be read only or read and+-- write. Writes made using a read-only transaction ID will be rejected.+-- Read-only transactions do not need to be committed.+startTransaction_transactionType :: Lens.Lens' StartTransaction (Prelude.Maybe TransactionType)+startTransaction_transactionType = Lens.lens (\StartTransaction' {transactionType} -> transactionType) (\s@StartTransaction' {} a -> s {transactionType = a} :: StartTransaction)++instance Core.AWSRequest StartTransaction where+  type+    AWSResponse StartTransaction =+      StartTransactionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartTransactionResponse'+            Prelude.<$> (x Data..?> "TransactionId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartTransaction where+  hashWithSalt _salt StartTransaction' {..} =+    _salt `Prelude.hashWithSalt` transactionType++instance Prelude.NFData StartTransaction where+  rnf StartTransaction' {..} =+    Prelude.rnf transactionType++instance Data.ToHeaders StartTransaction where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartTransaction where+  toJSON StartTransaction' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("TransactionType" Data..=)+              Prelude.<$> transactionType+          ]+      )++instance Data.ToPath StartTransaction where+  toPath = Prelude.const "/StartTransaction"++instance Data.ToQuery StartTransaction where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartTransactionResponse' smart constructor.+data StartTransactionResponse = StartTransactionResponse'+  { -- | An opaque identifier for the transaction.+    transactionId :: 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 'StartTransactionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'transactionId', 'startTransactionResponse_transactionId' - An opaque identifier for the transaction.+--+-- 'httpStatus', 'startTransactionResponse_httpStatus' - The response's http status code.+newStartTransactionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartTransactionResponse+newStartTransactionResponse pHttpStatus_ =+  StartTransactionResponse'+    { transactionId =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An opaque identifier for the transaction.+startTransactionResponse_transactionId :: Lens.Lens' StartTransactionResponse (Prelude.Maybe Prelude.Text)+startTransactionResponse_transactionId = Lens.lens (\StartTransactionResponse' {transactionId} -> transactionId) (\s@StartTransactionResponse' {} a -> s {transactionId = a} :: StartTransactionResponse)++-- | The response's http status code.+startTransactionResponse_httpStatus :: Lens.Lens' StartTransactionResponse Prelude.Int+startTransactionResponse_httpStatus = Lens.lens (\StartTransactionResponse' {httpStatus} -> httpStatus) (\s@StartTransactionResponse' {} a -> s {httpStatus = a} :: StartTransactionResponse)++instance Prelude.NFData StartTransactionResponse where+  rnf StartTransactionResponse' {..} =+    Prelude.rnf transactionId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/Types.hs view
@@ -0,0 +1,658 @@+{-# 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.LakeFormation.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.LakeFormation.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _AlreadyExistsException,+    _ConcurrentModificationException,+    _EntityNotFoundException,+    _ExpiredException,+    _GlueEncryptionException,+    _InternalServiceException,+    _InvalidInputException,+    _OperationTimeoutException,+    _PermissionTypeMismatchException,+    _ResourceNotReadyException,+    _ResourceNumberLimitExceededException,+    _StatisticsNotReadyYetException,+    _ThrottledException,+    _TransactionCanceledException,+    _TransactionCommitInProgressException,+    _TransactionCommittedException,+    _WorkUnitsNotReadyYetException,++    -- * ComparisonOperator+    ComparisonOperator (..),++    -- * DataLakeResourceType+    DataLakeResourceType (..),++    -- * FieldNameString+    FieldNameString (..),++    -- * OptimizerType+    OptimizerType (..),++    -- * Permission+    Permission (..),++    -- * PermissionType+    PermissionType (..),++    -- * QueryStateString+    QueryStateString (..),++    -- * ResourceShareType+    ResourceShareType (..),++    -- * ResourceType+    ResourceType (..),++    -- * TransactionStatus+    TransactionStatus (..),++    -- * TransactionStatusFilter+    TransactionStatusFilter (..),++    -- * TransactionType+    TransactionType (..),++    -- * AddObjectInput+    AddObjectInput (..),+    newAddObjectInput,+    addObjectInput_partitionValues,+    addObjectInput_uri,+    addObjectInput_eTag,+    addObjectInput_size,++    -- * AllRowsWildcard+    AllRowsWildcard (..),+    newAllRowsWildcard,++    -- * AuditContext+    AuditContext (..),+    newAuditContext,+    auditContext_additionalAuditContext,++    -- * BatchPermissionsFailureEntry+    BatchPermissionsFailureEntry (..),+    newBatchPermissionsFailureEntry,+    batchPermissionsFailureEntry_error,+    batchPermissionsFailureEntry_requestEntry,++    -- * BatchPermissionsRequestEntry+    BatchPermissionsRequestEntry (..),+    newBatchPermissionsRequestEntry,+    batchPermissionsRequestEntry_permissions,+    batchPermissionsRequestEntry_permissionsWithGrantOption,+    batchPermissionsRequestEntry_principal,+    batchPermissionsRequestEntry_resource,+    batchPermissionsRequestEntry_id,++    -- * CatalogResource+    CatalogResource (..),+    newCatalogResource,++    -- * ColumnLFTag+    ColumnLFTag (..),+    newColumnLFTag,+    columnLFTag_lFTags,+    columnLFTag_name,++    -- * ColumnWildcard+    ColumnWildcard (..),+    newColumnWildcard,+    columnWildcard_excludedColumnNames,++    -- * DataCellsFilter+    DataCellsFilter (..),+    newDataCellsFilter,+    dataCellsFilter_columnNames,+    dataCellsFilter_columnWildcard,+    dataCellsFilter_rowFilter,+    dataCellsFilter_tableCatalogId,+    dataCellsFilter_databaseName,+    dataCellsFilter_tableName,+    dataCellsFilter_name,++    -- * DataCellsFilterResource+    DataCellsFilterResource (..),+    newDataCellsFilterResource,+    dataCellsFilterResource_databaseName,+    dataCellsFilterResource_name,+    dataCellsFilterResource_tableCatalogId,+    dataCellsFilterResource_tableName,++    -- * DataLakePrincipal+    DataLakePrincipal (..),+    newDataLakePrincipal,+    dataLakePrincipal_dataLakePrincipalIdentifier,++    -- * DataLakeSettings+    DataLakeSettings (..),+    newDataLakeSettings,+    dataLakeSettings_allowExternalDataFiltering,+    dataLakeSettings_authorizedSessionTagValueList,+    dataLakeSettings_createDatabaseDefaultPermissions,+    dataLakeSettings_createTableDefaultPermissions,+    dataLakeSettings_dataLakeAdmins,+    dataLakeSettings_externalDataFilteringAllowList,+    dataLakeSettings_parameters,+    dataLakeSettings_trustedResourceOwners,++    -- * DataLocationResource+    DataLocationResource (..),+    newDataLocationResource,+    dataLocationResource_catalogId,+    dataLocationResource_resourceArn,++    -- * DatabaseResource+    DatabaseResource (..),+    newDatabaseResource,+    databaseResource_catalogId,+    databaseResource_name,++    -- * DeleteObjectInput+    DeleteObjectInput (..),+    newDeleteObjectInput,+    deleteObjectInput_eTag,+    deleteObjectInput_partitionValues,+    deleteObjectInput_uri,++    -- * DetailsMap+    DetailsMap (..),+    newDetailsMap,+    detailsMap_resourceShare,++    -- * ErrorDetail+    ErrorDetail (..),+    newErrorDetail,+    errorDetail_errorCode,+    errorDetail_errorMessage,++    -- * ExecutionStatistics+    ExecutionStatistics (..),+    newExecutionStatistics,+    executionStatistics_averageExecutionTimeMillis,+    executionStatistics_dataScannedBytes,+    executionStatistics_workUnitsExecutedCount,++    -- * FilterCondition+    FilterCondition (..),+    newFilterCondition,+    filterCondition_comparisonOperator,+    filterCondition_field,+    filterCondition_stringValueList,++    -- * LFTag+    LFTag (..),+    newLFTag,+    lFTag_tagKey,+    lFTag_tagValues,++    -- * LFTagError+    LFTagError (..),+    newLFTagError,+    lFTagError_error,+    lFTagError_lFTag,++    -- * LFTagKeyResource+    LFTagKeyResource (..),+    newLFTagKeyResource,+    lFTagKeyResource_catalogId,+    lFTagKeyResource_tagKey,+    lFTagKeyResource_tagValues,++    -- * LFTagPair+    LFTagPair (..),+    newLFTagPair,+    lFTagPair_catalogId,+    lFTagPair_tagKey,+    lFTagPair_tagValues,++    -- * LFTagPolicyResource+    LFTagPolicyResource (..),+    newLFTagPolicyResource,+    lFTagPolicyResource_catalogId,+    lFTagPolicyResource_resourceType,+    lFTagPolicyResource_expression,++    -- * PartitionObjects+    PartitionObjects (..),+    newPartitionObjects,+    partitionObjects_objects,+    partitionObjects_partitionValues,++    -- * PartitionValueList+    PartitionValueList (..),+    newPartitionValueList,+    partitionValueList_values,++    -- * PlanningStatistics+    PlanningStatistics (..),+    newPlanningStatistics,+    planningStatistics_estimatedDataToScanBytes,+    planningStatistics_planningTimeMillis,+    planningStatistics_queueTimeMillis,+    planningStatistics_workUnitsGeneratedCount,++    -- * PrincipalPermissions+    PrincipalPermissions (..),+    newPrincipalPermissions,+    principalPermissions_permissions,+    principalPermissions_principal,++    -- * PrincipalResourcePermissions+    PrincipalResourcePermissions (..),+    newPrincipalResourcePermissions,+    principalResourcePermissions_additionalDetails,+    principalResourcePermissions_permissions,+    principalResourcePermissions_permissionsWithGrantOption,+    principalResourcePermissions_principal,+    principalResourcePermissions_resource,++    -- * QueryPlanningContext+    QueryPlanningContext (..),+    newQueryPlanningContext,+    queryPlanningContext_catalogId,+    queryPlanningContext_queryAsOfTime,+    queryPlanningContext_queryParameters,+    queryPlanningContext_transactionId,+    queryPlanningContext_databaseName,++    -- * Resource+    Resource (..),+    newResource,+    resource_catalog,+    resource_dataCellsFilter,+    resource_dataLocation,+    resource_database,+    resource_lFTag,+    resource_lFTagPolicy,+    resource_table,+    resource_tableWithColumns,++    -- * ResourceInfo+    ResourceInfo (..),+    newResourceInfo,+    resourceInfo_lastModified,+    resourceInfo_resourceArn,+    resourceInfo_roleArn,++    -- * RowFilter+    RowFilter (..),+    newRowFilter,+    rowFilter_allRowsWildcard,+    rowFilter_filterExpression,++    -- * StorageOptimizer+    StorageOptimizer (..),+    newStorageOptimizer,+    storageOptimizer_config,+    storageOptimizer_errorMessage,+    storageOptimizer_lastRunDetails,+    storageOptimizer_storageOptimizerType,+    storageOptimizer_warnings,++    -- * TableObject+    TableObject (..),+    newTableObject,+    tableObject_eTag,+    tableObject_size,+    tableObject_uri,++    -- * TableResource+    TableResource (..),+    newTableResource,+    tableResource_catalogId,+    tableResource_name,+    tableResource_tableWildcard,+    tableResource_databaseName,++    -- * TableWildcard+    TableWildcard (..),+    newTableWildcard,++    -- * TableWithColumnsResource+    TableWithColumnsResource (..),+    newTableWithColumnsResource,+    tableWithColumnsResource_catalogId,+    tableWithColumnsResource_columnNames,+    tableWithColumnsResource_columnWildcard,+    tableWithColumnsResource_databaseName,+    tableWithColumnsResource_name,++    -- * TaggedDatabase+    TaggedDatabase (..),+    newTaggedDatabase,+    taggedDatabase_database,+    taggedDatabase_lFTags,++    -- * TaggedTable+    TaggedTable (..),+    newTaggedTable,+    taggedTable_lFTagOnDatabase,+    taggedTable_lFTagsOnColumns,+    taggedTable_lFTagsOnTable,+    taggedTable_table,++    -- * TransactionDescription+    TransactionDescription (..),+    newTransactionDescription,+    transactionDescription_transactionEndTime,+    transactionDescription_transactionId,+    transactionDescription_transactionStartTime,+    transactionDescription_transactionStatus,++    -- * VirtualObject+    VirtualObject (..),+    newVirtualObject,+    virtualObject_eTag,+    virtualObject_uri,++    -- * WorkUnitRange+    WorkUnitRange (..),+    newWorkUnitRange,+    workUnitRange_workUnitIdMax,+    workUnitRange_workUnitIdMin,+    workUnitRange_workUnitToken,++    -- * WriteOperation+    WriteOperation (..),+    newWriteOperation,+    writeOperation_addObject,+    writeOperation_deleteObject,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.LakeFormation.Types.AddObjectInput+import Amazonka.LakeFormation.Types.AllRowsWildcard+import Amazonka.LakeFormation.Types.AuditContext+import Amazonka.LakeFormation.Types.BatchPermissionsFailureEntry+import Amazonka.LakeFormation.Types.BatchPermissionsRequestEntry+import Amazonka.LakeFormation.Types.CatalogResource+import Amazonka.LakeFormation.Types.ColumnLFTag+import Amazonka.LakeFormation.Types.ColumnWildcard+import Amazonka.LakeFormation.Types.ComparisonOperator+import Amazonka.LakeFormation.Types.DataCellsFilter+import Amazonka.LakeFormation.Types.DataCellsFilterResource+import Amazonka.LakeFormation.Types.DataLakePrincipal+import Amazonka.LakeFormation.Types.DataLakeResourceType+import Amazonka.LakeFormation.Types.DataLakeSettings+import Amazonka.LakeFormation.Types.DataLocationResource+import Amazonka.LakeFormation.Types.DatabaseResource+import Amazonka.LakeFormation.Types.DeleteObjectInput+import Amazonka.LakeFormation.Types.DetailsMap+import Amazonka.LakeFormation.Types.ErrorDetail+import Amazonka.LakeFormation.Types.ExecutionStatistics+import Amazonka.LakeFormation.Types.FieldNameString+import Amazonka.LakeFormation.Types.FilterCondition+import Amazonka.LakeFormation.Types.LFTag+import Amazonka.LakeFormation.Types.LFTagError+import Amazonka.LakeFormation.Types.LFTagKeyResource+import Amazonka.LakeFormation.Types.LFTagPair+import Amazonka.LakeFormation.Types.LFTagPolicyResource+import Amazonka.LakeFormation.Types.OptimizerType+import Amazonka.LakeFormation.Types.PartitionObjects+import Amazonka.LakeFormation.Types.PartitionValueList+import Amazonka.LakeFormation.Types.Permission+import Amazonka.LakeFormation.Types.PermissionType+import Amazonka.LakeFormation.Types.PlanningStatistics+import Amazonka.LakeFormation.Types.PrincipalPermissions+import Amazonka.LakeFormation.Types.PrincipalResourcePermissions+import Amazonka.LakeFormation.Types.QueryPlanningContext+import Amazonka.LakeFormation.Types.QueryStateString+import Amazonka.LakeFormation.Types.Resource+import Amazonka.LakeFormation.Types.ResourceInfo+import Amazonka.LakeFormation.Types.ResourceShareType+import Amazonka.LakeFormation.Types.ResourceType+import Amazonka.LakeFormation.Types.RowFilter+import Amazonka.LakeFormation.Types.StorageOptimizer+import Amazonka.LakeFormation.Types.TableObject+import Amazonka.LakeFormation.Types.TableResource+import Amazonka.LakeFormation.Types.TableWildcard+import Amazonka.LakeFormation.Types.TableWithColumnsResource+import Amazonka.LakeFormation.Types.TaggedDatabase+import Amazonka.LakeFormation.Types.TaggedTable+import Amazonka.LakeFormation.Types.TransactionDescription+import Amazonka.LakeFormation.Types.TransactionStatus+import Amazonka.LakeFormation.Types.TransactionStatusFilter+import Amazonka.LakeFormation.Types.TransactionType+import Amazonka.LakeFormation.Types.VirtualObject+import Amazonka.LakeFormation.Types.WorkUnitRange+import Amazonka.LakeFormation.Types.WriteOperation+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2017-03-31@ of the Amazon Lake Formation SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "LakeFormation",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "lakeformation",+      Core.signingName = "lakeformation",+      Core.version = "2017-03-31",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "LakeFormation",+      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++-- | Access to a resource was denied.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"+    Prelude.. Core.hasStatus 403++-- | A resource to be created or added already exists.+_AlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AlreadyExistsException =+  Core._MatchServiceError+    defaultService+    "AlreadyExistsException"++-- | Two processes are trying to modify a resource simultaneously.+_ConcurrentModificationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConcurrentModificationException =+  Core._MatchServiceError+    defaultService+    "ConcurrentModificationException"++-- | A specified entity does not exist+_EntityNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_EntityNotFoundException =+  Core._MatchServiceError+    defaultService+    "EntityNotFoundException"++-- | Contains details about an error where the query request expired.+_ExpiredException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ExpiredException =+  Core._MatchServiceError+    defaultService+    "ExpiredException"+    Prelude.. Core.hasStatus 410++-- | An encryption operation failed.+_GlueEncryptionException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_GlueEncryptionException =+  Core._MatchServiceError+    defaultService+    "GlueEncryptionException"++-- | An internal service error occurred.+_InternalServiceException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServiceException =+  Core._MatchServiceError+    defaultService+    "InternalServiceException"+    Prelude.. Core.hasStatus 500++-- | The input provided was not valid.+_InvalidInputException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidInputException =+  Core._MatchServiceError+    defaultService+    "InvalidInputException"+    Prelude.. Core.hasStatus 400++-- | The operation timed out.+_OperationTimeoutException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_OperationTimeoutException =+  Core._MatchServiceError+    defaultService+    "OperationTimeoutException"++-- | The engine does not support filtering data based on the enforced+-- permissions. For example, if you call the+-- @GetTemporaryGlueTableCredentials@ operation with+-- @SupportedPermissionType@ equal to @ColumnPermission@, but cell-level+-- permissions exist on the table, this exception is thrown.+_PermissionTypeMismatchException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_PermissionTypeMismatchException =+  Core._MatchServiceError+    defaultService+    "PermissionTypeMismatchException"++-- | Contains details about an error related to a resource which is not ready+-- for a transaction.+_ResourceNotReadyException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotReadyException =+  Core._MatchServiceError+    defaultService+    "ResourceNotReadyException"+    Prelude.. Core.hasStatus 400++-- | A resource numerical limit was exceeded.+_ResourceNumberLimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNumberLimitExceededException =+  Core._MatchServiceError+    defaultService+    "ResourceNumberLimitExceededException"++-- | Contains details about an error related to statistics not being ready.+_StatisticsNotReadyYetException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_StatisticsNotReadyYetException =+  Core._MatchServiceError+    defaultService+    "StatisticsNotReadyYetException"+    Prelude.. Core.hasStatus 420++-- | Contains details about an error where the query request was throttled.+_ThrottledException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottledException =+  Core._MatchServiceError+    defaultService+    "ThrottledException"+    Prelude.. Core.hasStatus 429++-- | Contains details about an error related to a transaction that was+-- cancelled.+_TransactionCanceledException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TransactionCanceledException =+  Core._MatchServiceError+    defaultService+    "TransactionCanceledException"+    Prelude.. Core.hasStatus 400++-- | Contains details about an error related to a transaction commit that was+-- in progress.+_TransactionCommitInProgressException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TransactionCommitInProgressException =+  Core._MatchServiceError+    defaultService+    "TransactionCommitInProgressException"+    Prelude.. Core.hasStatus 400++-- | Contains details about an error where the specified transaction has+-- already been committed and cannot be used for @UpdateTableObjects@.+_TransactionCommittedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TransactionCommittedException =+  Core._MatchServiceError+    defaultService+    "TransactionCommittedException"+    Prelude.. Core.hasStatus 400++-- | Contains details about an error related to work units not being ready.+_WorkUnitsNotReadyYetException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_WorkUnitsNotReadyYetException =+  Core._MatchServiceError+    defaultService+    "WorkUnitsNotReadyYetException"+    Prelude.. Core.hasStatus 420
+ gen/Amazonka/LakeFormation/Types/AddObjectInput.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.LakeFormation.Types.AddObjectInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.AddObjectInput 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 new object to add to the governed table.+--+-- /See:/ 'newAddObjectInput' smart constructor.+data AddObjectInput = AddObjectInput'+  { -- | A list of partition values for the object. A value must be specified for+    -- each partition key associated with the table.+    --+    -- The supported data types are integer, long, date(yyyy-MM-dd),+    -- timestamp(yyyy-MM-dd HH:mm:ssXXX or yyyy-MM-dd HH:mm:ss\"), string and+    -- decimal.+    partitionValues :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The Amazon S3 location of the object.+    uri :: Prelude.Text,+    -- | The Amazon S3 ETag of the object. Returned by @GetTableObjects@ for+    -- validation and used to identify changes to the underlying data.+    eTag :: Prelude.Text,+    -- | The size of the Amazon S3 object in bytes.+    size :: Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddObjectInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'partitionValues', 'addObjectInput_partitionValues' - A list of partition values for the object. A value must be specified for+-- each partition key associated with the table.+--+-- The supported data types are integer, long, date(yyyy-MM-dd),+-- timestamp(yyyy-MM-dd HH:mm:ssXXX or yyyy-MM-dd HH:mm:ss\"), string and+-- decimal.+--+-- 'uri', 'addObjectInput_uri' - The Amazon S3 location of the object.+--+-- 'eTag', 'addObjectInput_eTag' - The Amazon S3 ETag of the object. Returned by @GetTableObjects@ for+-- validation and used to identify changes to the underlying data.+--+-- 'size', 'addObjectInput_size' - The size of the Amazon S3 object in bytes.+newAddObjectInput ::+  -- | 'uri'+  Prelude.Text ->+  -- | 'eTag'+  Prelude.Text ->+  -- | 'size'+  Prelude.Integer ->+  AddObjectInput+newAddObjectInput pUri_ pETag_ pSize_ =+  AddObjectInput'+    { partitionValues = Prelude.Nothing,+      uri = pUri_,+      eTag = pETag_,+      size = pSize_+    }++-- | A list of partition values for the object. A value must be specified for+-- each partition key associated with the table.+--+-- The supported data types are integer, long, date(yyyy-MM-dd),+-- timestamp(yyyy-MM-dd HH:mm:ssXXX or yyyy-MM-dd HH:mm:ss\"), string and+-- decimal.+addObjectInput_partitionValues :: Lens.Lens' AddObjectInput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+addObjectInput_partitionValues = Lens.lens (\AddObjectInput' {partitionValues} -> partitionValues) (\s@AddObjectInput' {} a -> s {partitionValues = a} :: AddObjectInput) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon S3 location of the object.+addObjectInput_uri :: Lens.Lens' AddObjectInput Prelude.Text+addObjectInput_uri = Lens.lens (\AddObjectInput' {uri} -> uri) (\s@AddObjectInput' {} a -> s {uri = a} :: AddObjectInput)++-- | The Amazon S3 ETag of the object. Returned by @GetTableObjects@ for+-- validation and used to identify changes to the underlying data.+addObjectInput_eTag :: Lens.Lens' AddObjectInput Prelude.Text+addObjectInput_eTag = Lens.lens (\AddObjectInput' {eTag} -> eTag) (\s@AddObjectInput' {} a -> s {eTag = a} :: AddObjectInput)++-- | The size of the Amazon S3 object in bytes.+addObjectInput_size :: Lens.Lens' AddObjectInput Prelude.Integer+addObjectInput_size = Lens.lens (\AddObjectInput' {size} -> size) (\s@AddObjectInput' {} a -> s {size = a} :: AddObjectInput)++instance Prelude.Hashable AddObjectInput where+  hashWithSalt _salt AddObjectInput' {..} =+    _salt+      `Prelude.hashWithSalt` partitionValues+      `Prelude.hashWithSalt` uri+      `Prelude.hashWithSalt` eTag+      `Prelude.hashWithSalt` size++instance Prelude.NFData AddObjectInput where+  rnf AddObjectInput' {..} =+    Prelude.rnf partitionValues+      `Prelude.seq` Prelude.rnf uri+      `Prelude.seq` Prelude.rnf eTag+      `Prelude.seq` Prelude.rnf size++instance Data.ToJSON AddObjectInput where+  toJSON AddObjectInput' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("PartitionValues" Data..=)+              Prelude.<$> partitionValues,+            Prelude.Just ("Uri" Data..= uri),+            Prelude.Just ("ETag" Data..= eTag),+            Prelude.Just ("Size" Data..= size)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/AllRowsWildcard.hs view
@@ -0,0 +1,57 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.AllRowsWildcard+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.AllRowsWildcard 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 you pass to indicate you want all rows in a filter.+--+-- /See:/ 'newAllRowsWildcard' smart constructor.+data AllRowsWildcard = AllRowsWildcard'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AllRowsWildcard' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newAllRowsWildcard ::+  AllRowsWildcard+newAllRowsWildcard = AllRowsWildcard'++instance Data.FromJSON AllRowsWildcard where+  parseJSON =+    Data.withObject+      "AllRowsWildcard"+      (\x -> Prelude.pure AllRowsWildcard')++instance Prelude.Hashable AllRowsWildcard where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData AllRowsWildcard where+  rnf _ = ()++instance Data.ToJSON AllRowsWildcard where+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+ gen/Amazonka/LakeFormation/Types/AuditContext.hs view
@@ -0,0 +1,78 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.AuditContext+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.AuditContext 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 used to include auditing information on the privileged API.+--+-- /See:/ 'newAuditContext' smart constructor.+data AuditContext = AuditContext'+  { -- | The filter engine can populate the \'AdditionalAuditContext\'+    -- information with the request ID for you to track. This information will+    -- be displayed in CloudTrail log in your account.+    additionalAuditContext :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AuditContext' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'additionalAuditContext', 'auditContext_additionalAuditContext' - The filter engine can populate the \'AdditionalAuditContext\'+-- information with the request ID for you to track. This information will+-- be displayed in CloudTrail log in your account.+newAuditContext ::+  AuditContext+newAuditContext =+  AuditContext'+    { additionalAuditContext =+        Prelude.Nothing+    }++-- | The filter engine can populate the \'AdditionalAuditContext\'+-- information with the request ID for you to track. This information will+-- be displayed in CloudTrail log in your account.+auditContext_additionalAuditContext :: Lens.Lens' AuditContext (Prelude.Maybe Prelude.Text)+auditContext_additionalAuditContext = Lens.lens (\AuditContext' {additionalAuditContext} -> additionalAuditContext) (\s@AuditContext' {} a -> s {additionalAuditContext = a} :: AuditContext)++instance Prelude.Hashable AuditContext where+  hashWithSalt _salt AuditContext' {..} =+    _salt `Prelude.hashWithSalt` additionalAuditContext++instance Prelude.NFData AuditContext where+  rnf AuditContext' {..} =+    Prelude.rnf additionalAuditContext++instance Data.ToJSON AuditContext where+  toJSON AuditContext' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AdditionalAuditContext" Data..=)+              Prelude.<$> additionalAuditContext+          ]+      )
+ gen/Amazonka/LakeFormation/Types/BatchPermissionsFailureEntry.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.BatchPermissionsFailureEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.BatchPermissionsFailureEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.BatchPermissionsRequestEntry+import Amazonka.LakeFormation.Types.ErrorDetail+import qualified Amazonka.Prelude as Prelude++-- | A list of failures when performing a batch grant or batch revoke+-- operation.+--+-- /See:/ 'newBatchPermissionsFailureEntry' smart constructor.+data BatchPermissionsFailureEntry = BatchPermissionsFailureEntry'+  { -- | An error message that applies to the failure of the entry.+    error :: Prelude.Maybe ErrorDetail,+    -- | An identifier for an entry of the batch request.+    requestEntry :: Prelude.Maybe BatchPermissionsRequestEntry+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPermissionsFailureEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'error', 'batchPermissionsFailureEntry_error' - An error message that applies to the failure of the entry.+--+-- 'requestEntry', 'batchPermissionsFailureEntry_requestEntry' - An identifier for an entry of the batch request.+newBatchPermissionsFailureEntry ::+  BatchPermissionsFailureEntry+newBatchPermissionsFailureEntry =+  BatchPermissionsFailureEntry'+    { error =+        Prelude.Nothing,+      requestEntry = Prelude.Nothing+    }++-- | An error message that applies to the failure of the entry.+batchPermissionsFailureEntry_error :: Lens.Lens' BatchPermissionsFailureEntry (Prelude.Maybe ErrorDetail)+batchPermissionsFailureEntry_error = Lens.lens (\BatchPermissionsFailureEntry' {error} -> error) (\s@BatchPermissionsFailureEntry' {} a -> s {error = a} :: BatchPermissionsFailureEntry)++-- | An identifier for an entry of the batch request.+batchPermissionsFailureEntry_requestEntry :: Lens.Lens' BatchPermissionsFailureEntry (Prelude.Maybe BatchPermissionsRequestEntry)+batchPermissionsFailureEntry_requestEntry = Lens.lens (\BatchPermissionsFailureEntry' {requestEntry} -> requestEntry) (\s@BatchPermissionsFailureEntry' {} a -> s {requestEntry = a} :: BatchPermissionsFailureEntry)++instance Data.FromJSON BatchPermissionsFailureEntry where+  parseJSON =+    Data.withObject+      "BatchPermissionsFailureEntry"+      ( \x ->+          BatchPermissionsFailureEntry'+            Prelude.<$> (x Data..:? "Error")+            Prelude.<*> (x Data..:? "RequestEntry")+      )++instance+  Prelude.Hashable+    BatchPermissionsFailureEntry+  where+  hashWithSalt _salt BatchPermissionsFailureEntry' {..} =+    _salt+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` requestEntry++instance Prelude.NFData BatchPermissionsFailureEntry where+  rnf BatchPermissionsFailureEntry' {..} =+    Prelude.rnf error+      `Prelude.seq` Prelude.rnf requestEntry
+ gen/Amazonka/LakeFormation/Types/BatchPermissionsRequestEntry.hs view
@@ -0,0 +1,145 @@+{-# 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.LakeFormation.Types.BatchPermissionsRequestEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.BatchPermissionsRequestEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.DataLakePrincipal+import Amazonka.LakeFormation.Types.Permission+import Amazonka.LakeFormation.Types.Resource+import qualified Amazonka.Prelude as Prelude++-- | A permission to a resource granted by batch operation to the principal.+--+-- /See:/ 'newBatchPermissionsRequestEntry' smart constructor.+data BatchPermissionsRequestEntry = BatchPermissionsRequestEntry'+  { -- | The permissions to be granted.+    permissions :: Prelude.Maybe [Permission],+    -- | Indicates if the option to pass permissions is granted.+    permissionsWithGrantOption :: Prelude.Maybe [Permission],+    -- | The principal to be granted a permission.+    principal :: Prelude.Maybe DataLakePrincipal,+    -- | The resource to which the principal is to be granted a permission.+    resource :: Prelude.Maybe Resource,+    -- | A unique identifier for the batch permissions request entry.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPermissionsRequestEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'permissions', 'batchPermissionsRequestEntry_permissions' - The permissions to be granted.+--+-- 'permissionsWithGrantOption', 'batchPermissionsRequestEntry_permissionsWithGrantOption' - Indicates if the option to pass permissions is granted.+--+-- 'principal', 'batchPermissionsRequestEntry_principal' - The principal to be granted a permission.+--+-- 'resource', 'batchPermissionsRequestEntry_resource' - The resource to which the principal is to be granted a permission.+--+-- 'id', 'batchPermissionsRequestEntry_id' - A unique identifier for the batch permissions request entry.+newBatchPermissionsRequestEntry ::+  -- | 'id'+  Prelude.Text ->+  BatchPermissionsRequestEntry+newBatchPermissionsRequestEntry pId_ =+  BatchPermissionsRequestEntry'+    { permissions =+        Prelude.Nothing,+      permissionsWithGrantOption = Prelude.Nothing,+      principal = Prelude.Nothing,+      resource = Prelude.Nothing,+      id = pId_+    }++-- | The permissions to be granted.+batchPermissionsRequestEntry_permissions :: Lens.Lens' BatchPermissionsRequestEntry (Prelude.Maybe [Permission])+batchPermissionsRequestEntry_permissions = Lens.lens (\BatchPermissionsRequestEntry' {permissions} -> permissions) (\s@BatchPermissionsRequestEntry' {} a -> s {permissions = a} :: BatchPermissionsRequestEntry) Prelude.. Lens.mapping Lens.coerced++-- | Indicates if the option to pass permissions is granted.+batchPermissionsRequestEntry_permissionsWithGrantOption :: Lens.Lens' BatchPermissionsRequestEntry (Prelude.Maybe [Permission])+batchPermissionsRequestEntry_permissionsWithGrantOption = Lens.lens (\BatchPermissionsRequestEntry' {permissionsWithGrantOption} -> permissionsWithGrantOption) (\s@BatchPermissionsRequestEntry' {} a -> s {permissionsWithGrantOption = a} :: BatchPermissionsRequestEntry) Prelude.. Lens.mapping Lens.coerced++-- | The principal to be granted a permission.+batchPermissionsRequestEntry_principal :: Lens.Lens' BatchPermissionsRequestEntry (Prelude.Maybe DataLakePrincipal)+batchPermissionsRequestEntry_principal = Lens.lens (\BatchPermissionsRequestEntry' {principal} -> principal) (\s@BatchPermissionsRequestEntry' {} a -> s {principal = a} :: BatchPermissionsRequestEntry)++-- | The resource to which the principal is to be granted a permission.+batchPermissionsRequestEntry_resource :: Lens.Lens' BatchPermissionsRequestEntry (Prelude.Maybe Resource)+batchPermissionsRequestEntry_resource = Lens.lens (\BatchPermissionsRequestEntry' {resource} -> resource) (\s@BatchPermissionsRequestEntry' {} a -> s {resource = a} :: BatchPermissionsRequestEntry)++-- | A unique identifier for the batch permissions request entry.+batchPermissionsRequestEntry_id :: Lens.Lens' BatchPermissionsRequestEntry Prelude.Text+batchPermissionsRequestEntry_id = Lens.lens (\BatchPermissionsRequestEntry' {id} -> id) (\s@BatchPermissionsRequestEntry' {} a -> s {id = a} :: BatchPermissionsRequestEntry)++instance Data.FromJSON BatchPermissionsRequestEntry where+  parseJSON =+    Data.withObject+      "BatchPermissionsRequestEntry"+      ( \x ->+          BatchPermissionsRequestEntry'+            Prelude.<$> (x Data..:? "Permissions" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "PermissionsWithGrantOption"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "Principal")+            Prelude.<*> (x Data..:? "Resource")+            Prelude.<*> (x Data..: "Id")+      )++instance+  Prelude.Hashable+    BatchPermissionsRequestEntry+  where+  hashWithSalt _salt BatchPermissionsRequestEntry' {..} =+    _salt+      `Prelude.hashWithSalt` permissions+      `Prelude.hashWithSalt` permissionsWithGrantOption+      `Prelude.hashWithSalt` principal+      `Prelude.hashWithSalt` resource+      `Prelude.hashWithSalt` id++instance Prelude.NFData BatchPermissionsRequestEntry where+  rnf BatchPermissionsRequestEntry' {..} =+    Prelude.rnf permissions+      `Prelude.seq` Prelude.rnf permissionsWithGrantOption+      `Prelude.seq` Prelude.rnf principal+      `Prelude.seq` Prelude.rnf resource+      `Prelude.seq` Prelude.rnf id++instance Data.ToJSON BatchPermissionsRequestEntry where+  toJSON BatchPermissionsRequestEntry' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Permissions" Data..=) Prelude.<$> permissions,+            ("PermissionsWithGrantOption" Data..=)+              Prelude.<$> permissionsWithGrantOption,+            ("Principal" Data..=) Prelude.<$> principal,+            ("Resource" Data..=) Prelude.<$> resource,+            Prelude.Just ("Id" Data..= id)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/CatalogResource.hs view
@@ -0,0 +1,57 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.CatalogResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.CatalogResource 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 for the catalog object.+--+-- /See:/ 'newCatalogResource' smart constructor.+data CatalogResource = CatalogResource'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CatalogResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newCatalogResource ::+  CatalogResource+newCatalogResource = CatalogResource'++instance Data.FromJSON CatalogResource where+  parseJSON =+    Data.withObject+      "CatalogResource"+      (\x -> Prelude.pure CatalogResource')++instance Prelude.Hashable CatalogResource where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData CatalogResource where+  rnf _ = ()++instance Data.ToJSON CatalogResource where+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+ gen/Amazonka/LakeFormation/Types/ColumnLFTag.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.LakeFormation.Types.ColumnLFTag+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.ColumnLFTag where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.LFTagPair+import qualified Amazonka.Prelude as Prelude++-- | A structure containing the name of a column resource and the LF-tags+-- attached to it.+--+-- /See:/ 'newColumnLFTag' smart constructor.+data ColumnLFTag = ColumnLFTag'+  { -- | The LF-tags attached to a column resource.+    lFTags :: Prelude.Maybe (Prelude.NonEmpty LFTagPair),+    -- | The name of a column resource.+    name :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ColumnLFTag' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lFTags', 'columnLFTag_lFTags' - The LF-tags attached to a column resource.+--+-- 'name', 'columnLFTag_name' - The name of a column resource.+newColumnLFTag ::+  ColumnLFTag+newColumnLFTag =+  ColumnLFTag'+    { lFTags = Prelude.Nothing,+      name = Prelude.Nothing+    }++-- | The LF-tags attached to a column resource.+columnLFTag_lFTags :: Lens.Lens' ColumnLFTag (Prelude.Maybe (Prelude.NonEmpty LFTagPair))+columnLFTag_lFTags = Lens.lens (\ColumnLFTag' {lFTags} -> lFTags) (\s@ColumnLFTag' {} a -> s {lFTags = a} :: ColumnLFTag) Prelude.. Lens.mapping Lens.coerced++-- | The name of a column resource.+columnLFTag_name :: Lens.Lens' ColumnLFTag (Prelude.Maybe Prelude.Text)+columnLFTag_name = Lens.lens (\ColumnLFTag' {name} -> name) (\s@ColumnLFTag' {} a -> s {name = a} :: ColumnLFTag)++instance Data.FromJSON ColumnLFTag where+  parseJSON =+    Data.withObject+      "ColumnLFTag"+      ( \x ->+          ColumnLFTag'+            Prelude.<$> (x Data..:? "LFTags")+            Prelude.<*> (x Data..:? "Name")+      )++instance Prelude.Hashable ColumnLFTag where+  hashWithSalt _salt ColumnLFTag' {..} =+    _salt+      `Prelude.hashWithSalt` lFTags+      `Prelude.hashWithSalt` name++instance Prelude.NFData ColumnLFTag where+  rnf ColumnLFTag' {..} =+    Prelude.rnf lFTags `Prelude.seq` Prelude.rnf name
+ gen/Amazonka/LakeFormation/Types/ColumnWildcard.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.LakeFormation.Types.ColumnWildcard+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.ColumnWildcard 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 wildcard object, consisting of an optional list of excluded column+-- names or indexes.+--+-- /See:/ 'newColumnWildcard' smart constructor.+data ColumnWildcard = ColumnWildcard'+  { -- | Excludes column names. Any column with this name will be excluded.+    excludedColumnNames :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ColumnWildcard' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'excludedColumnNames', 'columnWildcard_excludedColumnNames' - Excludes column names. Any column with this name will be excluded.+newColumnWildcard ::+  ColumnWildcard+newColumnWildcard =+  ColumnWildcard'+    { excludedColumnNames =+        Prelude.Nothing+    }++-- | Excludes column names. Any column with this name will be excluded.+columnWildcard_excludedColumnNames :: Lens.Lens' ColumnWildcard (Prelude.Maybe [Prelude.Text])+columnWildcard_excludedColumnNames = Lens.lens (\ColumnWildcard' {excludedColumnNames} -> excludedColumnNames) (\s@ColumnWildcard' {} a -> s {excludedColumnNames = a} :: ColumnWildcard) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ColumnWildcard where+  parseJSON =+    Data.withObject+      "ColumnWildcard"+      ( \x ->+          ColumnWildcard'+            Prelude.<$> ( x+                            Data..:? "ExcludedColumnNames"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable ColumnWildcard where+  hashWithSalt _salt ColumnWildcard' {..} =+    _salt `Prelude.hashWithSalt` excludedColumnNames++instance Prelude.NFData ColumnWildcard where+  rnf ColumnWildcard' {..} =+    Prelude.rnf excludedColumnNames++instance Data.ToJSON ColumnWildcard where+  toJSON ColumnWildcard' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ExcludedColumnNames" Data..=)+              Prelude.<$> excludedColumnNames+          ]+      )
+ gen/Amazonka/LakeFormation/Types/ComparisonOperator.hs view
@@ -0,0 +1,116 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.ComparisonOperator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.ComparisonOperator+  ( ComparisonOperator+      ( ..,+        ComparisonOperator_BEGINS_WITH,+        ComparisonOperator_BETWEEN,+        ComparisonOperator_CONTAINS,+        ComparisonOperator_EQ,+        ComparisonOperator_GE,+        ComparisonOperator_GT,+        ComparisonOperator_IN,+        ComparisonOperator_LE,+        ComparisonOperator_LT,+        ComparisonOperator_NE,+        ComparisonOperator_NOT_CONTAINS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ComparisonOperator = ComparisonOperator'+  { fromComparisonOperator ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ComparisonOperator_BEGINS_WITH :: ComparisonOperator+pattern ComparisonOperator_BEGINS_WITH = ComparisonOperator' "BEGINS_WITH"++pattern ComparisonOperator_BETWEEN :: ComparisonOperator+pattern ComparisonOperator_BETWEEN = ComparisonOperator' "BETWEEN"++pattern ComparisonOperator_CONTAINS :: ComparisonOperator+pattern ComparisonOperator_CONTAINS = ComparisonOperator' "CONTAINS"++pattern ComparisonOperator_EQ :: ComparisonOperator+pattern ComparisonOperator_EQ = ComparisonOperator' "EQ"++pattern ComparisonOperator_GE :: ComparisonOperator+pattern ComparisonOperator_GE = ComparisonOperator' "GE"++pattern ComparisonOperator_GT :: ComparisonOperator+pattern ComparisonOperator_GT = ComparisonOperator' "GT"++pattern ComparisonOperator_IN :: ComparisonOperator+pattern ComparisonOperator_IN = ComparisonOperator' "IN"++pattern ComparisonOperator_LE :: ComparisonOperator+pattern ComparisonOperator_LE = ComparisonOperator' "LE"++pattern ComparisonOperator_LT :: ComparisonOperator+pattern ComparisonOperator_LT = ComparisonOperator' "LT"++pattern ComparisonOperator_NE :: ComparisonOperator+pattern ComparisonOperator_NE = ComparisonOperator' "NE"++pattern ComparisonOperator_NOT_CONTAINS :: ComparisonOperator+pattern ComparisonOperator_NOT_CONTAINS = ComparisonOperator' "NOT_CONTAINS"++{-# COMPLETE+  ComparisonOperator_BEGINS_WITH,+  ComparisonOperator_BETWEEN,+  ComparisonOperator_CONTAINS,+  ComparisonOperator_EQ,+  ComparisonOperator_GE,+  ComparisonOperator_GT,+  ComparisonOperator_IN,+  ComparisonOperator_LE,+  ComparisonOperator_LT,+  ComparisonOperator_NE,+  ComparisonOperator_NOT_CONTAINS,+  ComparisonOperator'+  #-}
+ gen/Amazonka/LakeFormation/Types/DataCellsFilter.hs view
@@ -0,0 +1,180 @@+{-# 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.LakeFormation.Types.DataCellsFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.DataCellsFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.ColumnWildcard+import Amazonka.LakeFormation.Types.RowFilter+import qualified Amazonka.Prelude as Prelude++-- | A structure that describes certain columns on certain rows.+--+-- /See:/ 'newDataCellsFilter' smart constructor.+data DataCellsFilter = DataCellsFilter'+  { -- | A list of column names.+    columnNames :: Prelude.Maybe [Prelude.Text],+    -- | A wildcard with exclusions.+    --+    -- You must specify either a @ColumnNames@ list or the @ColumnWildCard@.+    columnWildcard :: Prelude.Maybe ColumnWildcard,+    -- | A PartiQL predicate.+    rowFilter :: Prelude.Maybe RowFilter,+    -- | The ID of the catalog to which the table belongs.+    tableCatalogId :: Prelude.Text,+    -- | A database in the Glue Data Catalog.+    databaseName :: Prelude.Text,+    -- | A table in the database.+    tableName :: Prelude.Text,+    -- | The name given by the user to the data filter cell.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataCellsFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'columnNames', 'dataCellsFilter_columnNames' - A list of column names.+--+-- 'columnWildcard', 'dataCellsFilter_columnWildcard' - A wildcard with exclusions.+--+-- You must specify either a @ColumnNames@ list or the @ColumnWildCard@.+--+-- 'rowFilter', 'dataCellsFilter_rowFilter' - A PartiQL predicate.+--+-- 'tableCatalogId', 'dataCellsFilter_tableCatalogId' - The ID of the catalog to which the table belongs.+--+-- 'databaseName', 'dataCellsFilter_databaseName' - A database in the Glue Data Catalog.+--+-- 'tableName', 'dataCellsFilter_tableName' - A table in the database.+--+-- 'name', 'dataCellsFilter_name' - The name given by the user to the data filter cell.+newDataCellsFilter ::+  -- | 'tableCatalogId'+  Prelude.Text ->+  -- | 'databaseName'+  Prelude.Text ->+  -- | 'tableName'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  DataCellsFilter+newDataCellsFilter+  pTableCatalogId_+  pDatabaseName_+  pTableName_+  pName_ =+    DataCellsFilter'+      { columnNames = Prelude.Nothing,+        columnWildcard = Prelude.Nothing,+        rowFilter = Prelude.Nothing,+        tableCatalogId = pTableCatalogId_,+        databaseName = pDatabaseName_,+        tableName = pTableName_,+        name = pName_+      }++-- | A list of column names.+dataCellsFilter_columnNames :: Lens.Lens' DataCellsFilter (Prelude.Maybe [Prelude.Text])+dataCellsFilter_columnNames = Lens.lens (\DataCellsFilter' {columnNames} -> columnNames) (\s@DataCellsFilter' {} a -> s {columnNames = a} :: DataCellsFilter) Prelude.. Lens.mapping Lens.coerced++-- | A wildcard with exclusions.+--+-- You must specify either a @ColumnNames@ list or the @ColumnWildCard@.+dataCellsFilter_columnWildcard :: Lens.Lens' DataCellsFilter (Prelude.Maybe ColumnWildcard)+dataCellsFilter_columnWildcard = Lens.lens (\DataCellsFilter' {columnWildcard} -> columnWildcard) (\s@DataCellsFilter' {} a -> s {columnWildcard = a} :: DataCellsFilter)++-- | A PartiQL predicate.+dataCellsFilter_rowFilter :: Lens.Lens' DataCellsFilter (Prelude.Maybe RowFilter)+dataCellsFilter_rowFilter = Lens.lens (\DataCellsFilter' {rowFilter} -> rowFilter) (\s@DataCellsFilter' {} a -> s {rowFilter = a} :: DataCellsFilter)++-- | The ID of the catalog to which the table belongs.+dataCellsFilter_tableCatalogId :: Lens.Lens' DataCellsFilter Prelude.Text+dataCellsFilter_tableCatalogId = Lens.lens (\DataCellsFilter' {tableCatalogId} -> tableCatalogId) (\s@DataCellsFilter' {} a -> s {tableCatalogId = a} :: DataCellsFilter)++-- | A database in the Glue Data Catalog.+dataCellsFilter_databaseName :: Lens.Lens' DataCellsFilter Prelude.Text+dataCellsFilter_databaseName = Lens.lens (\DataCellsFilter' {databaseName} -> databaseName) (\s@DataCellsFilter' {} a -> s {databaseName = a} :: DataCellsFilter)++-- | A table in the database.+dataCellsFilter_tableName :: Lens.Lens' DataCellsFilter Prelude.Text+dataCellsFilter_tableName = Lens.lens (\DataCellsFilter' {tableName} -> tableName) (\s@DataCellsFilter' {} a -> s {tableName = a} :: DataCellsFilter)++-- | The name given by the user to the data filter cell.+dataCellsFilter_name :: Lens.Lens' DataCellsFilter Prelude.Text+dataCellsFilter_name = Lens.lens (\DataCellsFilter' {name} -> name) (\s@DataCellsFilter' {} a -> s {name = a} :: DataCellsFilter)++instance Data.FromJSON DataCellsFilter where+  parseJSON =+    Data.withObject+      "DataCellsFilter"+      ( \x ->+          DataCellsFilter'+            Prelude.<$> (x Data..:? "ColumnNames" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "ColumnWildcard")+            Prelude.<*> (x Data..:? "RowFilter")+            Prelude.<*> (x Data..: "TableCatalogId")+            Prelude.<*> (x Data..: "DatabaseName")+            Prelude.<*> (x Data..: "TableName")+            Prelude.<*> (x Data..: "Name")+      )++instance Prelude.Hashable DataCellsFilter where+  hashWithSalt _salt DataCellsFilter' {..} =+    _salt+      `Prelude.hashWithSalt` columnNames+      `Prelude.hashWithSalt` columnWildcard+      `Prelude.hashWithSalt` rowFilter+      `Prelude.hashWithSalt` tableCatalogId+      `Prelude.hashWithSalt` databaseName+      `Prelude.hashWithSalt` tableName+      `Prelude.hashWithSalt` name++instance Prelude.NFData DataCellsFilter where+  rnf DataCellsFilter' {..} =+    Prelude.rnf columnNames+      `Prelude.seq` Prelude.rnf columnWildcard+      `Prelude.seq` Prelude.rnf rowFilter+      `Prelude.seq` Prelude.rnf tableCatalogId+      `Prelude.seq` Prelude.rnf databaseName+      `Prelude.seq` Prelude.rnf tableName+      `Prelude.seq` Prelude.rnf name++instance Data.ToJSON DataCellsFilter where+  toJSON DataCellsFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ColumnNames" Data..=) Prelude.<$> columnNames,+            ("ColumnWildcard" Data..=)+              Prelude.<$> columnWildcard,+            ("RowFilter" Data..=) Prelude.<$> rowFilter,+            Prelude.Just+              ("TableCatalogId" Data..= tableCatalogId),+            Prelude.Just ("DatabaseName" Data..= databaseName),+            Prelude.Just ("TableName" Data..= tableName),+            Prelude.Just ("Name" Data..= name)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/DataCellsFilterResource.hs view
@@ -0,0 +1,121 @@+{-# 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.LakeFormation.Types.DataCellsFilterResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.DataCellsFilterResource 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 for a data cells filter resource.+--+-- /See:/ 'newDataCellsFilterResource' smart constructor.+data DataCellsFilterResource = DataCellsFilterResource'+  { -- | A database in the Glue Data Catalog.+    databaseName :: Prelude.Maybe Prelude.Text,+    -- | The name of the data cells filter.+    name :: Prelude.Maybe Prelude.Text,+    -- | The ID of the catalog to which the table belongs.+    tableCatalogId :: Prelude.Maybe Prelude.Text,+    -- | The name of the table.+    tableName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataCellsFilterResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'databaseName', 'dataCellsFilterResource_databaseName' - A database in the Glue Data Catalog.+--+-- 'name', 'dataCellsFilterResource_name' - The name of the data cells filter.+--+-- 'tableCatalogId', 'dataCellsFilterResource_tableCatalogId' - The ID of the catalog to which the table belongs.+--+-- 'tableName', 'dataCellsFilterResource_tableName' - The name of the table.+newDataCellsFilterResource ::+  DataCellsFilterResource+newDataCellsFilterResource =+  DataCellsFilterResource'+    { databaseName =+        Prelude.Nothing,+      name = Prelude.Nothing,+      tableCatalogId = Prelude.Nothing,+      tableName = Prelude.Nothing+    }++-- | A database in the Glue Data Catalog.+dataCellsFilterResource_databaseName :: Lens.Lens' DataCellsFilterResource (Prelude.Maybe Prelude.Text)+dataCellsFilterResource_databaseName = Lens.lens (\DataCellsFilterResource' {databaseName} -> databaseName) (\s@DataCellsFilterResource' {} a -> s {databaseName = a} :: DataCellsFilterResource)++-- | The name of the data cells filter.+dataCellsFilterResource_name :: Lens.Lens' DataCellsFilterResource (Prelude.Maybe Prelude.Text)+dataCellsFilterResource_name = Lens.lens (\DataCellsFilterResource' {name} -> name) (\s@DataCellsFilterResource' {} a -> s {name = a} :: DataCellsFilterResource)++-- | The ID of the catalog to which the table belongs.+dataCellsFilterResource_tableCatalogId :: Lens.Lens' DataCellsFilterResource (Prelude.Maybe Prelude.Text)+dataCellsFilterResource_tableCatalogId = Lens.lens (\DataCellsFilterResource' {tableCatalogId} -> tableCatalogId) (\s@DataCellsFilterResource' {} a -> s {tableCatalogId = a} :: DataCellsFilterResource)++-- | The name of the table.+dataCellsFilterResource_tableName :: Lens.Lens' DataCellsFilterResource (Prelude.Maybe Prelude.Text)+dataCellsFilterResource_tableName = Lens.lens (\DataCellsFilterResource' {tableName} -> tableName) (\s@DataCellsFilterResource' {} a -> s {tableName = a} :: DataCellsFilterResource)++instance Data.FromJSON DataCellsFilterResource where+  parseJSON =+    Data.withObject+      "DataCellsFilterResource"+      ( \x ->+          DataCellsFilterResource'+            Prelude.<$> (x Data..:? "DatabaseName")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "TableCatalogId")+            Prelude.<*> (x Data..:? "TableName")+      )++instance Prelude.Hashable DataCellsFilterResource where+  hashWithSalt _salt DataCellsFilterResource' {..} =+    _salt+      `Prelude.hashWithSalt` databaseName+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` tableCatalogId+      `Prelude.hashWithSalt` tableName++instance Prelude.NFData DataCellsFilterResource where+  rnf DataCellsFilterResource' {..} =+    Prelude.rnf databaseName+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf tableCatalogId+      `Prelude.seq` Prelude.rnf tableName++instance Data.ToJSON DataCellsFilterResource where+  toJSON DataCellsFilterResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DatabaseName" Data..=) Prelude.<$> databaseName,+            ("Name" Data..=) Prelude.<$> name,+            ("TableCatalogId" Data..=)+              Prelude.<$> tableCatalogId,+            ("TableName" Data..=) Prelude.<$> tableName+          ]+      )
+ gen/Amazonka/LakeFormation/Types/DataLakePrincipal.hs view
@@ -0,0 +1,83 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.DataLakePrincipal+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.DataLakePrincipal 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 Lake Formation principal. Supported principals are IAM users or IAM+-- roles.+--+-- /See:/ 'newDataLakePrincipal' smart constructor.+data DataLakePrincipal = DataLakePrincipal'+  { -- | An identifier for the Lake Formation principal.+    dataLakePrincipalIdentifier :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataLakePrincipal' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataLakePrincipalIdentifier', 'dataLakePrincipal_dataLakePrincipalIdentifier' - An identifier for the Lake Formation principal.+newDataLakePrincipal ::+  DataLakePrincipal+newDataLakePrincipal =+  DataLakePrincipal'+    { dataLakePrincipalIdentifier =+        Prelude.Nothing+    }++-- | An identifier for the Lake Formation principal.+dataLakePrincipal_dataLakePrincipalIdentifier :: Lens.Lens' DataLakePrincipal (Prelude.Maybe Prelude.Text)+dataLakePrincipal_dataLakePrincipalIdentifier = Lens.lens (\DataLakePrincipal' {dataLakePrincipalIdentifier} -> dataLakePrincipalIdentifier) (\s@DataLakePrincipal' {} a -> s {dataLakePrincipalIdentifier = a} :: DataLakePrincipal)++instance Data.FromJSON DataLakePrincipal where+  parseJSON =+    Data.withObject+      "DataLakePrincipal"+      ( \x ->+          DataLakePrincipal'+            Prelude.<$> (x Data..:? "DataLakePrincipalIdentifier")+      )++instance Prelude.Hashable DataLakePrincipal where+  hashWithSalt _salt DataLakePrincipal' {..} =+    _salt+      `Prelude.hashWithSalt` dataLakePrincipalIdentifier++instance Prelude.NFData DataLakePrincipal where+  rnf DataLakePrincipal' {..} =+    Prelude.rnf dataLakePrincipalIdentifier++instance Data.ToJSON DataLakePrincipal where+  toJSON DataLakePrincipal' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DataLakePrincipalIdentifier" Data..=)+              Prelude.<$> dataLakePrincipalIdentifier+          ]+      )
+ gen/Amazonka/LakeFormation/Types/DataLakeResourceType.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.DataLakeResourceType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.DataLakeResourceType+  ( DataLakeResourceType+      ( ..,+        DataLakeResourceType_CATALOG,+        DataLakeResourceType_DATABASE,+        DataLakeResourceType_DATA_LOCATION,+        DataLakeResourceType_LF_TAG,+        DataLakeResourceType_LF_TAG_POLICY,+        DataLakeResourceType_LF_TAG_POLICY_DATABASE,+        DataLakeResourceType_LF_TAG_POLICY_TABLE,+        DataLakeResourceType_TABLE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DataLakeResourceType = DataLakeResourceType'+  { fromDataLakeResourceType ::+      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 DataLakeResourceType_CATALOG :: DataLakeResourceType+pattern DataLakeResourceType_CATALOG = DataLakeResourceType' "CATALOG"++pattern DataLakeResourceType_DATABASE :: DataLakeResourceType+pattern DataLakeResourceType_DATABASE = DataLakeResourceType' "DATABASE"++pattern DataLakeResourceType_DATA_LOCATION :: DataLakeResourceType+pattern DataLakeResourceType_DATA_LOCATION = DataLakeResourceType' "DATA_LOCATION"++pattern DataLakeResourceType_LF_TAG :: DataLakeResourceType+pattern DataLakeResourceType_LF_TAG = DataLakeResourceType' "LF_TAG"++pattern DataLakeResourceType_LF_TAG_POLICY :: DataLakeResourceType+pattern DataLakeResourceType_LF_TAG_POLICY = DataLakeResourceType' "LF_TAG_POLICY"++pattern DataLakeResourceType_LF_TAG_POLICY_DATABASE :: DataLakeResourceType+pattern DataLakeResourceType_LF_TAG_POLICY_DATABASE = DataLakeResourceType' "LF_TAG_POLICY_DATABASE"++pattern DataLakeResourceType_LF_TAG_POLICY_TABLE :: DataLakeResourceType+pattern DataLakeResourceType_LF_TAG_POLICY_TABLE = DataLakeResourceType' "LF_TAG_POLICY_TABLE"++pattern DataLakeResourceType_TABLE :: DataLakeResourceType+pattern DataLakeResourceType_TABLE = DataLakeResourceType' "TABLE"++{-# COMPLETE+  DataLakeResourceType_CATALOG,+  DataLakeResourceType_DATABASE,+  DataLakeResourceType_DATA_LOCATION,+  DataLakeResourceType_LF_TAG,+  DataLakeResourceType_LF_TAG_POLICY,+  DataLakeResourceType_LF_TAG_POLICY_DATABASE,+  DataLakeResourceType_LF_TAG_POLICY_TABLE,+  DataLakeResourceType_TABLE,+  DataLakeResourceType'+  #-}
+ gen/Amazonka/LakeFormation/Types/DataLakeSettings.hs view
@@ -0,0 +1,348 @@+{-# 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.LakeFormation.Types.DataLakeSettings+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.DataLakeSettings where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.DataLakePrincipal+import Amazonka.LakeFormation.Types.PrincipalPermissions+import qualified Amazonka.Prelude as Prelude++-- | A structure representing a list of Lake Formation principals designated+-- as data lake administrators and lists of principal permission entries+-- for default create database and default create table permissions.+--+-- /See:/ 'newDataLakeSettings' smart constructor.+data DataLakeSettings = DataLakeSettings'+  { -- | Whether to allow Amazon EMR clusters to access data managed by Lake+    -- Formation.+    --+    -- If true, you allow Amazon EMR clusters to access data in Amazon S3+    -- locations that are registered with Lake Formation.+    --+    -- If false or null, no Amazon EMR clusters will be able to access data in+    -- Amazon S3 locations that are registered with Lake Formation.+    --+    -- For more information, see+    -- <https://docs-aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#emr-switch (Optional) Allow Data Filtering on Amazon EMR>.+    allowExternalDataFiltering :: Prelude.Maybe Prelude.Bool,+    -- | Lake Formation relies on a privileged process secured by Amazon EMR or+    -- the third party integrator to tag the user\'s role while assuming it.+    -- Lake Formation will publish the acceptable key-value pair, for example+    -- key = \"LakeFormationTrustedCaller\" and value = \"TRUE\" and the third+    -- party integrator must properly tag the temporary security credentials+    -- that will be used to call Lake Formation\'s administrative APIs.+    authorizedSessionTagValueList :: Prelude.Maybe [Prelude.Text],+    -- | Specifies whether access control on newly created database is managed by+    -- Lake Formation permissions or exclusively by IAM permissions.+    --+    -- A null value indicates access control by Lake Formation permissions. A+    -- value that assigns ALL to IAM_ALLOWED_PRINCIPALS indicates access+    -- control by IAM permissions. This is referred to as the setting \"Use+    -- only IAM access control,\" and is for backward compatibility with the+    -- Glue permission model implemented by IAM permissions.+    --+    -- The only permitted values are an empty array or an array that contains a+    -- single JSON object that grants ALL to IAM_ALLOWED_PRINCIPALS.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html Changing the Default Security Settings for Your Data Lake>.+    createDatabaseDefaultPermissions :: Prelude.Maybe [PrincipalPermissions],+    -- | Specifies whether access control on newly created table is managed by+    -- Lake Formation permissions or exclusively by IAM permissions.+    --+    -- A null value indicates access control by Lake Formation permissions. A+    -- value that assigns ALL to IAM_ALLOWED_PRINCIPALS indicates access+    -- control by IAM permissions. This is referred to as the setting \"Use+    -- only IAM access control,\" and is for backward compatibility with the+    -- Glue permission model implemented by IAM permissions.+    --+    -- The only permitted values are an empty array or an array that contains a+    -- single JSON object that grants ALL to IAM_ALLOWED_PRINCIPALS.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html Changing the Default Security Settings for Your Data Lake>.+    createTableDefaultPermissions :: Prelude.Maybe [PrincipalPermissions],+    -- | A list of Lake Formation principals. Supported principals are IAM users+    -- or IAM roles.+    dataLakeAdmins :: Prelude.Maybe [DataLakePrincipal],+    -- | A list of the account IDs of Amazon Web Services accounts with Amazon+    -- EMR clusters that are to perform data filtering.>+    externalDataFilteringAllowList :: Prelude.Maybe [DataLakePrincipal],+    -- | A key-value map that provides an additional configuration on your data+    -- lake. CrossAccountVersion is the key you can configure in the Parameters+    -- field. Accepted values for the CrossAccountVersion key are 1, 2, and 3.+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A list of the resource-owning account IDs that the caller\'s account can+    -- use to share their user access details (user ARNs). The user ARNs can be+    -- logged in the resource owner\'s CloudTrail log.+    --+    -- You may want to specify this property when you are in a high-trust+    -- boundary, such as the same team or company.+    trustedResourceOwners :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataLakeSettings' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'allowExternalDataFiltering', 'dataLakeSettings_allowExternalDataFiltering' - Whether to allow Amazon EMR clusters to access data managed by Lake+-- Formation.+--+-- If true, you allow Amazon EMR clusters to access data in Amazon S3+-- locations that are registered with Lake Formation.+--+-- If false or null, no Amazon EMR clusters will be able to access data in+-- Amazon S3 locations that are registered with Lake Formation.+--+-- For more information, see+-- <https://docs-aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#emr-switch (Optional) Allow Data Filtering on Amazon EMR>.+--+-- 'authorizedSessionTagValueList', 'dataLakeSettings_authorizedSessionTagValueList' - Lake Formation relies on a privileged process secured by Amazon EMR or+-- the third party integrator to tag the user\'s role while assuming it.+-- Lake Formation will publish the acceptable key-value pair, for example+-- key = \"LakeFormationTrustedCaller\" and value = \"TRUE\" and the third+-- party integrator must properly tag the temporary security credentials+-- that will be used to call Lake Formation\'s administrative APIs.+--+-- 'createDatabaseDefaultPermissions', 'dataLakeSettings_createDatabaseDefaultPermissions' - Specifies whether access control on newly created database is managed by+-- Lake Formation permissions or exclusively by IAM permissions.+--+-- A null value indicates access control by Lake Formation permissions. A+-- value that assigns ALL to IAM_ALLOWED_PRINCIPALS indicates access+-- control by IAM permissions. This is referred to as the setting \"Use+-- only IAM access control,\" and is for backward compatibility with the+-- Glue permission model implemented by IAM permissions.+--+-- The only permitted values are an empty array or an array that contains a+-- single JSON object that grants ALL to IAM_ALLOWED_PRINCIPALS.+--+-- For more information, see+-- <https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html Changing the Default Security Settings for Your Data Lake>.+--+-- 'createTableDefaultPermissions', 'dataLakeSettings_createTableDefaultPermissions' - Specifies whether access control on newly created table is managed by+-- Lake Formation permissions or exclusively by IAM permissions.+--+-- A null value indicates access control by Lake Formation permissions. A+-- value that assigns ALL to IAM_ALLOWED_PRINCIPALS indicates access+-- control by IAM permissions. This is referred to as the setting \"Use+-- only IAM access control,\" and is for backward compatibility with the+-- Glue permission model implemented by IAM permissions.+--+-- The only permitted values are an empty array or an array that contains a+-- single JSON object that grants ALL to IAM_ALLOWED_PRINCIPALS.+--+-- For more information, see+-- <https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html Changing the Default Security Settings for Your Data Lake>.+--+-- 'dataLakeAdmins', 'dataLakeSettings_dataLakeAdmins' - A list of Lake Formation principals. Supported principals are IAM users+-- or IAM roles.+--+-- 'externalDataFilteringAllowList', 'dataLakeSettings_externalDataFilteringAllowList' - A list of the account IDs of Amazon Web Services accounts with Amazon+-- EMR clusters that are to perform data filtering.>+--+-- 'parameters', 'dataLakeSettings_parameters' - A key-value map that provides an additional configuration on your data+-- lake. CrossAccountVersion is the key you can configure in the Parameters+-- field. Accepted values for the CrossAccountVersion key are 1, 2, and 3.+--+-- 'trustedResourceOwners', 'dataLakeSettings_trustedResourceOwners' - A list of the resource-owning account IDs that the caller\'s account can+-- use to share their user access details (user ARNs). The user ARNs can be+-- logged in the resource owner\'s CloudTrail log.+--+-- You may want to specify this property when you are in a high-trust+-- boundary, such as the same team or company.+newDataLakeSettings ::+  DataLakeSettings+newDataLakeSettings =+  DataLakeSettings'+    { allowExternalDataFiltering =+        Prelude.Nothing,+      authorizedSessionTagValueList = Prelude.Nothing,+      createDatabaseDefaultPermissions = Prelude.Nothing,+      createTableDefaultPermissions = Prelude.Nothing,+      dataLakeAdmins = Prelude.Nothing,+      externalDataFilteringAllowList = Prelude.Nothing,+      parameters = Prelude.Nothing,+      trustedResourceOwners = Prelude.Nothing+    }++-- | Whether to allow Amazon EMR clusters to access data managed by Lake+-- Formation.+--+-- If true, you allow Amazon EMR clusters to access data in Amazon S3+-- locations that are registered with Lake Formation.+--+-- If false or null, no Amazon EMR clusters will be able to access data in+-- Amazon S3 locations that are registered with Lake Formation.+--+-- For more information, see+-- <https://docs-aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#emr-switch (Optional) Allow Data Filtering on Amazon EMR>.+dataLakeSettings_allowExternalDataFiltering :: Lens.Lens' DataLakeSettings (Prelude.Maybe Prelude.Bool)+dataLakeSettings_allowExternalDataFiltering = Lens.lens (\DataLakeSettings' {allowExternalDataFiltering} -> allowExternalDataFiltering) (\s@DataLakeSettings' {} a -> s {allowExternalDataFiltering = a} :: DataLakeSettings)++-- | Lake Formation relies on a privileged process secured by Amazon EMR or+-- the third party integrator to tag the user\'s role while assuming it.+-- Lake Formation will publish the acceptable key-value pair, for example+-- key = \"LakeFormationTrustedCaller\" and value = \"TRUE\" and the third+-- party integrator must properly tag the temporary security credentials+-- that will be used to call Lake Formation\'s administrative APIs.+dataLakeSettings_authorizedSessionTagValueList :: Lens.Lens' DataLakeSettings (Prelude.Maybe [Prelude.Text])+dataLakeSettings_authorizedSessionTagValueList = Lens.lens (\DataLakeSettings' {authorizedSessionTagValueList} -> authorizedSessionTagValueList) (\s@DataLakeSettings' {} a -> s {authorizedSessionTagValueList = a} :: DataLakeSettings) Prelude.. Lens.mapping Lens.coerced++-- | Specifies whether access control on newly created database is managed by+-- Lake Formation permissions or exclusively by IAM permissions.+--+-- A null value indicates access control by Lake Formation permissions. A+-- value that assigns ALL to IAM_ALLOWED_PRINCIPALS indicates access+-- control by IAM permissions. This is referred to as the setting \"Use+-- only IAM access control,\" and is for backward compatibility with the+-- Glue permission model implemented by IAM permissions.+--+-- The only permitted values are an empty array or an array that contains a+-- single JSON object that grants ALL to IAM_ALLOWED_PRINCIPALS.+--+-- For more information, see+-- <https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html Changing the Default Security Settings for Your Data Lake>.+dataLakeSettings_createDatabaseDefaultPermissions :: Lens.Lens' DataLakeSettings (Prelude.Maybe [PrincipalPermissions])+dataLakeSettings_createDatabaseDefaultPermissions = Lens.lens (\DataLakeSettings' {createDatabaseDefaultPermissions} -> createDatabaseDefaultPermissions) (\s@DataLakeSettings' {} a -> s {createDatabaseDefaultPermissions = a} :: DataLakeSettings) Prelude.. Lens.mapping Lens.coerced++-- | Specifies whether access control on newly created table is managed by+-- Lake Formation permissions or exclusively by IAM permissions.+--+-- A null value indicates access control by Lake Formation permissions. A+-- value that assigns ALL to IAM_ALLOWED_PRINCIPALS indicates access+-- control by IAM permissions. This is referred to as the setting \"Use+-- only IAM access control,\" and is for backward compatibility with the+-- Glue permission model implemented by IAM permissions.+--+-- The only permitted values are an empty array or an array that contains a+-- single JSON object that grants ALL to IAM_ALLOWED_PRINCIPALS.+--+-- For more information, see+-- <https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html Changing the Default Security Settings for Your Data Lake>.+dataLakeSettings_createTableDefaultPermissions :: Lens.Lens' DataLakeSettings (Prelude.Maybe [PrincipalPermissions])+dataLakeSettings_createTableDefaultPermissions = Lens.lens (\DataLakeSettings' {createTableDefaultPermissions} -> createTableDefaultPermissions) (\s@DataLakeSettings' {} a -> s {createTableDefaultPermissions = a} :: DataLakeSettings) Prelude.. Lens.mapping Lens.coerced++-- | A list of Lake Formation principals. Supported principals are IAM users+-- or IAM roles.+dataLakeSettings_dataLakeAdmins :: Lens.Lens' DataLakeSettings (Prelude.Maybe [DataLakePrincipal])+dataLakeSettings_dataLakeAdmins = Lens.lens (\DataLakeSettings' {dataLakeAdmins} -> dataLakeAdmins) (\s@DataLakeSettings' {} a -> s {dataLakeAdmins = a} :: DataLakeSettings) Prelude.. Lens.mapping Lens.coerced++-- | A list of the account IDs of Amazon Web Services accounts with Amazon+-- EMR clusters that are to perform data filtering.>+dataLakeSettings_externalDataFilteringAllowList :: Lens.Lens' DataLakeSettings (Prelude.Maybe [DataLakePrincipal])+dataLakeSettings_externalDataFilteringAllowList = Lens.lens (\DataLakeSettings' {externalDataFilteringAllowList} -> externalDataFilteringAllowList) (\s@DataLakeSettings' {} a -> s {externalDataFilteringAllowList = a} :: DataLakeSettings) Prelude.. Lens.mapping Lens.coerced++-- | A key-value map that provides an additional configuration on your data+-- lake. CrossAccountVersion is the key you can configure in the Parameters+-- field. Accepted values for the CrossAccountVersion key are 1, 2, and 3.+dataLakeSettings_parameters :: Lens.Lens' DataLakeSettings (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+dataLakeSettings_parameters = Lens.lens (\DataLakeSettings' {parameters} -> parameters) (\s@DataLakeSettings' {} a -> s {parameters = a} :: DataLakeSettings) Prelude.. Lens.mapping Lens.coerced++-- | A list of the resource-owning account IDs that the caller\'s account can+-- use to share their user access details (user ARNs). The user ARNs can be+-- logged in the resource owner\'s CloudTrail log.+--+-- You may want to specify this property when you are in a high-trust+-- boundary, such as the same team or company.+dataLakeSettings_trustedResourceOwners :: Lens.Lens' DataLakeSettings (Prelude.Maybe [Prelude.Text])+dataLakeSettings_trustedResourceOwners = Lens.lens (\DataLakeSettings' {trustedResourceOwners} -> trustedResourceOwners) (\s@DataLakeSettings' {} a -> s {trustedResourceOwners = a} :: DataLakeSettings) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON DataLakeSettings where+  parseJSON =+    Data.withObject+      "DataLakeSettings"+      ( \x ->+          DataLakeSettings'+            Prelude.<$> (x Data..:? "AllowExternalDataFiltering")+            Prelude.<*> ( x+                            Data..:? "AuthorizedSessionTagValueList"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..:? "CreateDatabaseDefaultPermissions"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..:? "CreateTableDefaultPermissions"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "DataLakeAdmins" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "ExternalDataFilteringAllowList"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "Parameters" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "TrustedResourceOwners"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable DataLakeSettings where+  hashWithSalt _salt DataLakeSettings' {..} =+    _salt+      `Prelude.hashWithSalt` allowExternalDataFiltering+      `Prelude.hashWithSalt` authorizedSessionTagValueList+      `Prelude.hashWithSalt` createDatabaseDefaultPermissions+      `Prelude.hashWithSalt` createTableDefaultPermissions+      `Prelude.hashWithSalt` dataLakeAdmins+      `Prelude.hashWithSalt` externalDataFilteringAllowList+      `Prelude.hashWithSalt` parameters+      `Prelude.hashWithSalt` trustedResourceOwners++instance Prelude.NFData DataLakeSettings where+  rnf DataLakeSettings' {..} =+    Prelude.rnf allowExternalDataFiltering+      `Prelude.seq` Prelude.rnf authorizedSessionTagValueList+      `Prelude.seq` Prelude.rnf createDatabaseDefaultPermissions+      `Prelude.seq` Prelude.rnf createTableDefaultPermissions+      `Prelude.seq` Prelude.rnf dataLakeAdmins+      `Prelude.seq` Prelude.rnf externalDataFilteringAllowList+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf trustedResourceOwners++instance Data.ToJSON DataLakeSettings where+  toJSON DataLakeSettings' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AllowExternalDataFiltering" Data..=)+              Prelude.<$> allowExternalDataFiltering,+            ("AuthorizedSessionTagValueList" Data..=)+              Prelude.<$> authorizedSessionTagValueList,+            ("CreateDatabaseDefaultPermissions" Data..=)+              Prelude.<$> createDatabaseDefaultPermissions,+            ("CreateTableDefaultPermissions" Data..=)+              Prelude.<$> createTableDefaultPermissions,+            ("DataLakeAdmins" Data..=)+              Prelude.<$> dataLakeAdmins,+            ("ExternalDataFilteringAllowList" Data..=)+              Prelude.<$> externalDataFilteringAllowList,+            ("Parameters" Data..=) Prelude.<$> parameters,+            ("TrustedResourceOwners" Data..=)+              Prelude.<$> trustedResourceOwners+          ]+      )
+ gen/Amazonka/LakeFormation/Types/DataLocationResource.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.LakeFormation.Types.DataLocationResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.DataLocationResource 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 for a data location object where permissions are granted or+-- revoked.+--+-- /See:/ 'newDataLocationResource' smart constructor.+data DataLocationResource = DataLocationResource'+  { -- | The identifier for the Data Catalog where the location is registered+    -- with Lake Formation. By default, it is the account ID of the caller.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) that uniquely identifies the data+    -- location resource.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataLocationResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'dataLocationResource_catalogId' - The identifier for the Data Catalog where the location is registered+-- with Lake Formation. By default, it is the account ID of the caller.+--+-- 'resourceArn', 'dataLocationResource_resourceArn' - The Amazon Resource Name (ARN) that uniquely identifies the data+-- location resource.+newDataLocationResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  DataLocationResource+newDataLocationResource pResourceArn_ =+  DataLocationResource'+    { catalogId = Prelude.Nothing,+      resourceArn = pResourceArn_+    }++-- | The identifier for the Data Catalog where the location is registered+-- with Lake Formation. By default, it is the account ID of the caller.+dataLocationResource_catalogId :: Lens.Lens' DataLocationResource (Prelude.Maybe Prelude.Text)+dataLocationResource_catalogId = Lens.lens (\DataLocationResource' {catalogId} -> catalogId) (\s@DataLocationResource' {} a -> s {catalogId = a} :: DataLocationResource)++-- | The Amazon Resource Name (ARN) that uniquely identifies the data+-- location resource.+dataLocationResource_resourceArn :: Lens.Lens' DataLocationResource Prelude.Text+dataLocationResource_resourceArn = Lens.lens (\DataLocationResource' {resourceArn} -> resourceArn) (\s@DataLocationResource' {} a -> s {resourceArn = a} :: DataLocationResource)++instance Data.FromJSON DataLocationResource where+  parseJSON =+    Data.withObject+      "DataLocationResource"+      ( \x ->+          DataLocationResource'+            Prelude.<$> (x Data..:? "CatalogId")+            Prelude.<*> (x Data..: "ResourceArn")+      )++instance Prelude.Hashable DataLocationResource where+  hashWithSalt _salt DataLocationResource' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData DataLocationResource where+  rnf DataLocationResource' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf resourceArn++instance Data.ToJSON DataLocationResource where+  toJSON DataLocationResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("ResourceArn" Data..= resourceArn)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/DatabaseResource.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.DatabaseResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.DatabaseResource 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 for the database object.+--+-- /See:/ 'newDatabaseResource' smart constructor.+data DatabaseResource = DatabaseResource'+  { -- | The identifier for the Data Catalog. By default, it is the account ID of+    -- the caller.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The name of the database resource. Unique to the Data Catalog.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DatabaseResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'databaseResource_catalogId' - The identifier for the Data Catalog. By default, it is the account ID of+-- the caller.+--+-- 'name', 'databaseResource_name' - The name of the database resource. Unique to the Data Catalog.+newDatabaseResource ::+  -- | 'name'+  Prelude.Text ->+  DatabaseResource+newDatabaseResource pName_ =+  DatabaseResource'+    { catalogId = Prelude.Nothing,+      name = pName_+    }++-- | The identifier for the Data Catalog. By default, it is the account ID of+-- the caller.+databaseResource_catalogId :: Lens.Lens' DatabaseResource (Prelude.Maybe Prelude.Text)+databaseResource_catalogId = Lens.lens (\DatabaseResource' {catalogId} -> catalogId) (\s@DatabaseResource' {} a -> s {catalogId = a} :: DatabaseResource)++-- | The name of the database resource. Unique to the Data Catalog.+databaseResource_name :: Lens.Lens' DatabaseResource Prelude.Text+databaseResource_name = Lens.lens (\DatabaseResource' {name} -> name) (\s@DatabaseResource' {} a -> s {name = a} :: DatabaseResource)++instance Data.FromJSON DatabaseResource where+  parseJSON =+    Data.withObject+      "DatabaseResource"+      ( \x ->+          DatabaseResource'+            Prelude.<$> (x Data..:? "CatalogId")+            Prelude.<*> (x Data..: "Name")+      )++instance Prelude.Hashable DatabaseResource where+  hashWithSalt _salt DatabaseResource' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` name++instance Prelude.NFData DatabaseResource where+  rnf DatabaseResource' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf name++instance Data.ToJSON DatabaseResource where+  toJSON DatabaseResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("Name" Data..= name)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/DeleteObjectInput.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.LakeFormation.Types.DeleteObjectInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.DeleteObjectInput 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 to delete from the governed table.+--+-- /See:/ 'newDeleteObjectInput' smart constructor.+data DeleteObjectInput = DeleteObjectInput'+  { -- | The Amazon S3 ETag of the object. Returned by @GetTableObjects@ for+    -- validation and used to identify changes to the underlying data.+    eTag :: Prelude.Maybe Prelude.Text,+    -- | A list of partition values for the object. A value must be specified for+    -- each partition key associated with the governed table.+    partitionValues :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The Amazon S3 location of the object to delete.+    uri :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteObjectInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'eTag', 'deleteObjectInput_eTag' - The Amazon S3 ETag of the object. Returned by @GetTableObjects@ for+-- validation and used to identify changes to the underlying data.+--+-- 'partitionValues', 'deleteObjectInput_partitionValues' - A list of partition values for the object. A value must be specified for+-- each partition key associated with the governed table.+--+-- 'uri', 'deleteObjectInput_uri' - The Amazon S3 location of the object to delete.+newDeleteObjectInput ::+  -- | 'uri'+  Prelude.Text ->+  DeleteObjectInput+newDeleteObjectInput pUri_ =+  DeleteObjectInput'+    { eTag = Prelude.Nothing,+      partitionValues = Prelude.Nothing,+      uri = pUri_+    }++-- | The Amazon S3 ETag of the object. Returned by @GetTableObjects@ for+-- validation and used to identify changes to the underlying data.+deleteObjectInput_eTag :: Lens.Lens' DeleteObjectInput (Prelude.Maybe Prelude.Text)+deleteObjectInput_eTag = Lens.lens (\DeleteObjectInput' {eTag} -> eTag) (\s@DeleteObjectInput' {} a -> s {eTag = a} :: DeleteObjectInput)++-- | A list of partition values for the object. A value must be specified for+-- each partition key associated with the governed table.+deleteObjectInput_partitionValues :: Lens.Lens' DeleteObjectInput (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+deleteObjectInput_partitionValues = Lens.lens (\DeleteObjectInput' {partitionValues} -> partitionValues) (\s@DeleteObjectInput' {} a -> s {partitionValues = a} :: DeleteObjectInput) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon S3 location of the object to delete.+deleteObjectInput_uri :: Lens.Lens' DeleteObjectInput Prelude.Text+deleteObjectInput_uri = Lens.lens (\DeleteObjectInput' {uri} -> uri) (\s@DeleteObjectInput' {} a -> s {uri = a} :: DeleteObjectInput)++instance Prelude.Hashable DeleteObjectInput where+  hashWithSalt _salt DeleteObjectInput' {..} =+    _salt+      `Prelude.hashWithSalt` eTag+      `Prelude.hashWithSalt` partitionValues+      `Prelude.hashWithSalt` uri++instance Prelude.NFData DeleteObjectInput where+  rnf DeleteObjectInput' {..} =+    Prelude.rnf eTag+      `Prelude.seq` Prelude.rnf partitionValues+      `Prelude.seq` Prelude.rnf uri++instance Data.ToJSON DeleteObjectInput where+  toJSON DeleteObjectInput' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ETag" Data..=) Prelude.<$> eTag,+            ("PartitionValues" Data..=)+              Prelude.<$> partitionValues,+            Prelude.Just ("Uri" Data..= uri)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/DetailsMap.hs view
@@ -0,0 +1,72 @@+{-# 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.LakeFormation.Types.DetailsMap+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.DetailsMap 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 the additional details to be returned in the+-- @AdditionalDetails@ attribute of @PrincipalResourcePermissions@.+--+-- If a catalog resource is shared through Resource Access Manager (RAM),+-- then there will exist a corresponding RAM resource share ARN.+--+-- /See:/ 'newDetailsMap' smart constructor.+data DetailsMap = DetailsMap'+  { -- | A resource share ARN for a catalog resource shared through RAM.+    resourceShare :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DetailsMap' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceShare', 'detailsMap_resourceShare' - A resource share ARN for a catalog resource shared through RAM.+newDetailsMap ::+  DetailsMap+newDetailsMap =+  DetailsMap' {resourceShare = Prelude.Nothing}++-- | A resource share ARN for a catalog resource shared through RAM.+detailsMap_resourceShare :: Lens.Lens' DetailsMap (Prelude.Maybe [Prelude.Text])+detailsMap_resourceShare = Lens.lens (\DetailsMap' {resourceShare} -> resourceShare) (\s@DetailsMap' {} a -> s {resourceShare = a} :: DetailsMap) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON DetailsMap where+  parseJSON =+    Data.withObject+      "DetailsMap"+      ( \x ->+          DetailsMap'+            Prelude.<$> (x Data..:? "ResourceShare" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable DetailsMap where+  hashWithSalt _salt DetailsMap' {..} =+    _salt `Prelude.hashWithSalt` resourceShare++instance Prelude.NFData DetailsMap where+  rnf DetailsMap' {..} = Prelude.rnf resourceShare
+ gen/Amazonka/LakeFormation/Types/ErrorDetail.hs view
@@ -0,0 +1,84 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.ErrorDetail+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.ErrorDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains details about an error.+--+-- /See:/ 'newErrorDetail' smart constructor.+data ErrorDetail = ErrorDetail'+  { -- | The code associated with this error.+    errorCode :: Prelude.Maybe Prelude.Text,+    -- | A message describing the error.+    errorMessage :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ErrorDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'errorDetail_errorCode' - The code associated with this error.+--+-- 'errorMessage', 'errorDetail_errorMessage' - A message describing the error.+newErrorDetail ::+  ErrorDetail+newErrorDetail =+  ErrorDetail'+    { errorCode = Prelude.Nothing,+      errorMessage = Prelude.Nothing+    }++-- | The code associated with this error.+errorDetail_errorCode :: Lens.Lens' ErrorDetail (Prelude.Maybe Prelude.Text)+errorDetail_errorCode = Lens.lens (\ErrorDetail' {errorCode} -> errorCode) (\s@ErrorDetail' {} a -> s {errorCode = a} :: ErrorDetail)++-- | A message describing the error.+errorDetail_errorMessage :: Lens.Lens' ErrorDetail (Prelude.Maybe Prelude.Text)+errorDetail_errorMessage = Lens.lens (\ErrorDetail' {errorMessage} -> errorMessage) (\s@ErrorDetail' {} a -> s {errorMessage = a} :: ErrorDetail)++instance Data.FromJSON ErrorDetail where+  parseJSON =+    Data.withObject+      "ErrorDetail"+      ( \x ->+          ErrorDetail'+            Prelude.<$> (x Data..:? "ErrorCode")+            Prelude.<*> (x Data..:? "ErrorMessage")+      )++instance Prelude.Hashable ErrorDetail where+  hashWithSalt _salt ErrorDetail' {..} =+    _salt+      `Prelude.hashWithSalt` errorCode+      `Prelude.hashWithSalt` errorMessage++instance Prelude.NFData ErrorDetail where+  rnf ErrorDetail' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf errorMessage
+ gen/Amazonka/LakeFormation/Types/ExecutionStatistics.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.LakeFormation.Types.ExecutionStatistics+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.ExecutionStatistics 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++-- | Statistics related to the processing of a query statement.+--+-- /See:/ 'newExecutionStatistics' smart constructor.+data ExecutionStatistics = ExecutionStatistics'+  { -- | The average time the request took to be executed.+    averageExecutionTimeMillis :: Prelude.Maybe Prelude.Integer,+    -- | The amount of data that was scanned in bytes.+    dataScannedBytes :: Prelude.Maybe Prelude.Integer,+    -- | The number of work units executed.+    workUnitsExecutedCount :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExecutionStatistics' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'averageExecutionTimeMillis', 'executionStatistics_averageExecutionTimeMillis' - The average time the request took to be executed.+--+-- 'dataScannedBytes', 'executionStatistics_dataScannedBytes' - The amount of data that was scanned in bytes.+--+-- 'workUnitsExecutedCount', 'executionStatistics_workUnitsExecutedCount' - The number of work units executed.+newExecutionStatistics ::+  ExecutionStatistics+newExecutionStatistics =+  ExecutionStatistics'+    { averageExecutionTimeMillis =+        Prelude.Nothing,+      dataScannedBytes = Prelude.Nothing,+      workUnitsExecutedCount = Prelude.Nothing+    }++-- | The average time the request took to be executed.+executionStatistics_averageExecutionTimeMillis :: Lens.Lens' ExecutionStatistics (Prelude.Maybe Prelude.Integer)+executionStatistics_averageExecutionTimeMillis = Lens.lens (\ExecutionStatistics' {averageExecutionTimeMillis} -> averageExecutionTimeMillis) (\s@ExecutionStatistics' {} a -> s {averageExecutionTimeMillis = a} :: ExecutionStatistics)++-- | The amount of data that was scanned in bytes.+executionStatistics_dataScannedBytes :: Lens.Lens' ExecutionStatistics (Prelude.Maybe Prelude.Integer)+executionStatistics_dataScannedBytes = Lens.lens (\ExecutionStatistics' {dataScannedBytes} -> dataScannedBytes) (\s@ExecutionStatistics' {} a -> s {dataScannedBytes = a} :: ExecutionStatistics)++-- | The number of work units executed.+executionStatistics_workUnitsExecutedCount :: Lens.Lens' ExecutionStatistics (Prelude.Maybe Prelude.Integer)+executionStatistics_workUnitsExecutedCount = Lens.lens (\ExecutionStatistics' {workUnitsExecutedCount} -> workUnitsExecutedCount) (\s@ExecutionStatistics' {} a -> s {workUnitsExecutedCount = a} :: ExecutionStatistics)++instance Data.FromJSON ExecutionStatistics where+  parseJSON =+    Data.withObject+      "ExecutionStatistics"+      ( \x ->+          ExecutionStatistics'+            Prelude.<$> (x Data..:? "AverageExecutionTimeMillis")+            Prelude.<*> (x Data..:? "DataScannedBytes")+            Prelude.<*> (x Data..:? "WorkUnitsExecutedCount")+      )++instance Prelude.Hashable ExecutionStatistics where+  hashWithSalt _salt ExecutionStatistics' {..} =+    _salt+      `Prelude.hashWithSalt` averageExecutionTimeMillis+      `Prelude.hashWithSalt` dataScannedBytes+      `Prelude.hashWithSalt` workUnitsExecutedCount++instance Prelude.NFData ExecutionStatistics where+  rnf ExecutionStatistics' {..} =+    Prelude.rnf averageExecutionTimeMillis+      `Prelude.seq` Prelude.rnf dataScannedBytes+      `Prelude.seq` Prelude.rnf workUnitsExecutedCount
+ gen/Amazonka/LakeFormation/Types/FieldNameString.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.LakeFormation.Types.FieldNameString+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.FieldNameString+  ( FieldNameString+      ( ..,+        FieldNameString_LAST_MODIFIED,+        FieldNameString_RESOURCE_ARN,+        FieldNameString_ROLE_ARN+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FieldNameString = FieldNameString'+  { fromFieldNameString ::+      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 FieldNameString_LAST_MODIFIED :: FieldNameString+pattern FieldNameString_LAST_MODIFIED = FieldNameString' "LAST_MODIFIED"++pattern FieldNameString_RESOURCE_ARN :: FieldNameString+pattern FieldNameString_RESOURCE_ARN = FieldNameString' "RESOURCE_ARN"++pattern FieldNameString_ROLE_ARN :: FieldNameString+pattern FieldNameString_ROLE_ARN = FieldNameString' "ROLE_ARN"++{-# COMPLETE+  FieldNameString_LAST_MODIFIED,+  FieldNameString_RESOURCE_ARN,+  FieldNameString_ROLE_ARN,+  FieldNameString'+  #-}
+ gen/Amazonka/LakeFormation/Types/FilterCondition.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.LakeFormation.Types.FilterCondition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.FilterCondition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.ComparisonOperator+import Amazonka.LakeFormation.Types.FieldNameString+import qualified Amazonka.Prelude as Prelude++-- | This structure describes the filtering of columns in a table based on a+-- filter condition.+--+-- /See:/ 'newFilterCondition' smart constructor.+data FilterCondition = FilterCondition'+  { -- | The comparison operator used in the filter condition.+    comparisonOperator :: Prelude.Maybe ComparisonOperator,+    -- | The field to filter in the filter condition.+    field :: Prelude.Maybe FieldNameString,+    -- | A string with values used in evaluating the filter condition.+    stringValueList :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FilterCondition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'comparisonOperator', 'filterCondition_comparisonOperator' - The comparison operator used in the filter condition.+--+-- 'field', 'filterCondition_field' - The field to filter in the filter condition.+--+-- 'stringValueList', 'filterCondition_stringValueList' - A string with values used in evaluating the filter condition.+newFilterCondition ::+  FilterCondition+newFilterCondition =+  FilterCondition'+    { comparisonOperator =+        Prelude.Nothing,+      field = Prelude.Nothing,+      stringValueList = Prelude.Nothing+    }++-- | The comparison operator used in the filter condition.+filterCondition_comparisonOperator :: Lens.Lens' FilterCondition (Prelude.Maybe ComparisonOperator)+filterCondition_comparisonOperator = Lens.lens (\FilterCondition' {comparisonOperator} -> comparisonOperator) (\s@FilterCondition' {} a -> s {comparisonOperator = a} :: FilterCondition)++-- | The field to filter in the filter condition.+filterCondition_field :: Lens.Lens' FilterCondition (Prelude.Maybe FieldNameString)+filterCondition_field = Lens.lens (\FilterCondition' {field} -> field) (\s@FilterCondition' {} a -> s {field = a} :: FilterCondition)++-- | A string with values used in evaluating the filter condition.+filterCondition_stringValueList :: Lens.Lens' FilterCondition (Prelude.Maybe [Prelude.Text])+filterCondition_stringValueList = Lens.lens (\FilterCondition' {stringValueList} -> stringValueList) (\s@FilterCondition' {} a -> s {stringValueList = a} :: FilterCondition) Prelude.. Lens.mapping Lens.coerced++instance Prelude.Hashable FilterCondition where+  hashWithSalt _salt FilterCondition' {..} =+    _salt+      `Prelude.hashWithSalt` comparisonOperator+      `Prelude.hashWithSalt` field+      `Prelude.hashWithSalt` stringValueList++instance Prelude.NFData FilterCondition where+  rnf FilterCondition' {..} =+    Prelude.rnf comparisonOperator+      `Prelude.seq` Prelude.rnf field+      `Prelude.seq` Prelude.rnf stringValueList++instance Data.ToJSON FilterCondition where+  toJSON FilterCondition' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ComparisonOperator" Data..=)+              Prelude.<$> comparisonOperator,+            ("Field" Data..=) Prelude.<$> field,+            ("StringValueList" Data..=)+              Prelude.<$> stringValueList+          ]+      )
+ gen/Amazonka/LakeFormation/Types/LFTag.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.LFTag+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.LFTag 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 allows an admin to grant user permissions on certain+-- conditions. For example, granting a role access to all columns that do+-- not have the LF-tag \'PII\' in tables that have the LF-tag \'Prod\'.+--+-- /See:/ 'newLFTag' smart constructor.+data LFTag = LFTag'+  { -- | The key-name for the LF-tag.+    tagKey :: Prelude.Text,+    -- | A list of possible values an attribute can take.+    tagValues :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LFTag' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tagKey', 'lFTag_tagKey' - The key-name for the LF-tag.+--+-- 'tagValues', 'lFTag_tagValues' - A list of possible values an attribute can take.+newLFTag ::+  -- | 'tagKey'+  Prelude.Text ->+  -- | 'tagValues'+  Prelude.NonEmpty Prelude.Text ->+  LFTag+newLFTag pTagKey_ pTagValues_ =+  LFTag'+    { tagKey = pTagKey_,+      tagValues = Lens.coerced Lens.# pTagValues_+    }++-- | The key-name for the LF-tag.+lFTag_tagKey :: Lens.Lens' LFTag Prelude.Text+lFTag_tagKey = Lens.lens (\LFTag' {tagKey} -> tagKey) (\s@LFTag' {} a -> s {tagKey = a} :: LFTag)++-- | A list of possible values an attribute can take.+lFTag_tagValues :: Lens.Lens' LFTag (Prelude.NonEmpty Prelude.Text)+lFTag_tagValues = Lens.lens (\LFTag' {tagValues} -> tagValues) (\s@LFTag' {} a -> s {tagValues = a} :: LFTag) Prelude.. Lens.coerced++instance Data.FromJSON LFTag where+  parseJSON =+    Data.withObject+      "LFTag"+      ( \x ->+          LFTag'+            Prelude.<$> (x Data..: "TagKey")+            Prelude.<*> (x Data..: "TagValues")+      )++instance Prelude.Hashable LFTag where+  hashWithSalt _salt LFTag' {..} =+    _salt+      `Prelude.hashWithSalt` tagKey+      `Prelude.hashWithSalt` tagValues++instance Prelude.NFData LFTag where+  rnf LFTag' {..} =+    Prelude.rnf tagKey+      `Prelude.seq` Prelude.rnf tagValues++instance Data.ToJSON LFTag where+  toJSON LFTag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("TagKey" Data..= tagKey),+            Prelude.Just ("TagValues" Data..= tagValues)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/LFTagError.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.LakeFormation.Types.LFTagError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.LFTagError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.ErrorDetail+import Amazonka.LakeFormation.Types.LFTagPair+import qualified Amazonka.Prelude as Prelude++-- | A structure containing an error related to a @TagResource@ or+-- @UnTagResource@ operation.+--+-- /See:/ 'newLFTagError' smart constructor.+data LFTagError = LFTagError'+  { -- | An error that occurred with the attachment or detachment of the LF-tag.+    error :: Prelude.Maybe ErrorDetail,+    -- | The key-name of the LF-tag.+    lFTag :: Prelude.Maybe LFTagPair+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LFTagError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'error', 'lFTagError_error' - An error that occurred with the attachment or detachment of the LF-tag.+--+-- 'lFTag', 'lFTagError_lFTag' - The key-name of the LF-tag.+newLFTagError ::+  LFTagError+newLFTagError =+  LFTagError'+    { error = Prelude.Nothing,+      lFTag = Prelude.Nothing+    }++-- | An error that occurred with the attachment or detachment of the LF-tag.+lFTagError_error :: Lens.Lens' LFTagError (Prelude.Maybe ErrorDetail)+lFTagError_error = Lens.lens (\LFTagError' {error} -> error) (\s@LFTagError' {} a -> s {error = a} :: LFTagError)++-- | The key-name of the LF-tag.+lFTagError_lFTag :: Lens.Lens' LFTagError (Prelude.Maybe LFTagPair)+lFTagError_lFTag = Lens.lens (\LFTagError' {lFTag} -> lFTag) (\s@LFTagError' {} a -> s {lFTag = a} :: LFTagError)++instance Data.FromJSON LFTagError where+  parseJSON =+    Data.withObject+      "LFTagError"+      ( \x ->+          LFTagError'+            Prelude.<$> (x Data..:? "Error")+            Prelude.<*> (x Data..:? "LFTag")+      )++instance Prelude.Hashable LFTagError where+  hashWithSalt _salt LFTagError' {..} =+    _salt+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` lFTag++instance Prelude.NFData LFTagError where+  rnf LFTagError' {..} =+    Prelude.rnf error `Prelude.seq` Prelude.rnf lFTag
+ gen/Amazonka/LakeFormation/Types/LFTagKeyResource.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.LFTagKeyResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.LFTagKeyResource 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 an LF-tag key and values for a resource.+--+-- /See:/ 'newLFTagKeyResource' smart constructor.+data LFTagKeyResource = LFTagKeyResource'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The key-name for the LF-tag.+    tagKey :: Prelude.Text,+    -- | A list of possible values an attribute can take.+    tagValues :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LFTagKeyResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'lFTagKeyResource_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'tagKey', 'lFTagKeyResource_tagKey' - The key-name for the LF-tag.+--+-- 'tagValues', 'lFTagKeyResource_tagValues' - A list of possible values an attribute can take.+newLFTagKeyResource ::+  -- | 'tagKey'+  Prelude.Text ->+  -- | 'tagValues'+  Prelude.NonEmpty Prelude.Text ->+  LFTagKeyResource+newLFTagKeyResource pTagKey_ pTagValues_ =+  LFTagKeyResource'+    { catalogId = Prelude.Nothing,+      tagKey = pTagKey_,+      tagValues = Lens.coerced Lens.# pTagValues_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+lFTagKeyResource_catalogId :: Lens.Lens' LFTagKeyResource (Prelude.Maybe Prelude.Text)+lFTagKeyResource_catalogId = Lens.lens (\LFTagKeyResource' {catalogId} -> catalogId) (\s@LFTagKeyResource' {} a -> s {catalogId = a} :: LFTagKeyResource)++-- | The key-name for the LF-tag.+lFTagKeyResource_tagKey :: Lens.Lens' LFTagKeyResource Prelude.Text+lFTagKeyResource_tagKey = Lens.lens (\LFTagKeyResource' {tagKey} -> tagKey) (\s@LFTagKeyResource' {} a -> s {tagKey = a} :: LFTagKeyResource)++-- | A list of possible values an attribute can take.+lFTagKeyResource_tagValues :: Lens.Lens' LFTagKeyResource (Prelude.NonEmpty Prelude.Text)+lFTagKeyResource_tagValues = Lens.lens (\LFTagKeyResource' {tagValues} -> tagValues) (\s@LFTagKeyResource' {} a -> s {tagValues = a} :: LFTagKeyResource) Prelude.. Lens.coerced++instance Data.FromJSON LFTagKeyResource where+  parseJSON =+    Data.withObject+      "LFTagKeyResource"+      ( \x ->+          LFTagKeyResource'+            Prelude.<$> (x Data..:? "CatalogId")+            Prelude.<*> (x Data..: "TagKey")+            Prelude.<*> (x Data..: "TagValues")+      )++instance Prelude.Hashable LFTagKeyResource where+  hashWithSalt _salt LFTagKeyResource' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` tagKey+      `Prelude.hashWithSalt` tagValues++instance Prelude.NFData LFTagKeyResource where+  rnf LFTagKeyResource' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf tagKey+      `Prelude.seq` Prelude.rnf tagValues++instance Data.ToJSON LFTagKeyResource where+  toJSON LFTagKeyResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("TagKey" Data..= tagKey),+            Prelude.Just ("TagValues" Data..= tagValues)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/LFTagPair.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.LFTagPair+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.LFTagPair 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 an LF-tag key-value pair.+--+-- /See:/ 'newLFTagPair' smart constructor.+data LFTagPair = LFTagPair'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The key-name for the LF-tag.+    tagKey :: Prelude.Text,+    -- | A list of possible values an attribute can take.+    tagValues :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LFTagPair' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'lFTagPair_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'tagKey', 'lFTagPair_tagKey' - The key-name for the LF-tag.+--+-- 'tagValues', 'lFTagPair_tagValues' - A list of possible values an attribute can take.+newLFTagPair ::+  -- | 'tagKey'+  Prelude.Text ->+  -- | 'tagValues'+  Prelude.NonEmpty Prelude.Text ->+  LFTagPair+newLFTagPair pTagKey_ pTagValues_ =+  LFTagPair'+    { catalogId = Prelude.Nothing,+      tagKey = pTagKey_,+      tagValues = Lens.coerced Lens.# pTagValues_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+lFTagPair_catalogId :: Lens.Lens' LFTagPair (Prelude.Maybe Prelude.Text)+lFTagPair_catalogId = Lens.lens (\LFTagPair' {catalogId} -> catalogId) (\s@LFTagPair' {} a -> s {catalogId = a} :: LFTagPair)++-- | The key-name for the LF-tag.+lFTagPair_tagKey :: Lens.Lens' LFTagPair Prelude.Text+lFTagPair_tagKey = Lens.lens (\LFTagPair' {tagKey} -> tagKey) (\s@LFTagPair' {} a -> s {tagKey = a} :: LFTagPair)++-- | A list of possible values an attribute can take.+lFTagPair_tagValues :: Lens.Lens' LFTagPair (Prelude.NonEmpty Prelude.Text)+lFTagPair_tagValues = Lens.lens (\LFTagPair' {tagValues} -> tagValues) (\s@LFTagPair' {} a -> s {tagValues = a} :: LFTagPair) Prelude.. Lens.coerced++instance Data.FromJSON LFTagPair where+  parseJSON =+    Data.withObject+      "LFTagPair"+      ( \x ->+          LFTagPair'+            Prelude.<$> (x Data..:? "CatalogId")+            Prelude.<*> (x Data..: "TagKey")+            Prelude.<*> (x Data..: "TagValues")+      )++instance Prelude.Hashable LFTagPair where+  hashWithSalt _salt LFTagPair' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` tagKey+      `Prelude.hashWithSalt` tagValues++instance Prelude.NFData LFTagPair where+  rnf LFTagPair' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf tagKey+      `Prelude.seq` Prelude.rnf tagValues++instance Data.ToJSON LFTagPair where+  toJSON LFTagPair' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("TagKey" Data..= tagKey),+            Prelude.Just ("TagValues" Data..= tagValues)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/LFTagPolicyResource.hs view
@@ -0,0 +1,122 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.LFTagPolicyResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.LFTagPolicyResource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.LFTag+import Amazonka.LakeFormation.Types.ResourceType+import qualified Amazonka.Prelude as Prelude++-- | A structure containing a list of LF-tag conditions that apply to a+-- resource\'s LF-tag policy.+--+-- /See:/ 'newLFTagPolicyResource' smart constructor.+data LFTagPolicyResource = LFTagPolicyResource'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The resource type for which the LF-tag policy applies.+    resourceType :: ResourceType,+    -- | A list of LF-tag conditions that apply to the resource\'s LF-tag policy.+    expression :: Prelude.NonEmpty LFTag+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LFTagPolicyResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'lFTagPolicyResource_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'resourceType', 'lFTagPolicyResource_resourceType' - The resource type for which the LF-tag policy applies.+--+-- 'expression', 'lFTagPolicyResource_expression' - A list of LF-tag conditions that apply to the resource\'s LF-tag policy.+newLFTagPolicyResource ::+  -- | 'resourceType'+  ResourceType ->+  -- | 'expression'+  Prelude.NonEmpty LFTag ->+  LFTagPolicyResource+newLFTagPolicyResource pResourceType_ pExpression_ =+  LFTagPolicyResource'+    { catalogId = Prelude.Nothing,+      resourceType = pResourceType_,+      expression = Lens.coerced Lens.# pExpression_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+lFTagPolicyResource_catalogId :: Lens.Lens' LFTagPolicyResource (Prelude.Maybe Prelude.Text)+lFTagPolicyResource_catalogId = Lens.lens (\LFTagPolicyResource' {catalogId} -> catalogId) (\s@LFTagPolicyResource' {} a -> s {catalogId = a} :: LFTagPolicyResource)++-- | The resource type for which the LF-tag policy applies.+lFTagPolicyResource_resourceType :: Lens.Lens' LFTagPolicyResource ResourceType+lFTagPolicyResource_resourceType = Lens.lens (\LFTagPolicyResource' {resourceType} -> resourceType) (\s@LFTagPolicyResource' {} a -> s {resourceType = a} :: LFTagPolicyResource)++-- | A list of LF-tag conditions that apply to the resource\'s LF-tag policy.+lFTagPolicyResource_expression :: Lens.Lens' LFTagPolicyResource (Prelude.NonEmpty LFTag)+lFTagPolicyResource_expression = Lens.lens (\LFTagPolicyResource' {expression} -> expression) (\s@LFTagPolicyResource' {} a -> s {expression = a} :: LFTagPolicyResource) Prelude.. Lens.coerced++instance Data.FromJSON LFTagPolicyResource where+  parseJSON =+    Data.withObject+      "LFTagPolicyResource"+      ( \x ->+          LFTagPolicyResource'+            Prelude.<$> (x Data..:? "CatalogId")+            Prelude.<*> (x Data..: "ResourceType")+            Prelude.<*> (x Data..: "Expression")+      )++instance Prelude.Hashable LFTagPolicyResource where+  hashWithSalt _salt LFTagPolicyResource' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` resourceType+      `Prelude.hashWithSalt` expression++instance Prelude.NFData LFTagPolicyResource where+  rnf LFTagPolicyResource' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf resourceType+      `Prelude.seq` Prelude.rnf expression++instance Data.ToJSON LFTagPolicyResource where+  toJSON LFTagPolicyResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("ResourceType" Data..= resourceType),+            Prelude.Just ("Expression" Data..= expression)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/OptimizerType.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.LakeFormation.Types.OptimizerType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.OptimizerType+  ( OptimizerType+      ( ..,+        OptimizerType_ALL,+        OptimizerType_COMPACTION,+        OptimizerType_GARBAGE_COLLECTION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype OptimizerType = OptimizerType'+  { fromOptimizerType ::+      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 OptimizerType_ALL :: OptimizerType+pattern OptimizerType_ALL = OptimizerType' "ALL"++pattern OptimizerType_COMPACTION :: OptimizerType+pattern OptimizerType_COMPACTION = OptimizerType' "COMPACTION"++pattern OptimizerType_GARBAGE_COLLECTION :: OptimizerType+pattern OptimizerType_GARBAGE_COLLECTION = OptimizerType' "GARBAGE_COLLECTION"++{-# COMPLETE+  OptimizerType_ALL,+  OptimizerType_COMPACTION,+  OptimizerType_GARBAGE_COLLECTION,+  OptimizerType'+  #-}
+ gen/Amazonka/LakeFormation/Types/PartitionObjects.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.LakeFormation.Types.PartitionObjects+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.PartitionObjects where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.TableObject+import qualified Amazonka.Prelude as Prelude++-- | A structure containing a list of partition values and table objects.+--+-- /See:/ 'newPartitionObjects' smart constructor.+data PartitionObjects = PartitionObjects'+  { -- | A list of table objects+    objects :: Prelude.Maybe [TableObject],+    -- | A list of partition values.+    partitionValues :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PartitionObjects' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'objects', 'partitionObjects_objects' - A list of table objects+--+-- 'partitionValues', 'partitionObjects_partitionValues' - A list of partition values.+newPartitionObjects ::+  PartitionObjects+newPartitionObjects =+  PartitionObjects'+    { objects = Prelude.Nothing,+      partitionValues = Prelude.Nothing+    }++-- | A list of table objects+partitionObjects_objects :: Lens.Lens' PartitionObjects (Prelude.Maybe [TableObject])+partitionObjects_objects = Lens.lens (\PartitionObjects' {objects} -> objects) (\s@PartitionObjects' {} a -> s {objects = a} :: PartitionObjects) Prelude.. Lens.mapping Lens.coerced++-- | A list of partition values.+partitionObjects_partitionValues :: Lens.Lens' PartitionObjects (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+partitionObjects_partitionValues = Lens.lens (\PartitionObjects' {partitionValues} -> partitionValues) (\s@PartitionObjects' {} a -> s {partitionValues = a} :: PartitionObjects) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON PartitionObjects where+  parseJSON =+    Data.withObject+      "PartitionObjects"+      ( \x ->+          PartitionObjects'+            Prelude.<$> (x Data..:? "Objects" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "PartitionValues")+      )++instance Prelude.Hashable PartitionObjects where+  hashWithSalt _salt PartitionObjects' {..} =+    _salt+      `Prelude.hashWithSalt` objects+      `Prelude.hashWithSalt` partitionValues++instance Prelude.NFData PartitionObjects where+  rnf PartitionObjects' {..} =+    Prelude.rnf objects+      `Prelude.seq` Prelude.rnf partitionValues
+ gen/Amazonka/LakeFormation/Types/PartitionValueList.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.LakeFormation.Types.PartitionValueList+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.PartitionValueList 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 a list of values defining partitions.+--+-- /See:/ 'newPartitionValueList' smart constructor.+data PartitionValueList = PartitionValueList'+  { -- | The list of partition values.+    values :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PartitionValueList' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'values', 'partitionValueList_values' - The list of partition values.+newPartitionValueList ::+  -- | 'values'+  Prelude.NonEmpty Prelude.Text ->+  PartitionValueList+newPartitionValueList pValues_ =+  PartitionValueList'+    { values =+        Lens.coerced Lens.# pValues_+    }++-- | The list of partition values.+partitionValueList_values :: Lens.Lens' PartitionValueList (Prelude.NonEmpty Prelude.Text)+partitionValueList_values = Lens.lens (\PartitionValueList' {values} -> values) (\s@PartitionValueList' {} a -> s {values = a} :: PartitionValueList) Prelude.. Lens.coerced++instance Prelude.Hashable PartitionValueList where+  hashWithSalt _salt PartitionValueList' {..} =+    _salt `Prelude.hashWithSalt` values++instance Prelude.NFData PartitionValueList where+  rnf PartitionValueList' {..} = Prelude.rnf values++instance Data.ToJSON PartitionValueList where+  toJSON PartitionValueList' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Values" Data..= values)]+      )
+ gen/Amazonka/LakeFormation/Types/Permission.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.LakeFormation.Types.Permission+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.Permission+  ( Permission+      ( ..,+        Permission_ALL,+        Permission_ALTER,+        Permission_ASSOCIATE,+        Permission_CREATE_DATABASE,+        Permission_CREATE_TABLE,+        Permission_CREATE_TAG,+        Permission_DATA_LOCATION_ACCESS,+        Permission_DELETE,+        Permission_DESCRIBE,+        Permission_DROP,+        Permission_INSERT,+        Permission_SELECT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype Permission = Permission'+  { fromPermission ::+      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 Permission_ALL :: Permission+pattern Permission_ALL = Permission' "ALL"++pattern Permission_ALTER :: Permission+pattern Permission_ALTER = Permission' "ALTER"++pattern Permission_ASSOCIATE :: Permission+pattern Permission_ASSOCIATE = Permission' "ASSOCIATE"++pattern Permission_CREATE_DATABASE :: Permission+pattern Permission_CREATE_DATABASE = Permission' "CREATE_DATABASE"++pattern Permission_CREATE_TABLE :: Permission+pattern Permission_CREATE_TABLE = Permission' "CREATE_TABLE"++pattern Permission_CREATE_TAG :: Permission+pattern Permission_CREATE_TAG = Permission' "CREATE_TAG"++pattern Permission_DATA_LOCATION_ACCESS :: Permission+pattern Permission_DATA_LOCATION_ACCESS = Permission' "DATA_LOCATION_ACCESS"++pattern Permission_DELETE :: Permission+pattern Permission_DELETE = Permission' "DELETE"++pattern Permission_DESCRIBE :: Permission+pattern Permission_DESCRIBE = Permission' "DESCRIBE"++pattern Permission_DROP :: Permission+pattern Permission_DROP = Permission' "DROP"++pattern Permission_INSERT :: Permission+pattern Permission_INSERT = Permission' "INSERT"++pattern Permission_SELECT :: Permission+pattern Permission_SELECT = Permission' "SELECT"++{-# COMPLETE+  Permission_ALL,+  Permission_ALTER,+  Permission_ASSOCIATE,+  Permission_CREATE_DATABASE,+  Permission_CREATE_TABLE,+  Permission_CREATE_TAG,+  Permission_DATA_LOCATION_ACCESS,+  Permission_DELETE,+  Permission_DESCRIBE,+  Permission_DROP,+  Permission_INSERT,+  Permission_SELECT,+  Permission'+  #-}
+ gen/Amazonka/LakeFormation/Types/PermissionType.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.LakeFormation.Types.PermissionType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.PermissionType+  ( PermissionType+      ( ..,+        PermissionType_CELL_FILTER_PERMISSION,+        PermissionType_COLUMN_PERMISSION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PermissionType = PermissionType'+  { fromPermissionType ::+      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 PermissionType_CELL_FILTER_PERMISSION :: PermissionType+pattern PermissionType_CELL_FILTER_PERMISSION = PermissionType' "CELL_FILTER_PERMISSION"++pattern PermissionType_COLUMN_PERMISSION :: PermissionType+pattern PermissionType_COLUMN_PERMISSION = PermissionType' "COLUMN_PERMISSION"++{-# COMPLETE+  PermissionType_CELL_FILTER_PERMISSION,+  PermissionType_COLUMN_PERMISSION,+  PermissionType'+  #-}
+ gen/Amazonka/LakeFormation/Types/PlanningStatistics.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.LakeFormation.Types.PlanningStatistics+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.PlanningStatistics 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++-- | Statistics related to the processing of a query statement.+--+-- /See:/ 'newPlanningStatistics' smart constructor.+data PlanningStatistics = PlanningStatistics'+  { -- | An estimate of the data that was scanned in bytes.+    estimatedDataToScanBytes :: Prelude.Maybe Prelude.Integer,+    -- | The time that it took to process the request.+    planningTimeMillis :: Prelude.Maybe Prelude.Integer,+    -- | The time the request was in queue to be processed.+    queueTimeMillis :: Prelude.Maybe Prelude.Integer,+    -- | The number of work units generated.+    workUnitsGeneratedCount :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PlanningStatistics' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'estimatedDataToScanBytes', 'planningStatistics_estimatedDataToScanBytes' - An estimate of the data that was scanned in bytes.+--+-- 'planningTimeMillis', 'planningStatistics_planningTimeMillis' - The time that it took to process the request.+--+-- 'queueTimeMillis', 'planningStatistics_queueTimeMillis' - The time the request was in queue to be processed.+--+-- 'workUnitsGeneratedCount', 'planningStatistics_workUnitsGeneratedCount' - The number of work units generated.+newPlanningStatistics ::+  PlanningStatistics+newPlanningStatistics =+  PlanningStatistics'+    { estimatedDataToScanBytes =+        Prelude.Nothing,+      planningTimeMillis = Prelude.Nothing,+      queueTimeMillis = Prelude.Nothing,+      workUnitsGeneratedCount = Prelude.Nothing+    }++-- | An estimate of the data that was scanned in bytes.+planningStatistics_estimatedDataToScanBytes :: Lens.Lens' PlanningStatistics (Prelude.Maybe Prelude.Integer)+planningStatistics_estimatedDataToScanBytes = Lens.lens (\PlanningStatistics' {estimatedDataToScanBytes} -> estimatedDataToScanBytes) (\s@PlanningStatistics' {} a -> s {estimatedDataToScanBytes = a} :: PlanningStatistics)++-- | The time that it took to process the request.+planningStatistics_planningTimeMillis :: Lens.Lens' PlanningStatistics (Prelude.Maybe Prelude.Integer)+planningStatistics_planningTimeMillis = Lens.lens (\PlanningStatistics' {planningTimeMillis} -> planningTimeMillis) (\s@PlanningStatistics' {} a -> s {planningTimeMillis = a} :: PlanningStatistics)++-- | The time the request was in queue to be processed.+planningStatistics_queueTimeMillis :: Lens.Lens' PlanningStatistics (Prelude.Maybe Prelude.Integer)+planningStatistics_queueTimeMillis = Lens.lens (\PlanningStatistics' {queueTimeMillis} -> queueTimeMillis) (\s@PlanningStatistics' {} a -> s {queueTimeMillis = a} :: PlanningStatistics)++-- | The number of work units generated.+planningStatistics_workUnitsGeneratedCount :: Lens.Lens' PlanningStatistics (Prelude.Maybe Prelude.Integer)+planningStatistics_workUnitsGeneratedCount = Lens.lens (\PlanningStatistics' {workUnitsGeneratedCount} -> workUnitsGeneratedCount) (\s@PlanningStatistics' {} a -> s {workUnitsGeneratedCount = a} :: PlanningStatistics)++instance Data.FromJSON PlanningStatistics where+  parseJSON =+    Data.withObject+      "PlanningStatistics"+      ( \x ->+          PlanningStatistics'+            Prelude.<$> (x Data..:? "EstimatedDataToScanBytes")+            Prelude.<*> (x Data..:? "PlanningTimeMillis")+            Prelude.<*> (x Data..:? "QueueTimeMillis")+            Prelude.<*> (x Data..:? "WorkUnitsGeneratedCount")+      )++instance Prelude.Hashable PlanningStatistics where+  hashWithSalt _salt PlanningStatistics' {..} =+    _salt+      `Prelude.hashWithSalt` estimatedDataToScanBytes+      `Prelude.hashWithSalt` planningTimeMillis+      `Prelude.hashWithSalt` queueTimeMillis+      `Prelude.hashWithSalt` workUnitsGeneratedCount++instance Prelude.NFData PlanningStatistics where+  rnf PlanningStatistics' {..} =+    Prelude.rnf estimatedDataToScanBytes+      `Prelude.seq` Prelude.rnf planningTimeMillis+      `Prelude.seq` Prelude.rnf queueTimeMillis+      `Prelude.seq` Prelude.rnf workUnitsGeneratedCount
+ gen/Amazonka/LakeFormation/Types/PrincipalPermissions.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.PrincipalPermissions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.PrincipalPermissions where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.DataLakePrincipal+import Amazonka.LakeFormation.Types.Permission+import qualified Amazonka.Prelude as Prelude++-- | Permissions granted to a principal.+--+-- /See:/ 'newPrincipalPermissions' smart constructor.+data PrincipalPermissions = PrincipalPermissions'+  { -- | The permissions that are granted to the principal.+    permissions :: Prelude.Maybe [Permission],+    -- | The principal who is granted permissions.+    principal :: Prelude.Maybe DataLakePrincipal+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PrincipalPermissions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'permissions', 'principalPermissions_permissions' - The permissions that are granted to the principal.+--+-- 'principal', 'principalPermissions_principal' - The principal who is granted permissions.+newPrincipalPermissions ::+  PrincipalPermissions+newPrincipalPermissions =+  PrincipalPermissions'+    { permissions =+        Prelude.Nothing,+      principal = Prelude.Nothing+    }++-- | The permissions that are granted to the principal.+principalPermissions_permissions :: Lens.Lens' PrincipalPermissions (Prelude.Maybe [Permission])+principalPermissions_permissions = Lens.lens (\PrincipalPermissions' {permissions} -> permissions) (\s@PrincipalPermissions' {} a -> s {permissions = a} :: PrincipalPermissions) Prelude.. Lens.mapping Lens.coerced++-- | The principal who is granted permissions.+principalPermissions_principal :: Lens.Lens' PrincipalPermissions (Prelude.Maybe DataLakePrincipal)+principalPermissions_principal = Lens.lens (\PrincipalPermissions' {principal} -> principal) (\s@PrincipalPermissions' {} a -> s {principal = a} :: PrincipalPermissions)++instance Data.FromJSON PrincipalPermissions where+  parseJSON =+    Data.withObject+      "PrincipalPermissions"+      ( \x ->+          PrincipalPermissions'+            Prelude.<$> (x Data..:? "Permissions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "Principal")+      )++instance Prelude.Hashable PrincipalPermissions where+  hashWithSalt _salt PrincipalPermissions' {..} =+    _salt+      `Prelude.hashWithSalt` permissions+      `Prelude.hashWithSalt` principal++instance Prelude.NFData PrincipalPermissions where+  rnf PrincipalPermissions' {..} =+    Prelude.rnf permissions+      `Prelude.seq` Prelude.rnf principal++instance Data.ToJSON PrincipalPermissions where+  toJSON PrincipalPermissions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Permissions" Data..=) Prelude.<$> permissions,+            ("Principal" Data..=) Prelude.<$> principal+          ]+      )
+ gen/Amazonka/LakeFormation/Types/PrincipalResourcePermissions.hs view
@@ -0,0 +1,140 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.PrincipalResourcePermissions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.PrincipalResourcePermissions where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.DataLakePrincipal+import Amazonka.LakeFormation.Types.DetailsMap+import Amazonka.LakeFormation.Types.Permission+import Amazonka.LakeFormation.Types.Resource+import qualified Amazonka.Prelude as Prelude++-- | The permissions granted or revoked on a resource.+--+-- /See:/ 'newPrincipalResourcePermissions' smart constructor.+data PrincipalResourcePermissions = PrincipalResourcePermissions'+  { -- | This attribute can be used to return any additional details of+    -- @PrincipalResourcePermissions@. Currently returns only as a RAM resource+    -- share ARN.+    additionalDetails :: Prelude.Maybe DetailsMap,+    -- | The permissions to be granted or revoked on the resource.+    permissions :: Prelude.Maybe [Permission],+    -- | Indicates whether to grant the ability to grant permissions (as a subset+    -- of permissions granted).+    permissionsWithGrantOption :: Prelude.Maybe [Permission],+    -- | The Data Lake principal to be granted or revoked permissions.+    principal :: Prelude.Maybe DataLakePrincipal,+    -- | The resource where permissions are to be granted or revoked.+    resource :: Prelude.Maybe Resource+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PrincipalResourcePermissions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'additionalDetails', 'principalResourcePermissions_additionalDetails' - This attribute can be used to return any additional details of+-- @PrincipalResourcePermissions@. Currently returns only as a RAM resource+-- share ARN.+--+-- 'permissions', 'principalResourcePermissions_permissions' - The permissions to be granted or revoked on the resource.+--+-- 'permissionsWithGrantOption', 'principalResourcePermissions_permissionsWithGrantOption' - Indicates whether to grant the ability to grant permissions (as a subset+-- of permissions granted).+--+-- 'principal', 'principalResourcePermissions_principal' - The Data Lake principal to be granted or revoked permissions.+--+-- 'resource', 'principalResourcePermissions_resource' - The resource where permissions are to be granted or revoked.+newPrincipalResourcePermissions ::+  PrincipalResourcePermissions+newPrincipalResourcePermissions =+  PrincipalResourcePermissions'+    { additionalDetails =+        Prelude.Nothing,+      permissions = Prelude.Nothing,+      permissionsWithGrantOption = Prelude.Nothing,+      principal = Prelude.Nothing,+      resource = Prelude.Nothing+    }++-- | This attribute can be used to return any additional details of+-- @PrincipalResourcePermissions@. Currently returns only as a RAM resource+-- share ARN.+principalResourcePermissions_additionalDetails :: Lens.Lens' PrincipalResourcePermissions (Prelude.Maybe DetailsMap)+principalResourcePermissions_additionalDetails = Lens.lens (\PrincipalResourcePermissions' {additionalDetails} -> additionalDetails) (\s@PrincipalResourcePermissions' {} a -> s {additionalDetails = a} :: PrincipalResourcePermissions)++-- | The permissions to be granted or revoked on the resource.+principalResourcePermissions_permissions :: Lens.Lens' PrincipalResourcePermissions (Prelude.Maybe [Permission])+principalResourcePermissions_permissions = Lens.lens (\PrincipalResourcePermissions' {permissions} -> permissions) (\s@PrincipalResourcePermissions' {} a -> s {permissions = a} :: PrincipalResourcePermissions) Prelude.. Lens.mapping Lens.coerced++-- | Indicates whether to grant the ability to grant permissions (as a subset+-- of permissions granted).+principalResourcePermissions_permissionsWithGrantOption :: Lens.Lens' PrincipalResourcePermissions (Prelude.Maybe [Permission])+principalResourcePermissions_permissionsWithGrantOption = Lens.lens (\PrincipalResourcePermissions' {permissionsWithGrantOption} -> permissionsWithGrantOption) (\s@PrincipalResourcePermissions' {} a -> s {permissionsWithGrantOption = a} :: PrincipalResourcePermissions) Prelude.. Lens.mapping Lens.coerced++-- | The Data Lake principal to be granted or revoked permissions.+principalResourcePermissions_principal :: Lens.Lens' PrincipalResourcePermissions (Prelude.Maybe DataLakePrincipal)+principalResourcePermissions_principal = Lens.lens (\PrincipalResourcePermissions' {principal} -> principal) (\s@PrincipalResourcePermissions' {} a -> s {principal = a} :: PrincipalResourcePermissions)++-- | The resource where permissions are to be granted or revoked.+principalResourcePermissions_resource :: Lens.Lens' PrincipalResourcePermissions (Prelude.Maybe Resource)+principalResourcePermissions_resource = Lens.lens (\PrincipalResourcePermissions' {resource} -> resource) (\s@PrincipalResourcePermissions' {} a -> s {resource = a} :: PrincipalResourcePermissions)++instance Data.FromJSON PrincipalResourcePermissions where+  parseJSON =+    Data.withObject+      "PrincipalResourcePermissions"+      ( \x ->+          PrincipalResourcePermissions'+            Prelude.<$> (x Data..:? "AdditionalDetails")+            Prelude.<*> (x Data..:? "Permissions" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "PermissionsWithGrantOption"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "Principal")+            Prelude.<*> (x Data..:? "Resource")+      )++instance+  Prelude.Hashable+    PrincipalResourcePermissions+  where+  hashWithSalt _salt PrincipalResourcePermissions' {..} =+    _salt+      `Prelude.hashWithSalt` additionalDetails+      `Prelude.hashWithSalt` permissions+      `Prelude.hashWithSalt` permissionsWithGrantOption+      `Prelude.hashWithSalt` principal+      `Prelude.hashWithSalt` resource++instance Prelude.NFData PrincipalResourcePermissions where+  rnf PrincipalResourcePermissions' {..} =+    Prelude.rnf additionalDetails+      `Prelude.seq` Prelude.rnf permissions+      `Prelude.seq` Prelude.rnf permissionsWithGrantOption+      `Prelude.seq` Prelude.rnf principal+      `Prelude.seq` Prelude.rnf resource
+ gen/Amazonka/LakeFormation/Types/QueryPlanningContext.hs view
@@ -0,0 +1,143 @@+{-# 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.LakeFormation.Types.QueryPlanningContext+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.QueryPlanningContext 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 the query plan.+--+-- /See:/ 'newQueryPlanningContext' smart constructor.+data QueryPlanningContext = QueryPlanningContext'+  { -- | The ID of the Data Catalog where the partition in question resides. If+    -- none is provided, the Amazon Web Services account ID is used by default.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The time as of when to read the table contents. If not set, the most+    -- recent transaction commit time will be used. Cannot be specified along+    -- with @TransactionId@.+    queryAsOfTime :: Prelude.Maybe Data.POSIX,+    -- | A map consisting of key-value pairs.+    queryParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The transaction ID at which to read the table contents. If this+    -- transaction is not committed, the read will be treated as part of that+    -- transaction and will see its writes. If this transaction has aborted, an+    -- error will be returned. If not set, defaults to the most recent+    -- committed transaction. Cannot be specified along with @QueryAsOfTime@.+    transactionId :: Prelude.Maybe Prelude.Text,+    -- | The database containing the table.+    databaseName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'QueryPlanningContext' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'queryPlanningContext_catalogId' - The ID of the Data Catalog where the partition in question resides. If+-- none is provided, the Amazon Web Services account ID is used by default.+--+-- 'queryAsOfTime', 'queryPlanningContext_queryAsOfTime' - The time as of when to read the table contents. If not set, the most+-- recent transaction commit time will be used. Cannot be specified along+-- with @TransactionId@.+--+-- 'queryParameters', 'queryPlanningContext_queryParameters' - A map consisting of key-value pairs.+--+-- 'transactionId', 'queryPlanningContext_transactionId' - The transaction ID at which to read the table contents. If this+-- transaction is not committed, the read will be treated as part of that+-- transaction and will see its writes. If this transaction has aborted, an+-- error will be returned. If not set, defaults to the most recent+-- committed transaction. Cannot be specified along with @QueryAsOfTime@.+--+-- 'databaseName', 'queryPlanningContext_databaseName' - The database containing the table.+newQueryPlanningContext ::+  -- | 'databaseName'+  Prelude.Text ->+  QueryPlanningContext+newQueryPlanningContext pDatabaseName_ =+  QueryPlanningContext'+    { catalogId = Prelude.Nothing,+      queryAsOfTime = Prelude.Nothing,+      queryParameters = Prelude.Nothing,+      transactionId = Prelude.Nothing,+      databaseName = pDatabaseName_+    }++-- | The ID of the Data Catalog where the partition in question resides. If+-- none is provided, the Amazon Web Services account ID is used by default.+queryPlanningContext_catalogId :: Lens.Lens' QueryPlanningContext (Prelude.Maybe Prelude.Text)+queryPlanningContext_catalogId = Lens.lens (\QueryPlanningContext' {catalogId} -> catalogId) (\s@QueryPlanningContext' {} a -> s {catalogId = a} :: QueryPlanningContext)++-- | The time as of when to read the table contents. If not set, the most+-- recent transaction commit time will be used. Cannot be specified along+-- with @TransactionId@.+queryPlanningContext_queryAsOfTime :: Lens.Lens' QueryPlanningContext (Prelude.Maybe Prelude.UTCTime)+queryPlanningContext_queryAsOfTime = Lens.lens (\QueryPlanningContext' {queryAsOfTime} -> queryAsOfTime) (\s@QueryPlanningContext' {} a -> s {queryAsOfTime = a} :: QueryPlanningContext) Prelude.. Lens.mapping Data._Time++-- | A map consisting of key-value pairs.+queryPlanningContext_queryParameters :: Lens.Lens' QueryPlanningContext (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+queryPlanningContext_queryParameters = Lens.lens (\QueryPlanningContext' {queryParameters} -> queryParameters) (\s@QueryPlanningContext' {} a -> s {queryParameters = a} :: QueryPlanningContext) Prelude.. Lens.mapping Lens.coerced++-- | The transaction ID at which to read the table contents. If this+-- transaction is not committed, the read will be treated as part of that+-- transaction and will see its writes. If this transaction has aborted, an+-- error will be returned. If not set, defaults to the most recent+-- committed transaction. Cannot be specified along with @QueryAsOfTime@.+queryPlanningContext_transactionId :: Lens.Lens' QueryPlanningContext (Prelude.Maybe Prelude.Text)+queryPlanningContext_transactionId = Lens.lens (\QueryPlanningContext' {transactionId} -> transactionId) (\s@QueryPlanningContext' {} a -> s {transactionId = a} :: QueryPlanningContext)++-- | The database containing the table.+queryPlanningContext_databaseName :: Lens.Lens' QueryPlanningContext Prelude.Text+queryPlanningContext_databaseName = Lens.lens (\QueryPlanningContext' {databaseName} -> databaseName) (\s@QueryPlanningContext' {} a -> s {databaseName = a} :: QueryPlanningContext)++instance Prelude.Hashable QueryPlanningContext where+  hashWithSalt _salt QueryPlanningContext' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` queryAsOfTime+      `Prelude.hashWithSalt` queryParameters+      `Prelude.hashWithSalt` transactionId+      `Prelude.hashWithSalt` databaseName++instance Prelude.NFData QueryPlanningContext where+  rnf QueryPlanningContext' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf queryAsOfTime+      `Prelude.seq` Prelude.rnf queryParameters+      `Prelude.seq` Prelude.rnf transactionId+      `Prelude.seq` Prelude.rnf databaseName++instance Data.ToJSON QueryPlanningContext where+  toJSON QueryPlanningContext' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("QueryAsOfTime" Data..=) Prelude.<$> queryAsOfTime,+            ("QueryParameters" Data..=)+              Prelude.<$> queryParameters,+            ("TransactionId" Data..=) Prelude.<$> transactionId,+            Prelude.Just ("DatabaseName" Data..= databaseName)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/QueryStateString.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.QueryStateString+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.QueryStateString+  ( QueryStateString+      ( ..,+        QueryStateString_ERROR,+        QueryStateString_EXPIRED,+        QueryStateString_FINISHED,+        QueryStateString_PENDING,+        QueryStateString_WORKUNITS_AVAILABLE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype QueryStateString = QueryStateString'+  { fromQueryStateString ::+      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 QueryStateString_ERROR :: QueryStateString+pattern QueryStateString_ERROR = QueryStateString' "ERROR"++pattern QueryStateString_EXPIRED :: QueryStateString+pattern QueryStateString_EXPIRED = QueryStateString' "EXPIRED"++pattern QueryStateString_FINISHED :: QueryStateString+pattern QueryStateString_FINISHED = QueryStateString' "FINISHED"++pattern QueryStateString_PENDING :: QueryStateString+pattern QueryStateString_PENDING = QueryStateString' "PENDING"++pattern QueryStateString_WORKUNITS_AVAILABLE :: QueryStateString+pattern QueryStateString_WORKUNITS_AVAILABLE = QueryStateString' "WORKUNITS_AVAILABLE"++{-# COMPLETE+  QueryStateString_ERROR,+  QueryStateString_EXPIRED,+  QueryStateString_FINISHED,+  QueryStateString_PENDING,+  QueryStateString_WORKUNITS_AVAILABLE,+  QueryStateString'+  #-}
+ gen/Amazonka/LakeFormation/Types/Resource.hs view
@@ -0,0 +1,211 @@+{-# 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.LakeFormation.Types.Resource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.Resource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.CatalogResource+import Amazonka.LakeFormation.Types.DataCellsFilterResource+import Amazonka.LakeFormation.Types.DataLocationResource+import Amazonka.LakeFormation.Types.DatabaseResource+import Amazonka.LakeFormation.Types.LFTagKeyResource+import Amazonka.LakeFormation.Types.LFTagPolicyResource+import Amazonka.LakeFormation.Types.TableResource+import Amazonka.LakeFormation.Types.TableWithColumnsResource+import qualified Amazonka.Prelude as Prelude++-- | A structure for the resource.+--+-- /See:/ 'newResource' smart constructor.+data Resource = Resource'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalog :: Prelude.Maybe CatalogResource,+    -- | A data cell filter.+    dataCellsFilter :: Prelude.Maybe DataCellsFilterResource,+    -- | The location of an Amazon S3 path where permissions are granted or+    -- revoked.+    dataLocation :: Prelude.Maybe DataLocationResource,+    -- | The database for the resource. Unique to the Data Catalog. A database is+    -- a set of associated table definitions organized into a logical group.+    -- You can Grant and Revoke database permissions to a principal.+    database :: Prelude.Maybe DatabaseResource,+    -- | The LF-tag key and values attached to a resource.+    lFTag :: Prelude.Maybe LFTagKeyResource,+    -- | A list of LF-tag conditions that define a resource\'s LF-tag policy.+    lFTagPolicy :: Prelude.Maybe LFTagPolicyResource,+    -- | The table for the resource. A table is a metadata definition that+    -- represents your data. You can Grant and Revoke table privileges to a+    -- principal.+    table :: Prelude.Maybe TableResource,+    -- | The table with columns for the resource. A principal with permissions to+    -- this resource can select metadata from the columns of a table in the+    -- Data Catalog and the underlying data in Amazon S3.+    tableWithColumns :: Prelude.Maybe TableWithColumnsResource+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Resource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalog', 'resource_catalog' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'dataCellsFilter', 'resource_dataCellsFilter' - A data cell filter.+--+-- 'dataLocation', 'resource_dataLocation' - The location of an Amazon S3 path where permissions are granted or+-- revoked.+--+-- 'database', 'resource_database' - The database for the resource. Unique to the Data Catalog. A database is+-- a set of associated table definitions organized into a logical group.+-- You can Grant and Revoke database permissions to a principal.+--+-- 'lFTag', 'resource_lFTag' - The LF-tag key and values attached to a resource.+--+-- 'lFTagPolicy', 'resource_lFTagPolicy' - A list of LF-tag conditions that define a resource\'s LF-tag policy.+--+-- 'table', 'resource_table' - The table for the resource. A table is a metadata definition that+-- represents your data. You can Grant and Revoke table privileges to a+-- principal.+--+-- 'tableWithColumns', 'resource_tableWithColumns' - The table with columns for the resource. A principal with permissions to+-- this resource can select metadata from the columns of a table in the+-- Data Catalog and the underlying data in Amazon S3.+newResource ::+  Resource+newResource =+  Resource'+    { catalog = Prelude.Nothing,+      dataCellsFilter = Prelude.Nothing,+      dataLocation = Prelude.Nothing,+      database = Prelude.Nothing,+      lFTag = Prelude.Nothing,+      lFTagPolicy = Prelude.Nothing,+      table = Prelude.Nothing,+      tableWithColumns = Prelude.Nothing+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+resource_catalog :: Lens.Lens' Resource (Prelude.Maybe CatalogResource)+resource_catalog = Lens.lens (\Resource' {catalog} -> catalog) (\s@Resource' {} a -> s {catalog = a} :: Resource)++-- | A data cell filter.+resource_dataCellsFilter :: Lens.Lens' Resource (Prelude.Maybe DataCellsFilterResource)+resource_dataCellsFilter = Lens.lens (\Resource' {dataCellsFilter} -> dataCellsFilter) (\s@Resource' {} a -> s {dataCellsFilter = a} :: Resource)++-- | The location of an Amazon S3 path where permissions are granted or+-- revoked.+resource_dataLocation :: Lens.Lens' Resource (Prelude.Maybe DataLocationResource)+resource_dataLocation = Lens.lens (\Resource' {dataLocation} -> dataLocation) (\s@Resource' {} a -> s {dataLocation = a} :: Resource)++-- | The database for the resource. Unique to the Data Catalog. A database is+-- a set of associated table definitions organized into a logical group.+-- You can Grant and Revoke database permissions to a principal.+resource_database :: Lens.Lens' Resource (Prelude.Maybe DatabaseResource)+resource_database = Lens.lens (\Resource' {database} -> database) (\s@Resource' {} a -> s {database = a} :: Resource)++-- | The LF-tag key and values attached to a resource.+resource_lFTag :: Lens.Lens' Resource (Prelude.Maybe LFTagKeyResource)+resource_lFTag = Lens.lens (\Resource' {lFTag} -> lFTag) (\s@Resource' {} a -> s {lFTag = a} :: Resource)++-- | A list of LF-tag conditions that define a resource\'s LF-tag policy.+resource_lFTagPolicy :: Lens.Lens' Resource (Prelude.Maybe LFTagPolicyResource)+resource_lFTagPolicy = Lens.lens (\Resource' {lFTagPolicy} -> lFTagPolicy) (\s@Resource' {} a -> s {lFTagPolicy = a} :: Resource)++-- | The table for the resource. A table is a metadata definition that+-- represents your data. You can Grant and Revoke table privileges to a+-- principal.+resource_table :: Lens.Lens' Resource (Prelude.Maybe TableResource)+resource_table = Lens.lens (\Resource' {table} -> table) (\s@Resource' {} a -> s {table = a} :: Resource)++-- | The table with columns for the resource. A principal with permissions to+-- this resource can select metadata from the columns of a table in the+-- Data Catalog and the underlying data in Amazon S3.+resource_tableWithColumns :: Lens.Lens' Resource (Prelude.Maybe TableWithColumnsResource)+resource_tableWithColumns = Lens.lens (\Resource' {tableWithColumns} -> tableWithColumns) (\s@Resource' {} a -> s {tableWithColumns = a} :: Resource)++instance Data.FromJSON Resource where+  parseJSON =+    Data.withObject+      "Resource"+      ( \x ->+          Resource'+            Prelude.<$> (x Data..:? "Catalog")+            Prelude.<*> (x Data..:? "DataCellsFilter")+            Prelude.<*> (x Data..:? "DataLocation")+            Prelude.<*> (x Data..:? "Database")+            Prelude.<*> (x Data..:? "LFTag")+            Prelude.<*> (x Data..:? "LFTagPolicy")+            Prelude.<*> (x Data..:? "Table")+            Prelude.<*> (x Data..:? "TableWithColumns")+      )++instance Prelude.Hashable Resource where+  hashWithSalt _salt Resource' {..} =+    _salt+      `Prelude.hashWithSalt` catalog+      `Prelude.hashWithSalt` dataCellsFilter+      `Prelude.hashWithSalt` dataLocation+      `Prelude.hashWithSalt` database+      `Prelude.hashWithSalt` lFTag+      `Prelude.hashWithSalt` lFTagPolicy+      `Prelude.hashWithSalt` table+      `Prelude.hashWithSalt` tableWithColumns++instance Prelude.NFData Resource where+  rnf Resource' {..} =+    Prelude.rnf catalog+      `Prelude.seq` Prelude.rnf dataCellsFilter+      `Prelude.seq` Prelude.rnf dataLocation+      `Prelude.seq` Prelude.rnf database+      `Prelude.seq` Prelude.rnf lFTag+      `Prelude.seq` Prelude.rnf lFTagPolicy+      `Prelude.seq` Prelude.rnf table+      `Prelude.seq` Prelude.rnf tableWithColumns++instance Data.ToJSON Resource where+  toJSON Resource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Catalog" Data..=) Prelude.<$> catalog,+            ("DataCellsFilter" Data..=)+              Prelude.<$> dataCellsFilter,+            ("DataLocation" Data..=) Prelude.<$> dataLocation,+            ("Database" Data..=) Prelude.<$> database,+            ("LFTag" Data..=) Prelude.<$> lFTag,+            ("LFTagPolicy" Data..=) Prelude.<$> lFTagPolicy,+            ("Table" Data..=) Prelude.<$> table,+            ("TableWithColumns" Data..=)+              Prelude.<$> tableWithColumns+          ]+      )
+ gen/Amazonka/LakeFormation/Types/ResourceInfo.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.ResourceInfo+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.ResourceInfo 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 Lake Formation resource.+--+-- /See:/ 'newResourceInfo' smart constructor.+data ResourceInfo = ResourceInfo'+  { -- | The date and time the resource was last modified.+    lastModified :: Prelude.Maybe Data.POSIX,+    -- | The Amazon Resource Name (ARN) of the resource.+    resourceArn :: Prelude.Maybe Prelude.Text,+    -- | The IAM role that registered a resource.+    roleArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ResourceInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lastModified', 'resourceInfo_lastModified' - The date and time the resource was last modified.+--+-- 'resourceArn', 'resourceInfo_resourceArn' - The Amazon Resource Name (ARN) of the resource.+--+-- 'roleArn', 'resourceInfo_roleArn' - The IAM role that registered a resource.+newResourceInfo ::+  ResourceInfo+newResourceInfo =+  ResourceInfo'+    { lastModified = Prelude.Nothing,+      resourceArn = Prelude.Nothing,+      roleArn = Prelude.Nothing+    }++-- | The date and time the resource was last modified.+resourceInfo_lastModified :: Lens.Lens' ResourceInfo (Prelude.Maybe Prelude.UTCTime)+resourceInfo_lastModified = Lens.lens (\ResourceInfo' {lastModified} -> lastModified) (\s@ResourceInfo' {} a -> s {lastModified = a} :: ResourceInfo) Prelude.. Lens.mapping Data._Time++-- | The Amazon Resource Name (ARN) of the resource.+resourceInfo_resourceArn :: Lens.Lens' ResourceInfo (Prelude.Maybe Prelude.Text)+resourceInfo_resourceArn = Lens.lens (\ResourceInfo' {resourceArn} -> resourceArn) (\s@ResourceInfo' {} a -> s {resourceArn = a} :: ResourceInfo)++-- | The IAM role that registered a resource.+resourceInfo_roleArn :: Lens.Lens' ResourceInfo (Prelude.Maybe Prelude.Text)+resourceInfo_roleArn = Lens.lens (\ResourceInfo' {roleArn} -> roleArn) (\s@ResourceInfo' {} a -> s {roleArn = a} :: ResourceInfo)++instance Data.FromJSON ResourceInfo where+  parseJSON =+    Data.withObject+      "ResourceInfo"+      ( \x ->+          ResourceInfo'+            Prelude.<$> (x Data..:? "LastModified")+            Prelude.<*> (x Data..:? "ResourceArn")+            Prelude.<*> (x Data..:? "RoleArn")+      )++instance Prelude.Hashable ResourceInfo where+  hashWithSalt _salt ResourceInfo' {..} =+    _salt+      `Prelude.hashWithSalt` lastModified+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` roleArn++instance Prelude.NFData ResourceInfo where+  rnf ResourceInfo' {..} =+    Prelude.rnf lastModified+      `Prelude.seq` Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf roleArn
+ gen/Amazonka/LakeFormation/Types/ResourceShareType.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.LakeFormation.Types.ResourceShareType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.ResourceShareType+  ( ResourceShareType+      ( ..,+        ResourceShareType_ALL,+        ResourceShareType_FOREIGN+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ResourceShareType = ResourceShareType'+  { fromResourceShareType ::+      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 ResourceShareType_ALL :: ResourceShareType+pattern ResourceShareType_ALL = ResourceShareType' "ALL"++pattern ResourceShareType_FOREIGN :: ResourceShareType+pattern ResourceShareType_FOREIGN = ResourceShareType' "FOREIGN"++{-# COMPLETE+  ResourceShareType_ALL,+  ResourceShareType_FOREIGN,+  ResourceShareType'+  #-}
+ gen/Amazonka/LakeFormation/Types/ResourceType.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.LakeFormation.Types.ResourceType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.ResourceType+  ( ResourceType+      ( ..,+        ResourceType_DATABASE,+        ResourceType_TABLE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ResourceType = ResourceType'+  { fromResourceType ::+      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 ResourceType_DATABASE :: ResourceType+pattern ResourceType_DATABASE = ResourceType' "DATABASE"++pattern ResourceType_TABLE :: ResourceType+pattern ResourceType_TABLE = ResourceType' "TABLE"++{-# COMPLETE+  ResourceType_DATABASE,+  ResourceType_TABLE,+  ResourceType'+  #-}
+ gen/Amazonka/LakeFormation/Types/RowFilter.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.RowFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.RowFilter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.AllRowsWildcard+import qualified Amazonka.Prelude as Prelude++-- | A PartiQL predicate.+--+-- /See:/ 'newRowFilter' smart constructor.+data RowFilter = RowFilter'+  { -- | A wildcard for all rows.+    allRowsWildcard :: Prelude.Maybe AllRowsWildcard,+    -- | A filter expression.+    filterExpression :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RowFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'allRowsWildcard', 'rowFilter_allRowsWildcard' - A wildcard for all rows.+--+-- 'filterExpression', 'rowFilter_filterExpression' - A filter expression.+newRowFilter ::+  RowFilter+newRowFilter =+  RowFilter'+    { allRowsWildcard = Prelude.Nothing,+      filterExpression = Prelude.Nothing+    }++-- | A wildcard for all rows.+rowFilter_allRowsWildcard :: Lens.Lens' RowFilter (Prelude.Maybe AllRowsWildcard)+rowFilter_allRowsWildcard = Lens.lens (\RowFilter' {allRowsWildcard} -> allRowsWildcard) (\s@RowFilter' {} a -> s {allRowsWildcard = a} :: RowFilter)++-- | A filter expression.+rowFilter_filterExpression :: Lens.Lens' RowFilter (Prelude.Maybe Prelude.Text)+rowFilter_filterExpression = Lens.lens (\RowFilter' {filterExpression} -> filterExpression) (\s@RowFilter' {} a -> s {filterExpression = a} :: RowFilter)++instance Data.FromJSON RowFilter where+  parseJSON =+    Data.withObject+      "RowFilter"+      ( \x ->+          RowFilter'+            Prelude.<$> (x Data..:? "AllRowsWildcard")+            Prelude.<*> (x Data..:? "FilterExpression")+      )++instance Prelude.Hashable RowFilter where+  hashWithSalt _salt RowFilter' {..} =+    _salt+      `Prelude.hashWithSalt` allRowsWildcard+      `Prelude.hashWithSalt` filterExpression++instance Prelude.NFData RowFilter where+  rnf RowFilter' {..} =+    Prelude.rnf allRowsWildcard+      `Prelude.seq` Prelude.rnf filterExpression++instance Data.ToJSON RowFilter where+  toJSON RowFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AllRowsWildcard" Data..=)+              Prelude.<$> allRowsWildcard,+            ("FilterExpression" Data..=)+              Prelude.<$> filterExpression+          ]+      )
+ gen/Amazonka/LakeFormation/Types/StorageOptimizer.hs view
@@ -0,0 +1,152 @@+{-# 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.LakeFormation.Types.StorageOptimizer+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.StorageOptimizer where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.OptimizerType+import qualified Amazonka.Prelude as Prelude++-- | A structure describing the configuration and details of a storage+-- optimizer.+--+-- /See:/ 'newStorageOptimizer' smart constructor.+data StorageOptimizer = StorageOptimizer'+  { -- | A map of the storage optimizer configuration. Currently contains only+    -- one key-value pair: @is_enabled@ indicates true or false for+    -- acceleration.+    config :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A message that contains information about any error (if present).+    --+    -- When an acceleration result has an enabled status, the error message is+    -- empty.+    --+    -- When an acceleration result has a disabled status, the message describes+    -- an error or simply indicates \"disabled by the user\".+    errorMessage :: Prelude.Maybe Prelude.Text,+    -- | When an acceleration result has an enabled status, contains the details+    -- of the last job run.+    lastRunDetails :: Prelude.Maybe Prelude.Text,+    -- | The specific type of storage optimizer. The supported value is+    -- @compaction@.+    storageOptimizerType :: Prelude.Maybe OptimizerType,+    -- | A message that contains information about any warnings (if present).+    warnings :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StorageOptimizer' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'config', 'storageOptimizer_config' - A map of the storage optimizer configuration. Currently contains only+-- one key-value pair: @is_enabled@ indicates true or false for+-- acceleration.+--+-- 'errorMessage', 'storageOptimizer_errorMessage' - A message that contains information about any error (if present).+--+-- When an acceleration result has an enabled status, the error message is+-- empty.+--+-- When an acceleration result has a disabled status, the message describes+-- an error or simply indicates \"disabled by the user\".+--+-- 'lastRunDetails', 'storageOptimizer_lastRunDetails' - When an acceleration result has an enabled status, contains the details+-- of the last job run.+--+-- 'storageOptimizerType', 'storageOptimizer_storageOptimizerType' - The specific type of storage optimizer. The supported value is+-- @compaction@.+--+-- 'warnings', 'storageOptimizer_warnings' - A message that contains information about any warnings (if present).+newStorageOptimizer ::+  StorageOptimizer+newStorageOptimizer =+  StorageOptimizer'+    { config = Prelude.Nothing,+      errorMessage = Prelude.Nothing,+      lastRunDetails = Prelude.Nothing,+      storageOptimizerType = Prelude.Nothing,+      warnings = Prelude.Nothing+    }++-- | A map of the storage optimizer configuration. Currently contains only+-- one key-value pair: @is_enabled@ indicates true or false for+-- acceleration.+storageOptimizer_config :: Lens.Lens' StorageOptimizer (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+storageOptimizer_config = Lens.lens (\StorageOptimizer' {config} -> config) (\s@StorageOptimizer' {} a -> s {config = a} :: StorageOptimizer) Prelude.. Lens.mapping Lens.coerced++-- | A message that contains information about any error (if present).+--+-- When an acceleration result has an enabled status, the error message is+-- empty.+--+-- When an acceleration result has a disabled status, the message describes+-- an error or simply indicates \"disabled by the user\".+storageOptimizer_errorMessage :: Lens.Lens' StorageOptimizer (Prelude.Maybe Prelude.Text)+storageOptimizer_errorMessage = Lens.lens (\StorageOptimizer' {errorMessage} -> errorMessage) (\s@StorageOptimizer' {} a -> s {errorMessage = a} :: StorageOptimizer)++-- | When an acceleration result has an enabled status, contains the details+-- of the last job run.+storageOptimizer_lastRunDetails :: Lens.Lens' StorageOptimizer (Prelude.Maybe Prelude.Text)+storageOptimizer_lastRunDetails = Lens.lens (\StorageOptimizer' {lastRunDetails} -> lastRunDetails) (\s@StorageOptimizer' {} a -> s {lastRunDetails = a} :: StorageOptimizer)++-- | The specific type of storage optimizer. The supported value is+-- @compaction@.+storageOptimizer_storageOptimizerType :: Lens.Lens' StorageOptimizer (Prelude.Maybe OptimizerType)+storageOptimizer_storageOptimizerType = Lens.lens (\StorageOptimizer' {storageOptimizerType} -> storageOptimizerType) (\s@StorageOptimizer' {} a -> s {storageOptimizerType = a} :: StorageOptimizer)++-- | A message that contains information about any warnings (if present).+storageOptimizer_warnings :: Lens.Lens' StorageOptimizer (Prelude.Maybe Prelude.Text)+storageOptimizer_warnings = Lens.lens (\StorageOptimizer' {warnings} -> warnings) (\s@StorageOptimizer' {} a -> s {warnings = a} :: StorageOptimizer)++instance Data.FromJSON StorageOptimizer where+  parseJSON =+    Data.withObject+      "StorageOptimizer"+      ( \x ->+          StorageOptimizer'+            Prelude.<$> (x Data..:? "Config" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "ErrorMessage")+            Prelude.<*> (x Data..:? "LastRunDetails")+            Prelude.<*> (x Data..:? "StorageOptimizerType")+            Prelude.<*> (x Data..:? "Warnings")+      )++instance Prelude.Hashable StorageOptimizer where+  hashWithSalt _salt StorageOptimizer' {..} =+    _salt+      `Prelude.hashWithSalt` config+      `Prelude.hashWithSalt` errorMessage+      `Prelude.hashWithSalt` lastRunDetails+      `Prelude.hashWithSalt` storageOptimizerType+      `Prelude.hashWithSalt` warnings++instance Prelude.NFData StorageOptimizer where+  rnf StorageOptimizer' {..} =+    Prelude.rnf config+      `Prelude.seq` Prelude.rnf errorMessage+      `Prelude.seq` Prelude.rnf lastRunDetails+      `Prelude.seq` Prelude.rnf storageOptimizerType+      `Prelude.seq` Prelude.rnf warnings
+ gen/Amazonka/LakeFormation/Types/TableObject.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.TableObject+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.TableObject where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies the details of a governed table.+--+-- /See:/ 'newTableObject' smart constructor.+data TableObject = TableObject'+  { -- | The Amazon S3 ETag of the object. Returned by @GetTableObjects@ for+    -- validation and used to identify changes to the underlying data.+    eTag :: Prelude.Maybe Prelude.Text,+    -- | The size of the Amazon S3 object in bytes.+    size :: Prelude.Maybe Prelude.Integer,+    -- | The Amazon S3 location of the object.+    uri :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TableObject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'eTag', 'tableObject_eTag' - The Amazon S3 ETag of the object. Returned by @GetTableObjects@ for+-- validation and used to identify changes to the underlying data.+--+-- 'size', 'tableObject_size' - The size of the Amazon S3 object in bytes.+--+-- 'uri', 'tableObject_uri' - The Amazon S3 location of the object.+newTableObject ::+  TableObject+newTableObject =+  TableObject'+    { eTag = Prelude.Nothing,+      size = Prelude.Nothing,+      uri = Prelude.Nothing+    }++-- | The Amazon S3 ETag of the object. Returned by @GetTableObjects@ for+-- validation and used to identify changes to the underlying data.+tableObject_eTag :: Lens.Lens' TableObject (Prelude.Maybe Prelude.Text)+tableObject_eTag = Lens.lens (\TableObject' {eTag} -> eTag) (\s@TableObject' {} a -> s {eTag = a} :: TableObject)++-- | The size of the Amazon S3 object in bytes.+tableObject_size :: Lens.Lens' TableObject (Prelude.Maybe Prelude.Integer)+tableObject_size = Lens.lens (\TableObject' {size} -> size) (\s@TableObject' {} a -> s {size = a} :: TableObject)++-- | The Amazon S3 location of the object.+tableObject_uri :: Lens.Lens' TableObject (Prelude.Maybe Prelude.Text)+tableObject_uri = Lens.lens (\TableObject' {uri} -> uri) (\s@TableObject' {} a -> s {uri = a} :: TableObject)++instance Data.FromJSON TableObject where+  parseJSON =+    Data.withObject+      "TableObject"+      ( \x ->+          TableObject'+            Prelude.<$> (x Data..:? "ETag")+            Prelude.<*> (x Data..:? "Size")+            Prelude.<*> (x Data..:? "Uri")+      )++instance Prelude.Hashable TableObject where+  hashWithSalt _salt TableObject' {..} =+    _salt+      `Prelude.hashWithSalt` eTag+      `Prelude.hashWithSalt` size+      `Prelude.hashWithSalt` uri++instance Prelude.NFData TableObject where+  rnf TableObject' {..} =+    Prelude.rnf eTag+      `Prelude.seq` Prelude.rnf size+      `Prelude.seq` Prelude.rnf uri
+ gen/Amazonka/LakeFormation/Types/TableResource.hs view
@@ -0,0 +1,145 @@+{-# 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.LakeFormation.Types.TableResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.TableResource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.TableWildcard+import qualified Amazonka.Prelude as Prelude++-- | A structure for the table object. A table is a metadata definition that+-- represents your data. You can Grant and Revoke table privileges to a+-- principal.+--+-- /See:/ 'newTableResource' smart constructor.+data TableResource = TableResource'+  { -- | The identifier for the Data Catalog. By default, it is the account ID of+    -- the caller.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The name of the table.+    name :: Prelude.Maybe Prelude.Text,+    -- | A wildcard object representing every table under a database.+    --+    -- At least one of @TableResource$Name@ or @TableResource$TableWildcard@ is+    -- required.+    tableWildcard :: Prelude.Maybe TableWildcard,+    -- | The name of the database for the table. Unique to a Data Catalog. A+    -- database is a set of associated table definitions organized into a+    -- logical group. You can Grant and Revoke database privileges to a+    -- principal.+    databaseName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TableResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'tableResource_catalogId' - The identifier for the Data Catalog. By default, it is the account ID of+-- the caller.+--+-- 'name', 'tableResource_name' - The name of the table.+--+-- 'tableWildcard', 'tableResource_tableWildcard' - A wildcard object representing every table under a database.+--+-- At least one of @TableResource$Name@ or @TableResource$TableWildcard@ is+-- required.+--+-- 'databaseName', 'tableResource_databaseName' - The name of the database for the table. Unique to a Data Catalog. A+-- database is a set of associated table definitions organized into a+-- logical group. You can Grant and Revoke database privileges to a+-- principal.+newTableResource ::+  -- | 'databaseName'+  Prelude.Text ->+  TableResource+newTableResource pDatabaseName_ =+  TableResource'+    { catalogId = Prelude.Nothing,+      name = Prelude.Nothing,+      tableWildcard = Prelude.Nothing,+      databaseName = pDatabaseName_+    }++-- | The identifier for the Data Catalog. By default, it is the account ID of+-- the caller.+tableResource_catalogId :: Lens.Lens' TableResource (Prelude.Maybe Prelude.Text)+tableResource_catalogId = Lens.lens (\TableResource' {catalogId} -> catalogId) (\s@TableResource' {} a -> s {catalogId = a} :: TableResource)++-- | The name of the table.+tableResource_name :: Lens.Lens' TableResource (Prelude.Maybe Prelude.Text)+tableResource_name = Lens.lens (\TableResource' {name} -> name) (\s@TableResource' {} a -> s {name = a} :: TableResource)++-- | A wildcard object representing every table under a database.+--+-- At least one of @TableResource$Name@ or @TableResource$TableWildcard@ is+-- required.+tableResource_tableWildcard :: Lens.Lens' TableResource (Prelude.Maybe TableWildcard)+tableResource_tableWildcard = Lens.lens (\TableResource' {tableWildcard} -> tableWildcard) (\s@TableResource' {} a -> s {tableWildcard = a} :: TableResource)++-- | The name of the database for the table. Unique to a Data Catalog. A+-- database is a set of associated table definitions organized into a+-- logical group. You can Grant and Revoke database privileges to a+-- principal.+tableResource_databaseName :: Lens.Lens' TableResource Prelude.Text+tableResource_databaseName = Lens.lens (\TableResource' {databaseName} -> databaseName) (\s@TableResource' {} a -> s {databaseName = a} :: TableResource)++instance Data.FromJSON TableResource where+  parseJSON =+    Data.withObject+      "TableResource"+      ( \x ->+          TableResource'+            Prelude.<$> (x Data..:? "CatalogId")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "TableWildcard")+            Prelude.<*> (x Data..: "DatabaseName")+      )++instance Prelude.Hashable TableResource where+  hashWithSalt _salt TableResource' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` tableWildcard+      `Prelude.hashWithSalt` databaseName++instance Prelude.NFData TableResource where+  rnf TableResource' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf tableWildcard+      `Prelude.seq` Prelude.rnf databaseName++instance Data.ToJSON TableResource where+  toJSON TableResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("Name" Data..=) Prelude.<$> name,+            ("TableWildcard" Data..=) Prelude.<$> tableWildcard,+            Prelude.Just ("DatabaseName" Data..= databaseName)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/TableWildcard.hs view
@@ -0,0 +1,57 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.TableWildcard+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.TableWildcard 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 wildcard object representing every table under a database.+--+-- /See:/ 'newTableWildcard' smart constructor.+data TableWildcard = TableWildcard'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TableWildcard' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newTableWildcard ::+  TableWildcard+newTableWildcard = TableWildcard'++instance Data.FromJSON TableWildcard where+  parseJSON =+    Data.withObject+      "TableWildcard"+      (\x -> Prelude.pure TableWildcard')++instance Prelude.Hashable TableWildcard where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData TableWildcard where+  rnf _ = ()++instance Data.ToJSON TableWildcard where+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+ gen/Amazonka/LakeFormation/Types/TableWithColumnsResource.hs view
@@ -0,0 +1,167 @@+{-# 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.LakeFormation.Types.TableWithColumnsResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.TableWithColumnsResource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.ColumnWildcard+import qualified Amazonka.Prelude as Prelude++-- | A structure for a table with columns object. This object is only used+-- when granting a SELECT permission.+--+-- This object must take a value for at least one of @ColumnsNames@,+-- @ColumnsIndexes@, or @ColumnsWildcard@.+--+-- /See:/ 'newTableWithColumnsResource' smart constructor.+data TableWithColumnsResource = TableWithColumnsResource'+  { -- | The identifier for the Data Catalog. By default, it is the account ID of+    -- the caller.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The list of column names for the table. At least one of @ColumnNames@ or+    -- @ColumnWildcard@ is required.+    columnNames :: Prelude.Maybe [Prelude.Text],+    -- | A wildcard specified by a @ColumnWildcard@ object. At least one of+    -- @ColumnNames@ or @ColumnWildcard@ is required.+    columnWildcard :: Prelude.Maybe ColumnWildcard,+    -- | The name of the database for the table with columns resource. Unique to+    -- the Data Catalog. A database is a set of associated table definitions+    -- organized into a logical group. You can Grant and Revoke database+    -- privileges to a principal.+    databaseName :: Prelude.Text,+    -- | The name of the table resource. A table is a metadata definition that+    -- represents your data. You can Grant and Revoke table privileges to a+    -- principal.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TableWithColumnsResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'tableWithColumnsResource_catalogId' - The identifier for the Data Catalog. By default, it is the account ID of+-- the caller.+--+-- 'columnNames', 'tableWithColumnsResource_columnNames' - The list of column names for the table. At least one of @ColumnNames@ or+-- @ColumnWildcard@ is required.+--+-- 'columnWildcard', 'tableWithColumnsResource_columnWildcard' - A wildcard specified by a @ColumnWildcard@ object. At least one of+-- @ColumnNames@ or @ColumnWildcard@ is required.+--+-- 'databaseName', 'tableWithColumnsResource_databaseName' - The name of the database for the table with columns resource. Unique to+-- the Data Catalog. A database is a set of associated table definitions+-- organized into a logical group. You can Grant and Revoke database+-- privileges to a principal.+--+-- 'name', 'tableWithColumnsResource_name' - The name of the table resource. A table is a metadata definition that+-- represents your data. You can Grant and Revoke table privileges to a+-- principal.+newTableWithColumnsResource ::+  -- | 'databaseName'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  TableWithColumnsResource+newTableWithColumnsResource pDatabaseName_ pName_ =+  TableWithColumnsResource'+    { catalogId =+        Prelude.Nothing,+      columnNames = Prelude.Nothing,+      columnWildcard = Prelude.Nothing,+      databaseName = pDatabaseName_,+      name = pName_+    }++-- | The identifier for the Data Catalog. By default, it is the account ID of+-- the caller.+tableWithColumnsResource_catalogId :: Lens.Lens' TableWithColumnsResource (Prelude.Maybe Prelude.Text)+tableWithColumnsResource_catalogId = Lens.lens (\TableWithColumnsResource' {catalogId} -> catalogId) (\s@TableWithColumnsResource' {} a -> s {catalogId = a} :: TableWithColumnsResource)++-- | The list of column names for the table. At least one of @ColumnNames@ or+-- @ColumnWildcard@ is required.+tableWithColumnsResource_columnNames :: Lens.Lens' TableWithColumnsResource (Prelude.Maybe [Prelude.Text])+tableWithColumnsResource_columnNames = Lens.lens (\TableWithColumnsResource' {columnNames} -> columnNames) (\s@TableWithColumnsResource' {} a -> s {columnNames = a} :: TableWithColumnsResource) Prelude.. Lens.mapping Lens.coerced++-- | A wildcard specified by a @ColumnWildcard@ object. At least one of+-- @ColumnNames@ or @ColumnWildcard@ is required.+tableWithColumnsResource_columnWildcard :: Lens.Lens' TableWithColumnsResource (Prelude.Maybe ColumnWildcard)+tableWithColumnsResource_columnWildcard = Lens.lens (\TableWithColumnsResource' {columnWildcard} -> columnWildcard) (\s@TableWithColumnsResource' {} a -> s {columnWildcard = a} :: TableWithColumnsResource)++-- | The name of the database for the table with columns resource. Unique to+-- the Data Catalog. A database is a set of associated table definitions+-- organized into a logical group. You can Grant and Revoke database+-- privileges to a principal.+tableWithColumnsResource_databaseName :: Lens.Lens' TableWithColumnsResource Prelude.Text+tableWithColumnsResource_databaseName = Lens.lens (\TableWithColumnsResource' {databaseName} -> databaseName) (\s@TableWithColumnsResource' {} a -> s {databaseName = a} :: TableWithColumnsResource)++-- | The name of the table resource. A table is a metadata definition that+-- represents your data. You can Grant and Revoke table privileges to a+-- principal.+tableWithColumnsResource_name :: Lens.Lens' TableWithColumnsResource Prelude.Text+tableWithColumnsResource_name = Lens.lens (\TableWithColumnsResource' {name} -> name) (\s@TableWithColumnsResource' {} a -> s {name = a} :: TableWithColumnsResource)++instance Data.FromJSON TableWithColumnsResource where+  parseJSON =+    Data.withObject+      "TableWithColumnsResource"+      ( \x ->+          TableWithColumnsResource'+            Prelude.<$> (x Data..:? "CatalogId")+            Prelude.<*> (x Data..:? "ColumnNames" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "ColumnWildcard")+            Prelude.<*> (x Data..: "DatabaseName")+            Prelude.<*> (x Data..: "Name")+      )++instance Prelude.Hashable TableWithColumnsResource where+  hashWithSalt _salt TableWithColumnsResource' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` columnNames+      `Prelude.hashWithSalt` columnWildcard+      `Prelude.hashWithSalt` databaseName+      `Prelude.hashWithSalt` name++instance Prelude.NFData TableWithColumnsResource where+  rnf TableWithColumnsResource' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf columnNames+      `Prelude.seq` Prelude.rnf columnWildcard+      `Prelude.seq` Prelude.rnf databaseName+      `Prelude.seq` Prelude.rnf name++instance Data.ToJSON TableWithColumnsResource where+  toJSON TableWithColumnsResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("ColumnNames" Data..=) Prelude.<$> columnNames,+            ("ColumnWildcard" Data..=)+              Prelude.<$> columnWildcard,+            Prelude.Just ("DatabaseName" Data..= databaseName),+            Prelude.Just ("Name" Data..= name)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/TaggedDatabase.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.LakeFormation.Types.TaggedDatabase+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.TaggedDatabase where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.DatabaseResource+import Amazonka.LakeFormation.Types.LFTagPair+import qualified Amazonka.Prelude as Prelude++-- | A structure describing a database resource with LF-tags.+--+-- /See:/ 'newTaggedDatabase' smart constructor.+data TaggedDatabase = TaggedDatabase'+  { -- | A database that has LF-tags attached to it.+    database :: Prelude.Maybe DatabaseResource,+    -- | A list of LF-tags attached to the database.+    lFTags :: Prelude.Maybe (Prelude.NonEmpty LFTagPair)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TaggedDatabase' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'database', 'taggedDatabase_database' - A database that has LF-tags attached to it.+--+-- 'lFTags', 'taggedDatabase_lFTags' - A list of LF-tags attached to the database.+newTaggedDatabase ::+  TaggedDatabase+newTaggedDatabase =+  TaggedDatabase'+    { database = Prelude.Nothing,+      lFTags = Prelude.Nothing+    }++-- | A database that has LF-tags attached to it.+taggedDatabase_database :: Lens.Lens' TaggedDatabase (Prelude.Maybe DatabaseResource)+taggedDatabase_database = Lens.lens (\TaggedDatabase' {database} -> database) (\s@TaggedDatabase' {} a -> s {database = a} :: TaggedDatabase)++-- | A list of LF-tags attached to the database.+taggedDatabase_lFTags :: Lens.Lens' TaggedDatabase (Prelude.Maybe (Prelude.NonEmpty LFTagPair))+taggedDatabase_lFTags = Lens.lens (\TaggedDatabase' {lFTags} -> lFTags) (\s@TaggedDatabase' {} a -> s {lFTags = a} :: TaggedDatabase) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON TaggedDatabase where+  parseJSON =+    Data.withObject+      "TaggedDatabase"+      ( \x ->+          TaggedDatabase'+            Prelude.<$> (x Data..:? "Database")+            Prelude.<*> (x Data..:? "LFTags")+      )++instance Prelude.Hashable TaggedDatabase where+  hashWithSalt _salt TaggedDatabase' {..} =+    _salt+      `Prelude.hashWithSalt` database+      `Prelude.hashWithSalt` lFTags++instance Prelude.NFData TaggedDatabase where+  rnf TaggedDatabase' {..} =+    Prelude.rnf database+      `Prelude.seq` Prelude.rnf lFTags
+ gen/Amazonka/LakeFormation/Types/TaggedTable.hs view
@@ -0,0 +1,114 @@+{-# 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.LakeFormation.Types.TaggedTable+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.TaggedTable where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.ColumnLFTag+import Amazonka.LakeFormation.Types.LFTagPair+import Amazonka.LakeFormation.Types.TableResource+import qualified Amazonka.Prelude as Prelude++-- | A structure describing a table resource with LF-tags.+--+-- /See:/ 'newTaggedTable' smart constructor.+data TaggedTable = TaggedTable'+  { -- | A list of LF-tags attached to the database where the table resides.+    lFTagOnDatabase :: Prelude.Maybe (Prelude.NonEmpty LFTagPair),+    -- | A list of LF-tags attached to columns in the table.+    lFTagsOnColumns :: Prelude.Maybe [ColumnLFTag],+    -- | A list of LF-tags attached to the table.+    lFTagsOnTable :: Prelude.Maybe (Prelude.NonEmpty LFTagPair),+    -- | A table that has LF-tags attached to it.+    table :: Prelude.Maybe TableResource+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TaggedTable' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lFTagOnDatabase', 'taggedTable_lFTagOnDatabase' - A list of LF-tags attached to the database where the table resides.+--+-- 'lFTagsOnColumns', 'taggedTable_lFTagsOnColumns' - A list of LF-tags attached to columns in the table.+--+-- 'lFTagsOnTable', 'taggedTable_lFTagsOnTable' - A list of LF-tags attached to the table.+--+-- 'table', 'taggedTable_table' - A table that has LF-tags attached to it.+newTaggedTable ::+  TaggedTable+newTaggedTable =+  TaggedTable'+    { lFTagOnDatabase = Prelude.Nothing,+      lFTagsOnColumns = Prelude.Nothing,+      lFTagsOnTable = Prelude.Nothing,+      table = Prelude.Nothing+    }++-- | A list of LF-tags attached to the database where the table resides.+taggedTable_lFTagOnDatabase :: Lens.Lens' TaggedTable (Prelude.Maybe (Prelude.NonEmpty LFTagPair))+taggedTable_lFTagOnDatabase = Lens.lens (\TaggedTable' {lFTagOnDatabase} -> lFTagOnDatabase) (\s@TaggedTable' {} a -> s {lFTagOnDatabase = a} :: TaggedTable) Prelude.. Lens.mapping Lens.coerced++-- | A list of LF-tags attached to columns in the table.+taggedTable_lFTagsOnColumns :: Lens.Lens' TaggedTable (Prelude.Maybe [ColumnLFTag])+taggedTable_lFTagsOnColumns = Lens.lens (\TaggedTable' {lFTagsOnColumns} -> lFTagsOnColumns) (\s@TaggedTable' {} a -> s {lFTagsOnColumns = a} :: TaggedTable) Prelude.. Lens.mapping Lens.coerced++-- | A list of LF-tags attached to the table.+taggedTable_lFTagsOnTable :: Lens.Lens' TaggedTable (Prelude.Maybe (Prelude.NonEmpty LFTagPair))+taggedTable_lFTagsOnTable = Lens.lens (\TaggedTable' {lFTagsOnTable} -> lFTagsOnTable) (\s@TaggedTable' {} a -> s {lFTagsOnTable = a} :: TaggedTable) Prelude.. Lens.mapping Lens.coerced++-- | A table that has LF-tags attached to it.+taggedTable_table :: Lens.Lens' TaggedTable (Prelude.Maybe TableResource)+taggedTable_table = Lens.lens (\TaggedTable' {table} -> table) (\s@TaggedTable' {} a -> s {table = a} :: TaggedTable)++instance Data.FromJSON TaggedTable where+  parseJSON =+    Data.withObject+      "TaggedTable"+      ( \x ->+          TaggedTable'+            Prelude.<$> (x Data..:? "LFTagOnDatabase")+            Prelude.<*> ( x+                            Data..:? "LFTagsOnColumns"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "LFTagsOnTable")+            Prelude.<*> (x Data..:? "Table")+      )++instance Prelude.Hashable TaggedTable where+  hashWithSalt _salt TaggedTable' {..} =+    _salt+      `Prelude.hashWithSalt` lFTagOnDatabase+      `Prelude.hashWithSalt` lFTagsOnColumns+      `Prelude.hashWithSalt` lFTagsOnTable+      `Prelude.hashWithSalt` table++instance Prelude.NFData TaggedTable where+  rnf TaggedTable' {..} =+    Prelude.rnf lFTagOnDatabase+      `Prelude.seq` Prelude.rnf lFTagsOnColumns+      `Prelude.seq` Prelude.rnf lFTagsOnTable+      `Prelude.seq` Prelude.rnf table
+ gen/Amazonka/LakeFormation/Types/TransactionDescription.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.LakeFormation.Types.TransactionDescription+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.TransactionDescription where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.TransactionStatus+import qualified Amazonka.Prelude as Prelude++-- | A structure that contains information about a transaction.+--+-- /See:/ 'newTransactionDescription' smart constructor.+data TransactionDescription = TransactionDescription'+  { -- | The time when the transaction committed or aborted, if it is not+    -- currently active.+    transactionEndTime :: Prelude.Maybe Data.POSIX,+    -- | The ID of the transaction.+    transactionId :: Prelude.Maybe Prelude.Text,+    -- | The time when the transaction started.+    transactionStartTime :: Prelude.Maybe Data.POSIX,+    -- | A status of ACTIVE, COMMITTED, or ABORTED.+    transactionStatus :: Prelude.Maybe TransactionStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TransactionDescription' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'transactionEndTime', 'transactionDescription_transactionEndTime' - The time when the transaction committed or aborted, if it is not+-- currently active.+--+-- 'transactionId', 'transactionDescription_transactionId' - The ID of the transaction.+--+-- 'transactionStartTime', 'transactionDescription_transactionStartTime' - The time when the transaction started.+--+-- 'transactionStatus', 'transactionDescription_transactionStatus' - A status of ACTIVE, COMMITTED, or ABORTED.+newTransactionDescription ::+  TransactionDescription+newTransactionDescription =+  TransactionDescription'+    { transactionEndTime =+        Prelude.Nothing,+      transactionId = Prelude.Nothing,+      transactionStartTime = Prelude.Nothing,+      transactionStatus = Prelude.Nothing+    }++-- | The time when the transaction committed or aborted, if it is not+-- currently active.+transactionDescription_transactionEndTime :: Lens.Lens' TransactionDescription (Prelude.Maybe Prelude.UTCTime)+transactionDescription_transactionEndTime = Lens.lens (\TransactionDescription' {transactionEndTime} -> transactionEndTime) (\s@TransactionDescription' {} a -> s {transactionEndTime = a} :: TransactionDescription) Prelude.. Lens.mapping Data._Time++-- | The ID of the transaction.+transactionDescription_transactionId :: Lens.Lens' TransactionDescription (Prelude.Maybe Prelude.Text)+transactionDescription_transactionId = Lens.lens (\TransactionDescription' {transactionId} -> transactionId) (\s@TransactionDescription' {} a -> s {transactionId = a} :: TransactionDescription)++-- | The time when the transaction started.+transactionDescription_transactionStartTime :: Lens.Lens' TransactionDescription (Prelude.Maybe Prelude.UTCTime)+transactionDescription_transactionStartTime = Lens.lens (\TransactionDescription' {transactionStartTime} -> transactionStartTime) (\s@TransactionDescription' {} a -> s {transactionStartTime = a} :: TransactionDescription) Prelude.. Lens.mapping Data._Time++-- | A status of ACTIVE, COMMITTED, or ABORTED.+transactionDescription_transactionStatus :: Lens.Lens' TransactionDescription (Prelude.Maybe TransactionStatus)+transactionDescription_transactionStatus = Lens.lens (\TransactionDescription' {transactionStatus} -> transactionStatus) (\s@TransactionDescription' {} a -> s {transactionStatus = a} :: TransactionDescription)++instance Data.FromJSON TransactionDescription where+  parseJSON =+    Data.withObject+      "TransactionDescription"+      ( \x ->+          TransactionDescription'+            Prelude.<$> (x Data..:? "TransactionEndTime")+            Prelude.<*> (x Data..:? "TransactionId")+            Prelude.<*> (x Data..:? "TransactionStartTime")+            Prelude.<*> (x Data..:? "TransactionStatus")+      )++instance Prelude.Hashable TransactionDescription where+  hashWithSalt _salt TransactionDescription' {..} =+    _salt+      `Prelude.hashWithSalt` transactionEndTime+      `Prelude.hashWithSalt` transactionId+      `Prelude.hashWithSalt` transactionStartTime+      `Prelude.hashWithSalt` transactionStatus++instance Prelude.NFData TransactionDescription where+  rnf TransactionDescription' {..} =+    Prelude.rnf transactionEndTime+      `Prelude.seq` Prelude.rnf transactionId+      `Prelude.seq` Prelude.rnf transactionStartTime+      `Prelude.seq` Prelude.rnf transactionStatus
+ gen/Amazonka/LakeFormation/Types/TransactionStatus.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.LakeFormation.Types.TransactionStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.TransactionStatus+  ( TransactionStatus+      ( ..,+        TransactionStatus_ABORTED,+        TransactionStatus_ACTIVE,+        TransactionStatus_COMMITTED,+        TransactionStatus_COMMIT_IN_PROGRESS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TransactionStatus = TransactionStatus'+  { fromTransactionStatus ::+      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 TransactionStatus_ABORTED :: TransactionStatus+pattern TransactionStatus_ABORTED = TransactionStatus' "ABORTED"++pattern TransactionStatus_ACTIVE :: TransactionStatus+pattern TransactionStatus_ACTIVE = TransactionStatus' "ACTIVE"++pattern TransactionStatus_COMMITTED :: TransactionStatus+pattern TransactionStatus_COMMITTED = TransactionStatus' "COMMITTED"++pattern TransactionStatus_COMMIT_IN_PROGRESS :: TransactionStatus+pattern TransactionStatus_COMMIT_IN_PROGRESS = TransactionStatus' "COMMIT_IN_PROGRESS"++{-# COMPLETE+  TransactionStatus_ABORTED,+  TransactionStatus_ACTIVE,+  TransactionStatus_COMMITTED,+  TransactionStatus_COMMIT_IN_PROGRESS,+  TransactionStatus'+  #-}
+ gen/Amazonka/LakeFormation/Types/TransactionStatusFilter.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.TransactionStatusFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.TransactionStatusFilter+  ( TransactionStatusFilter+      ( ..,+        TransactionStatusFilter_ABORTED,+        TransactionStatusFilter_ACTIVE,+        TransactionStatusFilter_ALL,+        TransactionStatusFilter_COMMITTED,+        TransactionStatusFilter_COMPLETED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TransactionStatusFilter = TransactionStatusFilter'+  { fromTransactionStatusFilter ::+      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 TransactionStatusFilter_ABORTED :: TransactionStatusFilter+pattern TransactionStatusFilter_ABORTED = TransactionStatusFilter' "ABORTED"++pattern TransactionStatusFilter_ACTIVE :: TransactionStatusFilter+pattern TransactionStatusFilter_ACTIVE = TransactionStatusFilter' "ACTIVE"++pattern TransactionStatusFilter_ALL :: TransactionStatusFilter+pattern TransactionStatusFilter_ALL = TransactionStatusFilter' "ALL"++pattern TransactionStatusFilter_COMMITTED :: TransactionStatusFilter+pattern TransactionStatusFilter_COMMITTED = TransactionStatusFilter' "COMMITTED"++pattern TransactionStatusFilter_COMPLETED :: TransactionStatusFilter+pattern TransactionStatusFilter_COMPLETED = TransactionStatusFilter' "COMPLETED"++{-# COMPLETE+  TransactionStatusFilter_ABORTED,+  TransactionStatusFilter_ACTIVE,+  TransactionStatusFilter_ALL,+  TransactionStatusFilter_COMMITTED,+  TransactionStatusFilter_COMPLETED,+  TransactionStatusFilter'+  #-}
+ gen/Amazonka/LakeFormation/Types/TransactionType.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.LakeFormation.Types.TransactionType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.TransactionType+  ( TransactionType+      ( ..,+        TransactionType_READ_AND_WRITE,+        TransactionType_READ_ONLY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TransactionType = TransactionType'+  { fromTransactionType ::+      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 TransactionType_READ_AND_WRITE :: TransactionType+pattern TransactionType_READ_AND_WRITE = TransactionType' "READ_AND_WRITE"++pattern TransactionType_READ_ONLY :: TransactionType+pattern TransactionType_READ_ONLY = TransactionType' "READ_ONLY"++{-# COMPLETE+  TransactionType_READ_AND_WRITE,+  TransactionType_READ_ONLY,+  TransactionType'+  #-}
+ gen/Amazonka/LakeFormation/Types/VirtualObject.hs view
@@ -0,0 +1,83 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.Types.VirtualObject+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.VirtualObject 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 that defines an Amazon S3 object to be deleted if a+-- transaction cancels, provided that @VirtualPut@ was called before+-- writing the object.+--+-- /See:/ 'newVirtualObject' smart constructor.+data VirtualObject = VirtualObject'+  { -- | The ETag of the Amazon S3 object.+    eTag :: Prelude.Maybe Prelude.Text,+    -- | The path to the Amazon S3 object. Must start with s3:\/\/+    uri :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualObject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'eTag', 'virtualObject_eTag' - The ETag of the Amazon S3 object.+--+-- 'uri', 'virtualObject_uri' - The path to the Amazon S3 object. Must start with s3:\/\/+newVirtualObject ::+  -- | 'uri'+  Prelude.Text ->+  VirtualObject+newVirtualObject pUri_ =+  VirtualObject' {eTag = Prelude.Nothing, uri = pUri_}++-- | The ETag of the Amazon S3 object.+virtualObject_eTag :: Lens.Lens' VirtualObject (Prelude.Maybe Prelude.Text)+virtualObject_eTag = Lens.lens (\VirtualObject' {eTag} -> eTag) (\s@VirtualObject' {} a -> s {eTag = a} :: VirtualObject)++-- | The path to the Amazon S3 object. Must start with s3:\/\/+virtualObject_uri :: Lens.Lens' VirtualObject Prelude.Text+virtualObject_uri = Lens.lens (\VirtualObject' {uri} -> uri) (\s@VirtualObject' {} a -> s {uri = a} :: VirtualObject)++instance Prelude.Hashable VirtualObject where+  hashWithSalt _salt VirtualObject' {..} =+    _salt+      `Prelude.hashWithSalt` eTag+      `Prelude.hashWithSalt` uri++instance Prelude.NFData VirtualObject where+  rnf VirtualObject' {..} =+    Prelude.rnf eTag `Prelude.seq` Prelude.rnf uri++instance Data.ToJSON VirtualObject where+  toJSON VirtualObject' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ETag" Data..=) Prelude.<$> eTag,+            Prelude.Just ("Uri" Data..= uri)+          ]+      )
+ gen/Amazonka/LakeFormation/Types/WorkUnitRange.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.LakeFormation.Types.WorkUnitRange+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.WorkUnitRange 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++-- | Defines the valid range of work unit IDs for querying the execution+-- service.+--+-- /See:/ 'newWorkUnitRange' smart constructor.+data WorkUnitRange = WorkUnitRange'+  { -- | Defines the maximum work unit ID in the range. The maximum value is+    -- inclusive.+    workUnitIdMax :: Prelude.Integer,+    -- | Defines the minimum work unit ID in the range.+    workUnitIdMin :: Prelude.Integer,+    -- | A work token used to query the execution service.+    workUnitToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'WorkUnitRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'workUnitIdMax', 'workUnitRange_workUnitIdMax' - Defines the maximum work unit ID in the range. The maximum value is+-- inclusive.+--+-- 'workUnitIdMin', 'workUnitRange_workUnitIdMin' - Defines the minimum work unit ID in the range.+--+-- 'workUnitToken', 'workUnitRange_workUnitToken' - A work token used to query the execution service.+newWorkUnitRange ::+  -- | 'workUnitIdMax'+  Prelude.Integer ->+  -- | 'workUnitIdMin'+  Prelude.Integer ->+  -- | 'workUnitToken'+  Prelude.Text ->+  WorkUnitRange+newWorkUnitRange+  pWorkUnitIdMax_+  pWorkUnitIdMin_+  pWorkUnitToken_ =+    WorkUnitRange'+      { workUnitIdMax = pWorkUnitIdMax_,+        workUnitIdMin = pWorkUnitIdMin_,+        workUnitToken = pWorkUnitToken_+      }++-- | Defines the maximum work unit ID in the range. The maximum value is+-- inclusive.+workUnitRange_workUnitIdMax :: Lens.Lens' WorkUnitRange Prelude.Integer+workUnitRange_workUnitIdMax = Lens.lens (\WorkUnitRange' {workUnitIdMax} -> workUnitIdMax) (\s@WorkUnitRange' {} a -> s {workUnitIdMax = a} :: WorkUnitRange)++-- | Defines the minimum work unit ID in the range.+workUnitRange_workUnitIdMin :: Lens.Lens' WorkUnitRange Prelude.Integer+workUnitRange_workUnitIdMin = Lens.lens (\WorkUnitRange' {workUnitIdMin} -> workUnitIdMin) (\s@WorkUnitRange' {} a -> s {workUnitIdMin = a} :: WorkUnitRange)++-- | A work token used to query the execution service.+workUnitRange_workUnitToken :: Lens.Lens' WorkUnitRange Prelude.Text+workUnitRange_workUnitToken = Lens.lens (\WorkUnitRange' {workUnitToken} -> workUnitToken) (\s@WorkUnitRange' {} a -> s {workUnitToken = a} :: WorkUnitRange)++instance Data.FromJSON WorkUnitRange where+  parseJSON =+    Data.withObject+      "WorkUnitRange"+      ( \x ->+          WorkUnitRange'+            Prelude.<$> (x Data..: "WorkUnitIdMax")+            Prelude.<*> (x Data..: "WorkUnitIdMin")+            Prelude.<*> (x Data..: "WorkUnitToken")+      )++instance Prelude.Hashable WorkUnitRange where+  hashWithSalt _salt WorkUnitRange' {..} =+    _salt+      `Prelude.hashWithSalt` workUnitIdMax+      `Prelude.hashWithSalt` workUnitIdMin+      `Prelude.hashWithSalt` workUnitToken++instance Prelude.NFData WorkUnitRange where+  rnf WorkUnitRange' {..} =+    Prelude.rnf workUnitIdMax+      `Prelude.seq` Prelude.rnf workUnitIdMin+      `Prelude.seq` Prelude.rnf workUnitToken
+ gen/Amazonka/LakeFormation/Types/WriteOperation.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.LakeFormation.Types.WriteOperation+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.LakeFormation.Types.WriteOperation where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types.AddObjectInput+import Amazonka.LakeFormation.Types.DeleteObjectInput+import qualified Amazonka.Prelude as Prelude++-- | Defines an object to add to or delete from a governed table.+--+-- /See:/ 'newWriteOperation' smart constructor.+data WriteOperation = WriteOperation'+  { -- | A new object to add to the governed table.+    addObject :: Prelude.Maybe AddObjectInput,+    -- | An object to delete from the governed table.+    deleteObject :: Prelude.Maybe DeleteObjectInput+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'WriteOperation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addObject', 'writeOperation_addObject' - A new object to add to the governed table.+--+-- 'deleteObject', 'writeOperation_deleteObject' - An object to delete from the governed table.+newWriteOperation ::+  WriteOperation+newWriteOperation =+  WriteOperation'+    { addObject = Prelude.Nothing,+      deleteObject = Prelude.Nothing+    }++-- | A new object to add to the governed table.+writeOperation_addObject :: Lens.Lens' WriteOperation (Prelude.Maybe AddObjectInput)+writeOperation_addObject = Lens.lens (\WriteOperation' {addObject} -> addObject) (\s@WriteOperation' {} a -> s {addObject = a} :: WriteOperation)++-- | An object to delete from the governed table.+writeOperation_deleteObject :: Lens.Lens' WriteOperation (Prelude.Maybe DeleteObjectInput)+writeOperation_deleteObject = Lens.lens (\WriteOperation' {deleteObject} -> deleteObject) (\s@WriteOperation' {} a -> s {deleteObject = a} :: WriteOperation)++instance Prelude.Hashable WriteOperation where+  hashWithSalt _salt WriteOperation' {..} =+    _salt+      `Prelude.hashWithSalt` addObject+      `Prelude.hashWithSalt` deleteObject++instance Prelude.NFData WriteOperation where+  rnf WriteOperation' {..} =+    Prelude.rnf addObject+      `Prelude.seq` Prelude.rnf deleteObject++instance Data.ToJSON WriteOperation where+  toJSON WriteOperation' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AddObject" Data..=) Prelude.<$> addObject,+            ("DeleteObject" Data..=) Prelude.<$> deleteObject+          ]+      )
+ gen/Amazonka/LakeFormation/UpdateLFTag.hs view
@@ -0,0 +1,206 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.UpdateLFTag+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the list of possible values for the specified LF-tag key. If the+-- LF-tag does not exist, the operation throws an EntityNotFoundException.+-- The values in the delete key values will be deleted from list of+-- possible values. If any value in the delete key values is attached to a+-- resource, then API errors out with a 400 Exception - \"Update not+-- allowed\". Untag the attribute before deleting the LF-tag key\'s value.+module Amazonka.LakeFormation.UpdateLFTag+  ( -- * Creating a Request+    UpdateLFTag (..),+    newUpdateLFTag,++    -- * Request Lenses+    updateLFTag_catalogId,+    updateLFTag_tagValuesToAdd,+    updateLFTag_tagValuesToDelete,+    updateLFTag_tagKey,++    -- * Destructuring the Response+    UpdateLFTagResponse (..),+    newUpdateLFTagResponse,++    -- * Response Lenses+    updateLFTagResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateLFTag' smart constructor.+data UpdateLFTag = UpdateLFTag'+  { -- | The identifier for the Data Catalog. By default, the account ID. The+    -- Data Catalog is the persistent metadata store. It contains database+    -- definitions, table definitions, and other control information to manage+    -- your Lake Formation environment.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | A list of LF-tag values to add from the LF-tag.+    tagValuesToAdd :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | A list of LF-tag values to delete from the LF-tag.+    tagValuesToDelete :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The key-name for the LF-tag for which to add or delete values.+    tagKey :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateLFTag' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'updateLFTag_catalogId' - The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+--+-- 'tagValuesToAdd', 'updateLFTag_tagValuesToAdd' - A list of LF-tag values to add from the LF-tag.+--+-- 'tagValuesToDelete', 'updateLFTag_tagValuesToDelete' - A list of LF-tag values to delete from the LF-tag.+--+-- 'tagKey', 'updateLFTag_tagKey' - The key-name for the LF-tag for which to add or delete values.+newUpdateLFTag ::+  -- | 'tagKey'+  Prelude.Text ->+  UpdateLFTag+newUpdateLFTag pTagKey_ =+  UpdateLFTag'+    { catalogId = Prelude.Nothing,+      tagValuesToAdd = Prelude.Nothing,+      tagValuesToDelete = Prelude.Nothing,+      tagKey = pTagKey_+    }++-- | The identifier for the Data Catalog. By default, the account ID. The+-- Data Catalog is the persistent metadata store. It contains database+-- definitions, table definitions, and other control information to manage+-- your Lake Formation environment.+updateLFTag_catalogId :: Lens.Lens' UpdateLFTag (Prelude.Maybe Prelude.Text)+updateLFTag_catalogId = Lens.lens (\UpdateLFTag' {catalogId} -> catalogId) (\s@UpdateLFTag' {} a -> s {catalogId = a} :: UpdateLFTag)++-- | A list of LF-tag values to add from the LF-tag.+updateLFTag_tagValuesToAdd :: Lens.Lens' UpdateLFTag (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+updateLFTag_tagValuesToAdd = Lens.lens (\UpdateLFTag' {tagValuesToAdd} -> tagValuesToAdd) (\s@UpdateLFTag' {} a -> s {tagValuesToAdd = a} :: UpdateLFTag) Prelude.. Lens.mapping Lens.coerced++-- | A list of LF-tag values to delete from the LF-tag.+updateLFTag_tagValuesToDelete :: Lens.Lens' UpdateLFTag (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+updateLFTag_tagValuesToDelete = Lens.lens (\UpdateLFTag' {tagValuesToDelete} -> tagValuesToDelete) (\s@UpdateLFTag' {} a -> s {tagValuesToDelete = a} :: UpdateLFTag) Prelude.. Lens.mapping Lens.coerced++-- | The key-name for the LF-tag for which to add or delete values.+updateLFTag_tagKey :: Lens.Lens' UpdateLFTag Prelude.Text+updateLFTag_tagKey = Lens.lens (\UpdateLFTag' {tagKey} -> tagKey) (\s@UpdateLFTag' {} a -> s {tagKey = a} :: UpdateLFTag)++instance Core.AWSRequest UpdateLFTag where+  type AWSResponse UpdateLFTag = UpdateLFTagResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateLFTagResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateLFTag where+  hashWithSalt _salt UpdateLFTag' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` tagValuesToAdd+      `Prelude.hashWithSalt` tagValuesToDelete+      `Prelude.hashWithSalt` tagKey++instance Prelude.NFData UpdateLFTag where+  rnf UpdateLFTag' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf tagValuesToAdd+      `Prelude.seq` Prelude.rnf tagValuesToDelete+      `Prelude.seq` Prelude.rnf tagKey++instance Data.ToHeaders UpdateLFTag where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateLFTag where+  toJSON UpdateLFTag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("TagValuesToAdd" Data..=)+              Prelude.<$> tagValuesToAdd,+            ("TagValuesToDelete" Data..=)+              Prelude.<$> tagValuesToDelete,+            Prelude.Just ("TagKey" Data..= tagKey)+          ]+      )++instance Data.ToPath UpdateLFTag where+  toPath = Prelude.const "/UpdateLFTag"++instance Data.ToQuery UpdateLFTag where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateLFTagResponse' smart constructor.+data UpdateLFTagResponse = UpdateLFTagResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateLFTagResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateLFTagResponse_httpStatus' - The response's http status code.+newUpdateLFTagResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateLFTagResponse+newUpdateLFTagResponse pHttpStatus_ =+  UpdateLFTagResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+updateLFTagResponse_httpStatus :: Lens.Lens' UpdateLFTagResponse Prelude.Int+updateLFTagResponse_httpStatus = Lens.lens (\UpdateLFTagResponse' {httpStatus} -> httpStatus) (\s@UpdateLFTagResponse' {} a -> s {httpStatus = a} :: UpdateLFTagResponse)++instance Prelude.NFData UpdateLFTagResponse where+  rnf UpdateLFTagResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/UpdateResource.hs view
@@ -0,0 +1,170 @@+{-# 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.LakeFormation.UpdateResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the data access role used for vending access to the given+-- (registered) resource in Lake Formation.+module Amazonka.LakeFormation.UpdateResource+  ( -- * Creating a Request+    UpdateResource (..),+    newUpdateResource,++    -- * Request Lenses+    updateResource_roleArn,+    updateResource_resourceArn,++    -- * Destructuring the Response+    UpdateResourceResponse (..),+    newUpdateResourceResponse,++    -- * Response Lenses+    updateResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateResource' smart constructor.+data UpdateResource = UpdateResource'+  { -- | The new role to use for the given resource registered in Lake Formation.+    roleArn :: Prelude.Text,+    -- | The resource ARN.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'roleArn', 'updateResource_roleArn' - The new role to use for the given resource registered in Lake Formation.+--+-- 'resourceArn', 'updateResource_resourceArn' - The resource ARN.+newUpdateResource ::+  -- | 'roleArn'+  Prelude.Text ->+  -- | 'resourceArn'+  Prelude.Text ->+  UpdateResource+newUpdateResource pRoleArn_ pResourceArn_ =+  UpdateResource'+    { roleArn = pRoleArn_,+      resourceArn = pResourceArn_+    }++-- | The new role to use for the given resource registered in Lake Formation.+updateResource_roleArn :: Lens.Lens' UpdateResource Prelude.Text+updateResource_roleArn = Lens.lens (\UpdateResource' {roleArn} -> roleArn) (\s@UpdateResource' {} a -> s {roleArn = a} :: UpdateResource)++-- | The resource ARN.+updateResource_resourceArn :: Lens.Lens' UpdateResource Prelude.Text+updateResource_resourceArn = Lens.lens (\UpdateResource' {resourceArn} -> resourceArn) (\s@UpdateResource' {} a -> s {resourceArn = a} :: UpdateResource)++instance Core.AWSRequest UpdateResource where+  type+    AWSResponse UpdateResource =+      UpdateResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateResource where+  hashWithSalt _salt UpdateResource' {..} =+    _salt+      `Prelude.hashWithSalt` roleArn+      `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData UpdateResource where+  rnf UpdateResource' {..} =+    Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf resourceArn++instance Data.ToHeaders UpdateResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateResource where+  toJSON UpdateResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("RoleArn" Data..= roleArn),+            Prelude.Just ("ResourceArn" Data..= resourceArn)+          ]+      )++instance Data.ToPath UpdateResource where+  toPath = Prelude.const "/UpdateResource"++instance Data.ToQuery UpdateResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateResourceResponse' smart constructor.+data UpdateResourceResponse = UpdateResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateResourceResponse_httpStatus' - The response's http status code.+newUpdateResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateResourceResponse+newUpdateResourceResponse pHttpStatus_ =+  UpdateResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+updateResourceResponse_httpStatus :: Lens.Lens' UpdateResourceResponse Prelude.Int+updateResourceResponse_httpStatus = Lens.lens (\UpdateResourceResponse' {httpStatus} -> httpStatus) (\s@UpdateResourceResponse' {} a -> s {httpStatus = a} :: UpdateResourceResponse)++instance Prelude.NFData UpdateResourceResponse where+  rnf UpdateResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/UpdateTableObjects.hs view
@@ -0,0 +1,225 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.LakeFormation.UpdateTableObjects+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the manifest of Amazon S3 objects that make up the specified+-- governed table.+module Amazonka.LakeFormation.UpdateTableObjects+  ( -- * Creating a Request+    UpdateTableObjects (..),+    newUpdateTableObjects,++    -- * Request Lenses+    updateTableObjects_catalogId,+    updateTableObjects_transactionId,+    updateTableObjects_databaseName,+    updateTableObjects_tableName,+    updateTableObjects_writeOperations,++    -- * Destructuring the Response+    UpdateTableObjectsResponse (..),+    newUpdateTableObjectsResponse,++    -- * Response Lenses+    updateTableObjectsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateTableObjects' smart constructor.+data UpdateTableObjects = UpdateTableObjects'+  { -- | The catalog containing the governed table to update. Defaults to the+    -- caller’s account ID.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | The transaction at which to do the write.+    transactionId :: Prelude.Maybe Prelude.Text,+    -- | The database containing the governed table to update.+    databaseName :: Prelude.Text,+    -- | The governed table to update.+    tableName :: Prelude.Text,+    -- | A list of @WriteOperation@ objects that define an object to add to or+    -- delete from the manifest for a governed table.+    writeOperations :: Prelude.NonEmpty WriteOperation+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateTableObjects' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'updateTableObjects_catalogId' - The catalog containing the governed table to update. Defaults to the+-- caller’s account ID.+--+-- 'transactionId', 'updateTableObjects_transactionId' - The transaction at which to do the write.+--+-- 'databaseName', 'updateTableObjects_databaseName' - The database containing the governed table to update.+--+-- 'tableName', 'updateTableObjects_tableName' - The governed table to update.+--+-- 'writeOperations', 'updateTableObjects_writeOperations' - A list of @WriteOperation@ objects that define an object to add to or+-- delete from the manifest for a governed table.+newUpdateTableObjects ::+  -- | 'databaseName'+  Prelude.Text ->+  -- | 'tableName'+  Prelude.Text ->+  -- | 'writeOperations'+  Prelude.NonEmpty WriteOperation ->+  UpdateTableObjects+newUpdateTableObjects+  pDatabaseName_+  pTableName_+  pWriteOperations_ =+    UpdateTableObjects'+      { catalogId = Prelude.Nothing,+        transactionId = Prelude.Nothing,+        databaseName = pDatabaseName_,+        tableName = pTableName_,+        writeOperations =+          Lens.coerced Lens.# pWriteOperations_+      }++-- | The catalog containing the governed table to update. Defaults to the+-- caller’s account ID.+updateTableObjects_catalogId :: Lens.Lens' UpdateTableObjects (Prelude.Maybe Prelude.Text)+updateTableObjects_catalogId = Lens.lens (\UpdateTableObjects' {catalogId} -> catalogId) (\s@UpdateTableObjects' {} a -> s {catalogId = a} :: UpdateTableObjects)++-- | The transaction at which to do the write.+updateTableObjects_transactionId :: Lens.Lens' UpdateTableObjects (Prelude.Maybe Prelude.Text)+updateTableObjects_transactionId = Lens.lens (\UpdateTableObjects' {transactionId} -> transactionId) (\s@UpdateTableObjects' {} a -> s {transactionId = a} :: UpdateTableObjects)++-- | The database containing the governed table to update.+updateTableObjects_databaseName :: Lens.Lens' UpdateTableObjects Prelude.Text+updateTableObjects_databaseName = Lens.lens (\UpdateTableObjects' {databaseName} -> databaseName) (\s@UpdateTableObjects' {} a -> s {databaseName = a} :: UpdateTableObjects)++-- | The governed table to update.+updateTableObjects_tableName :: Lens.Lens' UpdateTableObjects Prelude.Text+updateTableObjects_tableName = Lens.lens (\UpdateTableObjects' {tableName} -> tableName) (\s@UpdateTableObjects' {} a -> s {tableName = a} :: UpdateTableObjects)++-- | A list of @WriteOperation@ objects that define an object to add to or+-- delete from the manifest for a governed table.+updateTableObjects_writeOperations :: Lens.Lens' UpdateTableObjects (Prelude.NonEmpty WriteOperation)+updateTableObjects_writeOperations = Lens.lens (\UpdateTableObjects' {writeOperations} -> writeOperations) (\s@UpdateTableObjects' {} a -> s {writeOperations = a} :: UpdateTableObjects) Prelude.. Lens.coerced++instance Core.AWSRequest UpdateTableObjects where+  type+    AWSResponse UpdateTableObjects =+      UpdateTableObjectsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateTableObjectsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateTableObjects where+  hashWithSalt _salt UpdateTableObjects' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` transactionId+      `Prelude.hashWithSalt` databaseName+      `Prelude.hashWithSalt` tableName+      `Prelude.hashWithSalt` writeOperations++instance Prelude.NFData UpdateTableObjects where+  rnf UpdateTableObjects' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf transactionId+      `Prelude.seq` Prelude.rnf databaseName+      `Prelude.seq` Prelude.rnf tableName+      `Prelude.seq` Prelude.rnf writeOperations++instance Data.ToHeaders UpdateTableObjects where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateTableObjects where+  toJSON UpdateTableObjects' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            ("TransactionId" Data..=) Prelude.<$> transactionId,+            Prelude.Just ("DatabaseName" Data..= databaseName),+            Prelude.Just ("TableName" Data..= tableName),+            Prelude.Just+              ("WriteOperations" Data..= writeOperations)+          ]+      )++instance Data.ToPath UpdateTableObjects where+  toPath = Prelude.const "/UpdateTableObjects"++instance Data.ToQuery UpdateTableObjects where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateTableObjectsResponse' smart constructor.+data UpdateTableObjectsResponse = UpdateTableObjectsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateTableObjectsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateTableObjectsResponse_httpStatus' - The response's http status code.+newUpdateTableObjectsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateTableObjectsResponse+newUpdateTableObjectsResponse pHttpStatus_ =+  UpdateTableObjectsResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+updateTableObjectsResponse_httpStatus :: Lens.Lens' UpdateTableObjectsResponse Prelude.Int+updateTableObjectsResponse_httpStatus = Lens.lens (\UpdateTableObjectsResponse' {httpStatus} -> httpStatus) (\s@UpdateTableObjectsResponse' {} a -> s {httpStatus = a} :: UpdateTableObjectsResponse)++instance Prelude.NFData UpdateTableObjectsResponse where+  rnf UpdateTableObjectsResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/UpdateTableStorageOptimizer.hs view
@@ -0,0 +1,219 @@+{-# 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.LakeFormation.UpdateTableStorageOptimizer+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the configuration of the storage optimizers for a table.+module Amazonka.LakeFormation.UpdateTableStorageOptimizer+  ( -- * Creating a Request+    UpdateTableStorageOptimizer (..),+    newUpdateTableStorageOptimizer,++    -- * Request Lenses+    updateTableStorageOptimizer_catalogId,+    updateTableStorageOptimizer_databaseName,+    updateTableStorageOptimizer_tableName,+    updateTableStorageOptimizer_storageOptimizerConfig,++    -- * Destructuring the Response+    UpdateTableStorageOptimizerResponse (..),+    newUpdateTableStorageOptimizerResponse,++    -- * Response Lenses+    updateTableStorageOptimizerResponse_result,+    updateTableStorageOptimizerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateTableStorageOptimizer' smart constructor.+data UpdateTableStorageOptimizer = UpdateTableStorageOptimizer'+  { -- | The Catalog ID of the table.+    catalogId :: Prelude.Maybe Prelude.Text,+    -- | Name of the database where the table is present.+    databaseName :: Prelude.Text,+    -- | Name of the table for which to enable the storage optimizer.+    tableName :: Prelude.Text,+    -- | Name of the table for which to enable the storage optimizer.+    storageOptimizerConfig :: Prelude.HashMap OptimizerType (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateTableStorageOptimizer' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogId', 'updateTableStorageOptimizer_catalogId' - The Catalog ID of the table.+--+-- 'databaseName', 'updateTableStorageOptimizer_databaseName' - Name of the database where the table is present.+--+-- 'tableName', 'updateTableStorageOptimizer_tableName' - Name of the table for which to enable the storage optimizer.+--+-- 'storageOptimizerConfig', 'updateTableStorageOptimizer_storageOptimizerConfig' - Name of the table for which to enable the storage optimizer.+newUpdateTableStorageOptimizer ::+  -- | 'databaseName'+  Prelude.Text ->+  -- | 'tableName'+  Prelude.Text ->+  UpdateTableStorageOptimizer+newUpdateTableStorageOptimizer+  pDatabaseName_+  pTableName_ =+    UpdateTableStorageOptimizer'+      { catalogId =+          Prelude.Nothing,+        databaseName = pDatabaseName_,+        tableName = pTableName_,+        storageOptimizerConfig = Prelude.mempty+      }++-- | The Catalog ID of the table.+updateTableStorageOptimizer_catalogId :: Lens.Lens' UpdateTableStorageOptimizer (Prelude.Maybe Prelude.Text)+updateTableStorageOptimizer_catalogId = Lens.lens (\UpdateTableStorageOptimizer' {catalogId} -> catalogId) (\s@UpdateTableStorageOptimizer' {} a -> s {catalogId = a} :: UpdateTableStorageOptimizer)++-- | Name of the database where the table is present.+updateTableStorageOptimizer_databaseName :: Lens.Lens' UpdateTableStorageOptimizer Prelude.Text+updateTableStorageOptimizer_databaseName = Lens.lens (\UpdateTableStorageOptimizer' {databaseName} -> databaseName) (\s@UpdateTableStorageOptimizer' {} a -> s {databaseName = a} :: UpdateTableStorageOptimizer)++-- | Name of the table for which to enable the storage optimizer.+updateTableStorageOptimizer_tableName :: Lens.Lens' UpdateTableStorageOptimizer Prelude.Text+updateTableStorageOptimizer_tableName = Lens.lens (\UpdateTableStorageOptimizer' {tableName} -> tableName) (\s@UpdateTableStorageOptimizer' {} a -> s {tableName = a} :: UpdateTableStorageOptimizer)++-- | Name of the table for which to enable the storage optimizer.+updateTableStorageOptimizer_storageOptimizerConfig :: Lens.Lens' UpdateTableStorageOptimizer (Prelude.HashMap OptimizerType (Prelude.HashMap Prelude.Text Prelude.Text))+updateTableStorageOptimizer_storageOptimizerConfig = Lens.lens (\UpdateTableStorageOptimizer' {storageOptimizerConfig} -> storageOptimizerConfig) (\s@UpdateTableStorageOptimizer' {} a -> s {storageOptimizerConfig = a} :: UpdateTableStorageOptimizer) Prelude.. Lens.coerced++instance Core.AWSRequest UpdateTableStorageOptimizer where+  type+    AWSResponse UpdateTableStorageOptimizer =+      UpdateTableStorageOptimizerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateTableStorageOptimizerResponse'+            Prelude.<$> (x Data..?> "Result")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateTableStorageOptimizer where+  hashWithSalt _salt UpdateTableStorageOptimizer' {..} =+    _salt+      `Prelude.hashWithSalt` catalogId+      `Prelude.hashWithSalt` databaseName+      `Prelude.hashWithSalt` tableName+      `Prelude.hashWithSalt` storageOptimizerConfig++instance Prelude.NFData UpdateTableStorageOptimizer where+  rnf UpdateTableStorageOptimizer' {..} =+    Prelude.rnf catalogId+      `Prelude.seq` Prelude.rnf databaseName+      `Prelude.seq` Prelude.rnf tableName+      `Prelude.seq` Prelude.rnf storageOptimizerConfig++instance Data.ToHeaders UpdateTableStorageOptimizer where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateTableStorageOptimizer where+  toJSON UpdateTableStorageOptimizer' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CatalogId" Data..=) Prelude.<$> catalogId,+            Prelude.Just ("DatabaseName" Data..= databaseName),+            Prelude.Just ("TableName" Data..= tableName),+            Prelude.Just+              ( "StorageOptimizerConfig"+                  Data..= storageOptimizerConfig+              )+          ]+      )++instance Data.ToPath UpdateTableStorageOptimizer where+  toPath = Prelude.const "/UpdateTableStorageOptimizer"++instance Data.ToQuery UpdateTableStorageOptimizer where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateTableStorageOptimizerResponse' smart constructor.+data UpdateTableStorageOptimizerResponse = UpdateTableStorageOptimizerResponse'+  { -- | A response indicating the success of failure of the operation.+    result :: 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 'UpdateTableStorageOptimizerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'result', 'updateTableStorageOptimizerResponse_result' - A response indicating the success of failure of the operation.+--+-- 'httpStatus', 'updateTableStorageOptimizerResponse_httpStatus' - The response's http status code.+newUpdateTableStorageOptimizerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateTableStorageOptimizerResponse+newUpdateTableStorageOptimizerResponse pHttpStatus_ =+  UpdateTableStorageOptimizerResponse'+    { result =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A response indicating the success of failure of the operation.+updateTableStorageOptimizerResponse_result :: Lens.Lens' UpdateTableStorageOptimizerResponse (Prelude.Maybe Prelude.Text)+updateTableStorageOptimizerResponse_result = Lens.lens (\UpdateTableStorageOptimizerResponse' {result} -> result) (\s@UpdateTableStorageOptimizerResponse' {} a -> s {result = a} :: UpdateTableStorageOptimizerResponse)++-- | The response's http status code.+updateTableStorageOptimizerResponse_httpStatus :: Lens.Lens' UpdateTableStorageOptimizerResponse Prelude.Int+updateTableStorageOptimizerResponse_httpStatus = Lens.lens (\UpdateTableStorageOptimizerResponse' {httpStatus} -> httpStatus) (\s@UpdateTableStorageOptimizerResponse' {} a -> s {httpStatus = a} :: UpdateTableStorageOptimizerResponse)++instance+  Prelude.NFData+    UpdateTableStorageOptimizerResponse+  where+  rnf UpdateTableStorageOptimizerResponse' {..} =+    Prelude.rnf result+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/LakeFormation/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.LakeFormation.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.LakeFormation.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.LakeFormation.Lens+import Amazonka.LakeFormation.Types+import qualified Amazonka.Prelude as Prelude
+ 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.LakeFormation+import Test.Amazonka.LakeFormation.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "LakeFormation"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/LakeFormation.hs view
@@ -0,0 +1,930 @@+{-# 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.LakeFormation+-- Copyright   : (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.LakeFormation where++import Amazonka.LakeFormation+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.LakeFormation.Internal+import Test.Amazonka.Prelude+import Test.Tasty++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+--     [ testGroup "request"+--         [ requestAddLFTagsToResource $+--             newAddLFTagsToResource+--+--         , requestAssumeDecoratedRoleWithSAML $+--             newAssumeDecoratedRoleWithSAML+--+--         , requestBatchGrantPermissions $+--             newBatchGrantPermissions+--+--         , requestBatchRevokePermissions $+--             newBatchRevokePermissions+--+--         , requestCancelTransaction $+--             newCancelTransaction+--+--         , requestCommitTransaction $+--             newCommitTransaction+--+--         , requestCreateDataCellsFilter $+--             newCreateDataCellsFilter+--+--         , requestCreateLFTag $+--             newCreateLFTag+--+--         , requestDeleteDataCellsFilter $+--             newDeleteDataCellsFilter+--+--         , requestDeleteLFTag $+--             newDeleteLFTag+--+--         , requestDeleteObjectsOnCancel $+--             newDeleteObjectsOnCancel+--+--         , requestDeregisterResource $+--             newDeregisterResource+--+--         , requestDescribeResource $+--             newDescribeResource+--+--         , requestDescribeTransaction $+--             newDescribeTransaction+--+--         , requestExtendTransaction $+--             newExtendTransaction+--+--         , requestGetDataLakeSettings $+--             newGetDataLakeSettings+--+--         , requestGetEffectivePermissionsForPath $+--             newGetEffectivePermissionsForPath+--+--         , requestGetLFTag $+--             newGetLFTag+--+--         , requestGetQueryState $+--             newGetQueryState+--+--         , requestGetQueryStatistics $+--             newGetQueryStatistics+--+--         , requestGetResourceLFTags $+--             newGetResourceLFTags+--+--         , requestGetTableObjects $+--             newGetTableObjects+--+--         , requestGetTemporaryGluePartitionCredentials $+--             newGetTemporaryGluePartitionCredentials+--+--         , requestGetTemporaryGlueTableCredentials $+--             newGetTemporaryGlueTableCredentials+--+--         , requestGetWorkUnitResults $+--             newGetWorkUnitResults+--+--         , requestGetWorkUnits $+--             newGetWorkUnits+--+--         , requestGrantPermissions $+--             newGrantPermissions+--+--         , requestListDataCellsFilter $+--             newListDataCellsFilter+--+--         , requestListLFTags $+--             newListLFTags+--+--         , requestListPermissions $+--             newListPermissions+--+--         , requestListResources $+--             newListResources+--+--         , requestListTableStorageOptimizers $+--             newListTableStorageOptimizers+--+--         , requestListTransactions $+--             newListTransactions+--+--         , requestPutDataLakeSettings $+--             newPutDataLakeSettings+--+--         , requestRegisterResource $+--             newRegisterResource+--+--         , requestRemoveLFTagsFromResource $+--             newRemoveLFTagsFromResource+--+--         , requestRevokePermissions $+--             newRevokePermissions+--+--         , requestSearchDatabasesByLFTags $+--             newSearchDatabasesByLFTags+--+--         , requestSearchTablesByLFTags $+--             newSearchTablesByLFTags+--+--         , requestStartQueryPlanning $+--             newStartQueryPlanning+--+--         , requestStartTransaction $+--             newStartTransaction+--+--         , requestUpdateLFTag $+--             newUpdateLFTag+--+--         , requestUpdateResource $+--             newUpdateResource+--+--         , requestUpdateTableObjects $+--             newUpdateTableObjects+--+--         , requestUpdateTableStorageOptimizer $+--             newUpdateTableStorageOptimizer+--+--           ]++--     , testGroup "response"+--         [ responseAddLFTagsToResource $+--             newAddLFTagsToResourceResponse+--+--         , responseAssumeDecoratedRoleWithSAML $+--             newAssumeDecoratedRoleWithSAMLResponse+--+--         , responseBatchGrantPermissions $+--             newBatchGrantPermissionsResponse+--+--         , responseBatchRevokePermissions $+--             newBatchRevokePermissionsResponse+--+--         , responseCancelTransaction $+--             newCancelTransactionResponse+--+--         , responseCommitTransaction $+--             newCommitTransactionResponse+--+--         , responseCreateDataCellsFilter $+--             newCreateDataCellsFilterResponse+--+--         , responseCreateLFTag $+--             newCreateLFTagResponse+--+--         , responseDeleteDataCellsFilter $+--             newDeleteDataCellsFilterResponse+--+--         , responseDeleteLFTag $+--             newDeleteLFTagResponse+--+--         , responseDeleteObjectsOnCancel $+--             newDeleteObjectsOnCancelResponse+--+--         , responseDeregisterResource $+--             newDeregisterResourceResponse+--+--         , responseDescribeResource $+--             newDescribeResourceResponse+--+--         , responseDescribeTransaction $+--             newDescribeTransactionResponse+--+--         , responseExtendTransaction $+--             newExtendTransactionResponse+--+--         , responseGetDataLakeSettings $+--             newGetDataLakeSettingsResponse+--+--         , responseGetEffectivePermissionsForPath $+--             newGetEffectivePermissionsForPathResponse+--+--         , responseGetLFTag $+--             newGetLFTagResponse+--+--         , responseGetQueryState $+--             newGetQueryStateResponse+--+--         , responseGetQueryStatistics $+--             newGetQueryStatisticsResponse+--+--         , responseGetResourceLFTags $+--             newGetResourceLFTagsResponse+--+--         , responseGetTableObjects $+--             newGetTableObjectsResponse+--+--         , responseGetTemporaryGluePartitionCredentials $+--             newGetTemporaryGluePartitionCredentialsResponse+--+--         , responseGetTemporaryGlueTableCredentials $+--             newGetTemporaryGlueTableCredentialsResponse+--+--         , responseGetWorkUnitResults $+--             newGetWorkUnitResultsResponse+--+--         , responseGetWorkUnits $+--             newGetWorkUnitsResponse+--+--         , responseGrantPermissions $+--             newGrantPermissionsResponse+--+--         , responseListDataCellsFilter $+--             newListDataCellsFilterResponse+--+--         , responseListLFTags $+--             newListLFTagsResponse+--+--         , responseListPermissions $+--             newListPermissionsResponse+--+--         , responseListResources $+--             newListResourcesResponse+--+--         , responseListTableStorageOptimizers $+--             newListTableStorageOptimizersResponse+--+--         , responseListTransactions $+--             newListTransactionsResponse+--+--         , responsePutDataLakeSettings $+--             newPutDataLakeSettingsResponse+--+--         , responseRegisterResource $+--             newRegisterResourceResponse+--+--         , responseRemoveLFTagsFromResource $+--             newRemoveLFTagsFromResourceResponse+--+--         , responseRevokePermissions $+--             newRevokePermissionsResponse+--+--         , responseSearchDatabasesByLFTags $+--             newSearchDatabasesByLFTagsResponse+--+--         , responseSearchTablesByLFTags $+--             newSearchTablesByLFTagsResponse+--+--         , responseStartQueryPlanning $+--             newStartQueryPlanningResponse+--+--         , responseStartTransaction $+--             newStartTransactionResponse+--+--         , responseUpdateLFTag $+--             newUpdateLFTagResponse+--+--         , responseUpdateResource $+--             newUpdateResourceResponse+--+--         , responseUpdateTableObjects $+--             newUpdateTableObjectsResponse+--+--         , responseUpdateTableStorageOptimizer $+--             newUpdateTableStorageOptimizerResponse+--+--           ]+--     ]++-- Requests++requestAddLFTagsToResource :: AddLFTagsToResource -> TestTree+requestAddLFTagsToResource =+  req+    "AddLFTagsToResource"+    "fixture/AddLFTagsToResource.yaml"++requestAssumeDecoratedRoleWithSAML :: AssumeDecoratedRoleWithSAML -> TestTree+requestAssumeDecoratedRoleWithSAML =+  req+    "AssumeDecoratedRoleWithSAML"+    "fixture/AssumeDecoratedRoleWithSAML.yaml"++requestBatchGrantPermissions :: BatchGrantPermissions -> TestTree+requestBatchGrantPermissions =+  req+    "BatchGrantPermissions"+    "fixture/BatchGrantPermissions.yaml"++requestBatchRevokePermissions :: BatchRevokePermissions -> TestTree+requestBatchRevokePermissions =+  req+    "BatchRevokePermissions"+    "fixture/BatchRevokePermissions.yaml"++requestCancelTransaction :: CancelTransaction -> TestTree+requestCancelTransaction =+  req+    "CancelTransaction"+    "fixture/CancelTransaction.yaml"++requestCommitTransaction :: CommitTransaction -> TestTree+requestCommitTransaction =+  req+    "CommitTransaction"+    "fixture/CommitTransaction.yaml"++requestCreateDataCellsFilter :: CreateDataCellsFilter -> TestTree+requestCreateDataCellsFilter =+  req+    "CreateDataCellsFilter"+    "fixture/CreateDataCellsFilter.yaml"++requestCreateLFTag :: CreateLFTag -> TestTree+requestCreateLFTag =+  req+    "CreateLFTag"+    "fixture/CreateLFTag.yaml"++requestDeleteDataCellsFilter :: DeleteDataCellsFilter -> TestTree+requestDeleteDataCellsFilter =+  req+    "DeleteDataCellsFilter"+    "fixture/DeleteDataCellsFilter.yaml"++requestDeleteLFTag :: DeleteLFTag -> TestTree+requestDeleteLFTag =+  req+    "DeleteLFTag"+    "fixture/DeleteLFTag.yaml"++requestDeleteObjectsOnCancel :: DeleteObjectsOnCancel -> TestTree+requestDeleteObjectsOnCancel =+  req+    "DeleteObjectsOnCancel"+    "fixture/DeleteObjectsOnCancel.yaml"++requestDeregisterResource :: DeregisterResource -> TestTree+requestDeregisterResource =+  req+    "DeregisterResource"+    "fixture/DeregisterResource.yaml"++requestDescribeResource :: DescribeResource -> TestTree+requestDescribeResource =+  req+    "DescribeResource"+    "fixture/DescribeResource.yaml"++requestDescribeTransaction :: DescribeTransaction -> TestTree+requestDescribeTransaction =+  req+    "DescribeTransaction"+    "fixture/DescribeTransaction.yaml"++requestExtendTransaction :: ExtendTransaction -> TestTree+requestExtendTransaction =+  req+    "ExtendTransaction"+    "fixture/ExtendTransaction.yaml"++requestGetDataLakeSettings :: GetDataLakeSettings -> TestTree+requestGetDataLakeSettings =+  req+    "GetDataLakeSettings"+    "fixture/GetDataLakeSettings.yaml"++requestGetEffectivePermissionsForPath :: GetEffectivePermissionsForPath -> TestTree+requestGetEffectivePermissionsForPath =+  req+    "GetEffectivePermissionsForPath"+    "fixture/GetEffectivePermissionsForPath.yaml"++requestGetLFTag :: GetLFTag -> TestTree+requestGetLFTag =+  req+    "GetLFTag"+    "fixture/GetLFTag.yaml"++requestGetQueryState :: GetQueryState -> TestTree+requestGetQueryState =+  req+    "GetQueryState"+    "fixture/GetQueryState.yaml"++requestGetQueryStatistics :: GetQueryStatistics -> TestTree+requestGetQueryStatistics =+  req+    "GetQueryStatistics"+    "fixture/GetQueryStatistics.yaml"++requestGetResourceLFTags :: GetResourceLFTags -> TestTree+requestGetResourceLFTags =+  req+    "GetResourceLFTags"+    "fixture/GetResourceLFTags.yaml"++requestGetTableObjects :: GetTableObjects -> TestTree+requestGetTableObjects =+  req+    "GetTableObjects"+    "fixture/GetTableObjects.yaml"++requestGetTemporaryGluePartitionCredentials :: GetTemporaryGluePartitionCredentials -> TestTree+requestGetTemporaryGluePartitionCredentials =+  req+    "GetTemporaryGluePartitionCredentials"+    "fixture/GetTemporaryGluePartitionCredentials.yaml"++requestGetTemporaryGlueTableCredentials :: GetTemporaryGlueTableCredentials -> TestTree+requestGetTemporaryGlueTableCredentials =+  req+    "GetTemporaryGlueTableCredentials"+    "fixture/GetTemporaryGlueTableCredentials.yaml"++requestGetWorkUnitResults :: GetWorkUnitResults -> TestTree+requestGetWorkUnitResults =+  req+    "GetWorkUnitResults"+    "fixture/GetWorkUnitResults.yaml"++requestGetWorkUnits :: GetWorkUnits -> TestTree+requestGetWorkUnits =+  req+    "GetWorkUnits"+    "fixture/GetWorkUnits.yaml"++requestGrantPermissions :: GrantPermissions -> TestTree+requestGrantPermissions =+  req+    "GrantPermissions"+    "fixture/GrantPermissions.yaml"++requestListDataCellsFilter :: ListDataCellsFilter -> TestTree+requestListDataCellsFilter =+  req+    "ListDataCellsFilter"+    "fixture/ListDataCellsFilter.yaml"++requestListLFTags :: ListLFTags -> TestTree+requestListLFTags =+  req+    "ListLFTags"+    "fixture/ListLFTags.yaml"++requestListPermissions :: ListPermissions -> TestTree+requestListPermissions =+  req+    "ListPermissions"+    "fixture/ListPermissions.yaml"++requestListResources :: ListResources -> TestTree+requestListResources =+  req+    "ListResources"+    "fixture/ListResources.yaml"++requestListTableStorageOptimizers :: ListTableStorageOptimizers -> TestTree+requestListTableStorageOptimizers =+  req+    "ListTableStorageOptimizers"+    "fixture/ListTableStorageOptimizers.yaml"++requestListTransactions :: ListTransactions -> TestTree+requestListTransactions =+  req+    "ListTransactions"+    "fixture/ListTransactions.yaml"++requestPutDataLakeSettings :: PutDataLakeSettings -> TestTree+requestPutDataLakeSettings =+  req+    "PutDataLakeSettings"+    "fixture/PutDataLakeSettings.yaml"++requestRegisterResource :: RegisterResource -> TestTree+requestRegisterResource =+  req+    "RegisterResource"+    "fixture/RegisterResource.yaml"++requestRemoveLFTagsFromResource :: RemoveLFTagsFromResource -> TestTree+requestRemoveLFTagsFromResource =+  req+    "RemoveLFTagsFromResource"+    "fixture/RemoveLFTagsFromResource.yaml"++requestRevokePermissions :: RevokePermissions -> TestTree+requestRevokePermissions =+  req+    "RevokePermissions"+    "fixture/RevokePermissions.yaml"++requestSearchDatabasesByLFTags :: SearchDatabasesByLFTags -> TestTree+requestSearchDatabasesByLFTags =+  req+    "SearchDatabasesByLFTags"+    "fixture/SearchDatabasesByLFTags.yaml"++requestSearchTablesByLFTags :: SearchTablesByLFTags -> TestTree+requestSearchTablesByLFTags =+  req+    "SearchTablesByLFTags"+    "fixture/SearchTablesByLFTags.yaml"++requestStartQueryPlanning :: StartQueryPlanning -> TestTree+requestStartQueryPlanning =+  req+    "StartQueryPlanning"+    "fixture/StartQueryPlanning.yaml"++requestStartTransaction :: StartTransaction -> TestTree+requestStartTransaction =+  req+    "StartTransaction"+    "fixture/StartTransaction.yaml"++requestUpdateLFTag :: UpdateLFTag -> TestTree+requestUpdateLFTag =+  req+    "UpdateLFTag"+    "fixture/UpdateLFTag.yaml"++requestUpdateResource :: UpdateResource -> TestTree+requestUpdateResource =+  req+    "UpdateResource"+    "fixture/UpdateResource.yaml"++requestUpdateTableObjects :: UpdateTableObjects -> TestTree+requestUpdateTableObjects =+  req+    "UpdateTableObjects"+    "fixture/UpdateTableObjects.yaml"++requestUpdateTableStorageOptimizer :: UpdateTableStorageOptimizer -> TestTree+requestUpdateTableStorageOptimizer =+  req+    "UpdateTableStorageOptimizer"+    "fixture/UpdateTableStorageOptimizer.yaml"++-- Responses++responseAddLFTagsToResource :: AddLFTagsToResourceResponse -> TestTree+responseAddLFTagsToResource =+  res+    "AddLFTagsToResourceResponse"+    "fixture/AddLFTagsToResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AddLFTagsToResource)++responseAssumeDecoratedRoleWithSAML :: AssumeDecoratedRoleWithSAMLResponse -> TestTree+responseAssumeDecoratedRoleWithSAML =+  res+    "AssumeDecoratedRoleWithSAMLResponse"+    "fixture/AssumeDecoratedRoleWithSAMLResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AssumeDecoratedRoleWithSAML)++responseBatchGrantPermissions :: BatchGrantPermissionsResponse -> TestTree+responseBatchGrantPermissions =+  res+    "BatchGrantPermissionsResponse"+    "fixture/BatchGrantPermissionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchGrantPermissions)++responseBatchRevokePermissions :: BatchRevokePermissionsResponse -> TestTree+responseBatchRevokePermissions =+  res+    "BatchRevokePermissionsResponse"+    "fixture/BatchRevokePermissionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchRevokePermissions)++responseCancelTransaction :: CancelTransactionResponse -> TestTree+responseCancelTransaction =+  res+    "CancelTransactionResponse"+    "fixture/CancelTransactionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CancelTransaction)++responseCommitTransaction :: CommitTransactionResponse -> TestTree+responseCommitTransaction =+  res+    "CommitTransactionResponse"+    "fixture/CommitTransactionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CommitTransaction)++responseCreateDataCellsFilter :: CreateDataCellsFilterResponse -> TestTree+responseCreateDataCellsFilter =+  res+    "CreateDataCellsFilterResponse"+    "fixture/CreateDataCellsFilterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateDataCellsFilter)++responseCreateLFTag :: CreateLFTagResponse -> TestTree+responseCreateLFTag =+  res+    "CreateLFTagResponse"+    "fixture/CreateLFTagResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateLFTag)++responseDeleteDataCellsFilter :: DeleteDataCellsFilterResponse -> TestTree+responseDeleteDataCellsFilter =+  res+    "DeleteDataCellsFilterResponse"+    "fixture/DeleteDataCellsFilterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteDataCellsFilter)++responseDeleteLFTag :: DeleteLFTagResponse -> TestTree+responseDeleteLFTag =+  res+    "DeleteLFTagResponse"+    "fixture/DeleteLFTagResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteLFTag)++responseDeleteObjectsOnCancel :: DeleteObjectsOnCancelResponse -> TestTree+responseDeleteObjectsOnCancel =+  res+    "DeleteObjectsOnCancelResponse"+    "fixture/DeleteObjectsOnCancelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteObjectsOnCancel)++responseDeregisterResource :: DeregisterResourceResponse -> TestTree+responseDeregisterResource =+  res+    "DeregisterResourceResponse"+    "fixture/DeregisterResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeregisterResource)++responseDescribeResource :: DescribeResourceResponse -> TestTree+responseDescribeResource =+  res+    "DescribeResourceResponse"+    "fixture/DescribeResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeResource)++responseDescribeTransaction :: DescribeTransactionResponse -> TestTree+responseDescribeTransaction =+  res+    "DescribeTransactionResponse"+    "fixture/DescribeTransactionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeTransaction)++responseExtendTransaction :: ExtendTransactionResponse -> TestTree+responseExtendTransaction =+  res+    "ExtendTransactionResponse"+    "fixture/ExtendTransactionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ExtendTransaction)++responseGetDataLakeSettings :: GetDataLakeSettingsResponse -> TestTree+responseGetDataLakeSettings =+  res+    "GetDataLakeSettingsResponse"+    "fixture/GetDataLakeSettingsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDataLakeSettings)++responseGetEffectivePermissionsForPath :: GetEffectivePermissionsForPathResponse -> TestTree+responseGetEffectivePermissionsForPath =+  res+    "GetEffectivePermissionsForPathResponse"+    "fixture/GetEffectivePermissionsForPathResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetEffectivePermissionsForPath)++responseGetLFTag :: GetLFTagResponse -> TestTree+responseGetLFTag =+  res+    "GetLFTagResponse"+    "fixture/GetLFTagResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetLFTag)++responseGetQueryState :: GetQueryStateResponse -> TestTree+responseGetQueryState =+  res+    "GetQueryStateResponse"+    "fixture/GetQueryStateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetQueryState)++responseGetQueryStatistics :: GetQueryStatisticsResponse -> TestTree+responseGetQueryStatistics =+  res+    "GetQueryStatisticsResponse"+    "fixture/GetQueryStatisticsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetQueryStatistics)++responseGetResourceLFTags :: GetResourceLFTagsResponse -> TestTree+responseGetResourceLFTags =+  res+    "GetResourceLFTagsResponse"+    "fixture/GetResourceLFTagsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetResourceLFTags)++responseGetTableObjects :: GetTableObjectsResponse -> TestTree+responseGetTableObjects =+  res+    "GetTableObjectsResponse"+    "fixture/GetTableObjectsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetTableObjects)++responseGetTemporaryGluePartitionCredentials :: GetTemporaryGluePartitionCredentialsResponse -> TestTree+responseGetTemporaryGluePartitionCredentials =+  res+    "GetTemporaryGluePartitionCredentialsResponse"+    "fixture/GetTemporaryGluePartitionCredentialsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetTemporaryGluePartitionCredentials)++responseGetTemporaryGlueTableCredentials :: GetTemporaryGlueTableCredentialsResponse -> TestTree+responseGetTemporaryGlueTableCredentials =+  res+    "GetTemporaryGlueTableCredentialsResponse"+    "fixture/GetTemporaryGlueTableCredentialsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetTemporaryGlueTableCredentials)++responseGetWorkUnits :: GetWorkUnitsResponse -> TestTree+responseGetWorkUnits =+  res+    "GetWorkUnitsResponse"+    "fixture/GetWorkUnitsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetWorkUnits)++responseGrantPermissions :: GrantPermissionsResponse -> TestTree+responseGrantPermissions =+  res+    "GrantPermissionsResponse"+    "fixture/GrantPermissionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GrantPermissions)++responseListDataCellsFilter :: ListDataCellsFilterResponse -> TestTree+responseListDataCellsFilter =+  res+    "ListDataCellsFilterResponse"+    "fixture/ListDataCellsFilterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListDataCellsFilter)++responseListLFTags :: ListLFTagsResponse -> TestTree+responseListLFTags =+  res+    "ListLFTagsResponse"+    "fixture/ListLFTagsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListLFTags)++responseListPermissions :: ListPermissionsResponse -> TestTree+responseListPermissions =+  res+    "ListPermissionsResponse"+    "fixture/ListPermissionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListPermissions)++responseListResources :: ListResourcesResponse -> TestTree+responseListResources =+  res+    "ListResourcesResponse"+    "fixture/ListResourcesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListResources)++responseListTableStorageOptimizers :: ListTableStorageOptimizersResponse -> TestTree+responseListTableStorageOptimizers =+  res+    "ListTableStorageOptimizersResponse"+    "fixture/ListTableStorageOptimizersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTableStorageOptimizers)++responseListTransactions :: ListTransactionsResponse -> TestTree+responseListTransactions =+  res+    "ListTransactionsResponse"+    "fixture/ListTransactionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTransactions)++responsePutDataLakeSettings :: PutDataLakeSettingsResponse -> TestTree+responsePutDataLakeSettings =+  res+    "PutDataLakeSettingsResponse"+    "fixture/PutDataLakeSettingsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutDataLakeSettings)++responseRegisterResource :: RegisterResourceResponse -> TestTree+responseRegisterResource =+  res+    "RegisterResourceResponse"+    "fixture/RegisterResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy RegisterResource)++responseRemoveLFTagsFromResource :: RemoveLFTagsFromResourceResponse -> TestTree+responseRemoveLFTagsFromResource =+  res+    "RemoveLFTagsFromResourceResponse"+    "fixture/RemoveLFTagsFromResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy RemoveLFTagsFromResource)++responseRevokePermissions :: RevokePermissionsResponse -> TestTree+responseRevokePermissions =+  res+    "RevokePermissionsResponse"+    "fixture/RevokePermissionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy RevokePermissions)++responseSearchDatabasesByLFTags :: SearchDatabasesByLFTagsResponse -> TestTree+responseSearchDatabasesByLFTags =+  res+    "SearchDatabasesByLFTagsResponse"+    "fixture/SearchDatabasesByLFTagsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SearchDatabasesByLFTags)++responseSearchTablesByLFTags :: SearchTablesByLFTagsResponse -> TestTree+responseSearchTablesByLFTags =+  res+    "SearchTablesByLFTagsResponse"+    "fixture/SearchTablesByLFTagsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SearchTablesByLFTags)++responseStartQueryPlanning :: StartQueryPlanningResponse -> TestTree+responseStartQueryPlanning =+  res+    "StartQueryPlanningResponse"+    "fixture/StartQueryPlanningResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartQueryPlanning)++responseStartTransaction :: StartTransactionResponse -> TestTree+responseStartTransaction =+  res+    "StartTransactionResponse"+    "fixture/StartTransactionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartTransaction)++responseUpdateLFTag :: UpdateLFTagResponse -> TestTree+responseUpdateLFTag =+  res+    "UpdateLFTagResponse"+    "fixture/UpdateLFTagResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateLFTag)++responseUpdateResource :: UpdateResourceResponse -> TestTree+responseUpdateResource =+  res+    "UpdateResourceResponse"+    "fixture/UpdateResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateResource)++responseUpdateTableObjects :: UpdateTableObjectsResponse -> TestTree+responseUpdateTableObjects =+  res+    "UpdateTableObjectsResponse"+    "fixture/UpdateTableObjectsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateTableObjects)++responseUpdateTableStorageOptimizer :: UpdateTableStorageOptimizerResponse -> TestTree+responseUpdateTableStorageOptimizer =+  res+    "UpdateTableStorageOptimizerResponse"+    "fixture/UpdateTableStorageOptimizerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateTableStorageOptimizer)
+ test/Test/Amazonka/LakeFormation.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.LakeFormation+-- Copyright   : (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.LakeFormation+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/LakeFormation/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.LakeFormation.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.LakeFormation.Internal where