packages feed

amazonka-memorydb (empty) → 2.0

raw patch · 170 files changed

+18186/−0 lines, 170 filesdep +amazonka-coredep +amazonka-memorydbdep +amazonka-test

Dependencies added: amazonka-core, amazonka-memorydb, 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 MemoryDB SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2021-01-01@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-memorydb)+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.MemoryDb](http://hackage.haskell.org/package/amazonka-memorydb/docs/Amazonka-MemoryDb.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-memorydb` 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-memorydb.cabal view
@@ -0,0 +1,165 @@+cabal-version:      2.2+name:               amazonka-memorydb+version:            2.0+synopsis:           Amazon MemoryDB SDK.+homepage:           https://github.com/brendanhay/amazonka+bug-reports:        https://github.com/brendanhay/amazonka/issues+license:            MPL-2.0+license-file:       LICENSE+author:             Brendan Hay+maintainer:+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>++copyright:          Copyright (c) 2013-2023 Brendan Hay+category:           AWS+build-type:         Simple+extra-source-files:+  fixture/*.proto+  fixture/*.yaml+  README.md+  src/.gitkeep++description:+  Derived from API version @2021-01-01@ of the AWS service descriptions, licensed under Apache 2.0.+  .+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.+  .+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.+  .+  Generated lenses can be found in "Amazonka.MemoryDb.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.MemoryDb" 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-memorydb++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.MemoryDb+    Amazonka.MemoryDb.BatchUpdateCluster+    Amazonka.MemoryDb.CopySnapshot+    Amazonka.MemoryDb.CreateACL+    Amazonka.MemoryDb.CreateCluster+    Amazonka.MemoryDb.CreateParameterGroup+    Amazonka.MemoryDb.CreateSnapshot+    Amazonka.MemoryDb.CreateSubnetGroup+    Amazonka.MemoryDb.CreateUser+    Amazonka.MemoryDb.DeleteACL+    Amazonka.MemoryDb.DeleteCluster+    Amazonka.MemoryDb.DeleteParameterGroup+    Amazonka.MemoryDb.DeleteSnapshot+    Amazonka.MemoryDb.DeleteSubnetGroup+    Amazonka.MemoryDb.DeleteUser+    Amazonka.MemoryDb.DescribeACLs+    Amazonka.MemoryDb.DescribeClusters+    Amazonka.MemoryDb.DescribeEngineVersions+    Amazonka.MemoryDb.DescribeEvents+    Amazonka.MemoryDb.DescribeParameterGroups+    Amazonka.MemoryDb.DescribeParameters+    Amazonka.MemoryDb.DescribeReservedNodes+    Amazonka.MemoryDb.DescribeReservedNodesOfferings+    Amazonka.MemoryDb.DescribeServiceUpdates+    Amazonka.MemoryDb.DescribeSnapshots+    Amazonka.MemoryDb.DescribeSubnetGroups+    Amazonka.MemoryDb.DescribeUsers+    Amazonka.MemoryDb.FailoverShard+    Amazonka.MemoryDb.Lens+    Amazonka.MemoryDb.ListAllowedNodeTypeUpdates+    Amazonka.MemoryDb.ListTags+    Amazonka.MemoryDb.PurchaseReservedNodesOffering+    Amazonka.MemoryDb.ResetParameterGroup+    Amazonka.MemoryDb.TagResource+    Amazonka.MemoryDb.Types+    Amazonka.MemoryDb.Types.ACL+    Amazonka.MemoryDb.Types.ACLPendingChanges+    Amazonka.MemoryDb.Types.ACLsUpdateStatus+    Amazonka.MemoryDb.Types.Authentication+    Amazonka.MemoryDb.Types.AuthenticationMode+    Amazonka.MemoryDb.Types.AuthenticationType+    Amazonka.MemoryDb.Types.AvailabilityZone+    Amazonka.MemoryDb.Types.AZStatus+    Amazonka.MemoryDb.Types.Cluster+    Amazonka.MemoryDb.Types.ClusterConfiguration+    Amazonka.MemoryDb.Types.ClusterPendingUpdates+    Amazonka.MemoryDb.Types.DataTieringStatus+    Amazonka.MemoryDb.Types.Endpoint+    Amazonka.MemoryDb.Types.EngineVersionInfo+    Amazonka.MemoryDb.Types.Event+    Amazonka.MemoryDb.Types.Filter+    Amazonka.MemoryDb.Types.InputAuthenticationType+    Amazonka.MemoryDb.Types.Node+    Amazonka.MemoryDb.Types.Parameter+    Amazonka.MemoryDb.Types.ParameterGroup+    Amazonka.MemoryDb.Types.ParameterNameValue+    Amazonka.MemoryDb.Types.PendingModifiedServiceUpdate+    Amazonka.MemoryDb.Types.RecurringCharge+    Amazonka.MemoryDb.Types.ReplicaConfigurationRequest+    Amazonka.MemoryDb.Types.ReservedNode+    Amazonka.MemoryDb.Types.ReservedNodesOffering+    Amazonka.MemoryDb.Types.ReshardingStatus+    Amazonka.MemoryDb.Types.SecurityGroupMembership+    Amazonka.MemoryDb.Types.ServiceUpdate+    Amazonka.MemoryDb.Types.ServiceUpdateRequest+    Amazonka.MemoryDb.Types.ServiceUpdateStatus+    Amazonka.MemoryDb.Types.ServiceUpdateType+    Amazonka.MemoryDb.Types.Shard+    Amazonka.MemoryDb.Types.ShardConfiguration+    Amazonka.MemoryDb.Types.ShardConfigurationRequest+    Amazonka.MemoryDb.Types.ShardDetail+    Amazonka.MemoryDb.Types.SlotMigration+    Amazonka.MemoryDb.Types.Snapshot+    Amazonka.MemoryDb.Types.SourceType+    Amazonka.MemoryDb.Types.Subnet+    Amazonka.MemoryDb.Types.SubnetGroup+    Amazonka.MemoryDb.Types.Tag+    Amazonka.MemoryDb.Types.UnprocessedCluster+    Amazonka.MemoryDb.Types.User+    Amazonka.MemoryDb.UntagResource+    Amazonka.MemoryDb.UpdateACL+    Amazonka.MemoryDb.UpdateCluster+    Amazonka.MemoryDb.UpdateParameterGroup+    Amazonka.MemoryDb.UpdateSubnetGroup+    Amazonka.MemoryDb.UpdateUser+    Amazonka.MemoryDb.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-memorydb-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.MemoryDb+    Test.Amazonka.MemoryDb+    Test.Amazonka.MemoryDb.Internal++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-memorydb+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/BatchUpdateCluster.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/BatchUpdateClusterResponse.proto view
+ fixture/CopySnapshot.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/CopySnapshotResponse.proto view
+ fixture/CreateACL.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/CreateACLResponse.proto view
+ fixture/CreateCluster.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/CreateClusterResponse.proto view
+ fixture/CreateParameterGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/CreateParameterGroupResponse.proto view
+ fixture/CreateSnapshot.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/CreateSnapshotResponse.proto view
+ fixture/CreateSubnetGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/CreateSubnetGroupResponse.proto view
+ fixture/CreateUser.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/CreateUserResponse.proto view
+ fixture/DeleteACL.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DeleteACLResponse.proto view
+ fixture/DeleteCluster.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DeleteClusterResponse.proto view
+ fixture/DeleteParameterGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DeleteParameterGroupResponse.proto view
+ fixture/DeleteSnapshot.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DeleteSnapshotResponse.proto view
+ fixture/DeleteSubnetGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DeleteSubnetGroupResponse.proto view
+ fixture/DeleteUser.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DeleteUserResponse.proto view
+ fixture/DescribeACLs.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeACLsResponse.proto view
+ fixture/DescribeClusters.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeClustersResponse.proto view
+ fixture/DescribeEngineVersions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeEngineVersionsResponse.proto view
+ fixture/DescribeEvents.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeEventsResponse.proto view
+ fixture/DescribeParameterGroups.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeParameterGroupsResponse.proto view
+ fixture/DescribeParameters.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeParametersResponse.proto view
+ fixture/DescribeReservedNodes.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeReservedNodesOfferings.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeReservedNodesOfferingsResponse.proto view
+ fixture/DescribeReservedNodesResponse.proto view
+ fixture/DescribeServiceUpdates.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeServiceUpdatesResponse.proto view
+ fixture/DescribeSnapshots.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeSnapshotsResponse.proto view
+ fixture/DescribeSubnetGroups.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeSubnetGroupsResponse.proto view
+ fixture/DescribeUsers.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/DescribeUsersResponse.proto view
+ fixture/FailoverShard.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/FailoverShardResponse.proto view
+ fixture/ListAllowedNodeTypeUpdates.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/ListAllowedNodeTypeUpdatesResponse.proto view
+ fixture/ListTags.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/ListTagsResponse.proto view
+ fixture/PurchaseReservedNodesOffering.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/PurchaseReservedNodesOfferingResponse.proto view
+ fixture/ResetParameterGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/ResetParameterGroupResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/TagResourceResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UntagResourceResponse.proto view
+ fixture/UpdateACL.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/UpdateACLResponse.proto view
+ fixture/UpdateCluster.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/UpdateClusterResponse.proto view
+ fixture/UpdateParameterGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/UpdateParameterGroupResponse.proto view
+ fixture/UpdateSubnetGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/UpdateSubnetGroupResponse.proto view
+ fixture/UpdateUser.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/memory-db/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  memory-db.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/UpdateUserResponse.proto view
+ gen/Amazonka/MemoryDb.hs view
@@ -0,0 +1,661 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.MemoryDb+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Derived from API version @2021-01-01@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- MemoryDB for Redis is a fully managed, Redis-compatible, in-memory+-- database that delivers ultra-fast performance and Multi-AZ durability+-- for modern applications built using microservices architectures.+-- MemoryDB stores the entire database in-memory, enabling low latency and+-- high throughput data access. It is compatible with Redis, a popular open+-- source data store, enabling you to leverage Redis’ flexible and friendly+-- data structures, APIs, and commands.+module Amazonka.MemoryDb+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** ACLAlreadyExistsFault+    _ACLAlreadyExistsFault,++    -- ** ACLNotFoundFault+    _ACLNotFoundFault,++    -- ** ACLQuotaExceededFault+    _ACLQuotaExceededFault,++    -- ** APICallRateForCustomerExceededFault+    _APICallRateForCustomerExceededFault,++    -- ** ClusterAlreadyExistsFault+    _ClusterAlreadyExistsFault,++    -- ** ClusterNotFoundFault+    _ClusterNotFoundFault,++    -- ** ClusterQuotaForCustomerExceededFault+    _ClusterQuotaForCustomerExceededFault,++    -- ** DefaultUserRequired+    _DefaultUserRequired,++    -- ** DuplicateUserNameFault+    _DuplicateUserNameFault,++    -- ** InsufficientClusterCapacityFault+    _InsufficientClusterCapacityFault,++    -- ** InvalidACLStateFault+    _InvalidACLStateFault,++    -- ** InvalidARNFault+    _InvalidARNFault,++    -- ** InvalidClusterStateFault+    _InvalidClusterStateFault,++    -- ** InvalidCredentialsException+    _InvalidCredentialsException,++    -- ** InvalidKMSKeyFault+    _InvalidKMSKeyFault,++    -- ** InvalidNodeStateFault+    _InvalidNodeStateFault,++    -- ** InvalidParameterCombinationException+    _InvalidParameterCombinationException,++    -- ** InvalidParameterGroupStateFault+    _InvalidParameterGroupStateFault,++    -- ** InvalidParameterValueException+    _InvalidParameterValueException,++    -- ** InvalidSnapshotStateFault+    _InvalidSnapshotStateFault,++    -- ** InvalidSubnet+    _InvalidSubnet,++    -- ** InvalidUserStateFault+    _InvalidUserStateFault,++    -- ** InvalidVPCNetworkStateFault+    _InvalidVPCNetworkStateFault,++    -- ** NoOperationFault+    _NoOperationFault,++    -- ** NodeQuotaForClusterExceededFault+    _NodeQuotaForClusterExceededFault,++    -- ** NodeQuotaForCustomerExceededFault+    _NodeQuotaForCustomerExceededFault,++    -- ** ParameterGroupAlreadyExistsFault+    _ParameterGroupAlreadyExistsFault,++    -- ** ParameterGroupNotFoundFault+    _ParameterGroupNotFoundFault,++    -- ** ParameterGroupQuotaExceededFault+    _ParameterGroupQuotaExceededFault,++    -- ** ReservedNodeAlreadyExistsFault+    _ReservedNodeAlreadyExistsFault,++    -- ** ReservedNodeNotFoundFault+    _ReservedNodeNotFoundFault,++    -- ** ReservedNodeQuotaExceededFault+    _ReservedNodeQuotaExceededFault,++    -- ** ReservedNodesOfferingNotFoundFault+    _ReservedNodesOfferingNotFoundFault,++    -- ** ServiceLinkedRoleNotFoundFault+    _ServiceLinkedRoleNotFoundFault,++    -- ** ServiceUpdateNotFoundFault+    _ServiceUpdateNotFoundFault,++    -- ** ShardNotFoundFault+    _ShardNotFoundFault,++    -- ** ShardsPerClusterQuotaExceededFault+    _ShardsPerClusterQuotaExceededFault,++    -- ** SnapshotAlreadyExistsFault+    _SnapshotAlreadyExistsFault,++    -- ** SnapshotNotFoundFault+    _SnapshotNotFoundFault,++    -- ** SnapshotQuotaExceededFault+    _SnapshotQuotaExceededFault,++    -- ** SubnetGroupAlreadyExistsFault+    _SubnetGroupAlreadyExistsFault,++    -- ** SubnetGroupInUseFault+    _SubnetGroupInUseFault,++    -- ** SubnetGroupNotFoundFault+    _SubnetGroupNotFoundFault,++    -- ** SubnetGroupQuotaExceededFault+    _SubnetGroupQuotaExceededFault,++    -- ** SubnetInUse+    _SubnetInUse,++    -- ** SubnetNotAllowedFault+    _SubnetNotAllowedFault,++    -- ** SubnetQuotaExceededFault+    _SubnetQuotaExceededFault,++    -- ** TagNotFoundFault+    _TagNotFoundFault,++    -- ** TagQuotaPerResourceExceeded+    _TagQuotaPerResourceExceeded,++    -- ** TestFailoverNotAvailableFault+    _TestFailoverNotAvailableFault,++    -- ** UserAlreadyExistsFault+    _UserAlreadyExistsFault,++    -- ** UserNotFoundFault+    _UserNotFoundFault,++    -- ** UserQuotaExceededFault+    _UserQuotaExceededFault,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** BatchUpdateCluster+    BatchUpdateCluster (BatchUpdateCluster'),+    newBatchUpdateCluster,+    BatchUpdateClusterResponse (BatchUpdateClusterResponse'),+    newBatchUpdateClusterResponse,++    -- ** CopySnapshot+    CopySnapshot (CopySnapshot'),+    newCopySnapshot,+    CopySnapshotResponse (CopySnapshotResponse'),+    newCopySnapshotResponse,++    -- ** CreateACL+    CreateACL (CreateACL'),+    newCreateACL,+    CreateACLResponse (CreateACLResponse'),+    newCreateACLResponse,++    -- ** CreateCluster+    CreateCluster (CreateCluster'),+    newCreateCluster,+    CreateClusterResponse (CreateClusterResponse'),+    newCreateClusterResponse,++    -- ** CreateParameterGroup+    CreateParameterGroup (CreateParameterGroup'),+    newCreateParameterGroup,+    CreateParameterGroupResponse (CreateParameterGroupResponse'),+    newCreateParameterGroupResponse,++    -- ** CreateSnapshot+    CreateSnapshot (CreateSnapshot'),+    newCreateSnapshot,+    CreateSnapshotResponse (CreateSnapshotResponse'),+    newCreateSnapshotResponse,++    -- ** CreateSubnetGroup+    CreateSubnetGroup (CreateSubnetGroup'),+    newCreateSubnetGroup,+    CreateSubnetGroupResponse (CreateSubnetGroupResponse'),+    newCreateSubnetGroupResponse,++    -- ** CreateUser+    CreateUser (CreateUser'),+    newCreateUser,+    CreateUserResponse (CreateUserResponse'),+    newCreateUserResponse,++    -- ** DeleteACL+    DeleteACL (DeleteACL'),+    newDeleteACL,+    DeleteACLResponse (DeleteACLResponse'),+    newDeleteACLResponse,++    -- ** DeleteCluster+    DeleteCluster (DeleteCluster'),+    newDeleteCluster,+    DeleteClusterResponse (DeleteClusterResponse'),+    newDeleteClusterResponse,++    -- ** DeleteParameterGroup+    DeleteParameterGroup (DeleteParameterGroup'),+    newDeleteParameterGroup,+    DeleteParameterGroupResponse (DeleteParameterGroupResponse'),+    newDeleteParameterGroupResponse,++    -- ** DeleteSnapshot+    DeleteSnapshot (DeleteSnapshot'),+    newDeleteSnapshot,+    DeleteSnapshotResponse (DeleteSnapshotResponse'),+    newDeleteSnapshotResponse,++    -- ** DeleteSubnetGroup+    DeleteSubnetGroup (DeleteSubnetGroup'),+    newDeleteSubnetGroup,+    DeleteSubnetGroupResponse (DeleteSubnetGroupResponse'),+    newDeleteSubnetGroupResponse,++    -- ** DeleteUser+    DeleteUser (DeleteUser'),+    newDeleteUser,+    DeleteUserResponse (DeleteUserResponse'),+    newDeleteUserResponse,++    -- ** DescribeACLs (Paginated)+    DescribeACLs (DescribeACLs'),+    newDescribeACLs,+    DescribeACLsResponse (DescribeACLsResponse'),+    newDescribeACLsResponse,++    -- ** DescribeClusters (Paginated)+    DescribeClusters (DescribeClusters'),+    newDescribeClusters,+    DescribeClustersResponse (DescribeClustersResponse'),+    newDescribeClustersResponse,++    -- ** DescribeEngineVersions (Paginated)+    DescribeEngineVersions (DescribeEngineVersions'),+    newDescribeEngineVersions,+    DescribeEngineVersionsResponse (DescribeEngineVersionsResponse'),+    newDescribeEngineVersionsResponse,++    -- ** DescribeEvents (Paginated)+    DescribeEvents (DescribeEvents'),+    newDescribeEvents,+    DescribeEventsResponse (DescribeEventsResponse'),+    newDescribeEventsResponse,++    -- ** DescribeParameterGroups (Paginated)+    DescribeParameterGroups (DescribeParameterGroups'),+    newDescribeParameterGroups,+    DescribeParameterGroupsResponse (DescribeParameterGroupsResponse'),+    newDescribeParameterGroupsResponse,++    -- ** DescribeParameters (Paginated)+    DescribeParameters (DescribeParameters'),+    newDescribeParameters,+    DescribeParametersResponse (DescribeParametersResponse'),+    newDescribeParametersResponse,++    -- ** DescribeReservedNodes (Paginated)+    DescribeReservedNodes (DescribeReservedNodes'),+    newDescribeReservedNodes,+    DescribeReservedNodesResponse (DescribeReservedNodesResponse'),+    newDescribeReservedNodesResponse,++    -- ** DescribeReservedNodesOfferings (Paginated)+    DescribeReservedNodesOfferings (DescribeReservedNodesOfferings'),+    newDescribeReservedNodesOfferings,+    DescribeReservedNodesOfferingsResponse (DescribeReservedNodesOfferingsResponse'),+    newDescribeReservedNodesOfferingsResponse,++    -- ** DescribeServiceUpdates (Paginated)+    DescribeServiceUpdates (DescribeServiceUpdates'),+    newDescribeServiceUpdates,+    DescribeServiceUpdatesResponse (DescribeServiceUpdatesResponse'),+    newDescribeServiceUpdatesResponse,++    -- ** DescribeSnapshots (Paginated)+    DescribeSnapshots (DescribeSnapshots'),+    newDescribeSnapshots,+    DescribeSnapshotsResponse (DescribeSnapshotsResponse'),+    newDescribeSnapshotsResponse,++    -- ** DescribeSubnetGroups (Paginated)+    DescribeSubnetGroups (DescribeSubnetGroups'),+    newDescribeSubnetGroups,+    DescribeSubnetGroupsResponse (DescribeSubnetGroupsResponse'),+    newDescribeSubnetGroupsResponse,++    -- ** DescribeUsers (Paginated)+    DescribeUsers (DescribeUsers'),+    newDescribeUsers,+    DescribeUsersResponse (DescribeUsersResponse'),+    newDescribeUsersResponse,++    -- ** FailoverShard+    FailoverShard (FailoverShard'),+    newFailoverShard,+    FailoverShardResponse (FailoverShardResponse'),+    newFailoverShardResponse,++    -- ** ListAllowedNodeTypeUpdates+    ListAllowedNodeTypeUpdates (ListAllowedNodeTypeUpdates'),+    newListAllowedNodeTypeUpdates,+    ListAllowedNodeTypeUpdatesResponse (ListAllowedNodeTypeUpdatesResponse'),+    newListAllowedNodeTypeUpdatesResponse,++    -- ** ListTags+    ListTags (ListTags'),+    newListTags,+    ListTagsResponse (ListTagsResponse'),+    newListTagsResponse,++    -- ** PurchaseReservedNodesOffering+    PurchaseReservedNodesOffering (PurchaseReservedNodesOffering'),+    newPurchaseReservedNodesOffering,+    PurchaseReservedNodesOfferingResponse (PurchaseReservedNodesOfferingResponse'),+    newPurchaseReservedNodesOfferingResponse,++    -- ** ResetParameterGroup+    ResetParameterGroup (ResetParameterGroup'),+    newResetParameterGroup,+    ResetParameterGroupResponse (ResetParameterGroupResponse'),+    newResetParameterGroupResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateACL+    UpdateACL (UpdateACL'),+    newUpdateACL,+    UpdateACLResponse (UpdateACLResponse'),+    newUpdateACLResponse,++    -- ** UpdateCluster+    UpdateCluster (UpdateCluster'),+    newUpdateCluster,+    UpdateClusterResponse (UpdateClusterResponse'),+    newUpdateClusterResponse,++    -- ** UpdateParameterGroup+    UpdateParameterGroup (UpdateParameterGroup'),+    newUpdateParameterGroup,+    UpdateParameterGroupResponse (UpdateParameterGroupResponse'),+    newUpdateParameterGroupResponse,++    -- ** UpdateSubnetGroup+    UpdateSubnetGroup (UpdateSubnetGroup'),+    newUpdateSubnetGroup,+    UpdateSubnetGroupResponse (UpdateSubnetGroupResponse'),+    newUpdateSubnetGroupResponse,++    -- ** UpdateUser+    UpdateUser (UpdateUser'),+    newUpdateUser,+    UpdateUserResponse (UpdateUserResponse'),+    newUpdateUserResponse,++    -- * Types++    -- ** AZStatus+    AZStatus (..),++    -- ** AuthenticationType+    AuthenticationType (..),++    -- ** DataTieringStatus+    DataTieringStatus (..),++    -- ** InputAuthenticationType+    InputAuthenticationType (..),++    -- ** ServiceUpdateStatus+    ServiceUpdateStatus (..),++    -- ** ServiceUpdateType+    ServiceUpdateType (..),++    -- ** SourceType+    SourceType (..),++    -- ** ACL+    ACL (ACL'),+    newACL,++    -- ** ACLPendingChanges+    ACLPendingChanges (ACLPendingChanges'),+    newACLPendingChanges,++    -- ** ACLsUpdateStatus+    ACLsUpdateStatus (ACLsUpdateStatus'),+    newACLsUpdateStatus,++    -- ** Authentication+    Authentication (Authentication'),+    newAuthentication,++    -- ** AuthenticationMode+    AuthenticationMode (AuthenticationMode'),+    newAuthenticationMode,++    -- ** AvailabilityZone+    AvailabilityZone (AvailabilityZone'),+    newAvailabilityZone,++    -- ** Cluster+    Cluster (Cluster'),+    newCluster,++    -- ** ClusterConfiguration+    ClusterConfiguration (ClusterConfiguration'),+    newClusterConfiguration,++    -- ** ClusterPendingUpdates+    ClusterPendingUpdates (ClusterPendingUpdates'),+    newClusterPendingUpdates,++    -- ** Endpoint+    Endpoint (Endpoint'),+    newEndpoint,++    -- ** EngineVersionInfo+    EngineVersionInfo (EngineVersionInfo'),+    newEngineVersionInfo,++    -- ** Event+    Event (Event'),+    newEvent,++    -- ** Filter+    Filter (Filter'),+    newFilter,++    -- ** Node+    Node (Node'),+    newNode,++    -- ** Parameter+    Parameter (Parameter'),+    newParameter,++    -- ** ParameterGroup+    ParameterGroup (ParameterGroup'),+    newParameterGroup,++    -- ** ParameterNameValue+    ParameterNameValue (ParameterNameValue'),+    newParameterNameValue,++    -- ** PendingModifiedServiceUpdate+    PendingModifiedServiceUpdate (PendingModifiedServiceUpdate'),+    newPendingModifiedServiceUpdate,++    -- ** RecurringCharge+    RecurringCharge (RecurringCharge'),+    newRecurringCharge,++    -- ** ReplicaConfigurationRequest+    ReplicaConfigurationRequest (ReplicaConfigurationRequest'),+    newReplicaConfigurationRequest,++    -- ** ReservedNode+    ReservedNode (ReservedNode'),+    newReservedNode,++    -- ** ReservedNodesOffering+    ReservedNodesOffering (ReservedNodesOffering'),+    newReservedNodesOffering,++    -- ** ReshardingStatus+    ReshardingStatus (ReshardingStatus'),+    newReshardingStatus,++    -- ** SecurityGroupMembership+    SecurityGroupMembership (SecurityGroupMembership'),+    newSecurityGroupMembership,++    -- ** ServiceUpdate+    ServiceUpdate (ServiceUpdate'),+    newServiceUpdate,++    -- ** ServiceUpdateRequest+    ServiceUpdateRequest (ServiceUpdateRequest'),+    newServiceUpdateRequest,++    -- ** Shard+    Shard (Shard'),+    newShard,++    -- ** ShardConfiguration+    ShardConfiguration (ShardConfiguration'),+    newShardConfiguration,++    -- ** ShardConfigurationRequest+    ShardConfigurationRequest (ShardConfigurationRequest'),+    newShardConfigurationRequest,++    -- ** ShardDetail+    ShardDetail (ShardDetail'),+    newShardDetail,++    -- ** SlotMigration+    SlotMigration (SlotMigration'),+    newSlotMigration,++    -- ** Snapshot+    Snapshot (Snapshot'),+    newSnapshot,++    -- ** Subnet+    Subnet (Subnet'),+    newSubnet,++    -- ** SubnetGroup+    SubnetGroup (SubnetGroup'),+    newSubnetGroup,++    -- ** Tag+    Tag (Tag'),+    newTag,++    -- ** UnprocessedCluster+    UnprocessedCluster (UnprocessedCluster'),+    newUnprocessedCluster,++    -- ** User+    User (User'),+    newUser,+  )+where++import Amazonka.MemoryDb.BatchUpdateCluster+import Amazonka.MemoryDb.CopySnapshot+import Amazonka.MemoryDb.CreateACL+import Amazonka.MemoryDb.CreateCluster+import Amazonka.MemoryDb.CreateParameterGroup+import Amazonka.MemoryDb.CreateSnapshot+import Amazonka.MemoryDb.CreateSubnetGroup+import Amazonka.MemoryDb.CreateUser+import Amazonka.MemoryDb.DeleteACL+import Amazonka.MemoryDb.DeleteCluster+import Amazonka.MemoryDb.DeleteParameterGroup+import Amazonka.MemoryDb.DeleteSnapshot+import Amazonka.MemoryDb.DeleteSubnetGroup+import Amazonka.MemoryDb.DeleteUser+import Amazonka.MemoryDb.DescribeACLs+import Amazonka.MemoryDb.DescribeClusters+import Amazonka.MemoryDb.DescribeEngineVersions+import Amazonka.MemoryDb.DescribeEvents+import Amazonka.MemoryDb.DescribeParameterGroups+import Amazonka.MemoryDb.DescribeParameters+import Amazonka.MemoryDb.DescribeReservedNodes+import Amazonka.MemoryDb.DescribeReservedNodesOfferings+import Amazonka.MemoryDb.DescribeServiceUpdates+import Amazonka.MemoryDb.DescribeSnapshots+import Amazonka.MemoryDb.DescribeSubnetGroups+import Amazonka.MemoryDb.DescribeUsers+import Amazonka.MemoryDb.FailoverShard+import Amazonka.MemoryDb.Lens+import Amazonka.MemoryDb.ListAllowedNodeTypeUpdates+import Amazonka.MemoryDb.ListTags+import Amazonka.MemoryDb.PurchaseReservedNodesOffering+import Amazonka.MemoryDb.ResetParameterGroup+import Amazonka.MemoryDb.TagResource+import Amazonka.MemoryDb.Types+import Amazonka.MemoryDb.UntagResource+import Amazonka.MemoryDb.UpdateACL+import Amazonka.MemoryDb.UpdateCluster+import Amazonka.MemoryDb.UpdateParameterGroup+import Amazonka.MemoryDb.UpdateSubnetGroup+import Amazonka.MemoryDb.UpdateUser+import Amazonka.MemoryDb.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 'MemoryDb'.++-- $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/MemoryDb/BatchUpdateCluster.hs view
@@ -0,0 +1,205 @@+{-# 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.MemoryDb.BatchUpdateCluster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Apply the service update to a list of clusters supplied. For more+-- information on service updates and applying them, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/managing-updates.html#applying-updates Applying the service updates>.+module Amazonka.MemoryDb.BatchUpdateCluster+  ( -- * Creating a Request+    BatchUpdateCluster (..),+    newBatchUpdateCluster,++    -- * Request Lenses+    batchUpdateCluster_serviceUpdate,+    batchUpdateCluster_clusterNames,++    -- * Destructuring the Response+    BatchUpdateClusterResponse (..),+    newBatchUpdateClusterResponse,++    -- * Response Lenses+    batchUpdateClusterResponse_processedClusters,+    batchUpdateClusterResponse_unprocessedClusters,+    batchUpdateClusterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchUpdateCluster' smart constructor.+data BatchUpdateCluster = BatchUpdateCluster'+  { -- | The unique ID of the service update+    serviceUpdate :: Prelude.Maybe ServiceUpdateRequest,+    -- | The cluster names to apply the updates.+    clusterNames :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchUpdateCluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'serviceUpdate', 'batchUpdateCluster_serviceUpdate' - The unique ID of the service update+--+-- 'clusterNames', 'batchUpdateCluster_clusterNames' - The cluster names to apply the updates.+newBatchUpdateCluster ::+  BatchUpdateCluster+newBatchUpdateCluster =+  BatchUpdateCluster'+    { serviceUpdate =+        Prelude.Nothing,+      clusterNames = Prelude.mempty+    }++-- | The unique ID of the service update+batchUpdateCluster_serviceUpdate :: Lens.Lens' BatchUpdateCluster (Prelude.Maybe ServiceUpdateRequest)+batchUpdateCluster_serviceUpdate = Lens.lens (\BatchUpdateCluster' {serviceUpdate} -> serviceUpdate) (\s@BatchUpdateCluster' {} a -> s {serviceUpdate = a} :: BatchUpdateCluster)++-- | The cluster names to apply the updates.+batchUpdateCluster_clusterNames :: Lens.Lens' BatchUpdateCluster [Prelude.Text]+batchUpdateCluster_clusterNames = Lens.lens (\BatchUpdateCluster' {clusterNames} -> clusterNames) (\s@BatchUpdateCluster' {} a -> s {clusterNames = a} :: BatchUpdateCluster) Prelude.. Lens.coerced++instance Core.AWSRequest BatchUpdateCluster where+  type+    AWSResponse BatchUpdateCluster =+      BatchUpdateClusterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchUpdateClusterResponse'+            Prelude.<$> ( x+                            Data..?> "ProcessedClusters"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "UnprocessedClusters"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable BatchUpdateCluster where+  hashWithSalt _salt BatchUpdateCluster' {..} =+    _salt+      `Prelude.hashWithSalt` serviceUpdate+      `Prelude.hashWithSalt` clusterNames++instance Prelude.NFData BatchUpdateCluster where+  rnf BatchUpdateCluster' {..} =+    Prelude.rnf serviceUpdate+      `Prelude.seq` Prelude.rnf clusterNames++instance Data.ToHeaders BatchUpdateCluster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.BatchUpdateCluster" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchUpdateCluster where+  toJSON BatchUpdateCluster' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ServiceUpdate" Data..=) Prelude.<$> serviceUpdate,+            Prelude.Just ("ClusterNames" Data..= clusterNames)+          ]+      )++instance Data.ToPath BatchUpdateCluster where+  toPath = Prelude.const "/"++instance Data.ToQuery BatchUpdateCluster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchUpdateClusterResponse' smart constructor.+data BatchUpdateClusterResponse = BatchUpdateClusterResponse'+  { -- | The list of clusters that have been updated.+    processedClusters :: Prelude.Maybe [Cluster],+    -- | The list of clusters where updates have not been applied.+    unprocessedClusters :: Prelude.Maybe [UnprocessedCluster],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchUpdateClusterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'processedClusters', 'batchUpdateClusterResponse_processedClusters' - The list of clusters that have been updated.+--+-- 'unprocessedClusters', 'batchUpdateClusterResponse_unprocessedClusters' - The list of clusters where updates have not been applied.+--+-- 'httpStatus', 'batchUpdateClusterResponse_httpStatus' - The response's http status code.+newBatchUpdateClusterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchUpdateClusterResponse+newBatchUpdateClusterResponse pHttpStatus_ =+  BatchUpdateClusterResponse'+    { processedClusters =+        Prelude.Nothing,+      unprocessedClusters = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of clusters that have been updated.+batchUpdateClusterResponse_processedClusters :: Lens.Lens' BatchUpdateClusterResponse (Prelude.Maybe [Cluster])+batchUpdateClusterResponse_processedClusters = Lens.lens (\BatchUpdateClusterResponse' {processedClusters} -> processedClusters) (\s@BatchUpdateClusterResponse' {} a -> s {processedClusters = a} :: BatchUpdateClusterResponse) Prelude.. Lens.mapping Lens.coerced++-- | The list of clusters where updates have not been applied.+batchUpdateClusterResponse_unprocessedClusters :: Lens.Lens' BatchUpdateClusterResponse (Prelude.Maybe [UnprocessedCluster])+batchUpdateClusterResponse_unprocessedClusters = Lens.lens (\BatchUpdateClusterResponse' {unprocessedClusters} -> unprocessedClusters) (\s@BatchUpdateClusterResponse' {} a -> s {unprocessedClusters = a} :: BatchUpdateClusterResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchUpdateClusterResponse_httpStatus :: Lens.Lens' BatchUpdateClusterResponse Prelude.Int+batchUpdateClusterResponse_httpStatus = Lens.lens (\BatchUpdateClusterResponse' {httpStatus} -> httpStatus) (\s@BatchUpdateClusterResponse' {} a -> s {httpStatus = a} :: BatchUpdateClusterResponse)++instance Prelude.NFData BatchUpdateClusterResponse where+  rnf BatchUpdateClusterResponse' {..} =+    Prelude.rnf processedClusters+      `Prelude.seq` Prelude.rnf unprocessedClusters+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/CopySnapshot.hs view
@@ -0,0 +1,252 @@+{-# 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.MemoryDb.CopySnapshot+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Makes a copy of an existing snapshot.+module Amazonka.MemoryDb.CopySnapshot+  ( -- * Creating a Request+    CopySnapshot (..),+    newCopySnapshot,++    -- * Request Lenses+    copySnapshot_kmsKeyId,+    copySnapshot_tags,+    copySnapshot_targetBucket,+    copySnapshot_sourceSnapshotName,+    copySnapshot_targetSnapshotName,++    -- * Destructuring the Response+    CopySnapshotResponse (..),+    newCopySnapshotResponse,++    -- * Response Lenses+    copySnapshotResponse_snapshot,+    copySnapshotResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCopySnapshot' smart constructor.+data CopySnapshot = CopySnapshot'+  { -- | The ID of the KMS key used to encrypt the target snapshot.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | A list of tags to be added to this resource. A tag is a key-value pair.+    -- A tag key must be accompanied by a tag value, although null is accepted.+    tags :: Prelude.Maybe [Tag],+    -- | The Amazon S3 bucket to which the snapshot is exported. This parameter+    -- is used only when exporting a snapshot for external access. When using+    -- this parameter to export a snapshot, be sure MemoryDB has the needed+    -- permissions to this S3 bucket. For more information, see+    -- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/snapshots-exporting.html Step 2: Grant MemoryDB Access to Your Amazon S3 Bucket>.+    targetBucket :: Prelude.Maybe Prelude.Text,+    -- | The name of an existing snapshot from which to make a copy.+    sourceSnapshotName :: Prelude.Text,+    -- | A name for the snapshot copy. MemoryDB does not permit overwriting a+    -- snapshot, therefore this name must be unique within its context -+    -- MemoryDB or an Amazon S3 bucket if exporting.+    targetSnapshotName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CopySnapshot' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'kmsKeyId', 'copySnapshot_kmsKeyId' - The ID of the KMS key used to encrypt the target snapshot.+--+-- 'tags', 'copySnapshot_tags' - A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+--+-- 'targetBucket', 'copySnapshot_targetBucket' - The Amazon S3 bucket to which the snapshot is exported. This parameter+-- is used only when exporting a snapshot for external access. When using+-- this parameter to export a snapshot, be sure MemoryDB has the needed+-- permissions to this S3 bucket. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/snapshots-exporting.html Step 2: Grant MemoryDB Access to Your Amazon S3 Bucket>.+--+-- 'sourceSnapshotName', 'copySnapshot_sourceSnapshotName' - The name of an existing snapshot from which to make a copy.+--+-- 'targetSnapshotName', 'copySnapshot_targetSnapshotName' - A name for the snapshot copy. MemoryDB does not permit overwriting a+-- snapshot, therefore this name must be unique within its context -+-- MemoryDB or an Amazon S3 bucket if exporting.+newCopySnapshot ::+  -- | 'sourceSnapshotName'+  Prelude.Text ->+  -- | 'targetSnapshotName'+  Prelude.Text ->+  CopySnapshot+newCopySnapshot+  pSourceSnapshotName_+  pTargetSnapshotName_ =+    CopySnapshot'+      { kmsKeyId = Prelude.Nothing,+        tags = Prelude.Nothing,+        targetBucket = Prelude.Nothing,+        sourceSnapshotName = pSourceSnapshotName_,+        targetSnapshotName = pTargetSnapshotName_+      }++-- | The ID of the KMS key used to encrypt the target snapshot.+copySnapshot_kmsKeyId :: Lens.Lens' CopySnapshot (Prelude.Maybe Prelude.Text)+copySnapshot_kmsKeyId = Lens.lens (\CopySnapshot' {kmsKeyId} -> kmsKeyId) (\s@CopySnapshot' {} a -> s {kmsKeyId = a} :: CopySnapshot)++-- | A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+copySnapshot_tags :: Lens.Lens' CopySnapshot (Prelude.Maybe [Tag])+copySnapshot_tags = Lens.lens (\CopySnapshot' {tags} -> tags) (\s@CopySnapshot' {} a -> s {tags = a} :: CopySnapshot) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon S3 bucket to which the snapshot is exported. This parameter+-- is used only when exporting a snapshot for external access. When using+-- this parameter to export a snapshot, be sure MemoryDB has the needed+-- permissions to this S3 bucket. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/snapshots-exporting.html Step 2: Grant MemoryDB Access to Your Amazon S3 Bucket>.+copySnapshot_targetBucket :: Lens.Lens' CopySnapshot (Prelude.Maybe Prelude.Text)+copySnapshot_targetBucket = Lens.lens (\CopySnapshot' {targetBucket} -> targetBucket) (\s@CopySnapshot' {} a -> s {targetBucket = a} :: CopySnapshot)++-- | The name of an existing snapshot from which to make a copy.+copySnapshot_sourceSnapshotName :: Lens.Lens' CopySnapshot Prelude.Text+copySnapshot_sourceSnapshotName = Lens.lens (\CopySnapshot' {sourceSnapshotName} -> sourceSnapshotName) (\s@CopySnapshot' {} a -> s {sourceSnapshotName = a} :: CopySnapshot)++-- | A name for the snapshot copy. MemoryDB does not permit overwriting a+-- snapshot, therefore this name must be unique within its context -+-- MemoryDB or an Amazon S3 bucket if exporting.+copySnapshot_targetSnapshotName :: Lens.Lens' CopySnapshot Prelude.Text+copySnapshot_targetSnapshotName = Lens.lens (\CopySnapshot' {targetSnapshotName} -> targetSnapshotName) (\s@CopySnapshot' {} a -> s {targetSnapshotName = a} :: CopySnapshot)++instance Core.AWSRequest CopySnapshot where+  type AWSResponse CopySnapshot = CopySnapshotResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CopySnapshotResponse'+            Prelude.<$> (x Data..?> "Snapshot")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CopySnapshot where+  hashWithSalt _salt CopySnapshot' {..} =+    _salt+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` targetBucket+      `Prelude.hashWithSalt` sourceSnapshotName+      `Prelude.hashWithSalt` targetSnapshotName++instance Prelude.NFData CopySnapshot where+  rnf CopySnapshot' {..} =+    Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf targetBucket+      `Prelude.seq` Prelude.rnf sourceSnapshotName+      `Prelude.seq` Prelude.rnf targetSnapshotName++instance Data.ToHeaders CopySnapshot where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.CopySnapshot" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CopySnapshot where+  toJSON CopySnapshot' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("Tags" Data..=) Prelude.<$> tags,+            ("TargetBucket" Data..=) Prelude.<$> targetBucket,+            Prelude.Just+              ("SourceSnapshotName" Data..= sourceSnapshotName),+            Prelude.Just+              ("TargetSnapshotName" Data..= targetSnapshotName)+          ]+      )++instance Data.ToPath CopySnapshot where+  toPath = Prelude.const "/"++instance Data.ToQuery CopySnapshot where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCopySnapshotResponse' smart constructor.+data CopySnapshotResponse = CopySnapshotResponse'+  { -- | Represents a copy of an entire cluster as of the time when the snapshot+    -- was taken.+    snapshot :: Prelude.Maybe Snapshot,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CopySnapshotResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'snapshot', 'copySnapshotResponse_snapshot' - Represents a copy of an entire cluster as of the time when the snapshot+-- was taken.+--+-- 'httpStatus', 'copySnapshotResponse_httpStatus' - The response's http status code.+newCopySnapshotResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CopySnapshotResponse+newCopySnapshotResponse pHttpStatus_ =+  CopySnapshotResponse'+    { snapshot = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Represents a copy of an entire cluster as of the time when the snapshot+-- was taken.+copySnapshotResponse_snapshot :: Lens.Lens' CopySnapshotResponse (Prelude.Maybe Snapshot)+copySnapshotResponse_snapshot = Lens.lens (\CopySnapshotResponse' {snapshot} -> snapshot) (\s@CopySnapshotResponse' {} a -> s {snapshot = a} :: CopySnapshotResponse)++-- | The response's http status code.+copySnapshotResponse_httpStatus :: Lens.Lens' CopySnapshotResponse Prelude.Int+copySnapshotResponse_httpStatus = Lens.lens (\CopySnapshotResponse' {httpStatus} -> httpStatus) (\s@CopySnapshotResponse' {} a -> s {httpStatus = a} :: CopySnapshotResponse)++instance Prelude.NFData CopySnapshotResponse where+  rnf CopySnapshotResponse' {..} =+    Prelude.rnf snapshot+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/CreateACL.hs view
@@ -0,0 +1,198 @@+{-# 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.MemoryDb.CreateACL+-- 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 Access Control List. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/clusters.acls.html Authenticating users with Access Contol Lists (ACLs)>.+module Amazonka.MemoryDb.CreateACL+  ( -- * Creating a Request+    CreateACL (..),+    newCreateACL,++    -- * Request Lenses+    createACL_tags,+    createACL_userNames,+    createACL_aCLName,++    -- * Destructuring the Response+    CreateACLResponse (..),+    newCreateACLResponse,++    -- * Response Lenses+    createACLResponse_acl,+    createACLResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateACL' smart constructor.+data CreateACL = CreateACL'+  { -- | A list of tags to be added to this resource. A tag is a key-value pair.+    -- A tag key must be accompanied by a tag value, although null is accepted.+    tags :: Prelude.Maybe [Tag],+    -- | The list of users that belong to the Access Control List.+    userNames :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The name of the Access Control List.+    aCLName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateACL' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tags', 'createACL_tags' - A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+--+-- 'userNames', 'createACL_userNames' - The list of users that belong to the Access Control List.+--+-- 'aCLName', 'createACL_aCLName' - The name of the Access Control List.+newCreateACL ::+  -- | 'aCLName'+  Prelude.Text ->+  CreateACL+newCreateACL pACLName_ =+  CreateACL'+    { tags = Prelude.Nothing,+      userNames = Prelude.Nothing,+      aCLName = pACLName_+    }++-- | A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+createACL_tags :: Lens.Lens' CreateACL (Prelude.Maybe [Tag])+createACL_tags = Lens.lens (\CreateACL' {tags} -> tags) (\s@CreateACL' {} a -> s {tags = a} :: CreateACL) Prelude.. Lens.mapping Lens.coerced++-- | The list of users that belong to the Access Control List.+createACL_userNames :: Lens.Lens' CreateACL (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+createACL_userNames = Lens.lens (\CreateACL' {userNames} -> userNames) (\s@CreateACL' {} a -> s {userNames = a} :: CreateACL) Prelude.. Lens.mapping Lens.coerced++-- | The name of the Access Control List.+createACL_aCLName :: Lens.Lens' CreateACL Prelude.Text+createACL_aCLName = Lens.lens (\CreateACL' {aCLName} -> aCLName) (\s@CreateACL' {} a -> s {aCLName = a} :: CreateACL)++instance Core.AWSRequest CreateACL where+  type AWSResponse CreateACL = CreateACLResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateACLResponse'+            Prelude.<$> (x Data..?> "ACL")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateACL where+  hashWithSalt _salt CreateACL' {..} =+    _salt+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` userNames+      `Prelude.hashWithSalt` aCLName++instance Prelude.NFData CreateACL where+  rnf CreateACL' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf userNames+      `Prelude.seq` Prelude.rnf aCLName++instance Data.ToHeaders CreateACL where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("AmazonMemoryDB.CreateACL" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateACL where+  toJSON CreateACL' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Tags" Data..=) Prelude.<$> tags,+            ("UserNames" Data..=) Prelude.<$> userNames,+            Prelude.Just ("ACLName" Data..= aCLName)+          ]+      )++instance Data.ToPath CreateACL where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateACL where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateACLResponse' smart constructor.+data CreateACLResponse = CreateACLResponse'+  { -- | The newly-created Access Control List.+    acl :: Prelude.Maybe ACL,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateACLResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acl', 'createACLResponse_acl' - The newly-created Access Control List.+--+-- 'httpStatus', 'createACLResponse_httpStatus' - The response's http status code.+newCreateACLResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateACLResponse+newCreateACLResponse pHttpStatus_ =+  CreateACLResponse'+    { acl = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The newly-created Access Control List.+createACLResponse_acl :: Lens.Lens' CreateACLResponse (Prelude.Maybe ACL)+createACLResponse_acl = Lens.lens (\CreateACLResponse' {acl} -> acl) (\s@CreateACLResponse' {} a -> s {acl = a} :: CreateACLResponse)++-- | The response's http status code.+createACLResponse_httpStatus :: Lens.Lens' CreateACLResponse Prelude.Int+createACLResponse_httpStatus = Lens.lens (\CreateACLResponse' {httpStatus} -> httpStatus) (\s@CreateACLResponse' {} a -> s {httpStatus = a} :: CreateACLResponse)++instance Prelude.NFData CreateACLResponse where+  rnf CreateACLResponse' {..} =+    Prelude.rnf acl+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/CreateCluster.hs view
@@ -0,0 +1,594 @@+{-# 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.MemoryDb.CreateCluster+-- 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 cluster. All nodes in the cluster run the same+-- protocol-compliant engine software.+module Amazonka.MemoryDb.CreateCluster+  ( -- * Creating a Request+    CreateCluster (..),+    newCreateCluster,++    -- * Request Lenses+    createCluster_autoMinorVersionUpgrade,+    createCluster_dataTiering,+    createCluster_description,+    createCluster_engineVersion,+    createCluster_kmsKeyId,+    createCluster_maintenanceWindow,+    createCluster_numReplicasPerShard,+    createCluster_numShards,+    createCluster_parameterGroupName,+    createCluster_port,+    createCluster_securityGroupIds,+    createCluster_snapshotArns,+    createCluster_snapshotName,+    createCluster_snapshotRetentionLimit,+    createCluster_snapshotWindow,+    createCluster_snsTopicArn,+    createCluster_subnetGroupName,+    createCluster_tLSEnabled,+    createCluster_tags,+    createCluster_clusterName,+    createCluster_nodeType,+    createCluster_aCLName,++    -- * Destructuring the Response+    CreateClusterResponse (..),+    newCreateClusterResponse,++    -- * Response Lenses+    createClusterResponse_cluster,+    createClusterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateCluster' smart constructor.+data CreateCluster = CreateCluster'+  { -- | When set to true, the cluster will automatically receive minor engine+    -- version upgrades after launch.+    autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,+    -- | Enables data tiering. Data tiering is only supported for clusters using+    -- the r6gd node type. This parameter must be set when using r6gd nodes.+    -- For more information, see+    -- <https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html Data tiering>.+    dataTiering :: Prelude.Maybe Prelude.Bool,+    -- | An optional description of the cluster.+    description :: Prelude.Maybe Prelude.Text,+    -- | The version number of the Redis engine to be used for the cluster.+    engineVersion :: Prelude.Maybe Prelude.Text,+    -- | The ID of the KMS key used to encrypt the cluster.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | Specifies the weekly time range during which maintenance on the cluster+    -- is performed. It is specified as a range in the format+    -- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window+    -- is a 60 minute period.+    --+    -- Valid values for @ddd@ are:+    --+    -- -   @sun@+    --+    -- -   @mon@+    --+    -- -   @tue@+    --+    -- -   @wed@+    --+    -- -   @thu@+    --+    -- -   @fri@+    --+    -- -   @sat@+    --+    -- Example: @sun:23:00-mon:01:30@+    maintenanceWindow :: Prelude.Maybe Prelude.Text,+    -- | The number of replicas to apply to each shard. The default value is 1.+    -- The maximum is 5.+    numReplicasPerShard :: Prelude.Maybe Prelude.Int,+    -- | The number of shards the cluster will contain. The default value is 1.+    numShards :: Prelude.Maybe Prelude.Int,+    -- | The name of the parameter group associated with the cluster.+    parameterGroupName :: Prelude.Maybe Prelude.Text,+    -- | The port number on which each of the nodes accepts connections.+    port :: Prelude.Maybe Prelude.Int,+    -- | A list of security group names to associate with this cluster.+    securityGroupIds :: Prelude.Maybe [Prelude.Text],+    -- | A list of Amazon Resource Names (ARN) that uniquely identify the RDB+    -- snapshot files stored in Amazon S3. The snapshot files are used to+    -- populate the new cluster. The Amazon S3 object name in the ARN cannot+    -- contain any commas.+    snapshotArns :: Prelude.Maybe [Prelude.Text],+    -- | The name of a snapshot from which to restore data into the new cluster.+    -- The snapshot status changes to restoring while the new cluster is being+    -- created.+    snapshotName :: Prelude.Maybe Prelude.Text,+    -- | The number of days for which MemoryDB retains automatic snapshots before+    -- deleting them. For example, if you set SnapshotRetentionLimit to 5, a+    -- snapshot that was taken today is retained for 5 days before being+    -- deleted.+    snapshotRetentionLimit :: Prelude.Maybe Prelude.Int,+    -- | The daily time range (in UTC) during which MemoryDB begins taking a+    -- daily snapshot of your shard.+    --+    -- Example: 05:00-09:00+    --+    -- If you do not specify this parameter, MemoryDB automatically chooses an+    -- appropriate time range.+    snapshotWindow :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service+    -- (SNS) topic to which notifications are sent.+    snsTopicArn :: Prelude.Maybe Prelude.Text,+    -- | The name of the subnet group to be used for the cluster.+    subnetGroupName :: Prelude.Maybe Prelude.Text,+    -- | A flag to enable in-transit encryption on the cluster.+    tLSEnabled :: Prelude.Maybe Prelude.Bool,+    -- | A list of tags to be added to this resource. Tags are comma-separated+    -- key,value pairs (e.g. Key=myKey, Value=myKeyValue. You can include+    -- multiple tags as shown following: Key=myKey, Value=myKeyValue+    -- Key=mySecondKey, Value=mySecondKeyValue.+    tags :: Prelude.Maybe [Tag],+    -- | The name of the cluster. This value must be unique as it also serves as+    -- the cluster identifier.+    clusterName :: Prelude.Text,+    -- | The compute and memory capacity of the nodes in the cluster.+    nodeType :: Prelude.Text,+    -- | The name of the Access Control List to associate with the cluster.+    aCLName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateCluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'autoMinorVersionUpgrade', 'createCluster_autoMinorVersionUpgrade' - When set to true, the cluster will automatically receive minor engine+-- version upgrades after launch.+--+-- 'dataTiering', 'createCluster_dataTiering' - Enables data tiering. Data tiering is only supported for clusters using+-- the r6gd node type. This parameter must be set when using r6gd nodes.+-- For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html Data tiering>.+--+-- 'description', 'createCluster_description' - An optional description of the cluster.+--+-- 'engineVersion', 'createCluster_engineVersion' - The version number of the Redis engine to be used for the cluster.+--+-- 'kmsKeyId', 'createCluster_kmsKeyId' - The ID of the KMS key used to encrypt the cluster.+--+-- 'maintenanceWindow', 'createCluster_maintenanceWindow' - Specifies the weekly time range during which maintenance on the cluster+-- is performed. It is specified as a range in the format+-- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window+-- is a 60 minute period.+--+-- Valid values for @ddd@ are:+--+-- -   @sun@+--+-- -   @mon@+--+-- -   @tue@+--+-- -   @wed@+--+-- -   @thu@+--+-- -   @fri@+--+-- -   @sat@+--+-- Example: @sun:23:00-mon:01:30@+--+-- 'numReplicasPerShard', 'createCluster_numReplicasPerShard' - The number of replicas to apply to each shard. The default value is 1.+-- The maximum is 5.+--+-- 'numShards', 'createCluster_numShards' - The number of shards the cluster will contain. The default value is 1.+--+-- 'parameterGroupName', 'createCluster_parameterGroupName' - The name of the parameter group associated with the cluster.+--+-- 'port', 'createCluster_port' - The port number on which each of the nodes accepts connections.+--+-- 'securityGroupIds', 'createCluster_securityGroupIds' - A list of security group names to associate with this cluster.+--+-- 'snapshotArns', 'createCluster_snapshotArns' - A list of Amazon Resource Names (ARN) that uniquely identify the RDB+-- snapshot files stored in Amazon S3. The snapshot files are used to+-- populate the new cluster. The Amazon S3 object name in the ARN cannot+-- contain any commas.+--+-- 'snapshotName', 'createCluster_snapshotName' - The name of a snapshot from which to restore data into the new cluster.+-- The snapshot status changes to restoring while the new cluster is being+-- created.+--+-- 'snapshotRetentionLimit', 'createCluster_snapshotRetentionLimit' - The number of days for which MemoryDB retains automatic snapshots before+-- deleting them. For example, if you set SnapshotRetentionLimit to 5, a+-- snapshot that was taken today is retained for 5 days before being+-- deleted.+--+-- 'snapshotWindow', 'createCluster_snapshotWindow' - The daily time range (in UTC) during which MemoryDB begins taking a+-- daily snapshot of your shard.+--+-- Example: 05:00-09:00+--+-- If you do not specify this parameter, MemoryDB automatically chooses an+-- appropriate time range.+--+-- 'snsTopicArn', 'createCluster_snsTopicArn' - The Amazon Resource Name (ARN) of the Amazon Simple Notification Service+-- (SNS) topic to which notifications are sent.+--+-- 'subnetGroupName', 'createCluster_subnetGroupName' - The name of the subnet group to be used for the cluster.+--+-- 'tLSEnabled', 'createCluster_tLSEnabled' - A flag to enable in-transit encryption on the cluster.+--+-- 'tags', 'createCluster_tags' - A list of tags to be added to this resource. Tags are comma-separated+-- key,value pairs (e.g. Key=myKey, Value=myKeyValue. You can include+-- multiple tags as shown following: Key=myKey, Value=myKeyValue+-- Key=mySecondKey, Value=mySecondKeyValue.+--+-- 'clusterName', 'createCluster_clusterName' - The name of the cluster. This value must be unique as it also serves as+-- the cluster identifier.+--+-- 'nodeType', 'createCluster_nodeType' - The compute and memory capacity of the nodes in the cluster.+--+-- 'aCLName', 'createCluster_aCLName' - The name of the Access Control List to associate with the cluster.+newCreateCluster ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'nodeType'+  Prelude.Text ->+  -- | 'aCLName'+  Prelude.Text ->+  CreateCluster+newCreateCluster pClusterName_ pNodeType_ pACLName_ =+  CreateCluster'+    { autoMinorVersionUpgrade =+        Prelude.Nothing,+      dataTiering = Prelude.Nothing,+      description = Prelude.Nothing,+      engineVersion = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      maintenanceWindow = Prelude.Nothing,+      numReplicasPerShard = Prelude.Nothing,+      numShards = Prelude.Nothing,+      parameterGroupName = Prelude.Nothing,+      port = Prelude.Nothing,+      securityGroupIds = Prelude.Nothing,+      snapshotArns = Prelude.Nothing,+      snapshotName = Prelude.Nothing,+      snapshotRetentionLimit = Prelude.Nothing,+      snapshotWindow = Prelude.Nothing,+      snsTopicArn = Prelude.Nothing,+      subnetGroupName = Prelude.Nothing,+      tLSEnabled = Prelude.Nothing,+      tags = Prelude.Nothing,+      clusterName = pClusterName_,+      nodeType = pNodeType_,+      aCLName = pACLName_+    }++-- | When set to true, the cluster will automatically receive minor engine+-- version upgrades after launch.+createCluster_autoMinorVersionUpgrade :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Bool)+createCluster_autoMinorVersionUpgrade = Lens.lens (\CreateCluster' {autoMinorVersionUpgrade} -> autoMinorVersionUpgrade) (\s@CreateCluster' {} a -> s {autoMinorVersionUpgrade = a} :: CreateCluster)++-- | Enables data tiering. Data tiering is only supported for clusters using+-- the r6gd node type. This parameter must be set when using r6gd nodes.+-- For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html Data tiering>.+createCluster_dataTiering :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Bool)+createCluster_dataTiering = Lens.lens (\CreateCluster' {dataTiering} -> dataTiering) (\s@CreateCluster' {} a -> s {dataTiering = a} :: CreateCluster)++-- | An optional description of the cluster.+createCluster_description :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_description = Lens.lens (\CreateCluster' {description} -> description) (\s@CreateCluster' {} a -> s {description = a} :: CreateCluster)++-- | The version number of the Redis engine to be used for the cluster.+createCluster_engineVersion :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_engineVersion = Lens.lens (\CreateCluster' {engineVersion} -> engineVersion) (\s@CreateCluster' {} a -> s {engineVersion = a} :: CreateCluster)++-- | The ID of the KMS key used to encrypt the cluster.+createCluster_kmsKeyId :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_kmsKeyId = Lens.lens (\CreateCluster' {kmsKeyId} -> kmsKeyId) (\s@CreateCluster' {} a -> s {kmsKeyId = a} :: CreateCluster)++-- | Specifies the weekly time range during which maintenance on the cluster+-- is performed. It is specified as a range in the format+-- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window+-- is a 60 minute period.+--+-- Valid values for @ddd@ are:+--+-- -   @sun@+--+-- -   @mon@+--+-- -   @tue@+--+-- -   @wed@+--+-- -   @thu@+--+-- -   @fri@+--+-- -   @sat@+--+-- Example: @sun:23:00-mon:01:30@+createCluster_maintenanceWindow :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_maintenanceWindow = Lens.lens (\CreateCluster' {maintenanceWindow} -> maintenanceWindow) (\s@CreateCluster' {} a -> s {maintenanceWindow = a} :: CreateCluster)++-- | The number of replicas to apply to each shard. The default value is 1.+-- The maximum is 5.+createCluster_numReplicasPerShard :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Int)+createCluster_numReplicasPerShard = Lens.lens (\CreateCluster' {numReplicasPerShard} -> numReplicasPerShard) (\s@CreateCluster' {} a -> s {numReplicasPerShard = a} :: CreateCluster)++-- | The number of shards the cluster will contain. The default value is 1.+createCluster_numShards :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Int)+createCluster_numShards = Lens.lens (\CreateCluster' {numShards} -> numShards) (\s@CreateCluster' {} a -> s {numShards = a} :: CreateCluster)++-- | The name of the parameter group associated with the cluster.+createCluster_parameterGroupName :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_parameterGroupName = Lens.lens (\CreateCluster' {parameterGroupName} -> parameterGroupName) (\s@CreateCluster' {} a -> s {parameterGroupName = a} :: CreateCluster)++-- | The port number on which each of the nodes accepts connections.+createCluster_port :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Int)+createCluster_port = Lens.lens (\CreateCluster' {port} -> port) (\s@CreateCluster' {} a -> s {port = a} :: CreateCluster)++-- | A list of security group names to associate with this cluster.+createCluster_securityGroupIds :: Lens.Lens' CreateCluster (Prelude.Maybe [Prelude.Text])+createCluster_securityGroupIds = Lens.lens (\CreateCluster' {securityGroupIds} -> securityGroupIds) (\s@CreateCluster' {} a -> s {securityGroupIds = a} :: CreateCluster) Prelude.. Lens.mapping Lens.coerced++-- | A list of Amazon Resource Names (ARN) that uniquely identify the RDB+-- snapshot files stored in Amazon S3. The snapshot files are used to+-- populate the new cluster. The Amazon S3 object name in the ARN cannot+-- contain any commas.+createCluster_snapshotArns :: Lens.Lens' CreateCluster (Prelude.Maybe [Prelude.Text])+createCluster_snapshotArns = Lens.lens (\CreateCluster' {snapshotArns} -> snapshotArns) (\s@CreateCluster' {} a -> s {snapshotArns = a} :: CreateCluster) Prelude.. Lens.mapping Lens.coerced++-- | The name of a snapshot from which to restore data into the new cluster.+-- The snapshot status changes to restoring while the new cluster is being+-- created.+createCluster_snapshotName :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_snapshotName = Lens.lens (\CreateCluster' {snapshotName} -> snapshotName) (\s@CreateCluster' {} a -> s {snapshotName = a} :: CreateCluster)++-- | The number of days for which MemoryDB retains automatic snapshots before+-- deleting them. For example, if you set SnapshotRetentionLimit to 5, a+-- snapshot that was taken today is retained for 5 days before being+-- deleted.+createCluster_snapshotRetentionLimit :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Int)+createCluster_snapshotRetentionLimit = Lens.lens (\CreateCluster' {snapshotRetentionLimit} -> snapshotRetentionLimit) (\s@CreateCluster' {} a -> s {snapshotRetentionLimit = a} :: CreateCluster)++-- | The daily time range (in UTC) during which MemoryDB begins taking a+-- daily snapshot of your shard.+--+-- Example: 05:00-09:00+--+-- If you do not specify this parameter, MemoryDB automatically chooses an+-- appropriate time range.+createCluster_snapshotWindow :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_snapshotWindow = Lens.lens (\CreateCluster' {snapshotWindow} -> snapshotWindow) (\s@CreateCluster' {} a -> s {snapshotWindow = a} :: CreateCluster)++-- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service+-- (SNS) topic to which notifications are sent.+createCluster_snsTopicArn :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_snsTopicArn = Lens.lens (\CreateCluster' {snsTopicArn} -> snsTopicArn) (\s@CreateCluster' {} a -> s {snsTopicArn = a} :: CreateCluster)++-- | The name of the subnet group to be used for the cluster.+createCluster_subnetGroupName :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_subnetGroupName = Lens.lens (\CreateCluster' {subnetGroupName} -> subnetGroupName) (\s@CreateCluster' {} a -> s {subnetGroupName = a} :: CreateCluster)++-- | A flag to enable in-transit encryption on the cluster.+createCluster_tLSEnabled :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Bool)+createCluster_tLSEnabled = Lens.lens (\CreateCluster' {tLSEnabled} -> tLSEnabled) (\s@CreateCluster' {} a -> s {tLSEnabled = a} :: CreateCluster)++-- | A list of tags to be added to this resource. Tags are comma-separated+-- key,value pairs (e.g. Key=myKey, Value=myKeyValue. You can include+-- multiple tags as shown following: Key=myKey, Value=myKeyValue+-- Key=mySecondKey, Value=mySecondKeyValue.+createCluster_tags :: Lens.Lens' CreateCluster (Prelude.Maybe [Tag])+createCluster_tags = Lens.lens (\CreateCluster' {tags} -> tags) (\s@CreateCluster' {} a -> s {tags = a} :: CreateCluster) Prelude.. Lens.mapping Lens.coerced++-- | The name of the cluster. This value must be unique as it also serves as+-- the cluster identifier.+createCluster_clusterName :: Lens.Lens' CreateCluster Prelude.Text+createCluster_clusterName = Lens.lens (\CreateCluster' {clusterName} -> clusterName) (\s@CreateCluster' {} a -> s {clusterName = a} :: CreateCluster)++-- | The compute and memory capacity of the nodes in the cluster.+createCluster_nodeType :: Lens.Lens' CreateCluster Prelude.Text+createCluster_nodeType = Lens.lens (\CreateCluster' {nodeType} -> nodeType) (\s@CreateCluster' {} a -> s {nodeType = a} :: CreateCluster)++-- | The name of the Access Control List to associate with the cluster.+createCluster_aCLName :: Lens.Lens' CreateCluster Prelude.Text+createCluster_aCLName = Lens.lens (\CreateCluster' {aCLName} -> aCLName) (\s@CreateCluster' {} a -> s {aCLName = a} :: CreateCluster)++instance Core.AWSRequest CreateCluster where+  type+    AWSResponse CreateCluster =+      CreateClusterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateClusterResponse'+            Prelude.<$> (x Data..?> "Cluster")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateCluster where+  hashWithSalt _salt CreateCluster' {..} =+    _salt+      `Prelude.hashWithSalt` autoMinorVersionUpgrade+      `Prelude.hashWithSalt` dataTiering+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` engineVersion+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` maintenanceWindow+      `Prelude.hashWithSalt` numReplicasPerShard+      `Prelude.hashWithSalt` numShards+      `Prelude.hashWithSalt` parameterGroupName+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` securityGroupIds+      `Prelude.hashWithSalt` snapshotArns+      `Prelude.hashWithSalt` snapshotName+      `Prelude.hashWithSalt` snapshotRetentionLimit+      `Prelude.hashWithSalt` snapshotWindow+      `Prelude.hashWithSalt` snsTopicArn+      `Prelude.hashWithSalt` subnetGroupName+      `Prelude.hashWithSalt` tLSEnabled+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` nodeType+      `Prelude.hashWithSalt` aCLName++instance Prelude.NFData CreateCluster where+  rnf CreateCluster' {..} =+    Prelude.rnf autoMinorVersionUpgrade+      `Prelude.seq` Prelude.rnf dataTiering+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf engineVersion+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf maintenanceWindow+      `Prelude.seq` Prelude.rnf numReplicasPerShard+      `Prelude.seq` Prelude.rnf numShards+      `Prelude.seq` Prelude.rnf parameterGroupName+      `Prelude.seq` Prelude.rnf port+      `Prelude.seq` Prelude.rnf securityGroupIds+      `Prelude.seq` Prelude.rnf snapshotArns+      `Prelude.seq` Prelude.rnf snapshotName+      `Prelude.seq` Prelude.rnf snapshotRetentionLimit+      `Prelude.seq` Prelude.rnf snapshotWindow+      `Prelude.seq` Prelude.rnf snsTopicArn+      `Prelude.seq` Prelude.rnf subnetGroupName+      `Prelude.seq` Prelude.rnf tLSEnabled+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf nodeType+      `Prelude.seq` Prelude.rnf aCLName++instance Data.ToHeaders CreateCluster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.CreateCluster" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateCluster where+  toJSON CreateCluster' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AutoMinorVersionUpgrade" Data..=)+              Prelude.<$> autoMinorVersionUpgrade,+            ("DataTiering" Data..=) Prelude.<$> dataTiering,+            ("Description" Data..=) Prelude.<$> description,+            ("EngineVersion" Data..=) Prelude.<$> engineVersion,+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("MaintenanceWindow" Data..=)+              Prelude.<$> maintenanceWindow,+            ("NumReplicasPerShard" Data..=)+              Prelude.<$> numReplicasPerShard,+            ("NumShards" Data..=) Prelude.<$> numShards,+            ("ParameterGroupName" Data..=)+              Prelude.<$> parameterGroupName,+            ("Port" Data..=) Prelude.<$> port,+            ("SecurityGroupIds" Data..=)+              Prelude.<$> securityGroupIds,+            ("SnapshotArns" Data..=) Prelude.<$> snapshotArns,+            ("SnapshotName" Data..=) Prelude.<$> snapshotName,+            ("SnapshotRetentionLimit" Data..=)+              Prelude.<$> snapshotRetentionLimit,+            ("SnapshotWindow" Data..=)+              Prelude.<$> snapshotWindow,+            ("SnsTopicArn" Data..=) Prelude.<$> snsTopicArn,+            ("SubnetGroupName" Data..=)+              Prelude.<$> subnetGroupName,+            ("TLSEnabled" Data..=) Prelude.<$> tLSEnabled,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("ClusterName" Data..= clusterName),+            Prelude.Just ("NodeType" Data..= nodeType),+            Prelude.Just ("ACLName" Data..= aCLName)+          ]+      )++instance Data.ToPath CreateCluster where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateCluster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateClusterResponse' smart constructor.+data CreateClusterResponse = CreateClusterResponse'+  { -- | The newly-created cluster.+    cluster :: Prelude.Maybe Cluster,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateClusterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cluster', 'createClusterResponse_cluster' - The newly-created cluster.+--+-- 'httpStatus', 'createClusterResponse_httpStatus' - The response's http status code.+newCreateClusterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateClusterResponse+newCreateClusterResponse pHttpStatus_ =+  CreateClusterResponse'+    { cluster = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The newly-created cluster.+createClusterResponse_cluster :: Lens.Lens' CreateClusterResponse (Prelude.Maybe Cluster)+createClusterResponse_cluster = Lens.lens (\CreateClusterResponse' {cluster} -> cluster) (\s@CreateClusterResponse' {} a -> s {cluster = a} :: CreateClusterResponse)++-- | The response's http status code.+createClusterResponse_httpStatus :: Lens.Lens' CreateClusterResponse Prelude.Int+createClusterResponse_httpStatus = Lens.lens (\CreateClusterResponse' {httpStatus} -> httpStatus) (\s@CreateClusterResponse' {} a -> s {httpStatus = a} :: CreateClusterResponse)++instance Prelude.NFData CreateClusterResponse where+  rnf CreateClusterResponse' {..} =+    Prelude.rnf cluster+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/CreateParameterGroup.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.MemoryDb.CreateParameterGroup+-- 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 new MemoryDB parameter group. A parameter group is a+-- collection of parameters and their values that are applied to all of the+-- nodes in any cluster. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/parametergroups.html Configuring engine parameters using parameter groups>.+module Amazonka.MemoryDb.CreateParameterGroup+  ( -- * Creating a Request+    CreateParameterGroup (..),+    newCreateParameterGroup,++    -- * Request Lenses+    createParameterGroup_description,+    createParameterGroup_tags,+    createParameterGroup_parameterGroupName,+    createParameterGroup_family,++    -- * Destructuring the Response+    CreateParameterGroupResponse (..),+    newCreateParameterGroupResponse,++    -- * Response Lenses+    createParameterGroupResponse_parameterGroup,+    createParameterGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateParameterGroup' smart constructor.+data CreateParameterGroup = CreateParameterGroup'+  { -- | An optional description of the parameter group.+    description :: Prelude.Maybe Prelude.Text,+    -- | A list of tags to be added to this resource. A tag is a key-value pair.+    -- A tag key must be accompanied by a tag value, although null is accepted.+    tags :: Prelude.Maybe [Tag],+    -- | The name of the parameter group.+    parameterGroupName :: Prelude.Text,+    -- | The name of the parameter group family that the parameter group can be+    -- used with.+    family :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateParameterGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'createParameterGroup_description' - An optional description of the parameter group.+--+-- 'tags', 'createParameterGroup_tags' - A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+--+-- 'parameterGroupName', 'createParameterGroup_parameterGroupName' - The name of the parameter group.+--+-- 'family', 'createParameterGroup_family' - The name of the parameter group family that the parameter group can be+-- used with.+newCreateParameterGroup ::+  -- | 'parameterGroupName'+  Prelude.Text ->+  -- | 'family'+  Prelude.Text ->+  CreateParameterGroup+newCreateParameterGroup pParameterGroupName_ pFamily_ =+  CreateParameterGroup'+    { description =+        Prelude.Nothing,+      tags = Prelude.Nothing,+      parameterGroupName = pParameterGroupName_,+      family = pFamily_+    }++-- | An optional description of the parameter group.+createParameterGroup_description :: Lens.Lens' CreateParameterGroup (Prelude.Maybe Prelude.Text)+createParameterGroup_description = Lens.lens (\CreateParameterGroup' {description} -> description) (\s@CreateParameterGroup' {} a -> s {description = a} :: CreateParameterGroup)++-- | A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+createParameterGroup_tags :: Lens.Lens' CreateParameterGroup (Prelude.Maybe [Tag])+createParameterGroup_tags = Lens.lens (\CreateParameterGroup' {tags} -> tags) (\s@CreateParameterGroup' {} a -> s {tags = a} :: CreateParameterGroup) Prelude.. Lens.mapping Lens.coerced++-- | The name of the parameter group.+createParameterGroup_parameterGroupName :: Lens.Lens' CreateParameterGroup Prelude.Text+createParameterGroup_parameterGroupName = Lens.lens (\CreateParameterGroup' {parameterGroupName} -> parameterGroupName) (\s@CreateParameterGroup' {} a -> s {parameterGroupName = a} :: CreateParameterGroup)++-- | The name of the parameter group family that the parameter group can be+-- used with.+createParameterGroup_family :: Lens.Lens' CreateParameterGroup Prelude.Text+createParameterGroup_family = Lens.lens (\CreateParameterGroup' {family} -> family) (\s@CreateParameterGroup' {} a -> s {family = a} :: CreateParameterGroup)++instance Core.AWSRequest CreateParameterGroup where+  type+    AWSResponse CreateParameterGroup =+      CreateParameterGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateParameterGroupResponse'+            Prelude.<$> (x Data..?> "ParameterGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateParameterGroup where+  hashWithSalt _salt CreateParameterGroup' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` parameterGroupName+      `Prelude.hashWithSalt` family++instance Prelude.NFData CreateParameterGroup where+  rnf CreateParameterGroup' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf parameterGroupName+      `Prelude.seq` Prelude.rnf family++instance Data.ToHeaders CreateParameterGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.CreateParameterGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateParameterGroup where+  toJSON CreateParameterGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("ParameterGroupName" Data..= parameterGroupName),+            Prelude.Just ("Family" Data..= family)+          ]+      )++instance Data.ToPath CreateParameterGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateParameterGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateParameterGroupResponse' smart constructor.+data CreateParameterGroupResponse = CreateParameterGroupResponse'+  { -- | The newly-created parameter group.+    parameterGroup :: Prelude.Maybe ParameterGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateParameterGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'parameterGroup', 'createParameterGroupResponse_parameterGroup' - The newly-created parameter group.+--+-- 'httpStatus', 'createParameterGroupResponse_httpStatus' - The response's http status code.+newCreateParameterGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateParameterGroupResponse+newCreateParameterGroupResponse pHttpStatus_ =+  CreateParameterGroupResponse'+    { parameterGroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The newly-created parameter group.+createParameterGroupResponse_parameterGroup :: Lens.Lens' CreateParameterGroupResponse (Prelude.Maybe ParameterGroup)+createParameterGroupResponse_parameterGroup = Lens.lens (\CreateParameterGroupResponse' {parameterGroup} -> parameterGroup) (\s@CreateParameterGroupResponse' {} a -> s {parameterGroup = a} :: CreateParameterGroupResponse)++-- | The response's http status code.+createParameterGroupResponse_httpStatus :: Lens.Lens' CreateParameterGroupResponse Prelude.Int+createParameterGroupResponse_httpStatus = Lens.lens (\CreateParameterGroupResponse' {httpStatus} -> httpStatus) (\s@CreateParameterGroupResponse' {} a -> s {httpStatus = a} :: CreateParameterGroupResponse)++instance Prelude.NFData CreateParameterGroupResponse where+  rnf CreateParameterGroupResponse' {..} =+    Prelude.rnf parameterGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/CreateSnapshot.hs view
@@ -0,0 +1,216 @@+{-# 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.MemoryDb.CreateSnapshot+-- 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 copy of an entire cluster at a specific moment in time.+module Amazonka.MemoryDb.CreateSnapshot+  ( -- * Creating a Request+    CreateSnapshot (..),+    newCreateSnapshot,++    -- * Request Lenses+    createSnapshot_kmsKeyId,+    createSnapshot_tags,+    createSnapshot_clusterName,+    createSnapshot_snapshotName,++    -- * Destructuring the Response+    CreateSnapshotResponse (..),+    newCreateSnapshotResponse,++    -- * Response Lenses+    createSnapshotResponse_snapshot,+    createSnapshotResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateSnapshot' smart constructor.+data CreateSnapshot = CreateSnapshot'+  { -- | The ID of the KMS key used to encrypt the snapshot.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | A list of tags to be added to this resource. A tag is a key-value pair.+    -- A tag key must be accompanied by a tag value, although null is accepted.+    tags :: Prelude.Maybe [Tag],+    -- | The snapshot is created from this cluster.+    clusterName :: Prelude.Text,+    -- | A name for the snapshot being created.+    snapshotName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateSnapshot' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'kmsKeyId', 'createSnapshot_kmsKeyId' - The ID of the KMS key used to encrypt the snapshot.+--+-- 'tags', 'createSnapshot_tags' - A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+--+-- 'clusterName', 'createSnapshot_clusterName' - The snapshot is created from this cluster.+--+-- 'snapshotName', 'createSnapshot_snapshotName' - A name for the snapshot being created.+newCreateSnapshot ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'snapshotName'+  Prelude.Text ->+  CreateSnapshot+newCreateSnapshot pClusterName_ pSnapshotName_ =+  CreateSnapshot'+    { kmsKeyId = Prelude.Nothing,+      tags = Prelude.Nothing,+      clusterName = pClusterName_,+      snapshotName = pSnapshotName_+    }++-- | The ID of the KMS key used to encrypt the snapshot.+createSnapshot_kmsKeyId :: Lens.Lens' CreateSnapshot (Prelude.Maybe Prelude.Text)+createSnapshot_kmsKeyId = Lens.lens (\CreateSnapshot' {kmsKeyId} -> kmsKeyId) (\s@CreateSnapshot' {} a -> s {kmsKeyId = a} :: CreateSnapshot)++-- | A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+createSnapshot_tags :: Lens.Lens' CreateSnapshot (Prelude.Maybe [Tag])+createSnapshot_tags = Lens.lens (\CreateSnapshot' {tags} -> tags) (\s@CreateSnapshot' {} a -> s {tags = a} :: CreateSnapshot) Prelude.. Lens.mapping Lens.coerced++-- | The snapshot is created from this cluster.+createSnapshot_clusterName :: Lens.Lens' CreateSnapshot Prelude.Text+createSnapshot_clusterName = Lens.lens (\CreateSnapshot' {clusterName} -> clusterName) (\s@CreateSnapshot' {} a -> s {clusterName = a} :: CreateSnapshot)++-- | A name for the snapshot being created.+createSnapshot_snapshotName :: Lens.Lens' CreateSnapshot Prelude.Text+createSnapshot_snapshotName = Lens.lens (\CreateSnapshot' {snapshotName} -> snapshotName) (\s@CreateSnapshot' {} a -> s {snapshotName = a} :: CreateSnapshot)++instance Core.AWSRequest CreateSnapshot where+  type+    AWSResponse CreateSnapshot =+      CreateSnapshotResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateSnapshotResponse'+            Prelude.<$> (x Data..?> "Snapshot")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateSnapshot where+  hashWithSalt _salt CreateSnapshot' {..} =+    _salt+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` snapshotName++instance Prelude.NFData CreateSnapshot where+  rnf CreateSnapshot' {..} =+    Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf snapshotName++instance Data.ToHeaders CreateSnapshot where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.CreateSnapshot" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateSnapshot where+  toJSON CreateSnapshot' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("ClusterName" Data..= clusterName),+            Prelude.Just ("SnapshotName" Data..= snapshotName)+          ]+      )++instance Data.ToPath CreateSnapshot where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateSnapshot where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateSnapshotResponse' smart constructor.+data CreateSnapshotResponse = CreateSnapshotResponse'+  { -- | The newly-created snapshot.+    snapshot :: Prelude.Maybe Snapshot,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateSnapshotResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'snapshot', 'createSnapshotResponse_snapshot' - The newly-created snapshot.+--+-- 'httpStatus', 'createSnapshotResponse_httpStatus' - The response's http status code.+newCreateSnapshotResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateSnapshotResponse+newCreateSnapshotResponse pHttpStatus_ =+  CreateSnapshotResponse'+    { snapshot = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The newly-created snapshot.+createSnapshotResponse_snapshot :: Lens.Lens' CreateSnapshotResponse (Prelude.Maybe Snapshot)+createSnapshotResponse_snapshot = Lens.lens (\CreateSnapshotResponse' {snapshot} -> snapshot) (\s@CreateSnapshotResponse' {} a -> s {snapshot = a} :: CreateSnapshotResponse)++-- | The response's http status code.+createSnapshotResponse_httpStatus :: Lens.Lens' CreateSnapshotResponse Prelude.Int+createSnapshotResponse_httpStatus = Lens.lens (\CreateSnapshotResponse' {httpStatus} -> httpStatus) (\s@CreateSnapshotResponse' {} a -> s {httpStatus = a} :: CreateSnapshotResponse)++instance Prelude.NFData CreateSnapshotResponse where+  rnf CreateSnapshotResponse' {..} =+    Prelude.rnf snapshot+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/CreateSubnetGroup.hs view
@@ -0,0 +1,222 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.CreateSubnetGroup+-- 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 subnet group. A subnet group is a collection of subnets+-- (typically private) that you can designate for your clusters running in+-- an Amazon Virtual Private Cloud (VPC) environment. When you create a+-- cluster in an Amazon VPC, you must specify a subnet group. MemoryDB uses+-- that subnet group to choose a subnet and IP addresses within that subnet+-- to associate with your nodes. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/subnetgroups.html Subnets and subnet groups>.+module Amazonka.MemoryDb.CreateSubnetGroup+  ( -- * Creating a Request+    CreateSubnetGroup (..),+    newCreateSubnetGroup,++    -- * Request Lenses+    createSubnetGroup_description,+    createSubnetGroup_tags,+    createSubnetGroup_subnetGroupName,+    createSubnetGroup_subnetIds,++    -- * Destructuring the Response+    CreateSubnetGroupResponse (..),+    newCreateSubnetGroupResponse,++    -- * Response Lenses+    createSubnetGroupResponse_subnetGroup,+    createSubnetGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateSubnetGroup' smart constructor.+data CreateSubnetGroup = CreateSubnetGroup'+  { -- | A description for the subnet group.+    description :: Prelude.Maybe Prelude.Text,+    -- | A list of tags to be added to this resource. A tag is a key-value pair.+    -- A tag key must be accompanied by a tag value, although null is accepted.+    tags :: Prelude.Maybe [Tag],+    -- | The name of the subnet group.+    subnetGroupName :: Prelude.Text,+    -- | A list of VPC subnet IDs for the subnet group.+    subnetIds :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateSubnetGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'createSubnetGroup_description' - A description for the subnet group.+--+-- 'tags', 'createSubnetGroup_tags' - A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+--+-- 'subnetGroupName', 'createSubnetGroup_subnetGroupName' - The name of the subnet group.+--+-- 'subnetIds', 'createSubnetGroup_subnetIds' - A list of VPC subnet IDs for the subnet group.+newCreateSubnetGroup ::+  -- | 'subnetGroupName'+  Prelude.Text ->+  CreateSubnetGroup+newCreateSubnetGroup pSubnetGroupName_ =+  CreateSubnetGroup'+    { description = Prelude.Nothing,+      tags = Prelude.Nothing,+      subnetGroupName = pSubnetGroupName_,+      subnetIds = Prelude.mempty+    }++-- | A description for the subnet group.+createSubnetGroup_description :: Lens.Lens' CreateSubnetGroup (Prelude.Maybe Prelude.Text)+createSubnetGroup_description = Lens.lens (\CreateSubnetGroup' {description} -> description) (\s@CreateSubnetGroup' {} a -> s {description = a} :: CreateSubnetGroup)++-- | A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+createSubnetGroup_tags :: Lens.Lens' CreateSubnetGroup (Prelude.Maybe [Tag])+createSubnetGroup_tags = Lens.lens (\CreateSubnetGroup' {tags} -> tags) (\s@CreateSubnetGroup' {} a -> s {tags = a} :: CreateSubnetGroup) Prelude.. Lens.mapping Lens.coerced++-- | The name of the subnet group.+createSubnetGroup_subnetGroupName :: Lens.Lens' CreateSubnetGroup Prelude.Text+createSubnetGroup_subnetGroupName = Lens.lens (\CreateSubnetGroup' {subnetGroupName} -> subnetGroupName) (\s@CreateSubnetGroup' {} a -> s {subnetGroupName = a} :: CreateSubnetGroup)++-- | A list of VPC subnet IDs for the subnet group.+createSubnetGroup_subnetIds :: Lens.Lens' CreateSubnetGroup [Prelude.Text]+createSubnetGroup_subnetIds = Lens.lens (\CreateSubnetGroup' {subnetIds} -> subnetIds) (\s@CreateSubnetGroup' {} a -> s {subnetIds = a} :: CreateSubnetGroup) Prelude.. Lens.coerced++instance Core.AWSRequest CreateSubnetGroup where+  type+    AWSResponse CreateSubnetGroup =+      CreateSubnetGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateSubnetGroupResponse'+            Prelude.<$> (x Data..?> "SubnetGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateSubnetGroup where+  hashWithSalt _salt CreateSubnetGroup' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` subnetGroupName+      `Prelude.hashWithSalt` subnetIds++instance Prelude.NFData CreateSubnetGroup where+  rnf CreateSubnetGroup' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf subnetGroupName+      `Prelude.seq` Prelude.rnf subnetIds++instance Data.ToHeaders CreateSubnetGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.CreateSubnetGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateSubnetGroup where+  toJSON CreateSubnetGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("SubnetGroupName" Data..= subnetGroupName),+            Prelude.Just ("SubnetIds" Data..= subnetIds)+          ]+      )++instance Data.ToPath CreateSubnetGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateSubnetGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateSubnetGroupResponse' smart constructor.+data CreateSubnetGroupResponse = CreateSubnetGroupResponse'+  { -- | The newly-created subnet group+    subnetGroup :: Prelude.Maybe SubnetGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateSubnetGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'subnetGroup', 'createSubnetGroupResponse_subnetGroup' - The newly-created subnet group+--+-- 'httpStatus', 'createSubnetGroupResponse_httpStatus' - The response's http status code.+newCreateSubnetGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateSubnetGroupResponse+newCreateSubnetGroupResponse pHttpStatus_ =+  CreateSubnetGroupResponse'+    { subnetGroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The newly-created subnet group+createSubnetGroupResponse_subnetGroup :: Lens.Lens' CreateSubnetGroupResponse (Prelude.Maybe SubnetGroup)+createSubnetGroupResponse_subnetGroup = Lens.lens (\CreateSubnetGroupResponse' {subnetGroup} -> subnetGroup) (\s@CreateSubnetGroupResponse' {} a -> s {subnetGroup = a} :: CreateSubnetGroupResponse)++-- | The response's http status code.+createSubnetGroupResponse_httpStatus :: Lens.Lens' CreateSubnetGroupResponse Prelude.Int+createSubnetGroupResponse_httpStatus = Lens.lens (\CreateSubnetGroupResponse' {httpStatus} -> httpStatus) (\s@CreateSubnetGroupResponse' {} a -> s {httpStatus = a} :: CreateSubnetGroupResponse)++instance Prelude.NFData CreateSubnetGroupResponse where+  rnf CreateSubnetGroupResponse' {..} =+    Prelude.rnf subnetGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/CreateUser.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.MemoryDb.CreateUser+-- 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 MemoryDB user. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/clusters.acls.html Authenticating users with Access Contol Lists (ACLs)>.+module Amazonka.MemoryDb.CreateUser+  ( -- * Creating a Request+    CreateUser (..),+    newCreateUser,++    -- * Request Lenses+    createUser_tags,+    createUser_userName,+    createUser_authenticationMode,+    createUser_accessString,++    -- * Destructuring the Response+    CreateUserResponse (..),+    newCreateUserResponse,++    -- * Response Lenses+    createUserResponse_user,+    createUserResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateUser' smart constructor.+data CreateUser = CreateUser'+  { -- | A list of tags to be added to this resource. A tag is a key-value pair.+    -- A tag key must be accompanied by a tag value, although null is accepted.+    tags :: Prelude.Maybe [Tag],+    -- | The name of the user. This value must be unique as it also serves as the+    -- user identifier.+    userName :: Prelude.Text,+    -- | Denotes the user\'s authentication properties, such as whether it+    -- requires a password to authenticate.+    authenticationMode :: AuthenticationMode,+    -- | Access permissions string used for this user.+    accessString :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateUser' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tags', 'createUser_tags' - A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+--+-- 'userName', 'createUser_userName' - The name of the user. This value must be unique as it also serves as the+-- user identifier.+--+-- 'authenticationMode', 'createUser_authenticationMode' - Denotes the user\'s authentication properties, such as whether it+-- requires a password to authenticate.+--+-- 'accessString', 'createUser_accessString' - Access permissions string used for this user.+newCreateUser ::+  -- | 'userName'+  Prelude.Text ->+  -- | 'authenticationMode'+  AuthenticationMode ->+  -- | 'accessString'+  Prelude.Text ->+  CreateUser+newCreateUser+  pUserName_+  pAuthenticationMode_+  pAccessString_ =+    CreateUser'+      { tags = Prelude.Nothing,+        userName = pUserName_,+        authenticationMode = pAuthenticationMode_,+        accessString = pAccessString_+      }++-- | A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+createUser_tags :: Lens.Lens' CreateUser (Prelude.Maybe [Tag])+createUser_tags = Lens.lens (\CreateUser' {tags} -> tags) (\s@CreateUser' {} a -> s {tags = a} :: CreateUser) Prelude.. Lens.mapping Lens.coerced++-- | The name of the user. This value must be unique as it also serves as the+-- user identifier.+createUser_userName :: Lens.Lens' CreateUser Prelude.Text+createUser_userName = Lens.lens (\CreateUser' {userName} -> userName) (\s@CreateUser' {} a -> s {userName = a} :: CreateUser)++-- | Denotes the user\'s authentication properties, such as whether it+-- requires a password to authenticate.+createUser_authenticationMode :: Lens.Lens' CreateUser AuthenticationMode+createUser_authenticationMode = Lens.lens (\CreateUser' {authenticationMode} -> authenticationMode) (\s@CreateUser' {} a -> s {authenticationMode = a} :: CreateUser)++-- | Access permissions string used for this user.+createUser_accessString :: Lens.Lens' CreateUser Prelude.Text+createUser_accessString = Lens.lens (\CreateUser' {accessString} -> accessString) (\s@CreateUser' {} a -> s {accessString = a} :: CreateUser)++instance Core.AWSRequest CreateUser where+  type AWSResponse CreateUser = CreateUserResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateUserResponse'+            Prelude.<$> (x Data..?> "User")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateUser where+  hashWithSalt _salt CreateUser' {..} =+    _salt+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` userName+      `Prelude.hashWithSalt` authenticationMode+      `Prelude.hashWithSalt` accessString++instance Prelude.NFData CreateUser where+  rnf CreateUser' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf userName+      `Prelude.seq` Prelude.rnf authenticationMode+      `Prelude.seq` Prelude.rnf accessString++instance Data.ToHeaders CreateUser where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("AmazonMemoryDB.CreateUser" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateUser where+  toJSON CreateUser' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("UserName" Data..= userName),+            Prelude.Just+              ("AuthenticationMode" Data..= authenticationMode),+            Prelude.Just ("AccessString" Data..= accessString)+          ]+      )++instance Data.ToPath CreateUser where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateUser where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateUserResponse' smart constructor.+data CreateUserResponse = CreateUserResponse'+  { -- | The newly-created user.+    user :: Prelude.Maybe User,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateUserResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'user', 'createUserResponse_user' - The newly-created user.+--+-- 'httpStatus', 'createUserResponse_httpStatus' - The response's http status code.+newCreateUserResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateUserResponse+newCreateUserResponse pHttpStatus_ =+  CreateUserResponse'+    { user = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The newly-created user.+createUserResponse_user :: Lens.Lens' CreateUserResponse (Prelude.Maybe User)+createUserResponse_user = Lens.lens (\CreateUserResponse' {user} -> user) (\s@CreateUserResponse' {} a -> s {user = a} :: CreateUserResponse)++-- | The response's http status code.+createUserResponse_httpStatus :: Lens.Lens' CreateUserResponse Prelude.Int+createUserResponse_httpStatus = Lens.lens (\CreateUserResponse' {httpStatus} -> httpStatus) (\s@CreateUserResponse' {} a -> s {httpStatus = a} :: CreateUserResponse)++instance Prelude.NFData CreateUserResponse where+  rnf CreateUserResponse' {..} =+    Prelude.rnf user+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DeleteACL.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.MemoryDb.DeleteACL+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an Access Control List. The ACL must first be disassociated from+-- the cluster before it can be deleted. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/clusters.acls.html Authenticating users with Access Contol Lists (ACLs)>.+module Amazonka.MemoryDb.DeleteACL+  ( -- * Creating a Request+    DeleteACL (..),+    newDeleteACL,++    -- * Request Lenses+    deleteACL_aCLName,++    -- * Destructuring the Response+    DeleteACLResponse (..),+    newDeleteACLResponse,++    -- * Response Lenses+    deleteACLResponse_acl,+    deleteACLResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteACL' smart constructor.+data DeleteACL = DeleteACL'+  { -- | The name of the Access Control List to delete+    aCLName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteACL' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aCLName', 'deleteACL_aCLName' - The name of the Access Control List to delete+newDeleteACL ::+  -- | 'aCLName'+  Prelude.Text ->+  DeleteACL+newDeleteACL pACLName_ =+  DeleteACL' {aCLName = pACLName_}++-- | The name of the Access Control List to delete+deleteACL_aCLName :: Lens.Lens' DeleteACL Prelude.Text+deleteACL_aCLName = Lens.lens (\DeleteACL' {aCLName} -> aCLName) (\s@DeleteACL' {} a -> s {aCLName = a} :: DeleteACL)++instance Core.AWSRequest DeleteACL where+  type AWSResponse DeleteACL = DeleteACLResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteACLResponse'+            Prelude.<$> (x Data..?> "ACL")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteACL where+  hashWithSalt _salt DeleteACL' {..} =+    _salt `Prelude.hashWithSalt` aCLName++instance Prelude.NFData DeleteACL where+  rnf DeleteACL' {..} = Prelude.rnf aCLName++instance Data.ToHeaders DeleteACL where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("AmazonMemoryDB.DeleteACL" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteACL where+  toJSON DeleteACL' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ACLName" Data..= aCLName)]+      )++instance Data.ToPath DeleteACL where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteACL where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteACLResponse' smart constructor.+data DeleteACLResponse = DeleteACLResponse'+  { -- | The Access Control List object that has been deleted.+    acl :: Prelude.Maybe ACL,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteACLResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acl', 'deleteACLResponse_acl' - The Access Control List object that has been deleted.+--+-- 'httpStatus', 'deleteACLResponse_httpStatus' - The response's http status code.+newDeleteACLResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteACLResponse+newDeleteACLResponse pHttpStatus_ =+  DeleteACLResponse'+    { acl = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Access Control List object that has been deleted.+deleteACLResponse_acl :: Lens.Lens' DeleteACLResponse (Prelude.Maybe ACL)+deleteACLResponse_acl = Lens.lens (\DeleteACLResponse' {acl} -> acl) (\s@DeleteACLResponse' {} a -> s {acl = a} :: DeleteACLResponse)++-- | The response's http status code.+deleteACLResponse_httpStatus :: Lens.Lens' DeleteACLResponse Prelude.Int+deleteACLResponse_httpStatus = Lens.lens (\DeleteACLResponse' {httpStatus} -> httpStatus) (\s@DeleteACLResponse' {} a -> s {httpStatus = a} :: DeleteACLResponse)++instance Prelude.NFData DeleteACLResponse where+  rnf DeleteACLResponse' {..} =+    Prelude.rnf acl+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DeleteCluster.hs view
@@ -0,0 +1,193 @@+{-# 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.MemoryDb.DeleteCluster+-- 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 cluster. It also deletes all associated nodes and node+-- endpoints+module Amazonka.MemoryDb.DeleteCluster+  ( -- * Creating a Request+    DeleteCluster (..),+    newDeleteCluster,++    -- * Request Lenses+    deleteCluster_finalSnapshotName,+    deleteCluster_clusterName,++    -- * Destructuring the Response+    DeleteClusterResponse (..),+    newDeleteClusterResponse,++    -- * Response Lenses+    deleteClusterResponse_cluster,+    deleteClusterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteCluster' smart constructor.+data DeleteCluster = DeleteCluster'+  { -- | The user-supplied name of a final cluster snapshot. This is the unique+    -- name that identifies the snapshot. MemoryDB creates the snapshot, and+    -- then deletes the cluster immediately afterward.+    finalSnapshotName :: Prelude.Maybe Prelude.Text,+    -- | The name of the cluster to be deleted+    clusterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteCluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'finalSnapshotName', 'deleteCluster_finalSnapshotName' - The user-supplied name of a final cluster snapshot. This is the unique+-- name that identifies the snapshot. MemoryDB creates the snapshot, and+-- then deletes the cluster immediately afterward.+--+-- 'clusterName', 'deleteCluster_clusterName' - The name of the cluster to be deleted+newDeleteCluster ::+  -- | 'clusterName'+  Prelude.Text ->+  DeleteCluster+newDeleteCluster pClusterName_ =+  DeleteCluster'+    { finalSnapshotName = Prelude.Nothing,+      clusterName = pClusterName_+    }++-- | The user-supplied name of a final cluster snapshot. This is the unique+-- name that identifies the snapshot. MemoryDB creates the snapshot, and+-- then deletes the cluster immediately afterward.+deleteCluster_finalSnapshotName :: Lens.Lens' DeleteCluster (Prelude.Maybe Prelude.Text)+deleteCluster_finalSnapshotName = Lens.lens (\DeleteCluster' {finalSnapshotName} -> finalSnapshotName) (\s@DeleteCluster' {} a -> s {finalSnapshotName = a} :: DeleteCluster)++-- | The name of the cluster to be deleted+deleteCluster_clusterName :: Lens.Lens' DeleteCluster Prelude.Text+deleteCluster_clusterName = Lens.lens (\DeleteCluster' {clusterName} -> clusterName) (\s@DeleteCluster' {} a -> s {clusterName = a} :: DeleteCluster)++instance Core.AWSRequest DeleteCluster where+  type+    AWSResponse DeleteCluster =+      DeleteClusterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteClusterResponse'+            Prelude.<$> (x Data..?> "Cluster")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteCluster where+  hashWithSalt _salt DeleteCluster' {..} =+    _salt+      `Prelude.hashWithSalt` finalSnapshotName+      `Prelude.hashWithSalt` clusterName++instance Prelude.NFData DeleteCluster where+  rnf DeleteCluster' {..} =+    Prelude.rnf finalSnapshotName+      `Prelude.seq` Prelude.rnf clusterName++instance Data.ToHeaders DeleteCluster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DeleteCluster" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteCluster where+  toJSON DeleteCluster' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FinalSnapshotName" Data..=)+              Prelude.<$> finalSnapshotName,+            Prelude.Just ("ClusterName" Data..= clusterName)+          ]+      )++instance Data.ToPath DeleteCluster where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteCluster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteClusterResponse' smart constructor.+data DeleteClusterResponse = DeleteClusterResponse'+  { -- | The cluster object that has been deleted+    cluster :: Prelude.Maybe Cluster,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteClusterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cluster', 'deleteClusterResponse_cluster' - The cluster object that has been deleted+--+-- 'httpStatus', 'deleteClusterResponse_httpStatus' - The response's http status code.+newDeleteClusterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteClusterResponse+newDeleteClusterResponse pHttpStatus_ =+  DeleteClusterResponse'+    { cluster = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The cluster object that has been deleted+deleteClusterResponse_cluster :: Lens.Lens' DeleteClusterResponse (Prelude.Maybe Cluster)+deleteClusterResponse_cluster = Lens.lens (\DeleteClusterResponse' {cluster} -> cluster) (\s@DeleteClusterResponse' {} a -> s {cluster = a} :: DeleteClusterResponse)++-- | The response's http status code.+deleteClusterResponse_httpStatus :: Lens.Lens' DeleteClusterResponse Prelude.Int+deleteClusterResponse_httpStatus = Lens.lens (\DeleteClusterResponse' {httpStatus} -> httpStatus) (\s@DeleteClusterResponse' {} a -> s {httpStatus = a} :: DeleteClusterResponse)++instance Prelude.NFData DeleteClusterResponse where+  rnf DeleteClusterResponse' {..} =+    Prelude.rnf cluster+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DeleteParameterGroup.hs view
@@ -0,0 +1,176 @@+{-# 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.MemoryDb.DeleteParameterGroup+-- 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 parameter group. You cannot delete a parameter+-- group if it is associated with any clusters. You cannot delete the+-- default parameter groups in your account.+module Amazonka.MemoryDb.DeleteParameterGroup+  ( -- * Creating a Request+    DeleteParameterGroup (..),+    newDeleteParameterGroup,++    -- * Request Lenses+    deleteParameterGroup_parameterGroupName,++    -- * Destructuring the Response+    DeleteParameterGroupResponse (..),+    newDeleteParameterGroupResponse,++    -- * Response Lenses+    deleteParameterGroupResponse_parameterGroup,+    deleteParameterGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteParameterGroup' smart constructor.+data DeleteParameterGroup = DeleteParameterGroup'+  { -- | The name of the parameter group to delete.+    parameterGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteParameterGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'parameterGroupName', 'deleteParameterGroup_parameterGroupName' - The name of the parameter group to delete.+newDeleteParameterGroup ::+  -- | 'parameterGroupName'+  Prelude.Text ->+  DeleteParameterGroup+newDeleteParameterGroup pParameterGroupName_ =+  DeleteParameterGroup'+    { parameterGroupName =+        pParameterGroupName_+    }++-- | The name of the parameter group to delete.+deleteParameterGroup_parameterGroupName :: Lens.Lens' DeleteParameterGroup Prelude.Text+deleteParameterGroup_parameterGroupName = Lens.lens (\DeleteParameterGroup' {parameterGroupName} -> parameterGroupName) (\s@DeleteParameterGroup' {} a -> s {parameterGroupName = a} :: DeleteParameterGroup)++instance Core.AWSRequest DeleteParameterGroup where+  type+    AWSResponse DeleteParameterGroup =+      DeleteParameterGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteParameterGroupResponse'+            Prelude.<$> (x Data..?> "ParameterGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteParameterGroup where+  hashWithSalt _salt DeleteParameterGroup' {..} =+    _salt `Prelude.hashWithSalt` parameterGroupName++instance Prelude.NFData DeleteParameterGroup where+  rnf DeleteParameterGroup' {..} =+    Prelude.rnf parameterGroupName++instance Data.ToHeaders DeleteParameterGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DeleteParameterGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteParameterGroup where+  toJSON DeleteParameterGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("ParameterGroupName" Data..= parameterGroupName)+          ]+      )++instance Data.ToPath DeleteParameterGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteParameterGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteParameterGroupResponse' smart constructor.+data DeleteParameterGroupResponse = DeleteParameterGroupResponse'+  { -- | The parameter group that has been deleted.+    parameterGroup :: Prelude.Maybe ParameterGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteParameterGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'parameterGroup', 'deleteParameterGroupResponse_parameterGroup' - The parameter group that has been deleted.+--+-- 'httpStatus', 'deleteParameterGroupResponse_httpStatus' - The response's http status code.+newDeleteParameterGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteParameterGroupResponse+newDeleteParameterGroupResponse pHttpStatus_ =+  DeleteParameterGroupResponse'+    { parameterGroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The parameter group that has been deleted.+deleteParameterGroupResponse_parameterGroup :: Lens.Lens' DeleteParameterGroupResponse (Prelude.Maybe ParameterGroup)+deleteParameterGroupResponse_parameterGroup = Lens.lens (\DeleteParameterGroupResponse' {parameterGroup} -> parameterGroup) (\s@DeleteParameterGroupResponse' {} a -> s {parameterGroup = a} :: DeleteParameterGroupResponse)++-- | The response's http status code.+deleteParameterGroupResponse_httpStatus :: Lens.Lens' DeleteParameterGroupResponse Prelude.Int+deleteParameterGroupResponse_httpStatus = Lens.lens (\DeleteParameterGroupResponse' {httpStatus} -> httpStatus) (\s@DeleteParameterGroupResponse' {} a -> s {httpStatus = a} :: DeleteParameterGroupResponse)++instance Prelude.NFData DeleteParameterGroupResponse where+  rnf DeleteParameterGroupResponse' {..} =+    Prelude.rnf parameterGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DeleteSnapshot.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.MemoryDb.DeleteSnapshot+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an existing snapshot. When you receive a successful response+-- from this operation, MemoryDB immediately begins deleting the snapshot;+-- you cannot cancel or revert this operation.+module Amazonka.MemoryDb.DeleteSnapshot+  ( -- * Creating a Request+    DeleteSnapshot (..),+    newDeleteSnapshot,++    -- * Request Lenses+    deleteSnapshot_snapshotName,++    -- * Destructuring the Response+    DeleteSnapshotResponse (..),+    newDeleteSnapshotResponse,++    -- * Response Lenses+    deleteSnapshotResponse_snapshot,+    deleteSnapshotResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteSnapshot' smart constructor.+data DeleteSnapshot = DeleteSnapshot'+  { -- | The name of the snapshot to delete+    snapshotName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSnapshot' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'snapshotName', 'deleteSnapshot_snapshotName' - The name of the snapshot to delete+newDeleteSnapshot ::+  -- | 'snapshotName'+  Prelude.Text ->+  DeleteSnapshot+newDeleteSnapshot pSnapshotName_ =+  DeleteSnapshot' {snapshotName = pSnapshotName_}++-- | The name of the snapshot to delete+deleteSnapshot_snapshotName :: Lens.Lens' DeleteSnapshot Prelude.Text+deleteSnapshot_snapshotName = Lens.lens (\DeleteSnapshot' {snapshotName} -> snapshotName) (\s@DeleteSnapshot' {} a -> s {snapshotName = a} :: DeleteSnapshot)++instance Core.AWSRequest DeleteSnapshot where+  type+    AWSResponse DeleteSnapshot =+      DeleteSnapshotResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteSnapshotResponse'+            Prelude.<$> (x Data..?> "Snapshot")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteSnapshot where+  hashWithSalt _salt DeleteSnapshot' {..} =+    _salt `Prelude.hashWithSalt` snapshotName++instance Prelude.NFData DeleteSnapshot where+  rnf DeleteSnapshot' {..} = Prelude.rnf snapshotName++instance Data.ToHeaders DeleteSnapshot where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DeleteSnapshot" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteSnapshot where+  toJSON DeleteSnapshot' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("SnapshotName" Data..= snapshotName)]+      )++instance Data.ToPath DeleteSnapshot where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteSnapshot where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteSnapshotResponse' smart constructor.+data DeleteSnapshotResponse = DeleteSnapshotResponse'+  { -- | The snapshot object that has been deleted.+    snapshot :: Prelude.Maybe Snapshot,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSnapshotResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'snapshot', 'deleteSnapshotResponse_snapshot' - The snapshot object that has been deleted.+--+-- 'httpStatus', 'deleteSnapshotResponse_httpStatus' - The response's http status code.+newDeleteSnapshotResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteSnapshotResponse+newDeleteSnapshotResponse pHttpStatus_ =+  DeleteSnapshotResponse'+    { snapshot = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The snapshot object that has been deleted.+deleteSnapshotResponse_snapshot :: Lens.Lens' DeleteSnapshotResponse (Prelude.Maybe Snapshot)+deleteSnapshotResponse_snapshot = Lens.lens (\DeleteSnapshotResponse' {snapshot} -> snapshot) (\s@DeleteSnapshotResponse' {} a -> s {snapshot = a} :: DeleteSnapshotResponse)++-- | The response's http status code.+deleteSnapshotResponse_httpStatus :: Lens.Lens' DeleteSnapshotResponse Prelude.Int+deleteSnapshotResponse_httpStatus = Lens.lens (\DeleteSnapshotResponse' {httpStatus} -> httpStatus) (\s@DeleteSnapshotResponse' {} a -> s {httpStatus = a} :: DeleteSnapshotResponse)++instance Prelude.NFData DeleteSnapshotResponse where+  rnf DeleteSnapshotResponse' {..} =+    Prelude.rnf snapshot+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DeleteSubnetGroup.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.MemoryDb.DeleteSubnetGroup+-- 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 subnet group. You cannot delete a default subnet group or one+-- that is associated with any clusters.+module Amazonka.MemoryDb.DeleteSubnetGroup+  ( -- * Creating a Request+    DeleteSubnetGroup (..),+    newDeleteSubnetGroup,++    -- * Request Lenses+    deleteSubnetGroup_subnetGroupName,++    -- * Destructuring the Response+    DeleteSubnetGroupResponse (..),+    newDeleteSubnetGroupResponse,++    -- * Response Lenses+    deleteSubnetGroupResponse_subnetGroup,+    deleteSubnetGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteSubnetGroup' smart constructor.+data DeleteSubnetGroup = DeleteSubnetGroup'+  { -- | The name of the subnet group to delete+    subnetGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSubnetGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'subnetGroupName', 'deleteSubnetGroup_subnetGroupName' - The name of the subnet group to delete+newDeleteSubnetGroup ::+  -- | 'subnetGroupName'+  Prelude.Text ->+  DeleteSubnetGroup+newDeleteSubnetGroup pSubnetGroupName_ =+  DeleteSubnetGroup'+    { subnetGroupName =+        pSubnetGroupName_+    }++-- | The name of the subnet group to delete+deleteSubnetGroup_subnetGroupName :: Lens.Lens' DeleteSubnetGroup Prelude.Text+deleteSubnetGroup_subnetGroupName = Lens.lens (\DeleteSubnetGroup' {subnetGroupName} -> subnetGroupName) (\s@DeleteSubnetGroup' {} a -> s {subnetGroupName = a} :: DeleteSubnetGroup)++instance Core.AWSRequest DeleteSubnetGroup where+  type+    AWSResponse DeleteSubnetGroup =+      DeleteSubnetGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteSubnetGroupResponse'+            Prelude.<$> (x Data..?> "SubnetGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteSubnetGroup where+  hashWithSalt _salt DeleteSubnetGroup' {..} =+    _salt `Prelude.hashWithSalt` subnetGroupName++instance Prelude.NFData DeleteSubnetGroup where+  rnf DeleteSubnetGroup' {..} =+    Prelude.rnf subnetGroupName++instance Data.ToHeaders DeleteSubnetGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DeleteSubnetGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteSubnetGroup where+  toJSON DeleteSubnetGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("SubnetGroupName" Data..= subnetGroupName)+          ]+      )++instance Data.ToPath DeleteSubnetGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteSubnetGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteSubnetGroupResponse' smart constructor.+data DeleteSubnetGroupResponse = DeleteSubnetGroupResponse'+  { -- | The subnet group object that has been deleted.+    subnetGroup :: Prelude.Maybe SubnetGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSubnetGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'subnetGroup', 'deleteSubnetGroupResponse_subnetGroup' - The subnet group object that has been deleted.+--+-- 'httpStatus', 'deleteSubnetGroupResponse_httpStatus' - The response's http status code.+newDeleteSubnetGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteSubnetGroupResponse+newDeleteSubnetGroupResponse pHttpStatus_ =+  DeleteSubnetGroupResponse'+    { subnetGroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The subnet group object that has been deleted.+deleteSubnetGroupResponse_subnetGroup :: Lens.Lens' DeleteSubnetGroupResponse (Prelude.Maybe SubnetGroup)+deleteSubnetGroupResponse_subnetGroup = Lens.lens (\DeleteSubnetGroupResponse' {subnetGroup} -> subnetGroup) (\s@DeleteSubnetGroupResponse' {} a -> s {subnetGroup = a} :: DeleteSubnetGroupResponse)++-- | The response's http status code.+deleteSubnetGroupResponse_httpStatus :: Lens.Lens' DeleteSubnetGroupResponse Prelude.Int+deleteSubnetGroupResponse_httpStatus = Lens.lens (\DeleteSubnetGroupResponse' {httpStatus} -> httpStatus) (\s@DeleteSubnetGroupResponse' {} a -> s {httpStatus = a} :: DeleteSubnetGroupResponse)++instance Prelude.NFData DeleteSubnetGroupResponse where+  rnf DeleteSubnetGroupResponse' {..} =+    Prelude.rnf subnetGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DeleteUser.hs view
@@ -0,0 +1,164 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.DeleteUser+-- 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 user. The user will be removed from all ACLs and in turn+-- removed from all clusters.+module Amazonka.MemoryDb.DeleteUser+  ( -- * Creating a Request+    DeleteUser (..),+    newDeleteUser,++    -- * Request Lenses+    deleteUser_userName,++    -- * Destructuring the Response+    DeleteUserResponse (..),+    newDeleteUserResponse,++    -- * Response Lenses+    deleteUserResponse_user,+    deleteUserResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteUser' smart constructor.+data DeleteUser = DeleteUser'+  { -- | The name of the user to delete+    userName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteUser' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'userName', 'deleteUser_userName' - The name of the user to delete+newDeleteUser ::+  -- | 'userName'+  Prelude.Text ->+  DeleteUser+newDeleteUser pUserName_ =+  DeleteUser' {userName = pUserName_}++-- | The name of the user to delete+deleteUser_userName :: Lens.Lens' DeleteUser Prelude.Text+deleteUser_userName = Lens.lens (\DeleteUser' {userName} -> userName) (\s@DeleteUser' {} a -> s {userName = a} :: DeleteUser)++instance Core.AWSRequest DeleteUser where+  type AWSResponse DeleteUser = DeleteUserResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteUserResponse'+            Prelude.<$> (x Data..?> "User")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteUser where+  hashWithSalt _salt DeleteUser' {..} =+    _salt `Prelude.hashWithSalt` userName++instance Prelude.NFData DeleteUser where+  rnf DeleteUser' {..} = Prelude.rnf userName++instance Data.ToHeaders DeleteUser where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("AmazonMemoryDB.DeleteUser" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteUser where+  toJSON DeleteUser' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("UserName" Data..= userName)]+      )++instance Data.ToPath DeleteUser where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteUser where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteUserResponse' smart constructor.+data DeleteUserResponse = DeleteUserResponse'+  { -- | The user object that has been deleted.+    user :: Prelude.Maybe User,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteUserResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'user', 'deleteUserResponse_user' - The user object that has been deleted.+--+-- 'httpStatus', 'deleteUserResponse_httpStatus' - The response's http status code.+newDeleteUserResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteUserResponse+newDeleteUserResponse pHttpStatus_ =+  DeleteUserResponse'+    { user = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The user object that has been deleted.+deleteUserResponse_user :: Lens.Lens' DeleteUserResponse (Prelude.Maybe User)+deleteUserResponse_user = Lens.lens (\DeleteUserResponse' {user} -> user) (\s@DeleteUserResponse' {} a -> s {user = a} :: DeleteUserResponse)++-- | The response's http status code.+deleteUserResponse_httpStatus :: Lens.Lens' DeleteUserResponse Prelude.Int+deleteUserResponse_httpStatus = Lens.lens (\DeleteUserResponse' {httpStatus} -> httpStatus) (\s@DeleteUserResponse' {} a -> s {httpStatus = a} :: DeleteUserResponse)++instance Prelude.NFData DeleteUserResponse where+  rnf DeleteUserResponse' {..} =+    Prelude.rnf user+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeACLs.hs view
@@ -0,0 +1,257 @@+{-# 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.MemoryDb.DescribeACLs+-- 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 ACLs+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeACLs+  ( -- * Creating a Request+    DescribeACLs (..),+    newDescribeACLs,++    -- * Request Lenses+    describeACLs_aCLName,+    describeACLs_maxResults,+    describeACLs_nextToken,++    -- * Destructuring the Response+    DescribeACLsResponse (..),+    newDescribeACLsResponse,++    -- * Response Lenses+    describeACLsResponse_aCLs,+    describeACLsResponse_nextToken,+    describeACLsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeACLs' smart constructor.+data DescribeACLs = DescribeACLs'+  { -- | The name of the ACL+    aCLName :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxResults value, a token is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeACLs' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aCLName', 'describeACLs_aCLName' - The name of the ACL+--+-- 'maxResults', 'describeACLs_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeACLs_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+newDescribeACLs ::+  DescribeACLs+newDescribeACLs =+  DescribeACLs'+    { aCLName = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The name of the ACL+describeACLs_aCLName :: Lens.Lens' DescribeACLs (Prelude.Maybe Prelude.Text)+describeACLs_aCLName = Lens.lens (\DescribeACLs' {aCLName} -> aCLName) (\s@DescribeACLs' {} a -> s {aCLName = a} :: DescribeACLs)++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+describeACLs_maxResults :: Lens.Lens' DescribeACLs (Prelude.Maybe Prelude.Int)+describeACLs_maxResults = Lens.lens (\DescribeACLs' {maxResults} -> maxResults) (\s@DescribeACLs' {} a -> s {maxResults = a} :: DescribeACLs)++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeACLs_nextToken :: Lens.Lens' DescribeACLs (Prelude.Maybe Prelude.Text)+describeACLs_nextToken = Lens.lens (\DescribeACLs' {nextToken} -> nextToken) (\s@DescribeACLs' {} a -> s {nextToken = a} :: DescribeACLs)++instance Core.AWSPager DescribeACLs where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeACLsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeACLsResponse_aCLs+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeACLs_nextToken+          Lens..~ rs+          Lens.^? describeACLsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeACLs where+  type AWSResponse DescribeACLs = DescribeACLsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeACLsResponse'+            Prelude.<$> (x Data..?> "ACLs" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeACLs where+  hashWithSalt _salt DescribeACLs' {..} =+    _salt+      `Prelude.hashWithSalt` aCLName+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData DescribeACLs where+  rnf DescribeACLs' {..} =+    Prelude.rnf aCLName+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders DescribeACLs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeACLs" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeACLs where+  toJSON DescribeACLs' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ACLName" Data..=) Prelude.<$> aCLName,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath DescribeACLs where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeACLs where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeACLsResponse' smart constructor.+data DescribeACLsResponse = DescribeACLsResponse'+  { -- | The list of ACLs+    aCLs :: Prelude.Maybe [ACL],+    -- | If nextToken is returned, there are more results available. The value of+    -- nextToken is a unique pagination token for each page. Make the call+    -- again using the returned token to retrieve the next page. Keep all other+    -- arguments unchanged.+    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 'DescribeACLsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aCLs', 'describeACLsResponse_aCLs' - The list of ACLs+--+-- 'nextToken', 'describeACLsResponse_nextToken' - If nextToken is returned, there are more results available. The value of+-- nextToken is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged.+--+-- 'httpStatus', 'describeACLsResponse_httpStatus' - The response's http status code.+newDescribeACLsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeACLsResponse+newDescribeACLsResponse pHttpStatus_ =+  DescribeACLsResponse'+    { aCLs = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of ACLs+describeACLsResponse_aCLs :: Lens.Lens' DescribeACLsResponse (Prelude.Maybe [ACL])+describeACLsResponse_aCLs = Lens.lens (\DescribeACLsResponse' {aCLs} -> aCLs) (\s@DescribeACLsResponse' {} a -> s {aCLs = a} :: DescribeACLsResponse) Prelude.. Lens.mapping Lens.coerced++-- | If nextToken is returned, there are more results available. The value of+-- nextToken is a unique pagination token for each page. Make the call+-- again using the returned token to retrieve the next page. Keep all other+-- arguments unchanged.+describeACLsResponse_nextToken :: Lens.Lens' DescribeACLsResponse (Prelude.Maybe Prelude.Text)+describeACLsResponse_nextToken = Lens.lens (\DescribeACLsResponse' {nextToken} -> nextToken) (\s@DescribeACLsResponse' {} a -> s {nextToken = a} :: DescribeACLsResponse)++-- | The response's http status code.+describeACLsResponse_httpStatus :: Lens.Lens' DescribeACLsResponse Prelude.Int+describeACLsResponse_httpStatus = Lens.lens (\DescribeACLsResponse' {httpStatus} -> httpStatus) (\s@DescribeACLsResponse' {} a -> s {httpStatus = a} :: DescribeACLsResponse)++instance Prelude.NFData DescribeACLsResponse where+  rnf DescribeACLsResponse' {..} =+    Prelude.rnf aCLs+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeClusters.hs view
@@ -0,0 +1,282 @@+{-# 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.MemoryDb.DescribeClusters+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns information about all provisioned clusters if no cluster+-- identifier is specified, or about a specific cluster if a cluster name+-- is supplied.+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeClusters+  ( -- * Creating a Request+    DescribeClusters (..),+    newDescribeClusters,++    -- * Request Lenses+    describeClusters_clusterName,+    describeClusters_maxResults,+    describeClusters_nextToken,+    describeClusters_showShardDetails,++    -- * Destructuring the Response+    DescribeClustersResponse (..),+    newDescribeClustersResponse,++    -- * Response Lenses+    describeClustersResponse_clusters,+    describeClustersResponse_nextToken,+    describeClustersResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeClusters' smart constructor.+data DescribeClusters = DescribeClusters'+  { -- | The name of the cluster+    clusterName :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxResults value, a token is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | An optional flag that can be included in the request to retrieve+    -- information about the individual shard(s).+    showShardDetails :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeClusters' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'describeClusters_clusterName' - The name of the cluster+--+-- 'maxResults', 'describeClusters_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeClusters_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'showShardDetails', 'describeClusters_showShardDetails' - An optional flag that can be included in the request to retrieve+-- information about the individual shard(s).+newDescribeClusters ::+  DescribeClusters+newDescribeClusters =+  DescribeClusters'+    { clusterName = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      showShardDetails = Prelude.Nothing+    }++-- | The name of the cluster+describeClusters_clusterName :: Lens.Lens' DescribeClusters (Prelude.Maybe Prelude.Text)+describeClusters_clusterName = Lens.lens (\DescribeClusters' {clusterName} -> clusterName) (\s@DescribeClusters' {} a -> s {clusterName = a} :: DescribeClusters)++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+describeClusters_maxResults :: Lens.Lens' DescribeClusters (Prelude.Maybe Prelude.Int)+describeClusters_maxResults = Lens.lens (\DescribeClusters' {maxResults} -> maxResults) (\s@DescribeClusters' {} a -> s {maxResults = a} :: DescribeClusters)++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeClusters_nextToken :: Lens.Lens' DescribeClusters (Prelude.Maybe Prelude.Text)+describeClusters_nextToken = Lens.lens (\DescribeClusters' {nextToken} -> nextToken) (\s@DescribeClusters' {} a -> s {nextToken = a} :: DescribeClusters)++-- | An optional flag that can be included in the request to retrieve+-- information about the individual shard(s).+describeClusters_showShardDetails :: Lens.Lens' DescribeClusters (Prelude.Maybe Prelude.Bool)+describeClusters_showShardDetails = Lens.lens (\DescribeClusters' {showShardDetails} -> showShardDetails) (\s@DescribeClusters' {} a -> s {showShardDetails = a} :: DescribeClusters)++instance Core.AWSPager DescribeClusters where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeClustersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeClustersResponse_clusters+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeClusters_nextToken+          Lens..~ rs+          Lens.^? describeClustersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeClusters where+  type+    AWSResponse DescribeClusters =+      DescribeClustersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeClustersResponse'+            Prelude.<$> (x Data..?> "Clusters" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeClusters where+  hashWithSalt _salt DescribeClusters' {..} =+    _salt+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` showShardDetails++instance Prelude.NFData DescribeClusters where+  rnf DescribeClusters' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf showShardDetails++instance Data.ToHeaders DescribeClusters where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeClusters" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeClusters where+  toJSON DescribeClusters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClusterName" Data..=) Prelude.<$> clusterName,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("ShowShardDetails" Data..=)+              Prelude.<$> showShardDetails+          ]+      )++instance Data.ToPath DescribeClusters where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeClusters where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeClustersResponse' smart constructor.+data DescribeClustersResponse = DescribeClustersResponse'+  { -- | A list of clusters+    clusters :: Prelude.Maybe [Cluster],+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    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 'DescribeClustersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusters', 'describeClustersResponse_clusters' - A list of clusters+--+-- 'nextToken', 'describeClustersResponse_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'httpStatus', 'describeClustersResponse_httpStatus' - The response's http status code.+newDescribeClustersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeClustersResponse+newDescribeClustersResponse pHttpStatus_ =+  DescribeClustersResponse'+    { clusters =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of clusters+describeClustersResponse_clusters :: Lens.Lens' DescribeClustersResponse (Prelude.Maybe [Cluster])+describeClustersResponse_clusters = Lens.lens (\DescribeClustersResponse' {clusters} -> clusters) (\s@DescribeClustersResponse' {} a -> s {clusters = a} :: DescribeClustersResponse) Prelude.. Lens.mapping Lens.coerced++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeClustersResponse_nextToken :: Lens.Lens' DescribeClustersResponse (Prelude.Maybe Prelude.Text)+describeClustersResponse_nextToken = Lens.lens (\DescribeClustersResponse' {nextToken} -> nextToken) (\s@DescribeClustersResponse' {} a -> s {nextToken = a} :: DescribeClustersResponse)++-- | The response's http status code.+describeClustersResponse_httpStatus :: Lens.Lens' DescribeClustersResponse Prelude.Int+describeClustersResponse_httpStatus = Lens.lens (\DescribeClustersResponse' {httpStatus} -> httpStatus) (\s@DescribeClustersResponse' {} a -> s {httpStatus = a} :: DescribeClustersResponse)++instance Prelude.NFData DescribeClustersResponse where+  rnf DescribeClustersResponse' {..} =+    Prelude.rnf clusters+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeEngineVersions.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.MemoryDb.DescribeEngineVersions+-- 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 available Redis engine versions.+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeEngineVersions+  ( -- * Creating a Request+    DescribeEngineVersions (..),+    newDescribeEngineVersions,++    -- * Request Lenses+    describeEngineVersions_defaultOnly,+    describeEngineVersions_engineVersion,+    describeEngineVersions_maxResults,+    describeEngineVersions_nextToken,+    describeEngineVersions_parameterGroupFamily,++    -- * Destructuring the Response+    DescribeEngineVersionsResponse (..),+    newDescribeEngineVersionsResponse,++    -- * Response Lenses+    describeEngineVersionsResponse_engineVersions,+    describeEngineVersionsResponse_nextToken,+    describeEngineVersionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeEngineVersions' smart constructor.+data DescribeEngineVersions = DescribeEngineVersions'+  { -- | If true, specifies that only the default version of the specified engine+    -- or engine and major version combination is to be returned.+    defaultOnly :: Prelude.Maybe Prelude.Bool,+    -- | The Redis engine version+    engineVersion :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxResults value, a token is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of a specific parameter group family to return details for.+    parameterGroupFamily :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeEngineVersions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'defaultOnly', 'describeEngineVersions_defaultOnly' - If true, specifies that only the default version of the specified engine+-- or engine and major version combination is to be returned.+--+-- 'engineVersion', 'describeEngineVersions_engineVersion' - The Redis engine version+--+-- 'maxResults', 'describeEngineVersions_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeEngineVersions_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'parameterGroupFamily', 'describeEngineVersions_parameterGroupFamily' - The name of a specific parameter group family to return details for.+newDescribeEngineVersions ::+  DescribeEngineVersions+newDescribeEngineVersions =+  DescribeEngineVersions'+    { defaultOnly =+        Prelude.Nothing,+      engineVersion = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      parameterGroupFamily = Prelude.Nothing+    }++-- | If true, specifies that only the default version of the specified engine+-- or engine and major version combination is to be returned.+describeEngineVersions_defaultOnly :: Lens.Lens' DescribeEngineVersions (Prelude.Maybe Prelude.Bool)+describeEngineVersions_defaultOnly = Lens.lens (\DescribeEngineVersions' {defaultOnly} -> defaultOnly) (\s@DescribeEngineVersions' {} a -> s {defaultOnly = a} :: DescribeEngineVersions)++-- | The Redis engine version+describeEngineVersions_engineVersion :: Lens.Lens' DescribeEngineVersions (Prelude.Maybe Prelude.Text)+describeEngineVersions_engineVersion = Lens.lens (\DescribeEngineVersions' {engineVersion} -> engineVersion) (\s@DescribeEngineVersions' {} a -> s {engineVersion = a} :: DescribeEngineVersions)++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+describeEngineVersions_maxResults :: Lens.Lens' DescribeEngineVersions (Prelude.Maybe Prelude.Int)+describeEngineVersions_maxResults = Lens.lens (\DescribeEngineVersions' {maxResults} -> maxResults) (\s@DescribeEngineVersions' {} a -> s {maxResults = a} :: DescribeEngineVersions)++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeEngineVersions_nextToken :: Lens.Lens' DescribeEngineVersions (Prelude.Maybe Prelude.Text)+describeEngineVersions_nextToken = Lens.lens (\DescribeEngineVersions' {nextToken} -> nextToken) (\s@DescribeEngineVersions' {} a -> s {nextToken = a} :: DescribeEngineVersions)++-- | The name of a specific parameter group family to return details for.+describeEngineVersions_parameterGroupFamily :: Lens.Lens' DescribeEngineVersions (Prelude.Maybe Prelude.Text)+describeEngineVersions_parameterGroupFamily = Lens.lens (\DescribeEngineVersions' {parameterGroupFamily} -> parameterGroupFamily) (\s@DescribeEngineVersions' {} a -> s {parameterGroupFamily = a} :: DescribeEngineVersions)++instance Core.AWSPager DescribeEngineVersions where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeEngineVersionsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeEngineVersionsResponse_engineVersions+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeEngineVersions_nextToken+          Lens..~ rs+          Lens.^? describeEngineVersionsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeEngineVersions where+  type+    AWSResponse DescribeEngineVersions =+      DescribeEngineVersionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeEngineVersionsResponse'+            Prelude.<$> (x Data..?> "EngineVersions" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeEngineVersions where+  hashWithSalt _salt DescribeEngineVersions' {..} =+    _salt+      `Prelude.hashWithSalt` defaultOnly+      `Prelude.hashWithSalt` engineVersion+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` parameterGroupFamily++instance Prelude.NFData DescribeEngineVersions where+  rnf DescribeEngineVersions' {..} =+    Prelude.rnf defaultOnly+      `Prelude.seq` Prelude.rnf engineVersion+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf parameterGroupFamily++instance Data.ToHeaders DescribeEngineVersions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeEngineVersions" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeEngineVersions where+  toJSON DescribeEngineVersions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DefaultOnly" Data..=) Prelude.<$> defaultOnly,+            ("EngineVersion" Data..=) Prelude.<$> engineVersion,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("ParameterGroupFamily" Data..=)+              Prelude.<$> parameterGroupFamily+          ]+      )++instance Data.ToPath DescribeEngineVersions where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeEngineVersions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeEngineVersionsResponse' smart constructor.+data DescribeEngineVersionsResponse = DescribeEngineVersionsResponse'+  { -- | A list of engine version details. Each element in the list contains+    -- detailed information about one engine version.+    engineVersions :: Prelude.Maybe [EngineVersionInfo],+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    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 'DescribeEngineVersionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'engineVersions', 'describeEngineVersionsResponse_engineVersions' - A list of engine version details. Each element in the list contains+-- detailed information about one engine version.+--+-- 'nextToken', 'describeEngineVersionsResponse_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'httpStatus', 'describeEngineVersionsResponse_httpStatus' - The response's http status code.+newDescribeEngineVersionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeEngineVersionsResponse+newDescribeEngineVersionsResponse pHttpStatus_ =+  DescribeEngineVersionsResponse'+    { engineVersions =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of engine version details. Each element in the list contains+-- detailed information about one engine version.+describeEngineVersionsResponse_engineVersions :: Lens.Lens' DescribeEngineVersionsResponse (Prelude.Maybe [EngineVersionInfo])+describeEngineVersionsResponse_engineVersions = Lens.lens (\DescribeEngineVersionsResponse' {engineVersions} -> engineVersions) (\s@DescribeEngineVersionsResponse' {} a -> s {engineVersions = a} :: DescribeEngineVersionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeEngineVersionsResponse_nextToken :: Lens.Lens' DescribeEngineVersionsResponse (Prelude.Maybe Prelude.Text)+describeEngineVersionsResponse_nextToken = Lens.lens (\DescribeEngineVersionsResponse' {nextToken} -> nextToken) (\s@DescribeEngineVersionsResponse' {} a -> s {nextToken = a} :: DescribeEngineVersionsResponse)++-- | The response's http status code.+describeEngineVersionsResponse_httpStatus :: Lens.Lens' DescribeEngineVersionsResponse Prelude.Int+describeEngineVersionsResponse_httpStatus = Lens.lens (\DescribeEngineVersionsResponse' {httpStatus} -> httpStatus) (\s@DescribeEngineVersionsResponse' {} a -> s {httpStatus = a} :: DescribeEngineVersionsResponse)++instance+  Prelude.NFData+    DescribeEngineVersionsResponse+  where+  rnf DescribeEngineVersionsResponse' {..} =+    Prelude.rnf engineVersions+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeEvents.hs view
@@ -0,0 +1,333 @@+{-# 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.MemoryDb.DescribeEvents+-- 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 events related to clusters, security groups, and parameter+-- groups. You can obtain events specific to a particular cluster, security+-- group, or parameter group by providing the name as a parameter. By+-- default, only the events occurring within the last hour are returned;+-- however, you can retrieve up to 14 days\' worth of events if necessary.+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeEvents+  ( -- * Creating a Request+    DescribeEvents (..),+    newDescribeEvents,++    -- * Request Lenses+    describeEvents_duration,+    describeEvents_endTime,+    describeEvents_maxResults,+    describeEvents_nextToken,+    describeEvents_sourceName,+    describeEvents_sourceType,+    describeEvents_startTime,++    -- * Destructuring the Response+    DescribeEventsResponse (..),+    newDescribeEventsResponse,++    -- * Response Lenses+    describeEventsResponse_events,+    describeEventsResponse_nextToken,+    describeEventsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeEvents' smart constructor.+data DescribeEvents = DescribeEvents'+  { -- | The number of minutes worth of events to retrieve.+    duration :: Prelude.Maybe Prelude.Int,+    -- | The end of the time interval for which to retrieve events, specified in+    -- ISO 8601 format. Example: 2017-03-30T07:03:49.555Z+    endTime :: Prelude.Maybe Data.POSIX,+    -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxResults value, a token is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The identifier of the event source for which events are returned. If not+    -- specified, all sources are included in the response.+    sourceName :: Prelude.Maybe Prelude.Text,+    -- | The event source to retrieve events for. If no value is specified, all+    -- events are returned.+    sourceType :: Prelude.Maybe SourceType,+    -- | The beginning of the time interval to retrieve events for, specified in+    -- ISO 8601 format. Example: 2017-03-30T07:03:49.555Z+    startTime :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeEvents' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'duration', 'describeEvents_duration' - The number of minutes worth of events to retrieve.+--+-- 'endTime', 'describeEvents_endTime' - The end of the time interval for which to retrieve events, specified in+-- ISO 8601 format. Example: 2017-03-30T07:03:49.555Z+--+-- 'maxResults', 'describeEvents_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeEvents_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'sourceName', 'describeEvents_sourceName' - The identifier of the event source for which events are returned. If not+-- specified, all sources are included in the response.+--+-- 'sourceType', 'describeEvents_sourceType' - The event source to retrieve events for. If no value is specified, all+-- events are returned.+--+-- 'startTime', 'describeEvents_startTime' - The beginning of the time interval to retrieve events for, specified in+-- ISO 8601 format. Example: 2017-03-30T07:03:49.555Z+newDescribeEvents ::+  DescribeEvents+newDescribeEvents =+  DescribeEvents'+    { duration = Prelude.Nothing,+      endTime = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      sourceName = Prelude.Nothing,+      sourceType = Prelude.Nothing,+      startTime = Prelude.Nothing+    }++-- | The number of minutes worth of events to retrieve.+describeEvents_duration :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Int)+describeEvents_duration = Lens.lens (\DescribeEvents' {duration} -> duration) (\s@DescribeEvents' {} a -> s {duration = a} :: DescribeEvents)++-- | The end of the time interval for which to retrieve events, specified in+-- ISO 8601 format. Example: 2017-03-30T07:03:49.555Z+describeEvents_endTime :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.UTCTime)+describeEvents_endTime = Lens.lens (\DescribeEvents' {endTime} -> endTime) (\s@DescribeEvents' {} a -> s {endTime = a} :: DescribeEvents) Prelude.. Lens.mapping Data._Time++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+describeEvents_maxResults :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Int)+describeEvents_maxResults = Lens.lens (\DescribeEvents' {maxResults} -> maxResults) (\s@DescribeEvents' {} a -> s {maxResults = a} :: DescribeEvents)++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeEvents_nextToken :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)+describeEvents_nextToken = Lens.lens (\DescribeEvents' {nextToken} -> nextToken) (\s@DescribeEvents' {} a -> s {nextToken = a} :: DescribeEvents)++-- | The identifier of the event source for which events are returned. If not+-- specified, all sources are included in the response.+describeEvents_sourceName :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)+describeEvents_sourceName = Lens.lens (\DescribeEvents' {sourceName} -> sourceName) (\s@DescribeEvents' {} a -> s {sourceName = a} :: DescribeEvents)++-- | The event source to retrieve events for. If no value is specified, all+-- events are returned.+describeEvents_sourceType :: Lens.Lens' DescribeEvents (Prelude.Maybe SourceType)+describeEvents_sourceType = Lens.lens (\DescribeEvents' {sourceType} -> sourceType) (\s@DescribeEvents' {} a -> s {sourceType = a} :: DescribeEvents)++-- | The beginning of the time interval to retrieve events for, specified in+-- ISO 8601 format. Example: 2017-03-30T07:03:49.555Z+describeEvents_startTime :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.UTCTime)+describeEvents_startTime = Lens.lens (\DescribeEvents' {startTime} -> startTime) (\s@DescribeEvents' {} a -> s {startTime = a} :: DescribeEvents) Prelude.. Lens.mapping Data._Time++instance Core.AWSPager DescribeEvents where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeEventsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeEventsResponse_events+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeEvents_nextToken+          Lens..~ rs+          Lens.^? describeEventsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeEvents where+  type+    AWSResponse DescribeEvents =+      DescribeEventsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeEventsResponse'+            Prelude.<$> (x Data..?> "Events" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeEvents where+  hashWithSalt _salt DescribeEvents' {..} =+    _salt+      `Prelude.hashWithSalt` duration+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` sourceName+      `Prelude.hashWithSalt` sourceType+      `Prelude.hashWithSalt` startTime++instance Prelude.NFData DescribeEvents where+  rnf DescribeEvents' {..} =+    Prelude.rnf duration+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf sourceName+      `Prelude.seq` Prelude.rnf sourceType+      `Prelude.seq` Prelude.rnf startTime++instance Data.ToHeaders DescribeEvents where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeEvents" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeEvents where+  toJSON DescribeEvents' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Duration" Data..=) Prelude.<$> duration,+            ("EndTime" Data..=) Prelude.<$> endTime,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("SourceName" Data..=) Prelude.<$> sourceName,+            ("SourceType" Data..=) Prelude.<$> sourceType,+            ("StartTime" Data..=) Prelude.<$> startTime+          ]+      )++instance Data.ToPath DescribeEvents where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeEvents where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeEventsResponse' smart constructor.+data DescribeEventsResponse = DescribeEventsResponse'+  { -- | A list of events. Each element in the list contains detailed information+    -- about one event.+    events :: Prelude.Maybe [Event],+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    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 'DescribeEventsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'events', 'describeEventsResponse_events' - A list of events. Each element in the list contains detailed information+-- about one event.+--+-- 'nextToken', 'describeEventsResponse_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'httpStatus', 'describeEventsResponse_httpStatus' - The response's http status code.+newDescribeEventsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeEventsResponse+newDescribeEventsResponse pHttpStatus_ =+  DescribeEventsResponse'+    { events = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of events. Each element in the list contains detailed information+-- about one event.+describeEventsResponse_events :: Lens.Lens' DescribeEventsResponse (Prelude.Maybe [Event])+describeEventsResponse_events = Lens.lens (\DescribeEventsResponse' {events} -> events) (\s@DescribeEventsResponse' {} a -> s {events = a} :: DescribeEventsResponse) Prelude.. Lens.mapping Lens.coerced++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeEventsResponse_nextToken :: Lens.Lens' DescribeEventsResponse (Prelude.Maybe Prelude.Text)+describeEventsResponse_nextToken = Lens.lens (\DescribeEventsResponse' {nextToken} -> nextToken) (\s@DescribeEventsResponse' {} a -> s {nextToken = a} :: DescribeEventsResponse)++-- | The response's http status code.+describeEventsResponse_httpStatus :: Lens.Lens' DescribeEventsResponse Prelude.Int+describeEventsResponse_httpStatus = Lens.lens (\DescribeEventsResponse' {httpStatus} -> httpStatus) (\s@DescribeEventsResponse' {} a -> s {httpStatus = a} :: DescribeEventsResponse)++instance Prelude.NFData DescribeEventsResponse where+  rnf DescribeEventsResponse' {..} =+    Prelude.rnf events+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeParameterGroups.hs view
@@ -0,0 +1,276 @@+{-# 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.MemoryDb.DescribeParameterGroups+-- 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 parameter group descriptions. If a parameter group+-- name is specified, the list contains only the descriptions for that+-- group.+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeParameterGroups+  ( -- * Creating a Request+    DescribeParameterGroups (..),+    newDescribeParameterGroups,++    -- * Request Lenses+    describeParameterGroups_maxResults,+    describeParameterGroups_nextToken,+    describeParameterGroups_parameterGroupName,++    -- * Destructuring the Response+    DescribeParameterGroupsResponse (..),+    newDescribeParameterGroupsResponse,++    -- * Response Lenses+    describeParameterGroupsResponse_nextToken,+    describeParameterGroupsResponse_parameterGroups,+    describeParameterGroupsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeParameterGroups' smart constructor.+data DescribeParameterGroups = DescribeParameterGroups'+  { -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxResults value, a token is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of a specific parameter group to return details for.+    parameterGroupName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeParameterGroups' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeParameterGroups_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeParameterGroups_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'parameterGroupName', 'describeParameterGroups_parameterGroupName' - The name of a specific parameter group to return details for.+newDescribeParameterGroups ::+  DescribeParameterGroups+newDescribeParameterGroups =+  DescribeParameterGroups'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      parameterGroupName = Prelude.Nothing+    }++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+describeParameterGroups_maxResults :: Lens.Lens' DescribeParameterGroups (Prelude.Maybe Prelude.Int)+describeParameterGroups_maxResults = Lens.lens (\DescribeParameterGroups' {maxResults} -> maxResults) (\s@DescribeParameterGroups' {} a -> s {maxResults = a} :: DescribeParameterGroups)++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeParameterGroups_nextToken :: Lens.Lens' DescribeParameterGroups (Prelude.Maybe Prelude.Text)+describeParameterGroups_nextToken = Lens.lens (\DescribeParameterGroups' {nextToken} -> nextToken) (\s@DescribeParameterGroups' {} a -> s {nextToken = a} :: DescribeParameterGroups)++-- | The name of a specific parameter group to return details for.+describeParameterGroups_parameterGroupName :: Lens.Lens' DescribeParameterGroups (Prelude.Maybe Prelude.Text)+describeParameterGroups_parameterGroupName = Lens.lens (\DescribeParameterGroups' {parameterGroupName} -> parameterGroupName) (\s@DescribeParameterGroups' {} a -> s {parameterGroupName = a} :: DescribeParameterGroups)++instance Core.AWSPager DescribeParameterGroups where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeParameterGroupsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeParameterGroupsResponse_parameterGroups+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeParameterGroups_nextToken+          Lens..~ rs+          Lens.^? describeParameterGroupsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeParameterGroups where+  type+    AWSResponse DescribeParameterGroups =+      DescribeParameterGroupsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeParameterGroupsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "ParameterGroups"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeParameterGroups where+  hashWithSalt _salt DescribeParameterGroups' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` parameterGroupName++instance Prelude.NFData DescribeParameterGroups where+  rnf DescribeParameterGroups' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf parameterGroupName++instance Data.ToHeaders DescribeParameterGroups where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeParameterGroups" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeParameterGroups where+  toJSON DescribeParameterGroups' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("ParameterGroupName" Data..=)+              Prelude.<$> parameterGroupName+          ]+      )++instance Data.ToPath DescribeParameterGroups where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeParameterGroups where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeParameterGroupsResponse' smart constructor.+data DescribeParameterGroupsResponse = DescribeParameterGroupsResponse'+  { -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of parameter groups. Each element in the list contains detailed+    -- information about one parameter group.+    parameterGroups :: Prelude.Maybe [ParameterGroup],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeParameterGroupsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeParameterGroupsResponse_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'parameterGroups', 'describeParameterGroupsResponse_parameterGroups' - A list of parameter groups. Each element in the list contains detailed+-- information about one parameter group.+--+-- 'httpStatus', 'describeParameterGroupsResponse_httpStatus' - The response's http status code.+newDescribeParameterGroupsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeParameterGroupsResponse+newDescribeParameterGroupsResponse pHttpStatus_ =+  DescribeParameterGroupsResponse'+    { nextToken =+        Prelude.Nothing,+      parameterGroups = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeParameterGroupsResponse_nextToken :: Lens.Lens' DescribeParameterGroupsResponse (Prelude.Maybe Prelude.Text)+describeParameterGroupsResponse_nextToken = Lens.lens (\DescribeParameterGroupsResponse' {nextToken} -> nextToken) (\s@DescribeParameterGroupsResponse' {} a -> s {nextToken = a} :: DescribeParameterGroupsResponse)++-- | A list of parameter groups. Each element in the list contains detailed+-- information about one parameter group.+describeParameterGroupsResponse_parameterGroups :: Lens.Lens' DescribeParameterGroupsResponse (Prelude.Maybe [ParameterGroup])+describeParameterGroupsResponse_parameterGroups = Lens.lens (\DescribeParameterGroupsResponse' {parameterGroups} -> parameterGroups) (\s@DescribeParameterGroupsResponse' {} a -> s {parameterGroups = a} :: DescribeParameterGroupsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeParameterGroupsResponse_httpStatus :: Lens.Lens' DescribeParameterGroupsResponse Prelude.Int+describeParameterGroupsResponse_httpStatus = Lens.lens (\DescribeParameterGroupsResponse' {httpStatus} -> httpStatus) (\s@DescribeParameterGroupsResponse' {} a -> s {httpStatus = a} :: DescribeParameterGroupsResponse)++instance+  Prelude.NFData+    DescribeParameterGroupsResponse+  where+  rnf DescribeParameterGroupsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf parameterGroups+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeParameters.hs view
@@ -0,0 +1,269 @@+{-# 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.MemoryDb.DescribeParameters+-- 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 detailed parameter list for a particular parameter group.+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeParameters+  ( -- * Creating a Request+    DescribeParameters (..),+    newDescribeParameters,++    -- * Request Lenses+    describeParameters_maxResults,+    describeParameters_nextToken,+    describeParameters_parameterGroupName,++    -- * Destructuring the Response+    DescribeParametersResponse (..),+    newDescribeParametersResponse,++    -- * Response Lenses+    describeParametersResponse_nextToken,+    describeParametersResponse_parameters,+    describeParametersResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeParameters' smart constructor.+data DescribeParameters = DescribeParameters'+  { -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxResults value, a token is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | he name of a specific parameter group to return details for.+    parameterGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeParameters' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeParameters_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeParameters_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'parameterGroupName', 'describeParameters_parameterGroupName' - he name of a specific parameter group to return details for.+newDescribeParameters ::+  -- | 'parameterGroupName'+  Prelude.Text ->+  DescribeParameters+newDescribeParameters pParameterGroupName_ =+  DescribeParameters'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      parameterGroupName = pParameterGroupName_+    }++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+describeParameters_maxResults :: Lens.Lens' DescribeParameters (Prelude.Maybe Prelude.Int)+describeParameters_maxResults = Lens.lens (\DescribeParameters' {maxResults} -> maxResults) (\s@DescribeParameters' {} a -> s {maxResults = a} :: DescribeParameters)++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeParameters_nextToken :: Lens.Lens' DescribeParameters (Prelude.Maybe Prelude.Text)+describeParameters_nextToken = Lens.lens (\DescribeParameters' {nextToken} -> nextToken) (\s@DescribeParameters' {} a -> s {nextToken = a} :: DescribeParameters)++-- | he name of a specific parameter group to return details for.+describeParameters_parameterGroupName :: Lens.Lens' DescribeParameters Prelude.Text+describeParameters_parameterGroupName = Lens.lens (\DescribeParameters' {parameterGroupName} -> parameterGroupName) (\s@DescribeParameters' {} a -> s {parameterGroupName = a} :: DescribeParameters)++instance Core.AWSPager DescribeParameters where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeParametersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeParametersResponse_parameters+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeParameters_nextToken+          Lens..~ rs+          Lens.^? describeParametersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeParameters where+  type+    AWSResponse DescribeParameters =+      DescribeParametersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeParametersResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "Parameters" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeParameters where+  hashWithSalt _salt DescribeParameters' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` parameterGroupName++instance Prelude.NFData DescribeParameters where+  rnf DescribeParameters' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf parameterGroupName++instance Data.ToHeaders DescribeParameters where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeParameters" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeParameters where+  toJSON DescribeParameters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just+              ("ParameterGroupName" Data..= parameterGroupName)+          ]+      )++instance Data.ToPath DescribeParameters where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeParameters where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeParametersResponse' smart constructor.+data DescribeParametersResponse = DescribeParametersResponse'+  { -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of parameters specific to a particular parameter group. Each+    -- element in the list contains detailed information about one parameter.+    parameters :: Prelude.Maybe [Parameter],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeParametersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeParametersResponse_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'parameters', 'describeParametersResponse_parameters' - A list of parameters specific to a particular parameter group. Each+-- element in the list contains detailed information about one parameter.+--+-- 'httpStatus', 'describeParametersResponse_httpStatus' - The response's http status code.+newDescribeParametersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeParametersResponse+newDescribeParametersResponse pHttpStatus_ =+  DescribeParametersResponse'+    { nextToken =+        Prelude.Nothing,+      parameters = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeParametersResponse_nextToken :: Lens.Lens' DescribeParametersResponse (Prelude.Maybe Prelude.Text)+describeParametersResponse_nextToken = Lens.lens (\DescribeParametersResponse' {nextToken} -> nextToken) (\s@DescribeParametersResponse' {} a -> s {nextToken = a} :: DescribeParametersResponse)++-- | A list of parameters specific to a particular parameter group. Each+-- element in the list contains detailed information about one parameter.+describeParametersResponse_parameters :: Lens.Lens' DescribeParametersResponse (Prelude.Maybe [Parameter])+describeParametersResponse_parameters = Lens.lens (\DescribeParametersResponse' {parameters} -> parameters) (\s@DescribeParametersResponse' {} a -> s {parameters = a} :: DescribeParametersResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeParametersResponse_httpStatus :: Lens.Lens' DescribeParametersResponse Prelude.Int+describeParametersResponse_httpStatus = Lens.lens (\DescribeParametersResponse' {httpStatus} -> httpStatus) (\s@DescribeParametersResponse' {} a -> s {httpStatus = a} :: DescribeParametersResponse)++instance Prelude.NFData DescribeParametersResponse where+  rnf DescribeParametersResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeReservedNodes.hs view
@@ -0,0 +1,335 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.DescribeReservedNodes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns information about reserved nodes for this account, or about a+-- specified reserved node.+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeReservedNodes+  ( -- * Creating a Request+    DescribeReservedNodes (..),+    newDescribeReservedNodes,++    -- * Request Lenses+    describeReservedNodes_duration,+    describeReservedNodes_maxResults,+    describeReservedNodes_nextToken,+    describeReservedNodes_nodeType,+    describeReservedNodes_offeringType,+    describeReservedNodes_reservationId,+    describeReservedNodes_reservedNodesOfferingId,++    -- * Destructuring the Response+    DescribeReservedNodesResponse (..),+    newDescribeReservedNodesResponse,++    -- * Response Lenses+    describeReservedNodesResponse_nextToken,+    describeReservedNodesResponse_reservedNodes,+    describeReservedNodesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeReservedNodes' smart constructor.+data DescribeReservedNodes = DescribeReservedNodes'+  { -- | The duration filter value, specified in years or seconds. Use this+    -- parameter to show only reservations for this duration.+    duration :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxRecords value, a marker is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional marker returned from a prior request. Use this marker for+    -- pagination of results from this operation. If this parameter is+    -- specified, the response includes only records beyond the marker, up to+    -- the value specified by MaxRecords.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The node type filter value. Use this parameter to show only those+    -- reservations matching the specified node type. For more information, see+    -- <https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.reserved.html#reserved-nodes-supported Supported node types>.+    nodeType :: Prelude.Maybe Prelude.Text,+    -- | The offering type filter value. Use this parameter to show only the+    -- available offerings matching the specified offering type. Valid values:+    -- \"All Upfront\"|\"Partial Upfront\"| \"No Upfront\"+    offeringType :: Prelude.Maybe Prelude.Text,+    -- | The reserved node identifier filter value. Use this parameter to show+    -- only the reservation that matches the specified reservation ID.+    reservationId :: Prelude.Maybe Prelude.Text,+    -- | The offering identifier filter value. Use this parameter to show only+    -- purchased reservations matching the specified offering identifier.+    reservedNodesOfferingId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeReservedNodes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'duration', 'describeReservedNodes_duration' - The duration filter value, specified in years or seconds. Use this+-- parameter to show only reservations for this duration.+--+-- 'maxResults', 'describeReservedNodes_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxRecords value, a marker is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeReservedNodes_nextToken' - An optional marker returned from a prior request. Use this marker for+-- pagination of results from this operation. If this parameter is+-- specified, the response includes only records beyond the marker, up to+-- the value specified by MaxRecords.+--+-- 'nodeType', 'describeReservedNodes_nodeType' - The node type filter value. Use this parameter to show only those+-- reservations matching the specified node type. For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.reserved.html#reserved-nodes-supported Supported node types>.+--+-- 'offeringType', 'describeReservedNodes_offeringType' - The offering type filter value. Use this parameter to show only the+-- available offerings matching the specified offering type. Valid values:+-- \"All Upfront\"|\"Partial Upfront\"| \"No Upfront\"+--+-- 'reservationId', 'describeReservedNodes_reservationId' - The reserved node identifier filter value. Use this parameter to show+-- only the reservation that matches the specified reservation ID.+--+-- 'reservedNodesOfferingId', 'describeReservedNodes_reservedNodesOfferingId' - The offering identifier filter value. Use this parameter to show only+-- purchased reservations matching the specified offering identifier.+newDescribeReservedNodes ::+  DescribeReservedNodes+newDescribeReservedNodes =+  DescribeReservedNodes'+    { duration = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      nodeType = Prelude.Nothing,+      offeringType = Prelude.Nothing,+      reservationId = Prelude.Nothing,+      reservedNodesOfferingId = Prelude.Nothing+    }++-- | The duration filter value, specified in years or seconds. Use this+-- parameter to show only reservations for this duration.+describeReservedNodes_duration :: Lens.Lens' DescribeReservedNodes (Prelude.Maybe Prelude.Text)+describeReservedNodes_duration = Lens.lens (\DescribeReservedNodes' {duration} -> duration) (\s@DescribeReservedNodes' {} a -> s {duration = a} :: DescribeReservedNodes)++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxRecords value, a marker is included+-- in the response so that the remaining results can be retrieved.+describeReservedNodes_maxResults :: Lens.Lens' DescribeReservedNodes (Prelude.Maybe Prelude.Int)+describeReservedNodes_maxResults = Lens.lens (\DescribeReservedNodes' {maxResults} -> maxResults) (\s@DescribeReservedNodes' {} a -> s {maxResults = a} :: DescribeReservedNodes)++-- | An optional marker returned from a prior request. Use this marker for+-- pagination of results from this operation. If this parameter is+-- specified, the response includes only records beyond the marker, up to+-- the value specified by MaxRecords.+describeReservedNodes_nextToken :: Lens.Lens' DescribeReservedNodes (Prelude.Maybe Prelude.Text)+describeReservedNodes_nextToken = Lens.lens (\DescribeReservedNodes' {nextToken} -> nextToken) (\s@DescribeReservedNodes' {} a -> s {nextToken = a} :: DescribeReservedNodes)++-- | The node type filter value. Use this parameter to show only those+-- reservations matching the specified node type. For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.reserved.html#reserved-nodes-supported Supported node types>.+describeReservedNodes_nodeType :: Lens.Lens' DescribeReservedNodes (Prelude.Maybe Prelude.Text)+describeReservedNodes_nodeType = Lens.lens (\DescribeReservedNodes' {nodeType} -> nodeType) (\s@DescribeReservedNodes' {} a -> s {nodeType = a} :: DescribeReservedNodes)++-- | The offering type filter value. Use this parameter to show only the+-- available offerings matching the specified offering type. Valid values:+-- \"All Upfront\"|\"Partial Upfront\"| \"No Upfront\"+describeReservedNodes_offeringType :: Lens.Lens' DescribeReservedNodes (Prelude.Maybe Prelude.Text)+describeReservedNodes_offeringType = Lens.lens (\DescribeReservedNodes' {offeringType} -> offeringType) (\s@DescribeReservedNodes' {} a -> s {offeringType = a} :: DescribeReservedNodes)++-- | The reserved node identifier filter value. Use this parameter to show+-- only the reservation that matches the specified reservation ID.+describeReservedNodes_reservationId :: Lens.Lens' DescribeReservedNodes (Prelude.Maybe Prelude.Text)+describeReservedNodes_reservationId = Lens.lens (\DescribeReservedNodes' {reservationId} -> reservationId) (\s@DescribeReservedNodes' {} a -> s {reservationId = a} :: DescribeReservedNodes)++-- | The offering identifier filter value. Use this parameter to show only+-- purchased reservations matching the specified offering identifier.+describeReservedNodes_reservedNodesOfferingId :: Lens.Lens' DescribeReservedNodes (Prelude.Maybe Prelude.Text)+describeReservedNodes_reservedNodesOfferingId = Lens.lens (\DescribeReservedNodes' {reservedNodesOfferingId} -> reservedNodesOfferingId) (\s@DescribeReservedNodes' {} a -> s {reservedNodesOfferingId = a} :: DescribeReservedNodes)++instance Core.AWSPager DescribeReservedNodes where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeReservedNodesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeReservedNodesResponse_reservedNodes+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeReservedNodes_nextToken+          Lens..~ rs+          Lens.^? describeReservedNodesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeReservedNodes where+  type+    AWSResponse DescribeReservedNodes =+      DescribeReservedNodesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeReservedNodesResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "ReservedNodes" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeReservedNodes where+  hashWithSalt _salt DescribeReservedNodes' {..} =+    _salt+      `Prelude.hashWithSalt` duration+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` nodeType+      `Prelude.hashWithSalt` offeringType+      `Prelude.hashWithSalt` reservationId+      `Prelude.hashWithSalt` reservedNodesOfferingId++instance Prelude.NFData DescribeReservedNodes where+  rnf DescribeReservedNodes' {..} =+    Prelude.rnf duration+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf nodeType+      `Prelude.seq` Prelude.rnf offeringType+      `Prelude.seq` Prelude.rnf reservationId+      `Prelude.seq` Prelude.rnf reservedNodesOfferingId++instance Data.ToHeaders DescribeReservedNodes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeReservedNodes" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeReservedNodes where+  toJSON DescribeReservedNodes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Duration" Data..=) Prelude.<$> duration,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("NodeType" Data..=) Prelude.<$> nodeType,+            ("OfferingType" Data..=) Prelude.<$> offeringType,+            ("ReservationId" Data..=) Prelude.<$> reservationId,+            ("ReservedNodesOfferingId" Data..=)+              Prelude.<$> reservedNodesOfferingId+          ]+      )++instance Data.ToPath DescribeReservedNodes where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeReservedNodes where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeReservedNodesResponse' smart constructor.+data DescribeReservedNodesResponse = DescribeReservedNodesResponse'+  { -- | An optional marker returned from a prior request. Use this marker for+    -- pagination of results from this operation. If this parameter is+    -- specified, the response includes only records beyond the marker, up to+    -- the value specified by MaxRecords.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Returns information about reserved nodes for this account, or about a+    -- specified reserved node.+    reservedNodes :: Prelude.Maybe [ReservedNode],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeReservedNodesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeReservedNodesResponse_nextToken' - An optional marker returned from a prior request. Use this marker for+-- pagination of results from this operation. If this parameter is+-- specified, the response includes only records beyond the marker, up to+-- the value specified by MaxRecords.+--+-- 'reservedNodes', 'describeReservedNodesResponse_reservedNodes' - Returns information about reserved nodes for this account, or about a+-- specified reserved node.+--+-- 'httpStatus', 'describeReservedNodesResponse_httpStatus' - The response's http status code.+newDescribeReservedNodesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeReservedNodesResponse+newDescribeReservedNodesResponse pHttpStatus_ =+  DescribeReservedNodesResponse'+    { nextToken =+        Prelude.Nothing,+      reservedNodes = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An optional marker returned from a prior request. Use this marker for+-- pagination of results from this operation. If this parameter is+-- specified, the response includes only records beyond the marker, up to+-- the value specified by MaxRecords.+describeReservedNodesResponse_nextToken :: Lens.Lens' DescribeReservedNodesResponse (Prelude.Maybe Prelude.Text)+describeReservedNodesResponse_nextToken = Lens.lens (\DescribeReservedNodesResponse' {nextToken} -> nextToken) (\s@DescribeReservedNodesResponse' {} a -> s {nextToken = a} :: DescribeReservedNodesResponse)++-- | Returns information about reserved nodes for this account, or about a+-- specified reserved node.+describeReservedNodesResponse_reservedNodes :: Lens.Lens' DescribeReservedNodesResponse (Prelude.Maybe [ReservedNode])+describeReservedNodesResponse_reservedNodes = Lens.lens (\DescribeReservedNodesResponse' {reservedNodes} -> reservedNodes) (\s@DescribeReservedNodesResponse' {} a -> s {reservedNodes = a} :: DescribeReservedNodesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeReservedNodesResponse_httpStatus :: Lens.Lens' DescribeReservedNodesResponse Prelude.Int+describeReservedNodesResponse_httpStatus = Lens.lens (\DescribeReservedNodesResponse' {httpStatus} -> httpStatus) (\s@DescribeReservedNodesResponse' {} a -> s {httpStatus = a} :: DescribeReservedNodesResponse)++instance Prelude.NFData DescribeReservedNodesResponse where+  rnf DescribeReservedNodesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf reservedNodes+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeReservedNodesOfferings.hs view
@@ -0,0 +1,338 @@+{-# 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.MemoryDb.DescribeReservedNodesOfferings+-- 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 available reserved node offerings.+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeReservedNodesOfferings+  ( -- * Creating a Request+    DescribeReservedNodesOfferings (..),+    newDescribeReservedNodesOfferings,++    -- * Request Lenses+    describeReservedNodesOfferings_duration,+    describeReservedNodesOfferings_maxResults,+    describeReservedNodesOfferings_nextToken,+    describeReservedNodesOfferings_nodeType,+    describeReservedNodesOfferings_offeringType,+    describeReservedNodesOfferings_reservedNodesOfferingId,++    -- * Destructuring the Response+    DescribeReservedNodesOfferingsResponse (..),+    newDescribeReservedNodesOfferingsResponse,++    -- * Response Lenses+    describeReservedNodesOfferingsResponse_nextToken,+    describeReservedNodesOfferingsResponse_reservedNodesOfferings,+    describeReservedNodesOfferingsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeReservedNodesOfferings' smart constructor.+data DescribeReservedNodesOfferings = DescribeReservedNodesOfferings'+  { -- | Duration filter value, specified in years or seconds. Use this parameter+    -- to show only reservations for a given duration.+    duration :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxRecords value, a marker is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional marker returned from a prior request. Use this marker for+    -- pagination of results from this operation. If this parameter is+    -- specified, the response includes only records beyond the marker, up to+    -- the value specified by MaxRecords.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The node type for the reserved nodes. For more information, see+    -- <https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.reserved.html#reserved-nodes-supported Supported node types>.+    nodeType :: Prelude.Maybe Prelude.Text,+    -- | The offering type filter value. Use this parameter to show only the+    -- available offerings matching the specified offering type. Valid values:+    -- \"All Upfront\"|\"Partial Upfront\"| \"No Upfront\"+    offeringType :: Prelude.Maybe Prelude.Text,+    -- | The offering identifier filter value. Use this parameter to show only+    -- the available offering that matches the specified reservation+    -- identifier.+    reservedNodesOfferingId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeReservedNodesOfferings' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'duration', 'describeReservedNodesOfferings_duration' - Duration filter value, specified in years or seconds. Use this parameter+-- to show only reservations for a given duration.+--+-- 'maxResults', 'describeReservedNodesOfferings_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxRecords value, a marker is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeReservedNodesOfferings_nextToken' - An optional marker returned from a prior request. Use this marker for+-- pagination of results from this operation. If this parameter is+-- specified, the response includes only records beyond the marker, up to+-- the value specified by MaxRecords.+--+-- 'nodeType', 'describeReservedNodesOfferings_nodeType' - The node type for the reserved nodes. For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.reserved.html#reserved-nodes-supported Supported node types>.+--+-- 'offeringType', 'describeReservedNodesOfferings_offeringType' - The offering type filter value. Use this parameter to show only the+-- available offerings matching the specified offering type. Valid values:+-- \"All Upfront\"|\"Partial Upfront\"| \"No Upfront\"+--+-- 'reservedNodesOfferingId', 'describeReservedNodesOfferings_reservedNodesOfferingId' - The offering identifier filter value. Use this parameter to show only+-- the available offering that matches the specified reservation+-- identifier.+newDescribeReservedNodesOfferings ::+  DescribeReservedNodesOfferings+newDescribeReservedNodesOfferings =+  DescribeReservedNodesOfferings'+    { duration =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      nodeType = Prelude.Nothing,+      offeringType = Prelude.Nothing,+      reservedNodesOfferingId = Prelude.Nothing+    }++-- | Duration filter value, specified in years or seconds. Use this parameter+-- to show only reservations for a given duration.+describeReservedNodesOfferings_duration :: Lens.Lens' DescribeReservedNodesOfferings (Prelude.Maybe Prelude.Text)+describeReservedNodesOfferings_duration = Lens.lens (\DescribeReservedNodesOfferings' {duration} -> duration) (\s@DescribeReservedNodesOfferings' {} a -> s {duration = a} :: DescribeReservedNodesOfferings)++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxRecords value, a marker is included+-- in the response so that the remaining results can be retrieved.+describeReservedNodesOfferings_maxResults :: Lens.Lens' DescribeReservedNodesOfferings (Prelude.Maybe Prelude.Int)+describeReservedNodesOfferings_maxResults = Lens.lens (\DescribeReservedNodesOfferings' {maxResults} -> maxResults) (\s@DescribeReservedNodesOfferings' {} a -> s {maxResults = a} :: DescribeReservedNodesOfferings)++-- | An optional marker returned from a prior request. Use this marker for+-- pagination of results from this operation. If this parameter is+-- specified, the response includes only records beyond the marker, up to+-- the value specified by MaxRecords.+describeReservedNodesOfferings_nextToken :: Lens.Lens' DescribeReservedNodesOfferings (Prelude.Maybe Prelude.Text)+describeReservedNodesOfferings_nextToken = Lens.lens (\DescribeReservedNodesOfferings' {nextToken} -> nextToken) (\s@DescribeReservedNodesOfferings' {} a -> s {nextToken = a} :: DescribeReservedNodesOfferings)++-- | The node type for the reserved nodes. For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.reserved.html#reserved-nodes-supported Supported node types>.+describeReservedNodesOfferings_nodeType :: Lens.Lens' DescribeReservedNodesOfferings (Prelude.Maybe Prelude.Text)+describeReservedNodesOfferings_nodeType = Lens.lens (\DescribeReservedNodesOfferings' {nodeType} -> nodeType) (\s@DescribeReservedNodesOfferings' {} a -> s {nodeType = a} :: DescribeReservedNodesOfferings)++-- | The offering type filter value. Use this parameter to show only the+-- available offerings matching the specified offering type. Valid values:+-- \"All Upfront\"|\"Partial Upfront\"| \"No Upfront\"+describeReservedNodesOfferings_offeringType :: Lens.Lens' DescribeReservedNodesOfferings (Prelude.Maybe Prelude.Text)+describeReservedNodesOfferings_offeringType = Lens.lens (\DescribeReservedNodesOfferings' {offeringType} -> offeringType) (\s@DescribeReservedNodesOfferings' {} a -> s {offeringType = a} :: DescribeReservedNodesOfferings)++-- | The offering identifier filter value. Use this parameter to show only+-- the available offering that matches the specified reservation+-- identifier.+describeReservedNodesOfferings_reservedNodesOfferingId :: Lens.Lens' DescribeReservedNodesOfferings (Prelude.Maybe Prelude.Text)+describeReservedNodesOfferings_reservedNodesOfferingId = Lens.lens (\DescribeReservedNodesOfferings' {reservedNodesOfferingId} -> reservedNodesOfferingId) (\s@DescribeReservedNodesOfferings' {} a -> s {reservedNodesOfferingId = a} :: DescribeReservedNodesOfferings)++instance Core.AWSPager DescribeReservedNodesOfferings where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeReservedNodesOfferingsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeReservedNodesOfferingsResponse_reservedNodesOfferings+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeReservedNodesOfferings_nextToken+          Lens..~ rs+          Lens.^? describeReservedNodesOfferingsResponse_nextToken+          Prelude.. Lens._Just++instance+  Core.AWSRequest+    DescribeReservedNodesOfferings+  where+  type+    AWSResponse DescribeReservedNodesOfferings =+      DescribeReservedNodesOfferingsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeReservedNodesOfferingsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "ReservedNodesOfferings"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeReservedNodesOfferings+  where+  hashWithSalt+    _salt+    DescribeReservedNodesOfferings' {..} =+      _salt+        `Prelude.hashWithSalt` duration+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` nodeType+        `Prelude.hashWithSalt` offeringType+        `Prelude.hashWithSalt` reservedNodesOfferingId++instance+  Prelude.NFData+    DescribeReservedNodesOfferings+  where+  rnf DescribeReservedNodesOfferings' {..} =+    Prelude.rnf duration+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf nodeType+      `Prelude.seq` Prelude.rnf offeringType+      `Prelude.seq` Prelude.rnf reservedNodesOfferingId++instance+  Data.ToHeaders+    DescribeReservedNodesOfferings+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeReservedNodesOfferings" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeReservedNodesOfferings where+  toJSON DescribeReservedNodesOfferings' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Duration" Data..=) Prelude.<$> duration,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("NodeType" Data..=) Prelude.<$> nodeType,+            ("OfferingType" Data..=) Prelude.<$> offeringType,+            ("ReservedNodesOfferingId" Data..=)+              Prelude.<$> reservedNodesOfferingId+          ]+      )++instance Data.ToPath DescribeReservedNodesOfferings where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeReservedNodesOfferings where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeReservedNodesOfferingsResponse' smart constructor.+data DescribeReservedNodesOfferingsResponse = DescribeReservedNodesOfferingsResponse'+  { -- | An optional marker returned from a prior request. Use this marker for+    -- pagination of results from this operation. If this parameter is+    -- specified, the response includes only records beyond the marker, up to+    -- the value specified by MaxRecords.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Lists available reserved node offerings.+    reservedNodesOfferings :: Prelude.Maybe [ReservedNodesOffering],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeReservedNodesOfferingsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeReservedNodesOfferingsResponse_nextToken' - An optional marker returned from a prior request. Use this marker for+-- pagination of results from this operation. If this parameter is+-- specified, the response includes only records beyond the marker, up to+-- the value specified by MaxRecords.+--+-- 'reservedNodesOfferings', 'describeReservedNodesOfferingsResponse_reservedNodesOfferings' - Lists available reserved node offerings.+--+-- 'httpStatus', 'describeReservedNodesOfferingsResponse_httpStatus' - The response's http status code.+newDescribeReservedNodesOfferingsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeReservedNodesOfferingsResponse+newDescribeReservedNodesOfferingsResponse+  pHttpStatus_ =+    DescribeReservedNodesOfferingsResponse'+      { nextToken =+          Prelude.Nothing,+        reservedNodesOfferings =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | An optional marker returned from a prior request. Use this marker for+-- pagination of results from this operation. If this parameter is+-- specified, the response includes only records beyond the marker, up to+-- the value specified by MaxRecords.+describeReservedNodesOfferingsResponse_nextToken :: Lens.Lens' DescribeReservedNodesOfferingsResponse (Prelude.Maybe Prelude.Text)+describeReservedNodesOfferingsResponse_nextToken = Lens.lens (\DescribeReservedNodesOfferingsResponse' {nextToken} -> nextToken) (\s@DescribeReservedNodesOfferingsResponse' {} a -> s {nextToken = a} :: DescribeReservedNodesOfferingsResponse)++-- | Lists available reserved node offerings.+describeReservedNodesOfferingsResponse_reservedNodesOfferings :: Lens.Lens' DescribeReservedNodesOfferingsResponse (Prelude.Maybe [ReservedNodesOffering])+describeReservedNodesOfferingsResponse_reservedNodesOfferings = Lens.lens (\DescribeReservedNodesOfferingsResponse' {reservedNodesOfferings} -> reservedNodesOfferings) (\s@DescribeReservedNodesOfferingsResponse' {} a -> s {reservedNodesOfferings = a} :: DescribeReservedNodesOfferingsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeReservedNodesOfferingsResponse_httpStatus :: Lens.Lens' DescribeReservedNodesOfferingsResponse Prelude.Int+describeReservedNodesOfferingsResponse_httpStatus = Lens.lens (\DescribeReservedNodesOfferingsResponse' {httpStatus} -> httpStatus) (\s@DescribeReservedNodesOfferingsResponse' {} a -> s {httpStatus = a} :: DescribeReservedNodesOfferingsResponse)++instance+  Prelude.NFData+    DescribeReservedNodesOfferingsResponse+  where+  rnf DescribeReservedNodesOfferingsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf reservedNodesOfferings+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeServiceUpdates.hs view
@@ -0,0 +1,294 @@+{-# 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.MemoryDb.DescribeServiceUpdates+-- 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 details of the service updates+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeServiceUpdates+  ( -- * Creating a Request+    DescribeServiceUpdates (..),+    newDescribeServiceUpdates,++    -- * Request Lenses+    describeServiceUpdates_clusterNames,+    describeServiceUpdates_maxResults,+    describeServiceUpdates_nextToken,+    describeServiceUpdates_serviceUpdateName,+    describeServiceUpdates_status,++    -- * Destructuring the Response+    DescribeServiceUpdatesResponse (..),+    newDescribeServiceUpdatesResponse,++    -- * Response Lenses+    describeServiceUpdatesResponse_nextToken,+    describeServiceUpdatesResponse_serviceUpdates,+    describeServiceUpdatesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeServiceUpdates' smart constructor.+data DescribeServiceUpdates = DescribeServiceUpdates'+  { -- | The list of cluster names to identify service updates to apply+    clusterNames :: Prelude.Maybe [Prelude.Text],+    -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxResults value, a token is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The unique ID of the service update to describe.+    serviceUpdateName :: Prelude.Maybe Prelude.Text,+    -- | The status(es) of the service updates to filter on+    status :: Prelude.Maybe [ServiceUpdateStatus]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeServiceUpdates' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterNames', 'describeServiceUpdates_clusterNames' - The list of cluster names to identify service updates to apply+--+-- 'maxResults', 'describeServiceUpdates_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeServiceUpdates_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'serviceUpdateName', 'describeServiceUpdates_serviceUpdateName' - The unique ID of the service update to describe.+--+-- 'status', 'describeServiceUpdates_status' - The status(es) of the service updates to filter on+newDescribeServiceUpdates ::+  DescribeServiceUpdates+newDescribeServiceUpdates =+  DescribeServiceUpdates'+    { clusterNames =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      serviceUpdateName = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The list of cluster names to identify service updates to apply+describeServiceUpdates_clusterNames :: Lens.Lens' DescribeServiceUpdates (Prelude.Maybe [Prelude.Text])+describeServiceUpdates_clusterNames = Lens.lens (\DescribeServiceUpdates' {clusterNames} -> clusterNames) (\s@DescribeServiceUpdates' {} a -> s {clusterNames = a} :: DescribeServiceUpdates) Prelude.. Lens.mapping Lens.coerced++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+describeServiceUpdates_maxResults :: Lens.Lens' DescribeServiceUpdates (Prelude.Maybe Prelude.Int)+describeServiceUpdates_maxResults = Lens.lens (\DescribeServiceUpdates' {maxResults} -> maxResults) (\s@DescribeServiceUpdates' {} a -> s {maxResults = a} :: DescribeServiceUpdates)++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeServiceUpdates_nextToken :: Lens.Lens' DescribeServiceUpdates (Prelude.Maybe Prelude.Text)+describeServiceUpdates_nextToken = Lens.lens (\DescribeServiceUpdates' {nextToken} -> nextToken) (\s@DescribeServiceUpdates' {} a -> s {nextToken = a} :: DescribeServiceUpdates)++-- | The unique ID of the service update to describe.+describeServiceUpdates_serviceUpdateName :: Lens.Lens' DescribeServiceUpdates (Prelude.Maybe Prelude.Text)+describeServiceUpdates_serviceUpdateName = Lens.lens (\DescribeServiceUpdates' {serviceUpdateName} -> serviceUpdateName) (\s@DescribeServiceUpdates' {} a -> s {serviceUpdateName = a} :: DescribeServiceUpdates)++-- | The status(es) of the service updates to filter on+describeServiceUpdates_status :: Lens.Lens' DescribeServiceUpdates (Prelude.Maybe [ServiceUpdateStatus])+describeServiceUpdates_status = Lens.lens (\DescribeServiceUpdates' {status} -> status) (\s@DescribeServiceUpdates' {} a -> s {status = a} :: DescribeServiceUpdates) Prelude.. Lens.mapping Lens.coerced++instance Core.AWSPager DescribeServiceUpdates where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeServiceUpdatesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeServiceUpdatesResponse_serviceUpdates+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeServiceUpdates_nextToken+          Lens..~ rs+          Lens.^? describeServiceUpdatesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeServiceUpdates where+  type+    AWSResponse DescribeServiceUpdates =+      DescribeServiceUpdatesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeServiceUpdatesResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "ServiceUpdates" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeServiceUpdates where+  hashWithSalt _salt DescribeServiceUpdates' {..} =+    _salt+      `Prelude.hashWithSalt` clusterNames+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` serviceUpdateName+      `Prelude.hashWithSalt` status++instance Prelude.NFData DescribeServiceUpdates where+  rnf DescribeServiceUpdates' {..} =+    Prelude.rnf clusterNames+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf serviceUpdateName+      `Prelude.seq` Prelude.rnf status++instance Data.ToHeaders DescribeServiceUpdates where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeServiceUpdates" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeServiceUpdates where+  toJSON DescribeServiceUpdates' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClusterNames" Data..=) Prelude.<$> clusterNames,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("ServiceUpdateName" Data..=)+              Prelude.<$> serviceUpdateName,+            ("Status" Data..=) Prelude.<$> status+          ]+      )++instance Data.ToPath DescribeServiceUpdates where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeServiceUpdates where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeServiceUpdatesResponse' smart constructor.+data DescribeServiceUpdatesResponse = DescribeServiceUpdatesResponse'+  { -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of service updates+    serviceUpdates :: Prelude.Maybe [ServiceUpdate],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeServiceUpdatesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeServiceUpdatesResponse_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'serviceUpdates', 'describeServiceUpdatesResponse_serviceUpdates' - A list of service updates+--+-- 'httpStatus', 'describeServiceUpdatesResponse_httpStatus' - The response's http status code.+newDescribeServiceUpdatesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeServiceUpdatesResponse+newDescribeServiceUpdatesResponse pHttpStatus_ =+  DescribeServiceUpdatesResponse'+    { nextToken =+        Prelude.Nothing,+      serviceUpdates = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeServiceUpdatesResponse_nextToken :: Lens.Lens' DescribeServiceUpdatesResponse (Prelude.Maybe Prelude.Text)+describeServiceUpdatesResponse_nextToken = Lens.lens (\DescribeServiceUpdatesResponse' {nextToken} -> nextToken) (\s@DescribeServiceUpdatesResponse' {} a -> s {nextToken = a} :: DescribeServiceUpdatesResponse)++-- | A list of service updates+describeServiceUpdatesResponse_serviceUpdates :: Lens.Lens' DescribeServiceUpdatesResponse (Prelude.Maybe [ServiceUpdate])+describeServiceUpdatesResponse_serviceUpdates = Lens.lens (\DescribeServiceUpdatesResponse' {serviceUpdates} -> serviceUpdates) (\s@DescribeServiceUpdatesResponse' {} a -> s {serviceUpdates = a} :: DescribeServiceUpdatesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeServiceUpdatesResponse_httpStatus :: Lens.Lens' DescribeServiceUpdatesResponse Prelude.Int+describeServiceUpdatesResponse_httpStatus = Lens.lens (\DescribeServiceUpdatesResponse' {httpStatus} -> httpStatus) (\s@DescribeServiceUpdatesResponse' {} a -> s {httpStatus = a} :: DescribeServiceUpdatesResponse)++instance+  Prelude.NFData+    DescribeServiceUpdatesResponse+  where+  rnf DescribeServiceUpdatesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf serviceUpdates+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeSnapshots.hs view
@@ -0,0 +1,326 @@+{-# 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.MemoryDb.DescribeSnapshots+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns information about cluster snapshots. By default,+-- DescribeSnapshots lists all of your snapshots; it can optionally+-- describe a single snapshot, or just the snapshots associated with a+-- particular cluster.+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeSnapshots+  ( -- * Creating a Request+    DescribeSnapshots (..),+    newDescribeSnapshots,++    -- * Request Lenses+    describeSnapshots_clusterName,+    describeSnapshots_maxResults,+    describeSnapshots_nextToken,+    describeSnapshots_showDetail,+    describeSnapshots_snapshotName,+    describeSnapshots_source,++    -- * Destructuring the Response+    DescribeSnapshotsResponse (..),+    newDescribeSnapshotsResponse,++    -- * Response Lenses+    describeSnapshotsResponse_nextToken,+    describeSnapshotsResponse_snapshots,+    describeSnapshotsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeSnapshots' smart constructor.+data DescribeSnapshots = DescribeSnapshots'+  { -- | A user-supplied cluster identifier. If this parameter is specified, only+    -- snapshots associated with that specific cluster are described.+    clusterName :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxResults value, a token is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A Boolean value which if true, the shard configuration is included in+    -- the snapshot description.+    showDetail :: Prelude.Maybe Prelude.Bool,+    -- | A user-supplied name of the snapshot. If this parameter is specified,+    -- only this named snapshot is described.+    snapshotName :: Prelude.Maybe Prelude.Text,+    -- | If set to system, the output shows snapshots that were automatically+    -- created by MemoryDB. If set to user the output shows snapshots that were+    -- manually created. If omitted, the output shows both automatically and+    -- manually created snapshots.+    source :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSnapshots' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'describeSnapshots_clusterName' - A user-supplied cluster identifier. If this parameter is specified, only+-- snapshots associated with that specific cluster are described.+--+-- 'maxResults', 'describeSnapshots_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeSnapshots_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'showDetail', 'describeSnapshots_showDetail' - A Boolean value which if true, the shard configuration is included in+-- the snapshot description.+--+-- 'snapshotName', 'describeSnapshots_snapshotName' - A user-supplied name of the snapshot. If this parameter is specified,+-- only this named snapshot is described.+--+-- 'source', 'describeSnapshots_source' - If set to system, the output shows snapshots that were automatically+-- created by MemoryDB. If set to user the output shows snapshots that were+-- manually created. If omitted, the output shows both automatically and+-- manually created snapshots.+newDescribeSnapshots ::+  DescribeSnapshots+newDescribeSnapshots =+  DescribeSnapshots'+    { clusterName = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      showDetail = Prelude.Nothing,+      snapshotName = Prelude.Nothing,+      source = Prelude.Nothing+    }++-- | A user-supplied cluster identifier. If this parameter is specified, only+-- snapshots associated with that specific cluster are described.+describeSnapshots_clusterName :: Lens.Lens' DescribeSnapshots (Prelude.Maybe Prelude.Text)+describeSnapshots_clusterName = Lens.lens (\DescribeSnapshots' {clusterName} -> clusterName) (\s@DescribeSnapshots' {} a -> s {clusterName = a} :: DescribeSnapshots)++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+describeSnapshots_maxResults :: Lens.Lens' DescribeSnapshots (Prelude.Maybe Prelude.Int)+describeSnapshots_maxResults = Lens.lens (\DescribeSnapshots' {maxResults} -> maxResults) (\s@DescribeSnapshots' {} a -> s {maxResults = a} :: DescribeSnapshots)++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeSnapshots_nextToken :: Lens.Lens' DescribeSnapshots (Prelude.Maybe Prelude.Text)+describeSnapshots_nextToken = Lens.lens (\DescribeSnapshots' {nextToken} -> nextToken) (\s@DescribeSnapshots' {} a -> s {nextToken = a} :: DescribeSnapshots)++-- | A Boolean value which if true, the shard configuration is included in+-- the snapshot description.+describeSnapshots_showDetail :: Lens.Lens' DescribeSnapshots (Prelude.Maybe Prelude.Bool)+describeSnapshots_showDetail = Lens.lens (\DescribeSnapshots' {showDetail} -> showDetail) (\s@DescribeSnapshots' {} a -> s {showDetail = a} :: DescribeSnapshots)++-- | A user-supplied name of the snapshot. If this parameter is specified,+-- only this named snapshot is described.+describeSnapshots_snapshotName :: Lens.Lens' DescribeSnapshots (Prelude.Maybe Prelude.Text)+describeSnapshots_snapshotName = Lens.lens (\DescribeSnapshots' {snapshotName} -> snapshotName) (\s@DescribeSnapshots' {} a -> s {snapshotName = a} :: DescribeSnapshots)++-- | If set to system, the output shows snapshots that were automatically+-- created by MemoryDB. If set to user the output shows snapshots that were+-- manually created. If omitted, the output shows both automatically and+-- manually created snapshots.+describeSnapshots_source :: Lens.Lens' DescribeSnapshots (Prelude.Maybe Prelude.Text)+describeSnapshots_source = Lens.lens (\DescribeSnapshots' {source} -> source) (\s@DescribeSnapshots' {} a -> s {source = a} :: DescribeSnapshots)++instance Core.AWSPager DescribeSnapshots where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeSnapshotsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeSnapshotsResponse_snapshots+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeSnapshots_nextToken+          Lens..~ rs+          Lens.^? describeSnapshotsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeSnapshots where+  type+    AWSResponse DescribeSnapshots =+      DescribeSnapshotsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeSnapshotsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "Snapshots" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeSnapshots where+  hashWithSalt _salt DescribeSnapshots' {..} =+    _salt+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` showDetail+      `Prelude.hashWithSalt` snapshotName+      `Prelude.hashWithSalt` source++instance Prelude.NFData DescribeSnapshots where+  rnf DescribeSnapshots' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf showDetail+      `Prelude.seq` Prelude.rnf snapshotName+      `Prelude.seq` Prelude.rnf source++instance Data.ToHeaders DescribeSnapshots where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeSnapshots" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeSnapshots where+  toJSON DescribeSnapshots' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClusterName" Data..=) Prelude.<$> clusterName,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("ShowDetail" Data..=) Prelude.<$> showDetail,+            ("SnapshotName" Data..=) Prelude.<$> snapshotName,+            ("Source" Data..=) Prelude.<$> source+          ]+      )++instance Data.ToPath DescribeSnapshots where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeSnapshots where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeSnapshotsResponse' smart constructor.+data DescribeSnapshotsResponse = DescribeSnapshotsResponse'+  { -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of snapshots. Each item in the list contains detailed information+    -- about one snapshot.+    snapshots :: Prelude.Maybe [Snapshot],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSnapshotsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeSnapshotsResponse_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'snapshots', 'describeSnapshotsResponse_snapshots' - A list of snapshots. Each item in the list contains detailed information+-- about one snapshot.+--+-- 'httpStatus', 'describeSnapshotsResponse_httpStatus' - The response's http status code.+newDescribeSnapshotsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeSnapshotsResponse+newDescribeSnapshotsResponse pHttpStatus_ =+  DescribeSnapshotsResponse'+    { nextToken =+        Prelude.Nothing,+      snapshots = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeSnapshotsResponse_nextToken :: Lens.Lens' DescribeSnapshotsResponse (Prelude.Maybe Prelude.Text)+describeSnapshotsResponse_nextToken = Lens.lens (\DescribeSnapshotsResponse' {nextToken} -> nextToken) (\s@DescribeSnapshotsResponse' {} a -> s {nextToken = a} :: DescribeSnapshotsResponse)++-- | A list of snapshots. Each item in the list contains detailed information+-- about one snapshot.+describeSnapshotsResponse_snapshots :: Lens.Lens' DescribeSnapshotsResponse (Prelude.Maybe [Snapshot])+describeSnapshotsResponse_snapshots = Lens.lens (\DescribeSnapshotsResponse' {snapshots} -> snapshots) (\s@DescribeSnapshotsResponse' {} a -> s {snapshots = a} :: DescribeSnapshotsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeSnapshotsResponse_httpStatus :: Lens.Lens' DescribeSnapshotsResponse Prelude.Int+describeSnapshotsResponse_httpStatus = Lens.lens (\DescribeSnapshotsResponse' {httpStatus} -> httpStatus) (\s@DescribeSnapshotsResponse' {} a -> s {httpStatus = a} :: DescribeSnapshotsResponse)++instance Prelude.NFData DescribeSnapshotsResponse where+  rnf DescribeSnapshotsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf snapshots+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeSubnetGroups.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.MemoryDb.DescribeSubnetGroups+-- 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 subnet group descriptions. If a subnet group name is+-- specified, the list contains only the description of that group.+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeSubnetGroups+  ( -- * Creating a Request+    DescribeSubnetGroups (..),+    newDescribeSubnetGroups,++    -- * Request Lenses+    describeSubnetGroups_maxResults,+    describeSubnetGroups_nextToken,+    describeSubnetGroups_subnetGroupName,++    -- * Destructuring the Response+    DescribeSubnetGroupsResponse (..),+    newDescribeSubnetGroupsResponse,++    -- * Response Lenses+    describeSubnetGroupsResponse_nextToken,+    describeSubnetGroupsResponse_subnetGroups,+    describeSubnetGroupsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeSubnetGroups' smart constructor.+data DescribeSubnetGroups = DescribeSubnetGroups'+  { -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxResults value, a token is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the subnet group to return details for.+    subnetGroupName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSubnetGroups' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeSubnetGroups_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeSubnetGroups_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'subnetGroupName', 'describeSubnetGroups_subnetGroupName' - The name of the subnet group to return details for.+newDescribeSubnetGroups ::+  DescribeSubnetGroups+newDescribeSubnetGroups =+  DescribeSubnetGroups'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      subnetGroupName = Prelude.Nothing+    }++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+describeSubnetGroups_maxResults :: Lens.Lens' DescribeSubnetGroups (Prelude.Maybe Prelude.Int)+describeSubnetGroups_maxResults = Lens.lens (\DescribeSubnetGroups' {maxResults} -> maxResults) (\s@DescribeSubnetGroups' {} a -> s {maxResults = a} :: DescribeSubnetGroups)++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeSubnetGroups_nextToken :: Lens.Lens' DescribeSubnetGroups (Prelude.Maybe Prelude.Text)+describeSubnetGroups_nextToken = Lens.lens (\DescribeSubnetGroups' {nextToken} -> nextToken) (\s@DescribeSubnetGroups' {} a -> s {nextToken = a} :: DescribeSubnetGroups)++-- | The name of the subnet group to return details for.+describeSubnetGroups_subnetGroupName :: Lens.Lens' DescribeSubnetGroups (Prelude.Maybe Prelude.Text)+describeSubnetGroups_subnetGroupName = Lens.lens (\DescribeSubnetGroups' {subnetGroupName} -> subnetGroupName) (\s@DescribeSubnetGroups' {} a -> s {subnetGroupName = a} :: DescribeSubnetGroups)++instance Core.AWSPager DescribeSubnetGroups where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeSubnetGroupsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeSubnetGroupsResponse_subnetGroups+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeSubnetGroups_nextToken+          Lens..~ rs+          Lens.^? describeSubnetGroupsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeSubnetGroups where+  type+    AWSResponse DescribeSubnetGroups =+      DescribeSubnetGroupsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeSubnetGroupsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "SubnetGroups" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeSubnetGroups where+  hashWithSalt _salt DescribeSubnetGroups' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` subnetGroupName++instance Prelude.NFData DescribeSubnetGroups where+  rnf DescribeSubnetGroups' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf subnetGroupName++instance Data.ToHeaders DescribeSubnetGroups where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeSubnetGroups" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeSubnetGroups where+  toJSON DescribeSubnetGroups' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("SubnetGroupName" Data..=)+              Prelude.<$> subnetGroupName+          ]+      )++instance Data.ToPath DescribeSubnetGroups where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeSubnetGroups where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeSubnetGroupsResponse' smart constructor.+data DescribeSubnetGroupsResponse = DescribeSubnetGroupsResponse'+  { -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of subnet groups. Each element in the list contains detailed+    -- information about one group.+    subnetGroups :: Prelude.Maybe [SubnetGroup],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSubnetGroupsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeSubnetGroupsResponse_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'subnetGroups', 'describeSubnetGroupsResponse_subnetGroups' - A list of subnet groups. Each element in the list contains detailed+-- information about one group.+--+-- 'httpStatus', 'describeSubnetGroupsResponse_httpStatus' - The response's http status code.+newDescribeSubnetGroupsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeSubnetGroupsResponse+newDescribeSubnetGroupsResponse pHttpStatus_ =+  DescribeSubnetGroupsResponse'+    { nextToken =+        Prelude.Nothing,+      subnetGroups = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeSubnetGroupsResponse_nextToken :: Lens.Lens' DescribeSubnetGroupsResponse (Prelude.Maybe Prelude.Text)+describeSubnetGroupsResponse_nextToken = Lens.lens (\DescribeSubnetGroupsResponse' {nextToken} -> nextToken) (\s@DescribeSubnetGroupsResponse' {} a -> s {nextToken = a} :: DescribeSubnetGroupsResponse)++-- | A list of subnet groups. Each element in the list contains detailed+-- information about one group.+describeSubnetGroupsResponse_subnetGroups :: Lens.Lens' DescribeSubnetGroupsResponse (Prelude.Maybe [SubnetGroup])+describeSubnetGroupsResponse_subnetGroups = Lens.lens (\DescribeSubnetGroupsResponse' {subnetGroups} -> subnetGroups) (\s@DescribeSubnetGroupsResponse' {} a -> s {subnetGroups = a} :: DescribeSubnetGroupsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeSubnetGroupsResponse_httpStatus :: Lens.Lens' DescribeSubnetGroupsResponse Prelude.Int+describeSubnetGroupsResponse_httpStatus = Lens.lens (\DescribeSubnetGroupsResponse' {httpStatus} -> httpStatus) (\s@DescribeSubnetGroupsResponse' {} a -> s {httpStatus = a} :: DescribeSubnetGroupsResponse)++instance Prelude.NFData DescribeSubnetGroupsResponse where+  rnf DescribeSubnetGroupsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf subnetGroups+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/DescribeUsers.hs view
@@ -0,0 +1,275 @@+{-# 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.MemoryDb.DescribeUsers+-- 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 users.+--+-- This operation returns paginated results.+module Amazonka.MemoryDb.DescribeUsers+  ( -- * Creating a Request+    DescribeUsers (..),+    newDescribeUsers,++    -- * Request Lenses+    describeUsers_filters,+    describeUsers_maxResults,+    describeUsers_nextToken,+    describeUsers_userName,++    -- * Destructuring the Response+    DescribeUsersResponse (..),+    newDescribeUsersResponse,++    -- * Response Lenses+    describeUsersResponse_nextToken,+    describeUsersResponse_users,+    describeUsersResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeUsers' smart constructor.+data DescribeUsers = DescribeUsers'+  { -- | Filter to determine the list of users to return.+    filters :: Prelude.Maybe [Filter],+    -- | The maximum number of records to include in the response. If more+    -- records exist than the specified MaxResults value, a token is included+    -- in the response so that the remaining results can be retrieved.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the user+    userName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeUsers' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'describeUsers_filters' - Filter to determine the list of users to return.+--+-- 'maxResults', 'describeUsers_maxResults' - The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+--+-- 'nextToken', 'describeUsers_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'userName', 'describeUsers_userName' - The name of the user+newDescribeUsers ::+  DescribeUsers+newDescribeUsers =+  DescribeUsers'+    { filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      userName = Prelude.Nothing+    }++-- | Filter to determine the list of users to return.+describeUsers_filters :: Lens.Lens' DescribeUsers (Prelude.Maybe [Filter])+describeUsers_filters = Lens.lens (\DescribeUsers' {filters} -> filters) (\s@DescribeUsers' {} a -> s {filters = a} :: DescribeUsers) Prelude.. Lens.mapping Lens.coerced++-- | The maximum number of records to include in the response. If more+-- records exist than the specified MaxResults value, a token is included+-- in the response so that the remaining results can be retrieved.+describeUsers_maxResults :: Lens.Lens' DescribeUsers (Prelude.Maybe Prelude.Int)+describeUsers_maxResults = Lens.lens (\DescribeUsers' {maxResults} -> maxResults) (\s@DescribeUsers' {} a -> s {maxResults = a} :: DescribeUsers)++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeUsers_nextToken :: Lens.Lens' DescribeUsers (Prelude.Maybe Prelude.Text)+describeUsers_nextToken = Lens.lens (\DescribeUsers' {nextToken} -> nextToken) (\s@DescribeUsers' {} a -> s {nextToken = a} :: DescribeUsers)++-- | The name of the user+describeUsers_userName :: Lens.Lens' DescribeUsers (Prelude.Maybe Prelude.Text)+describeUsers_userName = Lens.lens (\DescribeUsers' {userName} -> userName) (\s@DescribeUsers' {} a -> s {userName = a} :: DescribeUsers)++instance Core.AWSPager DescribeUsers where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeUsersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeUsersResponse_users+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeUsers_nextToken+          Lens..~ rs+          Lens.^? describeUsersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeUsers where+  type+    AWSResponse DescribeUsers =+      DescribeUsersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeUsersResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "Users" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeUsers where+  hashWithSalt _salt DescribeUsers' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` userName++instance Prelude.NFData DescribeUsers where+  rnf DescribeUsers' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf userName++instance Data.ToHeaders DescribeUsers where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.DescribeUsers" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeUsers where+  toJSON DescribeUsers' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Filters" Data..=) Prelude.<$> filters,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("UserName" Data..=) Prelude.<$> userName+          ]+      )++instance Data.ToPath DescribeUsers where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeUsers where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeUsersResponse' smart constructor.+data DescribeUsersResponse = DescribeUsersResponse'+  { -- | An optional argument to pass in case the total number of records exceeds+    -- the value of MaxResults. If nextToken is returned, there are more+    -- results available. The value of nextToken is a unique pagination token+    -- for each page. Make the call again using the returned token to retrieve+    -- the next page. Keep all other arguments unchanged.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of users.+    users :: Prelude.Maybe [User],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeUsersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeUsersResponse_nextToken' - An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+--+-- 'users', 'describeUsersResponse_users' - A list of users.+--+-- 'httpStatus', 'describeUsersResponse_httpStatus' - The response's http status code.+newDescribeUsersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeUsersResponse+newDescribeUsersResponse pHttpStatus_ =+  DescribeUsersResponse'+    { nextToken = Prelude.Nothing,+      users = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An optional argument to pass in case the total number of records exceeds+-- the value of MaxResults. If nextToken is returned, there are more+-- results available. The value of nextToken is a unique pagination token+-- for each page. Make the call again using the returned token to retrieve+-- the next page. Keep all other arguments unchanged.+describeUsersResponse_nextToken :: Lens.Lens' DescribeUsersResponse (Prelude.Maybe Prelude.Text)+describeUsersResponse_nextToken = Lens.lens (\DescribeUsersResponse' {nextToken} -> nextToken) (\s@DescribeUsersResponse' {} a -> s {nextToken = a} :: DescribeUsersResponse)++-- | A list of users.+describeUsersResponse_users :: Lens.Lens' DescribeUsersResponse (Prelude.Maybe [User])+describeUsersResponse_users = Lens.lens (\DescribeUsersResponse' {users} -> users) (\s@DescribeUsersResponse' {} a -> s {users = a} :: DescribeUsersResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeUsersResponse_httpStatus :: Lens.Lens' DescribeUsersResponse Prelude.Int+describeUsersResponse_httpStatus = Lens.lens (\DescribeUsersResponse' {httpStatus} -> httpStatus) (\s@DescribeUsersResponse' {} a -> s {httpStatus = a} :: DescribeUsersResponse)++instance Prelude.NFData DescribeUsersResponse where+  rnf DescribeUsersResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf users+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/FailoverShard.hs view
@@ -0,0 +1,191 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.FailoverShard+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Used to failover a shard. This API is designed for testing the behavior+-- of your application in case of MemoryDB failover. It is not designed to+-- be used as a production-level tool for initiating a failover to overcome+-- a problem you may have with the cluster. Moreover, in certain conditions+-- such as large scale operational events, Amazon may block this API.+module Amazonka.MemoryDb.FailoverShard+  ( -- * Creating a Request+    FailoverShard (..),+    newFailoverShard,++    -- * Request Lenses+    failoverShard_clusterName,+    failoverShard_shardName,++    -- * Destructuring the Response+    FailoverShardResponse (..),+    newFailoverShardResponse,++    -- * Response Lenses+    failoverShardResponse_cluster,+    failoverShardResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newFailoverShard' smart constructor.+data FailoverShard = FailoverShard'+  { -- | The cluster being failed over+    clusterName :: Prelude.Text,+    -- | The name of the shard+    shardName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FailoverShard' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'failoverShard_clusterName' - The cluster being failed over+--+-- 'shardName', 'failoverShard_shardName' - The name of the shard+newFailoverShard ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'shardName'+  Prelude.Text ->+  FailoverShard+newFailoverShard pClusterName_ pShardName_ =+  FailoverShard'+    { clusterName = pClusterName_,+      shardName = pShardName_+    }++-- | The cluster being failed over+failoverShard_clusterName :: Lens.Lens' FailoverShard Prelude.Text+failoverShard_clusterName = Lens.lens (\FailoverShard' {clusterName} -> clusterName) (\s@FailoverShard' {} a -> s {clusterName = a} :: FailoverShard)++-- | The name of the shard+failoverShard_shardName :: Lens.Lens' FailoverShard Prelude.Text+failoverShard_shardName = Lens.lens (\FailoverShard' {shardName} -> shardName) (\s@FailoverShard' {} a -> s {shardName = a} :: FailoverShard)++instance Core.AWSRequest FailoverShard where+  type+    AWSResponse FailoverShard =+      FailoverShardResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          FailoverShardResponse'+            Prelude.<$> (x Data..?> "Cluster")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable FailoverShard where+  hashWithSalt _salt FailoverShard' {..} =+    _salt+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` shardName++instance Prelude.NFData FailoverShard where+  rnf FailoverShard' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf shardName++instance Data.ToHeaders FailoverShard where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.FailoverShard" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON FailoverShard where+  toJSON FailoverShard' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ClusterName" Data..= clusterName),+            Prelude.Just ("ShardName" Data..= shardName)+          ]+      )++instance Data.ToPath FailoverShard where+  toPath = Prelude.const "/"++instance Data.ToQuery FailoverShard where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newFailoverShardResponse' smart constructor.+data FailoverShardResponse = FailoverShardResponse'+  { -- | The cluster being failed over+    cluster :: Prelude.Maybe Cluster,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FailoverShardResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cluster', 'failoverShardResponse_cluster' - The cluster being failed over+--+-- 'httpStatus', 'failoverShardResponse_httpStatus' - The response's http status code.+newFailoverShardResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  FailoverShardResponse+newFailoverShardResponse pHttpStatus_ =+  FailoverShardResponse'+    { cluster = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The cluster being failed over+failoverShardResponse_cluster :: Lens.Lens' FailoverShardResponse (Prelude.Maybe Cluster)+failoverShardResponse_cluster = Lens.lens (\FailoverShardResponse' {cluster} -> cluster) (\s@FailoverShardResponse' {} a -> s {cluster = a} :: FailoverShardResponse)++-- | The response's http status code.+failoverShardResponse_httpStatus :: Lens.Lens' FailoverShardResponse Prelude.Int+failoverShardResponse_httpStatus = Lens.lens (\FailoverShardResponse' {httpStatus} -> httpStatus) (\s@FailoverShardResponse' {} a -> s {httpStatus = a} :: FailoverShardResponse)++instance Prelude.NFData FailoverShardResponse where+  rnf FailoverShardResponse' {..} =+    Prelude.rnf cluster+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/Lens.hs view
@@ -0,0 +1,645 @@+{-# 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.MemoryDb.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.MemoryDb.Lens+  ( -- * Operations++    -- ** BatchUpdateCluster+    batchUpdateCluster_serviceUpdate,+    batchUpdateCluster_clusterNames,+    batchUpdateClusterResponse_processedClusters,+    batchUpdateClusterResponse_unprocessedClusters,+    batchUpdateClusterResponse_httpStatus,++    -- ** CopySnapshot+    copySnapshot_kmsKeyId,+    copySnapshot_tags,+    copySnapshot_targetBucket,+    copySnapshot_sourceSnapshotName,+    copySnapshot_targetSnapshotName,+    copySnapshotResponse_snapshot,+    copySnapshotResponse_httpStatus,++    -- ** CreateACL+    createACL_tags,+    createACL_userNames,+    createACL_aCLName,+    createACLResponse_acl,+    createACLResponse_httpStatus,++    -- ** CreateCluster+    createCluster_autoMinorVersionUpgrade,+    createCluster_dataTiering,+    createCluster_description,+    createCluster_engineVersion,+    createCluster_kmsKeyId,+    createCluster_maintenanceWindow,+    createCluster_numReplicasPerShard,+    createCluster_numShards,+    createCluster_parameterGroupName,+    createCluster_port,+    createCluster_securityGroupIds,+    createCluster_snapshotArns,+    createCluster_snapshotName,+    createCluster_snapshotRetentionLimit,+    createCluster_snapshotWindow,+    createCluster_snsTopicArn,+    createCluster_subnetGroupName,+    createCluster_tLSEnabled,+    createCluster_tags,+    createCluster_clusterName,+    createCluster_nodeType,+    createCluster_aCLName,+    createClusterResponse_cluster,+    createClusterResponse_httpStatus,++    -- ** CreateParameterGroup+    createParameterGroup_description,+    createParameterGroup_tags,+    createParameterGroup_parameterGroupName,+    createParameterGroup_family,+    createParameterGroupResponse_parameterGroup,+    createParameterGroupResponse_httpStatus,++    -- ** CreateSnapshot+    createSnapshot_kmsKeyId,+    createSnapshot_tags,+    createSnapshot_clusterName,+    createSnapshot_snapshotName,+    createSnapshotResponse_snapshot,+    createSnapshotResponse_httpStatus,++    -- ** CreateSubnetGroup+    createSubnetGroup_description,+    createSubnetGroup_tags,+    createSubnetGroup_subnetGroupName,+    createSubnetGroup_subnetIds,+    createSubnetGroupResponse_subnetGroup,+    createSubnetGroupResponse_httpStatus,++    -- ** CreateUser+    createUser_tags,+    createUser_userName,+    createUser_authenticationMode,+    createUser_accessString,+    createUserResponse_user,+    createUserResponse_httpStatus,++    -- ** DeleteACL+    deleteACL_aCLName,+    deleteACLResponse_acl,+    deleteACLResponse_httpStatus,++    -- ** DeleteCluster+    deleteCluster_finalSnapshotName,+    deleteCluster_clusterName,+    deleteClusterResponse_cluster,+    deleteClusterResponse_httpStatus,++    -- ** DeleteParameterGroup+    deleteParameterGroup_parameterGroupName,+    deleteParameterGroupResponse_parameterGroup,+    deleteParameterGroupResponse_httpStatus,++    -- ** DeleteSnapshot+    deleteSnapshot_snapshotName,+    deleteSnapshotResponse_snapshot,+    deleteSnapshotResponse_httpStatus,++    -- ** DeleteSubnetGroup+    deleteSubnetGroup_subnetGroupName,+    deleteSubnetGroupResponse_subnetGroup,+    deleteSubnetGroupResponse_httpStatus,++    -- ** DeleteUser+    deleteUser_userName,+    deleteUserResponse_user,+    deleteUserResponse_httpStatus,++    -- ** DescribeACLs+    describeACLs_aCLName,+    describeACLs_maxResults,+    describeACLs_nextToken,+    describeACLsResponse_aCLs,+    describeACLsResponse_nextToken,+    describeACLsResponse_httpStatus,++    -- ** DescribeClusters+    describeClusters_clusterName,+    describeClusters_maxResults,+    describeClusters_nextToken,+    describeClusters_showShardDetails,+    describeClustersResponse_clusters,+    describeClustersResponse_nextToken,+    describeClustersResponse_httpStatus,++    -- ** DescribeEngineVersions+    describeEngineVersions_defaultOnly,+    describeEngineVersions_engineVersion,+    describeEngineVersions_maxResults,+    describeEngineVersions_nextToken,+    describeEngineVersions_parameterGroupFamily,+    describeEngineVersionsResponse_engineVersions,+    describeEngineVersionsResponse_nextToken,+    describeEngineVersionsResponse_httpStatus,++    -- ** DescribeEvents+    describeEvents_duration,+    describeEvents_endTime,+    describeEvents_maxResults,+    describeEvents_nextToken,+    describeEvents_sourceName,+    describeEvents_sourceType,+    describeEvents_startTime,+    describeEventsResponse_events,+    describeEventsResponse_nextToken,+    describeEventsResponse_httpStatus,++    -- ** DescribeParameterGroups+    describeParameterGroups_maxResults,+    describeParameterGroups_nextToken,+    describeParameterGroups_parameterGroupName,+    describeParameterGroupsResponse_nextToken,+    describeParameterGroupsResponse_parameterGroups,+    describeParameterGroupsResponse_httpStatus,++    -- ** DescribeParameters+    describeParameters_maxResults,+    describeParameters_nextToken,+    describeParameters_parameterGroupName,+    describeParametersResponse_nextToken,+    describeParametersResponse_parameters,+    describeParametersResponse_httpStatus,++    -- ** DescribeReservedNodes+    describeReservedNodes_duration,+    describeReservedNodes_maxResults,+    describeReservedNodes_nextToken,+    describeReservedNodes_nodeType,+    describeReservedNodes_offeringType,+    describeReservedNodes_reservationId,+    describeReservedNodes_reservedNodesOfferingId,+    describeReservedNodesResponse_nextToken,+    describeReservedNodesResponse_reservedNodes,+    describeReservedNodesResponse_httpStatus,++    -- ** DescribeReservedNodesOfferings+    describeReservedNodesOfferings_duration,+    describeReservedNodesOfferings_maxResults,+    describeReservedNodesOfferings_nextToken,+    describeReservedNodesOfferings_nodeType,+    describeReservedNodesOfferings_offeringType,+    describeReservedNodesOfferings_reservedNodesOfferingId,+    describeReservedNodesOfferingsResponse_nextToken,+    describeReservedNodesOfferingsResponse_reservedNodesOfferings,+    describeReservedNodesOfferingsResponse_httpStatus,++    -- ** DescribeServiceUpdates+    describeServiceUpdates_clusterNames,+    describeServiceUpdates_maxResults,+    describeServiceUpdates_nextToken,+    describeServiceUpdates_serviceUpdateName,+    describeServiceUpdates_status,+    describeServiceUpdatesResponse_nextToken,+    describeServiceUpdatesResponse_serviceUpdates,+    describeServiceUpdatesResponse_httpStatus,++    -- ** DescribeSnapshots+    describeSnapshots_clusterName,+    describeSnapshots_maxResults,+    describeSnapshots_nextToken,+    describeSnapshots_showDetail,+    describeSnapshots_snapshotName,+    describeSnapshots_source,+    describeSnapshotsResponse_nextToken,+    describeSnapshotsResponse_snapshots,+    describeSnapshotsResponse_httpStatus,++    -- ** DescribeSubnetGroups+    describeSubnetGroups_maxResults,+    describeSubnetGroups_nextToken,+    describeSubnetGroups_subnetGroupName,+    describeSubnetGroupsResponse_nextToken,+    describeSubnetGroupsResponse_subnetGroups,+    describeSubnetGroupsResponse_httpStatus,++    -- ** DescribeUsers+    describeUsers_filters,+    describeUsers_maxResults,+    describeUsers_nextToken,+    describeUsers_userName,+    describeUsersResponse_nextToken,+    describeUsersResponse_users,+    describeUsersResponse_httpStatus,++    -- ** FailoverShard+    failoverShard_clusterName,+    failoverShard_shardName,+    failoverShardResponse_cluster,+    failoverShardResponse_httpStatus,++    -- ** ListAllowedNodeTypeUpdates+    listAllowedNodeTypeUpdates_clusterName,+    listAllowedNodeTypeUpdatesResponse_scaleDownNodeTypes,+    listAllowedNodeTypeUpdatesResponse_scaleUpNodeTypes,+    listAllowedNodeTypeUpdatesResponse_httpStatus,++    -- ** ListTags+    listTags_resourceArn,+    listTagsResponse_tagList,+    listTagsResponse_httpStatus,++    -- ** PurchaseReservedNodesOffering+    purchaseReservedNodesOffering_nodeCount,+    purchaseReservedNodesOffering_reservationId,+    purchaseReservedNodesOffering_tags,+    purchaseReservedNodesOffering_reservedNodesOfferingId,+    purchaseReservedNodesOfferingResponse_reservedNode,+    purchaseReservedNodesOfferingResponse_httpStatus,++    -- ** ResetParameterGroup+    resetParameterGroup_allParameters,+    resetParameterGroup_parameterNames,+    resetParameterGroup_parameterGroupName,+    resetParameterGroupResponse_parameterGroup,+    resetParameterGroupResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_tagList,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_tagList,+    untagResourceResponse_httpStatus,++    -- ** UpdateACL+    updateACL_userNamesToAdd,+    updateACL_userNamesToRemove,+    updateACL_aCLName,+    updateACLResponse_acl,+    updateACLResponse_httpStatus,++    -- ** UpdateCluster+    updateCluster_aCLName,+    updateCluster_description,+    updateCluster_engineVersion,+    updateCluster_maintenanceWindow,+    updateCluster_nodeType,+    updateCluster_parameterGroupName,+    updateCluster_replicaConfiguration,+    updateCluster_securityGroupIds,+    updateCluster_shardConfiguration,+    updateCluster_snapshotRetentionLimit,+    updateCluster_snapshotWindow,+    updateCluster_snsTopicArn,+    updateCluster_snsTopicStatus,+    updateCluster_clusterName,+    updateClusterResponse_cluster,+    updateClusterResponse_httpStatus,++    -- ** UpdateParameterGroup+    updateParameterGroup_parameterGroupName,+    updateParameterGroup_parameterNameValues,+    updateParameterGroupResponse_parameterGroup,+    updateParameterGroupResponse_httpStatus,++    -- ** UpdateSubnetGroup+    updateSubnetGroup_description,+    updateSubnetGroup_subnetIds,+    updateSubnetGroup_subnetGroupName,+    updateSubnetGroupResponse_subnetGroup,+    updateSubnetGroupResponse_httpStatus,++    -- ** UpdateUser+    updateUser_accessString,+    updateUser_authenticationMode,+    updateUser_userName,+    updateUserResponse_user,+    updateUserResponse_httpStatus,++    -- * Types++    -- ** ACL+    acl_arn,+    acl_clusters,+    acl_minimumEngineVersion,+    acl_name,+    acl_pendingChanges,+    acl_status,+    acl_userNames,++    -- ** ACLPendingChanges+    aCLPendingChanges_userNamesToAdd,+    aCLPendingChanges_userNamesToRemove,++    -- ** ACLsUpdateStatus+    aCLsUpdateStatus_aCLToApply,++    -- ** Authentication+    authentication_passwordCount,+    authentication_type,++    -- ** AuthenticationMode+    authenticationMode_passwords,+    authenticationMode_type,++    -- ** AvailabilityZone+    availabilityZone_name,++    -- ** Cluster+    cluster_aCLName,+    cluster_arn,+    cluster_autoMinorVersionUpgrade,+    cluster_availabilityMode,+    cluster_clusterEndpoint,+    cluster_dataTiering,+    cluster_description,+    cluster_enginePatchVersion,+    cluster_engineVersion,+    cluster_kmsKeyId,+    cluster_maintenanceWindow,+    cluster_name,+    cluster_nodeType,+    cluster_numberOfShards,+    cluster_parameterGroupName,+    cluster_parameterGroupStatus,+    cluster_pendingUpdates,+    cluster_securityGroups,+    cluster_shards,+    cluster_snapshotRetentionLimit,+    cluster_snapshotWindow,+    cluster_snsTopicArn,+    cluster_snsTopicStatus,+    cluster_status,+    cluster_subnetGroupName,+    cluster_tLSEnabled,++    -- ** ClusterConfiguration+    clusterConfiguration_description,+    clusterConfiguration_engineVersion,+    clusterConfiguration_maintenanceWindow,+    clusterConfiguration_name,+    clusterConfiguration_nodeType,+    clusterConfiguration_numShards,+    clusterConfiguration_parameterGroupName,+    clusterConfiguration_port,+    clusterConfiguration_shards,+    clusterConfiguration_snapshotRetentionLimit,+    clusterConfiguration_snapshotWindow,+    clusterConfiguration_subnetGroupName,+    clusterConfiguration_topicArn,+    clusterConfiguration_vpcId,++    -- ** ClusterPendingUpdates+    clusterPendingUpdates_aCLs,+    clusterPendingUpdates_resharding,+    clusterPendingUpdates_serviceUpdates,++    -- ** Endpoint+    endpoint_address,+    endpoint_port,++    -- ** EngineVersionInfo+    engineVersionInfo_enginePatchVersion,+    engineVersionInfo_engineVersion,+    engineVersionInfo_parameterGroupFamily,++    -- ** Event+    event_date,+    event_message,+    event_sourceName,+    event_sourceType,++    -- ** Filter+    filter_name,+    filter_values,++    -- ** Node+    node_availabilityZone,+    node_createTime,+    node_endpoint,+    node_name,+    node_status,++    -- ** Parameter+    parameter_allowedValues,+    parameter_dataType,+    parameter_description,+    parameter_minimumEngineVersion,+    parameter_name,+    parameter_value,++    -- ** ParameterGroup+    parameterGroup_arn,+    parameterGroup_description,+    parameterGroup_family,+    parameterGroup_name,++    -- ** ParameterNameValue+    parameterNameValue_parameterName,+    parameterNameValue_parameterValue,++    -- ** PendingModifiedServiceUpdate+    pendingModifiedServiceUpdate_serviceUpdateName,+    pendingModifiedServiceUpdate_status,++    -- ** RecurringCharge+    recurringCharge_recurringChargeAmount,+    recurringCharge_recurringChargeFrequency,++    -- ** ReplicaConfigurationRequest+    replicaConfigurationRequest_replicaCount,++    -- ** ReservedNode+    reservedNode_arn,+    reservedNode_duration,+    reservedNode_fixedPrice,+    reservedNode_nodeCount,+    reservedNode_nodeType,+    reservedNode_offeringType,+    reservedNode_recurringCharges,+    reservedNode_reservationId,+    reservedNode_reservedNodesOfferingId,+    reservedNode_startTime,+    reservedNode_state,++    -- ** ReservedNodesOffering+    reservedNodesOffering_duration,+    reservedNodesOffering_fixedPrice,+    reservedNodesOffering_nodeType,+    reservedNodesOffering_offeringType,+    reservedNodesOffering_recurringCharges,+    reservedNodesOffering_reservedNodesOfferingId,++    -- ** ReshardingStatus+    reshardingStatus_slotMigration,++    -- ** SecurityGroupMembership+    securityGroupMembership_securityGroupId,+    securityGroupMembership_status,++    -- ** ServiceUpdate+    serviceUpdate_autoUpdateStartDate,+    serviceUpdate_clusterName,+    serviceUpdate_description,+    serviceUpdate_nodesUpdated,+    serviceUpdate_releaseDate,+    serviceUpdate_serviceUpdateName,+    serviceUpdate_status,+    serviceUpdate_type,++    -- ** ServiceUpdateRequest+    serviceUpdateRequest_serviceUpdateNameToApply,++    -- ** Shard+    shard_name,+    shard_nodes,+    shard_numberOfNodes,+    shard_slots,+    shard_status,++    -- ** ShardConfiguration+    shardConfiguration_replicaCount,+    shardConfiguration_slots,++    -- ** ShardConfigurationRequest+    shardConfigurationRequest_shardCount,++    -- ** ShardDetail+    shardDetail_configuration,+    shardDetail_name,+    shardDetail_size,+    shardDetail_snapshotCreationTime,++    -- ** SlotMigration+    slotMigration_progressPercentage,++    -- ** Snapshot+    snapshot_arn,+    snapshot_clusterConfiguration,+    snapshot_dataTiering,+    snapshot_kmsKeyId,+    snapshot_name,+    snapshot_source,+    snapshot_status,++    -- ** Subnet+    subnet_availabilityZone,+    subnet_identifier,++    -- ** SubnetGroup+    subnetGroup_arn,+    subnetGroup_description,+    subnetGroup_name,+    subnetGroup_subnets,+    subnetGroup_vpcId,++    -- ** Tag+    tag_key,+    tag_value,++    -- ** UnprocessedCluster+    unprocessedCluster_clusterName,+    unprocessedCluster_errorMessage,+    unprocessedCluster_errorType,++    -- ** User+    user_aCLNames,+    user_arn,+    user_accessString,+    user_authentication,+    user_minimumEngineVersion,+    user_name,+    user_status,+  )+where++import Amazonka.MemoryDb.BatchUpdateCluster+import Amazonka.MemoryDb.CopySnapshot+import Amazonka.MemoryDb.CreateACL+import Amazonka.MemoryDb.CreateCluster+import Amazonka.MemoryDb.CreateParameterGroup+import Amazonka.MemoryDb.CreateSnapshot+import Amazonka.MemoryDb.CreateSubnetGroup+import Amazonka.MemoryDb.CreateUser+import Amazonka.MemoryDb.DeleteACL+import Amazonka.MemoryDb.DeleteCluster+import Amazonka.MemoryDb.DeleteParameterGroup+import Amazonka.MemoryDb.DeleteSnapshot+import Amazonka.MemoryDb.DeleteSubnetGroup+import Amazonka.MemoryDb.DeleteUser+import Amazonka.MemoryDb.DescribeACLs+import Amazonka.MemoryDb.DescribeClusters+import Amazonka.MemoryDb.DescribeEngineVersions+import Amazonka.MemoryDb.DescribeEvents+import Amazonka.MemoryDb.DescribeParameterGroups+import Amazonka.MemoryDb.DescribeParameters+import Amazonka.MemoryDb.DescribeReservedNodes+import Amazonka.MemoryDb.DescribeReservedNodesOfferings+import Amazonka.MemoryDb.DescribeServiceUpdates+import Amazonka.MemoryDb.DescribeSnapshots+import Amazonka.MemoryDb.DescribeSubnetGroups+import Amazonka.MemoryDb.DescribeUsers+import Amazonka.MemoryDb.FailoverShard+import Amazonka.MemoryDb.ListAllowedNodeTypeUpdates+import Amazonka.MemoryDb.ListTags+import Amazonka.MemoryDb.PurchaseReservedNodesOffering+import Amazonka.MemoryDb.ResetParameterGroup+import Amazonka.MemoryDb.TagResource+import Amazonka.MemoryDb.Types.ACL+import Amazonka.MemoryDb.Types.ACLPendingChanges+import Amazonka.MemoryDb.Types.ACLsUpdateStatus+import Amazonka.MemoryDb.Types.Authentication+import Amazonka.MemoryDb.Types.AuthenticationMode+import Amazonka.MemoryDb.Types.AvailabilityZone+import Amazonka.MemoryDb.Types.Cluster+import Amazonka.MemoryDb.Types.ClusterConfiguration+import Amazonka.MemoryDb.Types.ClusterPendingUpdates+import Amazonka.MemoryDb.Types.Endpoint+import Amazonka.MemoryDb.Types.EngineVersionInfo+import Amazonka.MemoryDb.Types.Event+import Amazonka.MemoryDb.Types.Filter+import Amazonka.MemoryDb.Types.Node+import Amazonka.MemoryDb.Types.Parameter+import Amazonka.MemoryDb.Types.ParameterGroup+import Amazonka.MemoryDb.Types.ParameterNameValue+import Amazonka.MemoryDb.Types.PendingModifiedServiceUpdate+import Amazonka.MemoryDb.Types.RecurringCharge+import Amazonka.MemoryDb.Types.ReplicaConfigurationRequest+import Amazonka.MemoryDb.Types.ReservedNode+import Amazonka.MemoryDb.Types.ReservedNodesOffering+import Amazonka.MemoryDb.Types.ReshardingStatus+import Amazonka.MemoryDb.Types.SecurityGroupMembership+import Amazonka.MemoryDb.Types.ServiceUpdate+import Amazonka.MemoryDb.Types.ServiceUpdateRequest+import Amazonka.MemoryDb.Types.Shard+import Amazonka.MemoryDb.Types.ShardConfiguration+import Amazonka.MemoryDb.Types.ShardConfigurationRequest+import Amazonka.MemoryDb.Types.ShardDetail+import Amazonka.MemoryDb.Types.SlotMigration+import Amazonka.MemoryDb.Types.Snapshot+import Amazonka.MemoryDb.Types.Subnet+import Amazonka.MemoryDb.Types.SubnetGroup+import Amazonka.MemoryDb.Types.Tag+import Amazonka.MemoryDb.Types.UnprocessedCluster+import Amazonka.MemoryDb.Types.User+import Amazonka.MemoryDb.UntagResource+import Amazonka.MemoryDb.UpdateACL+import Amazonka.MemoryDb.UpdateCluster+import Amazonka.MemoryDb.UpdateParameterGroup+import Amazonka.MemoryDb.UpdateSubnetGroup+import Amazonka.MemoryDb.UpdateUser
+ gen/Amazonka/MemoryDb/ListAllowedNodeTypeUpdates.hs view
@@ -0,0 +1,202 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.ListAllowedNodeTypeUpdates+-- 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 available node types that you can scale to from your+-- cluster\'s current node type. When you use the UpdateCluster operation+-- to scale your cluster, the value of the NodeType parameter must be one+-- of the node types returned by this operation.+module Amazonka.MemoryDb.ListAllowedNodeTypeUpdates+  ( -- * Creating a Request+    ListAllowedNodeTypeUpdates (..),+    newListAllowedNodeTypeUpdates,++    -- * Request Lenses+    listAllowedNodeTypeUpdates_clusterName,++    -- * Destructuring the Response+    ListAllowedNodeTypeUpdatesResponse (..),+    newListAllowedNodeTypeUpdatesResponse,++    -- * Response Lenses+    listAllowedNodeTypeUpdatesResponse_scaleDownNodeTypes,+    listAllowedNodeTypeUpdatesResponse_scaleUpNodeTypes,+    listAllowedNodeTypeUpdatesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAllowedNodeTypeUpdates' smart constructor.+data ListAllowedNodeTypeUpdates = ListAllowedNodeTypeUpdates'+  { -- | The name of the cluster you want to scale. MemoryDB uses the cluster+    -- name to identify the current node type being used by this cluster, and+    -- from that to create a list of node types you can scale up to.+    clusterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAllowedNodeTypeUpdates' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'listAllowedNodeTypeUpdates_clusterName' - The name of the cluster you want to scale. MemoryDB uses the cluster+-- name to identify the current node type being used by this cluster, and+-- from that to create a list of node types you can scale up to.+newListAllowedNodeTypeUpdates ::+  -- | 'clusterName'+  Prelude.Text ->+  ListAllowedNodeTypeUpdates+newListAllowedNodeTypeUpdates pClusterName_ =+  ListAllowedNodeTypeUpdates'+    { clusterName =+        pClusterName_+    }++-- | The name of the cluster you want to scale. MemoryDB uses the cluster+-- name to identify the current node type being used by this cluster, and+-- from that to create a list of node types you can scale up to.+listAllowedNodeTypeUpdates_clusterName :: Lens.Lens' ListAllowedNodeTypeUpdates Prelude.Text+listAllowedNodeTypeUpdates_clusterName = Lens.lens (\ListAllowedNodeTypeUpdates' {clusterName} -> clusterName) (\s@ListAllowedNodeTypeUpdates' {} a -> s {clusterName = a} :: ListAllowedNodeTypeUpdates)++instance Core.AWSRequest ListAllowedNodeTypeUpdates where+  type+    AWSResponse ListAllowedNodeTypeUpdates =+      ListAllowedNodeTypeUpdatesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAllowedNodeTypeUpdatesResponse'+            Prelude.<$> ( x+                            Data..?> "ScaleDownNodeTypes"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "ScaleUpNodeTypes"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListAllowedNodeTypeUpdates where+  hashWithSalt _salt ListAllowedNodeTypeUpdates' {..} =+    _salt `Prelude.hashWithSalt` clusterName++instance Prelude.NFData ListAllowedNodeTypeUpdates where+  rnf ListAllowedNodeTypeUpdates' {..} =+    Prelude.rnf clusterName++instance Data.ToHeaders ListAllowedNodeTypeUpdates where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.ListAllowedNodeTypeUpdates" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListAllowedNodeTypeUpdates where+  toJSON ListAllowedNodeTypeUpdates' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ClusterName" Data..= clusterName)]+      )++instance Data.ToPath ListAllowedNodeTypeUpdates where+  toPath = Prelude.const "/"++instance Data.ToQuery ListAllowedNodeTypeUpdates where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListAllowedNodeTypeUpdatesResponse' smart constructor.+data ListAllowedNodeTypeUpdatesResponse = ListAllowedNodeTypeUpdatesResponse'+  { -- | A list node types which you can use to scale down your cluster.+    scaleDownNodeTypes :: Prelude.Maybe [Prelude.Text],+    -- | A list node types which you can use to scale up your cluster.+    scaleUpNodeTypes :: 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 'ListAllowedNodeTypeUpdatesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'scaleDownNodeTypes', 'listAllowedNodeTypeUpdatesResponse_scaleDownNodeTypes' - A list node types which you can use to scale down your cluster.+--+-- 'scaleUpNodeTypes', 'listAllowedNodeTypeUpdatesResponse_scaleUpNodeTypes' - A list node types which you can use to scale up your cluster.+--+-- 'httpStatus', 'listAllowedNodeTypeUpdatesResponse_httpStatus' - The response's http status code.+newListAllowedNodeTypeUpdatesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAllowedNodeTypeUpdatesResponse+newListAllowedNodeTypeUpdatesResponse pHttpStatus_ =+  ListAllowedNodeTypeUpdatesResponse'+    { scaleDownNodeTypes =+        Prelude.Nothing,+      scaleUpNodeTypes = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list node types which you can use to scale down your cluster.+listAllowedNodeTypeUpdatesResponse_scaleDownNodeTypes :: Lens.Lens' ListAllowedNodeTypeUpdatesResponse (Prelude.Maybe [Prelude.Text])+listAllowedNodeTypeUpdatesResponse_scaleDownNodeTypes = Lens.lens (\ListAllowedNodeTypeUpdatesResponse' {scaleDownNodeTypes} -> scaleDownNodeTypes) (\s@ListAllowedNodeTypeUpdatesResponse' {} a -> s {scaleDownNodeTypes = a} :: ListAllowedNodeTypeUpdatesResponse) Prelude.. Lens.mapping Lens.coerced++-- | A list node types which you can use to scale up your cluster.+listAllowedNodeTypeUpdatesResponse_scaleUpNodeTypes :: Lens.Lens' ListAllowedNodeTypeUpdatesResponse (Prelude.Maybe [Prelude.Text])+listAllowedNodeTypeUpdatesResponse_scaleUpNodeTypes = Lens.lens (\ListAllowedNodeTypeUpdatesResponse' {scaleUpNodeTypes} -> scaleUpNodeTypes) (\s@ListAllowedNodeTypeUpdatesResponse' {} a -> s {scaleUpNodeTypes = a} :: ListAllowedNodeTypeUpdatesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listAllowedNodeTypeUpdatesResponse_httpStatus :: Lens.Lens' ListAllowedNodeTypeUpdatesResponse Prelude.Int+listAllowedNodeTypeUpdatesResponse_httpStatus = Lens.lens (\ListAllowedNodeTypeUpdatesResponse' {httpStatus} -> httpStatus) (\s@ListAllowedNodeTypeUpdatesResponse' {} a -> s {httpStatus = a} :: ListAllowedNodeTypeUpdatesResponse)++instance+  Prelude.NFData+    ListAllowedNodeTypeUpdatesResponse+  where+  rnf ListAllowedNodeTypeUpdatesResponse' {..} =+    Prelude.rnf scaleDownNodeTypes+      `Prelude.seq` Prelude.rnf scaleUpNodeTypes+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/ListTags.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.MemoryDb.ListTags+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists all tags currently on a named resource. A tag is a key-value pair+-- where the key and value are case-sensitive. You can use tags to+-- categorize and track your MemoryDB resources. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/Tagging-Resources.html Tagging your MemoryDB resources>+module Amazonka.MemoryDb.ListTags+  ( -- * Creating a Request+    ListTags (..),+    newListTags,++    -- * Request Lenses+    listTags_resourceArn,++    -- * Destructuring the Response+    ListTagsResponse (..),+    newListTagsResponse,++    -- * Response Lenses+    listTagsResponse_tagList,+    listTagsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTags' smart constructor.+data ListTags = ListTags'+  { -- | The Amazon Resource Name (ARN) of the resource for which you want the+    -- list of tags+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTags' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTags_resourceArn' - The Amazon Resource Name (ARN) of the resource for which you want the+-- list of tags+newListTags ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTags+newListTags pResourceArn_ =+  ListTags' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) of the resource for which you want the+-- list of tags+listTags_resourceArn :: Lens.Lens' ListTags Prelude.Text+listTags_resourceArn = Lens.lens (\ListTags' {resourceArn} -> resourceArn) (\s@ListTags' {} a -> s {resourceArn = a} :: ListTags)++instance Core.AWSRequest ListTags where+  type AWSResponse ListTags = ListTagsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTagsResponse'+            Prelude.<$> (x Data..?> "TagList" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTags where+  hashWithSalt _salt ListTags' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTags where+  rnf ListTags' {..} = Prelude.rnf resourceArn++instance Data.ToHeaders ListTags where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("AmazonMemoryDB.ListTags" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListTags where+  toJSON ListTags' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ResourceArn" Data..= resourceArn)]+      )++instance Data.ToPath ListTags where+  toPath = Prelude.const "/"++instance Data.ToQuery ListTags where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsResponse' smart constructor.+data ListTagsResponse = ListTagsResponse'+  { -- | A list of tags as key-value pairs.+    tagList :: Prelude.Maybe [Tag],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tagList', 'listTagsResponse_tagList' - A list of tags as key-value pairs.+--+-- 'httpStatus', 'listTagsResponse_httpStatus' - The response's http status code.+newListTagsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsResponse+newListTagsResponse pHttpStatus_ =+  ListTagsResponse'+    { tagList = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of tags as key-value pairs.+listTagsResponse_tagList :: Lens.Lens' ListTagsResponse (Prelude.Maybe [Tag])+listTagsResponse_tagList = Lens.lens (\ListTagsResponse' {tagList} -> tagList) (\s@ListTagsResponse' {} a -> s {tagList = a} :: ListTagsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTagsResponse_httpStatus :: Lens.Lens' ListTagsResponse Prelude.Int+listTagsResponse_httpStatus = Lens.lens (\ListTagsResponse' {httpStatus} -> httpStatus) (\s@ListTagsResponse' {} a -> s {httpStatus = a} :: ListTagsResponse)++instance Prelude.NFData ListTagsResponse where+  rnf ListTagsResponse' {..} =+    Prelude.rnf tagList+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/PurchaseReservedNodesOffering.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.MemoryDb.PurchaseReservedNodesOffering+-- 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 you to purchase a reserved node offering. Reserved nodes are not+-- eligible for cancellation and are non-refundable.+module Amazonka.MemoryDb.PurchaseReservedNodesOffering+  ( -- * Creating a Request+    PurchaseReservedNodesOffering (..),+    newPurchaseReservedNodesOffering,++    -- * Request Lenses+    purchaseReservedNodesOffering_nodeCount,+    purchaseReservedNodesOffering_reservationId,+    purchaseReservedNodesOffering_tags,+    purchaseReservedNodesOffering_reservedNodesOfferingId,++    -- * Destructuring the Response+    PurchaseReservedNodesOfferingResponse (..),+    newPurchaseReservedNodesOfferingResponse,++    -- * Response Lenses+    purchaseReservedNodesOfferingResponse_reservedNode,+    purchaseReservedNodesOfferingResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPurchaseReservedNodesOffering' smart constructor.+data PurchaseReservedNodesOffering = PurchaseReservedNodesOffering'+  { -- | The number of node instances to reserve.+    nodeCount :: Prelude.Maybe Prelude.Int,+    -- | A customer-specified identifier to track this reservation.+    reservationId :: Prelude.Maybe Prelude.Text,+    -- | A list of tags to be added to this resource. A tag is a key-value pair.+    -- A tag key must be accompanied by a tag value, although null is accepted.+    tags :: Prelude.Maybe [Tag],+    -- | The ID of the reserved node offering to purchase.+    reservedNodesOfferingId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PurchaseReservedNodesOffering' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nodeCount', 'purchaseReservedNodesOffering_nodeCount' - The number of node instances to reserve.+--+-- 'reservationId', 'purchaseReservedNodesOffering_reservationId' - A customer-specified identifier to track this reservation.+--+-- 'tags', 'purchaseReservedNodesOffering_tags' - A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+--+-- 'reservedNodesOfferingId', 'purchaseReservedNodesOffering_reservedNodesOfferingId' - The ID of the reserved node offering to purchase.+newPurchaseReservedNodesOffering ::+  -- | 'reservedNodesOfferingId'+  Prelude.Text ->+  PurchaseReservedNodesOffering+newPurchaseReservedNodesOffering+  pReservedNodesOfferingId_ =+    PurchaseReservedNodesOffering'+      { nodeCount =+          Prelude.Nothing,+        reservationId = Prelude.Nothing,+        tags = Prelude.Nothing,+        reservedNodesOfferingId =+          pReservedNodesOfferingId_+      }++-- | The number of node instances to reserve.+purchaseReservedNodesOffering_nodeCount :: Lens.Lens' PurchaseReservedNodesOffering (Prelude.Maybe Prelude.Int)+purchaseReservedNodesOffering_nodeCount = Lens.lens (\PurchaseReservedNodesOffering' {nodeCount} -> nodeCount) (\s@PurchaseReservedNodesOffering' {} a -> s {nodeCount = a} :: PurchaseReservedNodesOffering)++-- | A customer-specified identifier to track this reservation.+purchaseReservedNodesOffering_reservationId :: Lens.Lens' PurchaseReservedNodesOffering (Prelude.Maybe Prelude.Text)+purchaseReservedNodesOffering_reservationId = Lens.lens (\PurchaseReservedNodesOffering' {reservationId} -> reservationId) (\s@PurchaseReservedNodesOffering' {} a -> s {reservationId = a} :: PurchaseReservedNodesOffering)++-- | A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+purchaseReservedNodesOffering_tags :: Lens.Lens' PurchaseReservedNodesOffering (Prelude.Maybe [Tag])+purchaseReservedNodesOffering_tags = Lens.lens (\PurchaseReservedNodesOffering' {tags} -> tags) (\s@PurchaseReservedNodesOffering' {} a -> s {tags = a} :: PurchaseReservedNodesOffering) Prelude.. Lens.mapping Lens.coerced++-- | The ID of the reserved node offering to purchase.+purchaseReservedNodesOffering_reservedNodesOfferingId :: Lens.Lens' PurchaseReservedNodesOffering Prelude.Text+purchaseReservedNodesOffering_reservedNodesOfferingId = Lens.lens (\PurchaseReservedNodesOffering' {reservedNodesOfferingId} -> reservedNodesOfferingId) (\s@PurchaseReservedNodesOffering' {} a -> s {reservedNodesOfferingId = a} :: PurchaseReservedNodesOffering)++instance+  Core.AWSRequest+    PurchaseReservedNodesOffering+  where+  type+    AWSResponse PurchaseReservedNodesOffering =+      PurchaseReservedNodesOfferingResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PurchaseReservedNodesOfferingResponse'+            Prelude.<$> (x Data..?> "ReservedNode")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PurchaseReservedNodesOffering+  where+  hashWithSalt _salt PurchaseReservedNodesOffering' {..} =+    _salt+      `Prelude.hashWithSalt` nodeCount+      `Prelude.hashWithSalt` reservationId+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` reservedNodesOfferingId++instance Prelude.NFData PurchaseReservedNodesOffering where+  rnf PurchaseReservedNodesOffering' {..} =+    Prelude.rnf nodeCount+      `Prelude.seq` Prelude.rnf reservationId+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf reservedNodesOfferingId++instance Data.ToHeaders PurchaseReservedNodesOffering where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.PurchaseReservedNodesOffering" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PurchaseReservedNodesOffering where+  toJSON PurchaseReservedNodesOffering' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("NodeCount" Data..=) Prelude.<$> nodeCount,+            ("ReservationId" Data..=) Prelude.<$> reservationId,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ( "ReservedNodesOfferingId"+                  Data..= reservedNodesOfferingId+              )+          ]+      )++instance Data.ToPath PurchaseReservedNodesOffering where+  toPath = Prelude.const "/"++instance Data.ToQuery PurchaseReservedNodesOffering where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPurchaseReservedNodesOfferingResponse' smart constructor.+data PurchaseReservedNodesOfferingResponse = PurchaseReservedNodesOfferingResponse'+  { -- | Represents the output of a @PurchaseReservedNodesOffering@ operation.+    reservedNode :: Prelude.Maybe ReservedNode,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PurchaseReservedNodesOfferingResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'reservedNode', 'purchaseReservedNodesOfferingResponse_reservedNode' - Represents the output of a @PurchaseReservedNodesOffering@ operation.+--+-- 'httpStatus', 'purchaseReservedNodesOfferingResponse_httpStatus' - The response's http status code.+newPurchaseReservedNodesOfferingResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PurchaseReservedNodesOfferingResponse+newPurchaseReservedNodesOfferingResponse pHttpStatus_ =+  PurchaseReservedNodesOfferingResponse'+    { reservedNode =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Represents the output of a @PurchaseReservedNodesOffering@ operation.+purchaseReservedNodesOfferingResponse_reservedNode :: Lens.Lens' PurchaseReservedNodesOfferingResponse (Prelude.Maybe ReservedNode)+purchaseReservedNodesOfferingResponse_reservedNode = Lens.lens (\PurchaseReservedNodesOfferingResponse' {reservedNode} -> reservedNode) (\s@PurchaseReservedNodesOfferingResponse' {} a -> s {reservedNode = a} :: PurchaseReservedNodesOfferingResponse)++-- | The response's http status code.+purchaseReservedNodesOfferingResponse_httpStatus :: Lens.Lens' PurchaseReservedNodesOfferingResponse Prelude.Int+purchaseReservedNodesOfferingResponse_httpStatus = Lens.lens (\PurchaseReservedNodesOfferingResponse' {httpStatus} -> httpStatus) (\s@PurchaseReservedNodesOfferingResponse' {} a -> s {httpStatus = a} :: PurchaseReservedNodesOfferingResponse)++instance+  Prelude.NFData+    PurchaseReservedNodesOfferingResponse+  where+  rnf PurchaseReservedNodesOfferingResponse' {..} =+    Prelude.rnf reservedNode+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/ResetParameterGroup.hs view
@@ -0,0 +1,217 @@+{-# 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.MemoryDb.ResetParameterGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Modifies the parameters of a parameter group to the engine or system+-- default value. You can reset specific parameters by submitting a list of+-- parameter names. To reset the entire parameter group, specify the+-- AllParameters and ParameterGroupName parameters.+module Amazonka.MemoryDb.ResetParameterGroup+  ( -- * Creating a Request+    ResetParameterGroup (..),+    newResetParameterGroup,++    -- * Request Lenses+    resetParameterGroup_allParameters,+    resetParameterGroup_parameterNames,+    resetParameterGroup_parameterGroupName,++    -- * Destructuring the Response+    ResetParameterGroupResponse (..),+    newResetParameterGroupResponse,++    -- * Response Lenses+    resetParameterGroupResponse_parameterGroup,+    resetParameterGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newResetParameterGroup' smart constructor.+data ResetParameterGroup = ResetParameterGroup'+  { -- | If true, all parameters in the parameter group are reset to their+    -- default values. If false, only the parameters listed by ParameterNames+    -- are reset to their default values.+    allParameters :: Prelude.Maybe Prelude.Bool,+    -- | An array of parameter names to reset to their default values. If+    -- AllParameters is true, do not use ParameterNames. If AllParameters is+    -- false, you must specify the name of at least one parameter to reset.+    parameterNames :: Prelude.Maybe [Prelude.Text],+    -- | The name of the parameter group to reset.+    parameterGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ResetParameterGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'allParameters', 'resetParameterGroup_allParameters' - If true, all parameters in the parameter group are reset to their+-- default values. If false, only the parameters listed by ParameterNames+-- are reset to their default values.+--+-- 'parameterNames', 'resetParameterGroup_parameterNames' - An array of parameter names to reset to their default values. If+-- AllParameters is true, do not use ParameterNames. If AllParameters is+-- false, you must specify the name of at least one parameter to reset.+--+-- 'parameterGroupName', 'resetParameterGroup_parameterGroupName' - The name of the parameter group to reset.+newResetParameterGroup ::+  -- | 'parameterGroupName'+  Prelude.Text ->+  ResetParameterGroup+newResetParameterGroup pParameterGroupName_ =+  ResetParameterGroup'+    { allParameters =+        Prelude.Nothing,+      parameterNames = Prelude.Nothing,+      parameterGroupName = pParameterGroupName_+    }++-- | If true, all parameters in the parameter group are reset to their+-- default values. If false, only the parameters listed by ParameterNames+-- are reset to their default values.+resetParameterGroup_allParameters :: Lens.Lens' ResetParameterGroup (Prelude.Maybe Prelude.Bool)+resetParameterGroup_allParameters = Lens.lens (\ResetParameterGroup' {allParameters} -> allParameters) (\s@ResetParameterGroup' {} a -> s {allParameters = a} :: ResetParameterGroup)++-- | An array of parameter names to reset to their default values. If+-- AllParameters is true, do not use ParameterNames. If AllParameters is+-- false, you must specify the name of at least one parameter to reset.+resetParameterGroup_parameterNames :: Lens.Lens' ResetParameterGroup (Prelude.Maybe [Prelude.Text])+resetParameterGroup_parameterNames = Lens.lens (\ResetParameterGroup' {parameterNames} -> parameterNames) (\s@ResetParameterGroup' {} a -> s {parameterNames = a} :: ResetParameterGroup) Prelude.. Lens.mapping Lens.coerced++-- | The name of the parameter group to reset.+resetParameterGroup_parameterGroupName :: Lens.Lens' ResetParameterGroup Prelude.Text+resetParameterGroup_parameterGroupName = Lens.lens (\ResetParameterGroup' {parameterGroupName} -> parameterGroupName) (\s@ResetParameterGroup' {} a -> s {parameterGroupName = a} :: ResetParameterGroup)++instance Core.AWSRequest ResetParameterGroup where+  type+    AWSResponse ResetParameterGroup =+      ResetParameterGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ResetParameterGroupResponse'+            Prelude.<$> (x Data..?> "ParameterGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ResetParameterGroup where+  hashWithSalt _salt ResetParameterGroup' {..} =+    _salt+      `Prelude.hashWithSalt` allParameters+      `Prelude.hashWithSalt` parameterNames+      `Prelude.hashWithSalt` parameterGroupName++instance Prelude.NFData ResetParameterGroup where+  rnf ResetParameterGroup' {..} =+    Prelude.rnf allParameters+      `Prelude.seq` Prelude.rnf parameterNames+      `Prelude.seq` Prelude.rnf parameterGroupName++instance Data.ToHeaders ResetParameterGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.ResetParameterGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ResetParameterGroup where+  toJSON ResetParameterGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AllParameters" Data..=) Prelude.<$> allParameters,+            ("ParameterNames" Data..=)+              Prelude.<$> parameterNames,+            Prelude.Just+              ("ParameterGroupName" Data..= parameterGroupName)+          ]+      )++instance Data.ToPath ResetParameterGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery ResetParameterGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newResetParameterGroupResponse' smart constructor.+data ResetParameterGroupResponse = ResetParameterGroupResponse'+  { -- | The parameter group being reset.+    parameterGroup :: Prelude.Maybe ParameterGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ResetParameterGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'parameterGroup', 'resetParameterGroupResponse_parameterGroup' - The parameter group being reset.+--+-- 'httpStatus', 'resetParameterGroupResponse_httpStatus' - The response's http status code.+newResetParameterGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ResetParameterGroupResponse+newResetParameterGroupResponse pHttpStatus_ =+  ResetParameterGroupResponse'+    { parameterGroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The parameter group being reset.+resetParameterGroupResponse_parameterGroup :: Lens.Lens' ResetParameterGroupResponse (Prelude.Maybe ParameterGroup)+resetParameterGroupResponse_parameterGroup = Lens.lens (\ResetParameterGroupResponse' {parameterGroup} -> parameterGroup) (\s@ResetParameterGroupResponse' {} a -> s {parameterGroup = a} :: ResetParameterGroupResponse)++-- | The response's http status code.+resetParameterGroupResponse_httpStatus :: Lens.Lens' ResetParameterGroupResponse Prelude.Int+resetParameterGroupResponse_httpStatus = Lens.lens (\ResetParameterGroupResponse' {httpStatus} -> httpStatus) (\s@ResetParameterGroupResponse' {} a -> s {httpStatus = a} :: ResetParameterGroupResponse)++instance Prelude.NFData ResetParameterGroupResponse where+  rnf ResetParameterGroupResponse' {..} =+    Prelude.rnf parameterGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/TagResource.hs view
@@ -0,0 +1,199 @@+{-# 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.MemoryDb.TagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- A tag is a key-value pair where the key and value are case-sensitive.+-- You can use tags to categorize and track all your MemoryDB resources.+-- When you add or remove tags on clusters, those actions will be+-- replicated to all nodes in the cluster. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/iam.resourcelevelpermissions.html Resource-level permissions>.+--+-- For example, you can use cost-allocation tags to your MemoryDB+-- resources, Amazon generates a cost allocation report as a+-- comma-separated value (CSV) file with your usage and costs aggregated by+-- your tags. You can apply tags that represent business categories (such+-- as cost centers, application names, or owners) to organize your costs+-- across multiple services. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/tagging.html Using Cost Allocation Tags>.+module Amazonka.MemoryDb.TagResource+  ( -- * Creating a Request+    TagResource (..),+    newTagResource,++    -- * Request Lenses+    tagResource_resourceArn,+    tagResource_tags,++    -- * Destructuring the Response+    TagResourceResponse (..),+    newTagResourceResponse,++    -- * Response Lenses+    tagResourceResponse_tagList,+    tagResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the resource to which the tags are to+    -- be added+    resourceArn :: Prelude.Text,+    -- | A list of tags to be added to this resource. A tag is a key-value pair.+    -- A tag key must be accompanied by a tag value, although null is accepted.+    tags :: [Tag]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource to which the tags are to+-- be added+--+-- 'tags', 'tagResource_tags' - A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource to which the tags are to+-- be added+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | A list of tags to be added to this resource. A tag is a key-value pair.+-- A tag key must be accompanied by a tag value, although null is accepted.+tagResource_tags :: Lens.Lens' TagResource [Tag]+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced++instance Core.AWSRequest TagResource where+  type AWSResponse TagResource = TagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          TagResourceResponse'+            Prelude.<$> (x Data..?> "TagList" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TagResource where+  hashWithSalt _salt TagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData TagResource where+  rnf TagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders TagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("AmazonMemoryDB.TagResource" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),+            Prelude.Just ("Tags" Data..= tags)+          ]+      )++instance Data.ToPath TagResource where+  toPath = Prelude.const "/"++instance Data.ToQuery TagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | A list of tags as key-value pairs.+    tagList :: Prelude.Maybe [Tag],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tagList', 'tagResourceResponse_tagList' - A list of tags as key-value pairs.+--+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse'+    { tagList = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of tags as key-value pairs.+tagResourceResponse_tagList :: Lens.Lens' TagResourceResponse (Prelude.Maybe [Tag])+tagResourceResponse_tagList = Lens.lens (\TagResourceResponse' {tagList} -> tagList) (\s@TagResourceResponse' {} a -> s {tagList = a} :: TagResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} =+    Prelude.rnf tagList+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/Types.hs view
@@ -0,0 +1,845 @@+{-# 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.MemoryDb.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.MemoryDb.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _ACLAlreadyExistsFault,+    _ACLNotFoundFault,+    _ACLQuotaExceededFault,+    _APICallRateForCustomerExceededFault,+    _ClusterAlreadyExistsFault,+    _ClusterNotFoundFault,+    _ClusterQuotaForCustomerExceededFault,+    _DefaultUserRequired,+    _DuplicateUserNameFault,+    _InsufficientClusterCapacityFault,+    _InvalidACLStateFault,+    _InvalidARNFault,+    _InvalidClusterStateFault,+    _InvalidCredentialsException,+    _InvalidKMSKeyFault,+    _InvalidNodeStateFault,+    _InvalidParameterCombinationException,+    _InvalidParameterGroupStateFault,+    _InvalidParameterValueException,+    _InvalidSnapshotStateFault,+    _InvalidSubnet,+    _InvalidUserStateFault,+    _InvalidVPCNetworkStateFault,+    _NoOperationFault,+    _NodeQuotaForClusterExceededFault,+    _NodeQuotaForCustomerExceededFault,+    _ParameterGroupAlreadyExistsFault,+    _ParameterGroupNotFoundFault,+    _ParameterGroupQuotaExceededFault,+    _ReservedNodeAlreadyExistsFault,+    _ReservedNodeNotFoundFault,+    _ReservedNodeQuotaExceededFault,+    _ReservedNodesOfferingNotFoundFault,+    _ServiceLinkedRoleNotFoundFault,+    _ServiceUpdateNotFoundFault,+    _ShardNotFoundFault,+    _ShardsPerClusterQuotaExceededFault,+    _SnapshotAlreadyExistsFault,+    _SnapshotNotFoundFault,+    _SnapshotQuotaExceededFault,+    _SubnetGroupAlreadyExistsFault,+    _SubnetGroupInUseFault,+    _SubnetGroupNotFoundFault,+    _SubnetGroupQuotaExceededFault,+    _SubnetInUse,+    _SubnetNotAllowedFault,+    _SubnetQuotaExceededFault,+    _TagNotFoundFault,+    _TagQuotaPerResourceExceeded,+    _TestFailoverNotAvailableFault,+    _UserAlreadyExistsFault,+    _UserNotFoundFault,+    _UserQuotaExceededFault,++    -- * AZStatus+    AZStatus (..),++    -- * AuthenticationType+    AuthenticationType (..),++    -- * DataTieringStatus+    DataTieringStatus (..),++    -- * InputAuthenticationType+    InputAuthenticationType (..),++    -- * ServiceUpdateStatus+    ServiceUpdateStatus (..),++    -- * ServiceUpdateType+    ServiceUpdateType (..),++    -- * SourceType+    SourceType (..),++    -- * ACL+    ACL (..),+    newACL,+    acl_arn,+    acl_clusters,+    acl_minimumEngineVersion,+    acl_name,+    acl_pendingChanges,+    acl_status,+    acl_userNames,++    -- * ACLPendingChanges+    ACLPendingChanges (..),+    newACLPendingChanges,+    aCLPendingChanges_userNamesToAdd,+    aCLPendingChanges_userNamesToRemove,++    -- * ACLsUpdateStatus+    ACLsUpdateStatus (..),+    newACLsUpdateStatus,+    aCLsUpdateStatus_aCLToApply,++    -- * Authentication+    Authentication (..),+    newAuthentication,+    authentication_passwordCount,+    authentication_type,++    -- * AuthenticationMode+    AuthenticationMode (..),+    newAuthenticationMode,+    authenticationMode_passwords,+    authenticationMode_type,++    -- * AvailabilityZone+    AvailabilityZone (..),+    newAvailabilityZone,+    availabilityZone_name,++    -- * Cluster+    Cluster (..),+    newCluster,+    cluster_aCLName,+    cluster_arn,+    cluster_autoMinorVersionUpgrade,+    cluster_availabilityMode,+    cluster_clusterEndpoint,+    cluster_dataTiering,+    cluster_description,+    cluster_enginePatchVersion,+    cluster_engineVersion,+    cluster_kmsKeyId,+    cluster_maintenanceWindow,+    cluster_name,+    cluster_nodeType,+    cluster_numberOfShards,+    cluster_parameterGroupName,+    cluster_parameterGroupStatus,+    cluster_pendingUpdates,+    cluster_securityGroups,+    cluster_shards,+    cluster_snapshotRetentionLimit,+    cluster_snapshotWindow,+    cluster_snsTopicArn,+    cluster_snsTopicStatus,+    cluster_status,+    cluster_subnetGroupName,+    cluster_tLSEnabled,++    -- * ClusterConfiguration+    ClusterConfiguration (..),+    newClusterConfiguration,+    clusterConfiguration_description,+    clusterConfiguration_engineVersion,+    clusterConfiguration_maintenanceWindow,+    clusterConfiguration_name,+    clusterConfiguration_nodeType,+    clusterConfiguration_numShards,+    clusterConfiguration_parameterGroupName,+    clusterConfiguration_port,+    clusterConfiguration_shards,+    clusterConfiguration_snapshotRetentionLimit,+    clusterConfiguration_snapshotWindow,+    clusterConfiguration_subnetGroupName,+    clusterConfiguration_topicArn,+    clusterConfiguration_vpcId,++    -- * ClusterPendingUpdates+    ClusterPendingUpdates (..),+    newClusterPendingUpdates,+    clusterPendingUpdates_aCLs,+    clusterPendingUpdates_resharding,+    clusterPendingUpdates_serviceUpdates,++    -- * Endpoint+    Endpoint (..),+    newEndpoint,+    endpoint_address,+    endpoint_port,++    -- * EngineVersionInfo+    EngineVersionInfo (..),+    newEngineVersionInfo,+    engineVersionInfo_enginePatchVersion,+    engineVersionInfo_engineVersion,+    engineVersionInfo_parameterGroupFamily,++    -- * Event+    Event (..),+    newEvent,+    event_date,+    event_message,+    event_sourceName,+    event_sourceType,++    -- * Filter+    Filter (..),+    newFilter,+    filter_name,+    filter_values,++    -- * Node+    Node (..),+    newNode,+    node_availabilityZone,+    node_createTime,+    node_endpoint,+    node_name,+    node_status,++    -- * Parameter+    Parameter (..),+    newParameter,+    parameter_allowedValues,+    parameter_dataType,+    parameter_description,+    parameter_minimumEngineVersion,+    parameter_name,+    parameter_value,++    -- * ParameterGroup+    ParameterGroup (..),+    newParameterGroup,+    parameterGroup_arn,+    parameterGroup_description,+    parameterGroup_family,+    parameterGroup_name,++    -- * ParameterNameValue+    ParameterNameValue (..),+    newParameterNameValue,+    parameterNameValue_parameterName,+    parameterNameValue_parameterValue,++    -- * PendingModifiedServiceUpdate+    PendingModifiedServiceUpdate (..),+    newPendingModifiedServiceUpdate,+    pendingModifiedServiceUpdate_serviceUpdateName,+    pendingModifiedServiceUpdate_status,++    -- * RecurringCharge+    RecurringCharge (..),+    newRecurringCharge,+    recurringCharge_recurringChargeAmount,+    recurringCharge_recurringChargeFrequency,++    -- * ReplicaConfigurationRequest+    ReplicaConfigurationRequest (..),+    newReplicaConfigurationRequest,+    replicaConfigurationRequest_replicaCount,++    -- * ReservedNode+    ReservedNode (..),+    newReservedNode,+    reservedNode_arn,+    reservedNode_duration,+    reservedNode_fixedPrice,+    reservedNode_nodeCount,+    reservedNode_nodeType,+    reservedNode_offeringType,+    reservedNode_recurringCharges,+    reservedNode_reservationId,+    reservedNode_reservedNodesOfferingId,+    reservedNode_startTime,+    reservedNode_state,++    -- * ReservedNodesOffering+    ReservedNodesOffering (..),+    newReservedNodesOffering,+    reservedNodesOffering_duration,+    reservedNodesOffering_fixedPrice,+    reservedNodesOffering_nodeType,+    reservedNodesOffering_offeringType,+    reservedNodesOffering_recurringCharges,+    reservedNodesOffering_reservedNodesOfferingId,++    -- * ReshardingStatus+    ReshardingStatus (..),+    newReshardingStatus,+    reshardingStatus_slotMigration,++    -- * SecurityGroupMembership+    SecurityGroupMembership (..),+    newSecurityGroupMembership,+    securityGroupMembership_securityGroupId,+    securityGroupMembership_status,++    -- * ServiceUpdate+    ServiceUpdate (..),+    newServiceUpdate,+    serviceUpdate_autoUpdateStartDate,+    serviceUpdate_clusterName,+    serviceUpdate_description,+    serviceUpdate_nodesUpdated,+    serviceUpdate_releaseDate,+    serviceUpdate_serviceUpdateName,+    serviceUpdate_status,+    serviceUpdate_type,++    -- * ServiceUpdateRequest+    ServiceUpdateRequest (..),+    newServiceUpdateRequest,+    serviceUpdateRequest_serviceUpdateNameToApply,++    -- * Shard+    Shard (..),+    newShard,+    shard_name,+    shard_nodes,+    shard_numberOfNodes,+    shard_slots,+    shard_status,++    -- * ShardConfiguration+    ShardConfiguration (..),+    newShardConfiguration,+    shardConfiguration_replicaCount,+    shardConfiguration_slots,++    -- * ShardConfigurationRequest+    ShardConfigurationRequest (..),+    newShardConfigurationRequest,+    shardConfigurationRequest_shardCount,++    -- * ShardDetail+    ShardDetail (..),+    newShardDetail,+    shardDetail_configuration,+    shardDetail_name,+    shardDetail_size,+    shardDetail_snapshotCreationTime,++    -- * SlotMigration+    SlotMigration (..),+    newSlotMigration,+    slotMigration_progressPercentage,++    -- * Snapshot+    Snapshot (..),+    newSnapshot,+    snapshot_arn,+    snapshot_clusterConfiguration,+    snapshot_dataTiering,+    snapshot_kmsKeyId,+    snapshot_name,+    snapshot_source,+    snapshot_status,++    -- * Subnet+    Subnet (..),+    newSubnet,+    subnet_availabilityZone,+    subnet_identifier,++    -- * SubnetGroup+    SubnetGroup (..),+    newSubnetGroup,+    subnetGroup_arn,+    subnetGroup_description,+    subnetGroup_name,+    subnetGroup_subnets,+    subnetGroup_vpcId,++    -- * Tag+    Tag (..),+    newTag,+    tag_key,+    tag_value,++    -- * UnprocessedCluster+    UnprocessedCluster (..),+    newUnprocessedCluster,+    unprocessedCluster_clusterName,+    unprocessedCluster_errorMessage,+    unprocessedCluster_errorType,++    -- * User+    User (..),+    newUser,+    user_aCLNames,+    user_arn,+    user_accessString,+    user_authentication,+    user_minimumEngineVersion,+    user_name,+    user_status,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.MemoryDb.Types.ACL+import Amazonka.MemoryDb.Types.ACLPendingChanges+import Amazonka.MemoryDb.Types.ACLsUpdateStatus+import Amazonka.MemoryDb.Types.AZStatus+import Amazonka.MemoryDb.Types.Authentication+import Amazonka.MemoryDb.Types.AuthenticationMode+import Amazonka.MemoryDb.Types.AuthenticationType+import Amazonka.MemoryDb.Types.AvailabilityZone+import Amazonka.MemoryDb.Types.Cluster+import Amazonka.MemoryDb.Types.ClusterConfiguration+import Amazonka.MemoryDb.Types.ClusterPendingUpdates+import Amazonka.MemoryDb.Types.DataTieringStatus+import Amazonka.MemoryDb.Types.Endpoint+import Amazonka.MemoryDb.Types.EngineVersionInfo+import Amazonka.MemoryDb.Types.Event+import Amazonka.MemoryDb.Types.Filter+import Amazonka.MemoryDb.Types.InputAuthenticationType+import Amazonka.MemoryDb.Types.Node+import Amazonka.MemoryDb.Types.Parameter+import Amazonka.MemoryDb.Types.ParameterGroup+import Amazonka.MemoryDb.Types.ParameterNameValue+import Amazonka.MemoryDb.Types.PendingModifiedServiceUpdate+import Amazonka.MemoryDb.Types.RecurringCharge+import Amazonka.MemoryDb.Types.ReplicaConfigurationRequest+import Amazonka.MemoryDb.Types.ReservedNode+import Amazonka.MemoryDb.Types.ReservedNodesOffering+import Amazonka.MemoryDb.Types.ReshardingStatus+import Amazonka.MemoryDb.Types.SecurityGroupMembership+import Amazonka.MemoryDb.Types.ServiceUpdate+import Amazonka.MemoryDb.Types.ServiceUpdateRequest+import Amazonka.MemoryDb.Types.ServiceUpdateStatus+import Amazonka.MemoryDb.Types.ServiceUpdateType+import Amazonka.MemoryDb.Types.Shard+import Amazonka.MemoryDb.Types.ShardConfiguration+import Amazonka.MemoryDb.Types.ShardConfigurationRequest+import Amazonka.MemoryDb.Types.ShardDetail+import Amazonka.MemoryDb.Types.SlotMigration+import Amazonka.MemoryDb.Types.Snapshot+import Amazonka.MemoryDb.Types.SourceType+import Amazonka.MemoryDb.Types.Subnet+import Amazonka.MemoryDb.Types.SubnetGroup+import Amazonka.MemoryDb.Types.Tag+import Amazonka.MemoryDb.Types.UnprocessedCluster+import Amazonka.MemoryDb.Types.User+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2021-01-01@ of the Amazon MemoryDB SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "MemoryDb",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "memory-db",+      Core.signingName = "memorydb",+      Core.version = "2021-01-01",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "MemoryDb",+      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++_ACLAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ACLAlreadyExistsFault =+  Core._MatchServiceError+    defaultService+    "ACLAlreadyExistsFault"++_ACLNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ACLNotFoundFault =+  Core._MatchServiceError+    defaultService+    "ACLNotFoundFault"++_ACLQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ACLQuotaExceededFault =+  Core._MatchServiceError+    defaultService+    "ACLQuotaExceededFault"++_APICallRateForCustomerExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_APICallRateForCustomerExceededFault =+  Core._MatchServiceError+    defaultService+    "APICallRateForCustomerExceededFault"++_ClusterAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ClusterAlreadyExistsFault =+  Core._MatchServiceError+    defaultService+    "ClusterAlreadyExistsFault"++_ClusterNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ClusterNotFoundFault =+  Core._MatchServiceError+    defaultService+    "ClusterNotFoundFault"++_ClusterQuotaForCustomerExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ClusterQuotaForCustomerExceededFault =+  Core._MatchServiceError+    defaultService+    "ClusterQuotaForCustomerExceededFault"++_DefaultUserRequired :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_DefaultUserRequired =+  Core._MatchServiceError+    defaultService+    "DefaultUserRequired"++_DuplicateUserNameFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_DuplicateUserNameFault =+  Core._MatchServiceError+    defaultService+    "DuplicateUserNameFault"++_InsufficientClusterCapacityFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InsufficientClusterCapacityFault =+  Core._MatchServiceError+    defaultService+    "InsufficientClusterCapacityFault"++_InvalidACLStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidACLStateFault =+  Core._MatchServiceError+    defaultService+    "InvalidACLStateFault"++_InvalidARNFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidARNFault =+  Core._MatchServiceError+    defaultService+    "InvalidARNFault"++_InvalidClusterStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidClusterStateFault =+  Core._MatchServiceError+    defaultService+    "InvalidClusterStateFault"++_InvalidCredentialsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidCredentialsException =+  Core._MatchServiceError+    defaultService+    "InvalidCredentialsException"++_InvalidKMSKeyFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidKMSKeyFault =+  Core._MatchServiceError+    defaultService+    "InvalidKMSKeyFault"++_InvalidNodeStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidNodeStateFault =+  Core._MatchServiceError+    defaultService+    "InvalidNodeStateFault"++_InvalidParameterCombinationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidParameterCombinationException =+  Core._MatchServiceError+    defaultService+    "InvalidParameterCombinationException"++_InvalidParameterGroupStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidParameterGroupStateFault =+  Core._MatchServiceError+    defaultService+    "InvalidParameterGroupStateFault"++_InvalidParameterValueException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidParameterValueException =+  Core._MatchServiceError+    defaultService+    "InvalidParameterValueException"++_InvalidSnapshotStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidSnapshotStateFault =+  Core._MatchServiceError+    defaultService+    "InvalidSnapshotStateFault"++_InvalidSubnet :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidSubnet =+  Core._MatchServiceError+    defaultService+    "InvalidSubnet"++_InvalidUserStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidUserStateFault =+  Core._MatchServiceError+    defaultService+    "InvalidUserStateFault"++_InvalidVPCNetworkStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidVPCNetworkStateFault =+  Core._MatchServiceError+    defaultService+    "InvalidVPCNetworkStateFault"++_NoOperationFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_NoOperationFault =+  Core._MatchServiceError+    defaultService+    "NoOperationFault"++_NodeQuotaForClusterExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_NodeQuotaForClusterExceededFault =+  Core._MatchServiceError+    defaultService+    "NodeQuotaForClusterExceededFault"++_NodeQuotaForCustomerExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_NodeQuotaForCustomerExceededFault =+  Core._MatchServiceError+    defaultService+    "NodeQuotaForCustomerExceededFault"++_ParameterGroupAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ParameterGroupAlreadyExistsFault =+  Core._MatchServiceError+    defaultService+    "ParameterGroupAlreadyExistsFault"++_ParameterGroupNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ParameterGroupNotFoundFault =+  Core._MatchServiceError+    defaultService+    "ParameterGroupNotFoundFault"++_ParameterGroupQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ParameterGroupQuotaExceededFault =+  Core._MatchServiceError+    defaultService+    "ParameterGroupQuotaExceededFault"++-- | You already have a reservation with the given identifier.+_ReservedNodeAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ReservedNodeAlreadyExistsFault =+  Core._MatchServiceError+    defaultService+    "ReservedNodeAlreadyExistsFault"++-- | The requested node does not exist.+_ReservedNodeNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ReservedNodeNotFoundFault =+  Core._MatchServiceError+    defaultService+    "ReservedNodeNotFoundFault"++-- | The request cannot be processed because it would exceed the user\'s node+-- quota.+_ReservedNodeQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ReservedNodeQuotaExceededFault =+  Core._MatchServiceError+    defaultService+    "ReservedNodeQuotaExceededFault"++-- | The requested node offering does not exist.+_ReservedNodesOfferingNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ReservedNodesOfferingNotFoundFault =+  Core._MatchServiceError+    defaultService+    "ReservedNodesOfferingNotFoundFault"++_ServiceLinkedRoleNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceLinkedRoleNotFoundFault =+  Core._MatchServiceError+    defaultService+    "ServiceLinkedRoleNotFoundFault"++_ServiceUpdateNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceUpdateNotFoundFault =+  Core._MatchServiceError+    defaultService+    "ServiceUpdateNotFoundFault"++_ShardNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ShardNotFoundFault =+  Core._MatchServiceError+    defaultService+    "ShardNotFoundFault"++_ShardsPerClusterQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ShardsPerClusterQuotaExceededFault =+  Core._MatchServiceError+    defaultService+    "ShardsPerClusterQuotaExceededFault"++_SnapshotAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SnapshotAlreadyExistsFault =+  Core._MatchServiceError+    defaultService+    "SnapshotAlreadyExistsFault"++_SnapshotNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SnapshotNotFoundFault =+  Core._MatchServiceError+    defaultService+    "SnapshotNotFoundFault"++_SnapshotQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SnapshotQuotaExceededFault =+  Core._MatchServiceError+    defaultService+    "SnapshotQuotaExceededFault"++_SubnetGroupAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SubnetGroupAlreadyExistsFault =+  Core._MatchServiceError+    defaultService+    "SubnetGroupAlreadyExistsFault"++_SubnetGroupInUseFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SubnetGroupInUseFault =+  Core._MatchServiceError+    defaultService+    "SubnetGroupInUseFault"++_SubnetGroupNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SubnetGroupNotFoundFault =+  Core._MatchServiceError+    defaultService+    "SubnetGroupNotFoundFault"++_SubnetGroupQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SubnetGroupQuotaExceededFault =+  Core._MatchServiceError+    defaultService+    "SubnetGroupQuotaExceededFault"++_SubnetInUse :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SubnetInUse =+  Core._MatchServiceError+    defaultService+    "SubnetInUse"++_SubnetNotAllowedFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SubnetNotAllowedFault =+  Core._MatchServiceError+    defaultService+    "SubnetNotAllowedFault"++_SubnetQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SubnetQuotaExceededFault =+  Core._MatchServiceError+    defaultService+    "SubnetQuotaExceededFault"++_TagNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TagNotFoundFault =+  Core._MatchServiceError+    defaultService+    "TagNotFoundFault"++_TagQuotaPerResourceExceeded :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TagQuotaPerResourceExceeded =+  Core._MatchServiceError+    defaultService+    "TagQuotaPerResourceExceeded"++_TestFailoverNotAvailableFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TestFailoverNotAvailableFault =+  Core._MatchServiceError+    defaultService+    "TestFailoverNotAvailableFault"++_UserAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_UserAlreadyExistsFault =+  Core._MatchServiceError+    defaultService+    "UserAlreadyExistsFault"++_UserNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_UserNotFoundFault =+  Core._MatchServiceError+    defaultService+    "UserNotFoundFault"++_UserQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_UserQuotaExceededFault =+  Core._MatchServiceError+    defaultService+    "UserQuotaExceededFault"
+ gen/Amazonka/MemoryDb/Types/ACL.hs view
@@ -0,0 +1,151 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.ACL+-- 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.MemoryDb.Types.ACL where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.ACLPendingChanges+import qualified Amazonka.Prelude as Prelude++-- | An Access Control List. You can authenticate users with Access Contol+-- Lists. ACLs enable you to control cluster access by grouping users.+-- These Access control lists are designed as a way to organize access to+-- clusters.+--+-- /See:/ 'newACL' smart constructor.+data ACL = ACL'+  { -- | The Amazon Resource Name (ARN) of the ACL+    arn :: Prelude.Maybe Prelude.Text,+    -- | A list of clusters associated with the ACL.+    clusters :: Prelude.Maybe [Prelude.Text],+    -- | The minimum engine version supported for the ACL+    minimumEngineVersion :: Prelude.Maybe Prelude.Text,+    -- | The name of the Access Control List+    name :: Prelude.Maybe Prelude.Text,+    -- | A list of updates being applied to the ACL.+    pendingChanges :: Prelude.Maybe ACLPendingChanges,+    -- | Indicates ACL status. Can be \"creating\", \"active\", \"modifying\",+    -- \"deleting\".+    status :: Prelude.Maybe Prelude.Text,+    -- | The list of user names that belong to the ACL.+    userNames :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ACL' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'acl_arn' - The Amazon Resource Name (ARN) of the ACL+--+-- 'clusters', 'acl_clusters' - A list of clusters associated with the ACL.+--+-- 'minimumEngineVersion', 'acl_minimumEngineVersion' - The minimum engine version supported for the ACL+--+-- 'name', 'acl_name' - The name of the Access Control List+--+-- 'pendingChanges', 'acl_pendingChanges' - A list of updates being applied to the ACL.+--+-- 'status', 'acl_status' - Indicates ACL status. Can be \"creating\", \"active\", \"modifying\",+-- \"deleting\".+--+-- 'userNames', 'acl_userNames' - The list of user names that belong to the ACL.+newACL ::+  ACL+newACL =+  ACL'+    { arn = Prelude.Nothing,+      clusters = Prelude.Nothing,+      minimumEngineVersion = Prelude.Nothing,+      name = Prelude.Nothing,+      pendingChanges = Prelude.Nothing,+      status = Prelude.Nothing,+      userNames = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the ACL+acl_arn :: Lens.Lens' ACL (Prelude.Maybe Prelude.Text)+acl_arn = Lens.lens (\ACL' {arn} -> arn) (\s@ACL' {} a -> s {arn = a} :: ACL)++-- | A list of clusters associated with the ACL.+acl_clusters :: Lens.Lens' ACL (Prelude.Maybe [Prelude.Text])+acl_clusters = Lens.lens (\ACL' {clusters} -> clusters) (\s@ACL' {} a -> s {clusters = a} :: ACL) Prelude.. Lens.mapping Lens.coerced++-- | The minimum engine version supported for the ACL+acl_minimumEngineVersion :: Lens.Lens' ACL (Prelude.Maybe Prelude.Text)+acl_minimumEngineVersion = Lens.lens (\ACL' {minimumEngineVersion} -> minimumEngineVersion) (\s@ACL' {} a -> s {minimumEngineVersion = a} :: ACL)++-- | The name of the Access Control List+acl_name :: Lens.Lens' ACL (Prelude.Maybe Prelude.Text)+acl_name = Lens.lens (\ACL' {name} -> name) (\s@ACL' {} a -> s {name = a} :: ACL)++-- | A list of updates being applied to the ACL.+acl_pendingChanges :: Lens.Lens' ACL (Prelude.Maybe ACLPendingChanges)+acl_pendingChanges = Lens.lens (\ACL' {pendingChanges} -> pendingChanges) (\s@ACL' {} a -> s {pendingChanges = a} :: ACL)++-- | Indicates ACL status. Can be \"creating\", \"active\", \"modifying\",+-- \"deleting\".+acl_status :: Lens.Lens' ACL (Prelude.Maybe Prelude.Text)+acl_status = Lens.lens (\ACL' {status} -> status) (\s@ACL' {} a -> s {status = a} :: ACL)++-- | The list of user names that belong to the ACL.+acl_userNames :: Lens.Lens' ACL (Prelude.Maybe [Prelude.Text])+acl_userNames = Lens.lens (\ACL' {userNames} -> userNames) (\s@ACL' {} a -> s {userNames = a} :: ACL) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ACL where+  parseJSON =+    Data.withObject+      "ACL"+      ( \x ->+          ACL'+            Prelude.<$> (x Data..:? "ARN")+            Prelude.<*> (x Data..:? "Clusters" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "MinimumEngineVersion")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "PendingChanges")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "UserNames" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ACL where+  hashWithSalt _salt ACL' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` clusters+      `Prelude.hashWithSalt` minimumEngineVersion+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` pendingChanges+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` userNames++instance Prelude.NFData ACL where+  rnf ACL' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf clusters+      `Prelude.seq` Prelude.rnf minimumEngineVersion+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf pendingChanges+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf userNames
+ gen/Amazonka/MemoryDb/Types/ACLPendingChanges.hs view
@@ -0,0 +1,88 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.ACLPendingChanges+-- 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.MemoryDb.Types.ACLPendingChanges where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Returns the updates being applied to the ACL.+--+-- /See:/ 'newACLPendingChanges' smart constructor.+data ACLPendingChanges = ACLPendingChanges'+  { -- | A list of users being added to the ACL+    userNamesToAdd :: Prelude.Maybe [Prelude.Text],+    -- | A list of user names being removed from the ACL+    userNamesToRemove :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ACLPendingChanges' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'userNamesToAdd', 'aCLPendingChanges_userNamesToAdd' - A list of users being added to the ACL+--+-- 'userNamesToRemove', 'aCLPendingChanges_userNamesToRemove' - A list of user names being removed from the ACL+newACLPendingChanges ::+  ACLPendingChanges+newACLPendingChanges =+  ACLPendingChanges'+    { userNamesToAdd =+        Prelude.Nothing,+      userNamesToRemove = Prelude.Nothing+    }++-- | A list of users being added to the ACL+aCLPendingChanges_userNamesToAdd :: Lens.Lens' ACLPendingChanges (Prelude.Maybe [Prelude.Text])+aCLPendingChanges_userNamesToAdd = Lens.lens (\ACLPendingChanges' {userNamesToAdd} -> userNamesToAdd) (\s@ACLPendingChanges' {} a -> s {userNamesToAdd = a} :: ACLPendingChanges) Prelude.. Lens.mapping Lens.coerced++-- | A list of user names being removed from the ACL+aCLPendingChanges_userNamesToRemove :: Lens.Lens' ACLPendingChanges (Prelude.Maybe [Prelude.Text])+aCLPendingChanges_userNamesToRemove = Lens.lens (\ACLPendingChanges' {userNamesToRemove} -> userNamesToRemove) (\s@ACLPendingChanges' {} a -> s {userNamesToRemove = a} :: ACLPendingChanges) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ACLPendingChanges where+  parseJSON =+    Data.withObject+      "ACLPendingChanges"+      ( \x ->+          ACLPendingChanges'+            Prelude.<$> (x Data..:? "UserNamesToAdd" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "UserNamesToRemove"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable ACLPendingChanges where+  hashWithSalt _salt ACLPendingChanges' {..} =+    _salt+      `Prelude.hashWithSalt` userNamesToAdd+      `Prelude.hashWithSalt` userNamesToRemove++instance Prelude.NFData ACLPendingChanges where+  rnf ACLPendingChanges' {..} =+    Prelude.rnf userNamesToAdd+      `Prelude.seq` Prelude.rnf userNamesToRemove
+ gen/Amazonka/MemoryDb/Types/ACLsUpdateStatus.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.ACLsUpdateStatus+-- 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.MemoryDb.Types.ACLsUpdateStatus 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 status of the ACL update+--+-- /See:/ 'newACLsUpdateStatus' smart constructor.+data ACLsUpdateStatus = ACLsUpdateStatus'+  { -- | A list of ACLs pending to be applied.+    aCLToApply :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ACLsUpdateStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aCLToApply', 'aCLsUpdateStatus_aCLToApply' - A list of ACLs pending to be applied.+newACLsUpdateStatus ::+  ACLsUpdateStatus+newACLsUpdateStatus =+  ACLsUpdateStatus' {aCLToApply = Prelude.Nothing}++-- | A list of ACLs pending to be applied.+aCLsUpdateStatus_aCLToApply :: Lens.Lens' ACLsUpdateStatus (Prelude.Maybe Prelude.Text)+aCLsUpdateStatus_aCLToApply = Lens.lens (\ACLsUpdateStatus' {aCLToApply} -> aCLToApply) (\s@ACLsUpdateStatus' {} a -> s {aCLToApply = a} :: ACLsUpdateStatus)++instance Data.FromJSON ACLsUpdateStatus where+  parseJSON =+    Data.withObject+      "ACLsUpdateStatus"+      ( \x ->+          ACLsUpdateStatus'+            Prelude.<$> (x Data..:? "ACLToApply")+      )++instance Prelude.Hashable ACLsUpdateStatus where+  hashWithSalt _salt ACLsUpdateStatus' {..} =+    _salt `Prelude.hashWithSalt` aCLToApply++instance Prelude.NFData ACLsUpdateStatus where+  rnf ACLsUpdateStatus' {..} = Prelude.rnf aCLToApply
+ gen/Amazonka/MemoryDb/Types/AZStatus.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.MemoryDb.Types.AZStatus+-- 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.MemoryDb.Types.AZStatus+  ( AZStatus+      ( ..,+        AZStatus_Multiaz,+        AZStatus_Singleaz+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AZStatus = AZStatus'+  { fromAZStatus ::+      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 AZStatus_Multiaz :: AZStatus+pattern AZStatus_Multiaz = AZStatus' "multiaz"++pattern AZStatus_Singleaz :: AZStatus+pattern AZStatus_Singleaz = AZStatus' "singleaz"++{-# COMPLETE+  AZStatus_Multiaz,+  AZStatus_Singleaz,+  AZStatus'+  #-}
+ gen/Amazonka/MemoryDb/Types/Authentication.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.MemoryDb.Types.Authentication+-- 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.MemoryDb.Types.Authentication where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.AuthenticationType+import qualified Amazonka.Prelude as Prelude++-- | Denotes the user\'s authentication properties, such as whether it+-- requires a password to authenticate. Used in output responses.+--+-- /See:/ 'newAuthentication' smart constructor.+data Authentication = Authentication'+  { -- | The number of passwords belonging to the user. The maximum is two.+    passwordCount :: Prelude.Maybe Prelude.Int,+    -- | Indicates whether the user requires a password to authenticate.+    type' :: Prelude.Maybe AuthenticationType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Authentication' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'passwordCount', 'authentication_passwordCount' - The number of passwords belonging to the user. The maximum is two.+--+-- 'type'', 'authentication_type' - Indicates whether the user requires a password to authenticate.+newAuthentication ::+  Authentication+newAuthentication =+  Authentication'+    { passwordCount = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The number of passwords belonging to the user. The maximum is two.+authentication_passwordCount :: Lens.Lens' Authentication (Prelude.Maybe Prelude.Int)+authentication_passwordCount = Lens.lens (\Authentication' {passwordCount} -> passwordCount) (\s@Authentication' {} a -> s {passwordCount = a} :: Authentication)++-- | Indicates whether the user requires a password to authenticate.+authentication_type :: Lens.Lens' Authentication (Prelude.Maybe AuthenticationType)+authentication_type = Lens.lens (\Authentication' {type'} -> type') (\s@Authentication' {} a -> s {type' = a} :: Authentication)++instance Data.FromJSON Authentication where+  parseJSON =+    Data.withObject+      "Authentication"+      ( \x ->+          Authentication'+            Prelude.<$> (x Data..:? "PasswordCount")+            Prelude.<*> (x Data..:? "Type")+      )++instance Prelude.Hashable Authentication where+  hashWithSalt _salt Authentication' {..} =+    _salt+      `Prelude.hashWithSalt` passwordCount+      `Prelude.hashWithSalt` type'++instance Prelude.NFData Authentication where+  rnf Authentication' {..} =+    Prelude.rnf passwordCount+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/MemoryDb/Types/AuthenticationMode.hs view
@@ -0,0 +1,88 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.AuthenticationMode+-- 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.MemoryDb.Types.AuthenticationMode where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.InputAuthenticationType+import qualified Amazonka.Prelude as Prelude++-- | Denotes the user\'s authentication properties, such as whether it+-- requires a password to authenticate. Used in output responses.+--+-- /See:/ 'newAuthenticationMode' smart constructor.+data AuthenticationMode = AuthenticationMode'+  { -- | The password(s) used for authentication+    passwords :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | Indicates whether the user requires a password to authenticate. All+    -- newly-created users require a password.+    type' :: Prelude.Maybe InputAuthenticationType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AuthenticationMode' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'passwords', 'authenticationMode_passwords' - The password(s) used for authentication+--+-- 'type'', 'authenticationMode_type' - Indicates whether the user requires a password to authenticate. All+-- newly-created users require a password.+newAuthenticationMode ::+  AuthenticationMode+newAuthenticationMode =+  AuthenticationMode'+    { passwords = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The password(s) used for authentication+authenticationMode_passwords :: Lens.Lens' AuthenticationMode (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+authenticationMode_passwords = Lens.lens (\AuthenticationMode' {passwords} -> passwords) (\s@AuthenticationMode' {} a -> s {passwords = a} :: AuthenticationMode) Prelude.. Lens.mapping Lens.coerced++-- | Indicates whether the user requires a password to authenticate. All+-- newly-created users require a password.+authenticationMode_type :: Lens.Lens' AuthenticationMode (Prelude.Maybe InputAuthenticationType)+authenticationMode_type = Lens.lens (\AuthenticationMode' {type'} -> type') (\s@AuthenticationMode' {} a -> s {type' = a} :: AuthenticationMode)++instance Prelude.Hashable AuthenticationMode where+  hashWithSalt _salt AuthenticationMode' {..} =+    _salt+      `Prelude.hashWithSalt` passwords+      `Prelude.hashWithSalt` type'++instance Prelude.NFData AuthenticationMode where+  rnf AuthenticationMode' {..} =+    Prelude.rnf passwords+      `Prelude.seq` Prelude.rnf type'++instance Data.ToJSON AuthenticationMode where+  toJSON AuthenticationMode' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Passwords" Data..=) Prelude.<$> passwords,+            ("Type" Data..=) Prelude.<$> type'+          ]+      )
+ gen/Amazonka/MemoryDb/Types/AuthenticationType.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.MemoryDb.Types.AuthenticationType+-- 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.MemoryDb.Types.AuthenticationType+  ( AuthenticationType+      ( ..,+        AuthenticationType_No_password,+        AuthenticationType_Password+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AuthenticationType = AuthenticationType'+  { fromAuthenticationType ::+      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 AuthenticationType_No_password :: AuthenticationType+pattern AuthenticationType_No_password = AuthenticationType' "no-password"++pattern AuthenticationType_Password :: AuthenticationType+pattern AuthenticationType_Password = AuthenticationType' "password"++{-# COMPLETE+  AuthenticationType_No_password,+  AuthenticationType_Password,+  AuthenticationType'+  #-}
+ gen/Amazonka/MemoryDb/Types/AvailabilityZone.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.AvailabilityZone+-- 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.MemoryDb.Types.AvailabilityZone where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Indicates if the cluster has a Multi-AZ configuration (multiaz) or not+-- (singleaz).+--+-- /See:/ 'newAvailabilityZone' smart constructor.+data AvailabilityZone = AvailabilityZone'+  { -- | The name of the Availability Zone.+    name :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AvailabilityZone' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'availabilityZone_name' - The name of the Availability Zone.+newAvailabilityZone ::+  AvailabilityZone+newAvailabilityZone =+  AvailabilityZone' {name = Prelude.Nothing}++-- | The name of the Availability Zone.+availabilityZone_name :: Lens.Lens' AvailabilityZone (Prelude.Maybe Prelude.Text)+availabilityZone_name = Lens.lens (\AvailabilityZone' {name} -> name) (\s@AvailabilityZone' {} a -> s {name = a} :: AvailabilityZone)++instance Data.FromJSON AvailabilityZone where+  parseJSON =+    Data.withObject+      "AvailabilityZone"+      ( \x ->+          AvailabilityZone' Prelude.<$> (x Data..:? "Name")+      )++instance Prelude.Hashable AvailabilityZone where+  hashWithSalt _salt AvailabilityZone' {..} =+    _salt `Prelude.hashWithSalt` name++instance Prelude.NFData AvailabilityZone where+  rnf AvailabilityZone' {..} = Prelude.rnf name
+ gen/Amazonka/MemoryDb/Types/Cluster.hs view
@@ -0,0 +1,430 @@+{-# 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.MemoryDb.Types.Cluster+-- 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.MemoryDb.Types.Cluster where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.AZStatus+import Amazonka.MemoryDb.Types.ClusterPendingUpdates+import Amazonka.MemoryDb.Types.DataTieringStatus+import Amazonka.MemoryDb.Types.Endpoint+import Amazonka.MemoryDb.Types.SecurityGroupMembership+import Amazonka.MemoryDb.Types.Shard+import qualified Amazonka.Prelude as Prelude++-- | Contains all of the attributes of a specific cluster.+--+-- /See:/ 'newCluster' smart constructor.+data Cluster = Cluster'+  { -- | The name of the Access Control List associated with this cluster.+    aCLName :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the cluster.+    arn :: Prelude.Maybe Prelude.Text,+    -- | When set to true, the cluster will automatically receive minor engine+    -- version upgrades after launch.+    autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,+    -- | Indicates if the cluster has a Multi-AZ configuration (multiaz) or not+    -- (singleaz).+    availabilityMode :: Prelude.Maybe AZStatus,+    -- | The cluster\'s configuration endpoint+    clusterEndpoint :: Prelude.Maybe Endpoint,+    -- | Enables data tiering. Data tiering is only supported for clusters using+    -- the r6gd node type. This parameter must be set when using r6gd nodes.+    -- For more information, see+    -- <https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html Data tiering>.+    dataTiering :: Prelude.Maybe DataTieringStatus,+    -- | A description of the cluster+    description :: Prelude.Maybe Prelude.Text,+    -- | The Redis engine patch version used by the cluster+    enginePatchVersion :: Prelude.Maybe Prelude.Text,+    -- | The Redis engine version used by the cluster+    engineVersion :: Prelude.Maybe Prelude.Text,+    -- | The ID of the KMS key used to encrypt the cluster+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | Specifies the weekly time range during which maintenance on the cluster+    -- is performed. It is specified as a range in the format+    -- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window+    -- is a 60 minute period.+    maintenanceWindow :: Prelude.Maybe Prelude.Text,+    -- | The user-supplied name of the cluster. This identifier is a unique key+    -- that identifies a cluster.+    name :: Prelude.Maybe Prelude.Text,+    -- | The cluster\'s node type+    nodeType :: Prelude.Maybe Prelude.Text,+    -- | The number of shards in the cluster+    numberOfShards :: Prelude.Maybe Prelude.Int,+    -- | The name of the parameter group used by the cluster+    parameterGroupName :: Prelude.Maybe Prelude.Text,+    -- | The status of the parameter group used by the cluster, for example+    -- \'active\' or \'applying\'.+    parameterGroupStatus :: Prelude.Maybe Prelude.Text,+    -- | A group of settings that are currently being applied.+    pendingUpdates :: Prelude.Maybe ClusterPendingUpdates,+    -- | A list of security groups used by the cluster+    securityGroups :: Prelude.Maybe [SecurityGroupMembership],+    -- | A list of shards that are members of the cluster.+    shards :: Prelude.Maybe [Shard],+    -- | The number of days for which MemoryDB retains automatic snapshots before+    -- deleting them. For example, if you set SnapshotRetentionLimit to 5, a+    -- snapshot that was taken today is retained for 5 days before being+    -- deleted.+    snapshotRetentionLimit :: Prelude.Maybe Prelude.Int,+    -- | The daily time range (in UTC) during which MemoryDB begins taking a+    -- daily snapshot of your shard. Example: 05:00-09:00 If you do not specify+    -- this parameter, MemoryDB automatically chooses an appropriate time+    -- range.+    snapshotWindow :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the SNS notification topic+    snsTopicArn :: Prelude.Maybe Prelude.Text,+    -- | The SNS topic must be in Active status to receive notifications+    snsTopicStatus :: Prelude.Maybe Prelude.Text,+    -- | The status of the cluster. For example, Available, Updating, Creating.+    status :: Prelude.Maybe Prelude.Text,+    -- | The name of the subnet group used by the cluster+    subnetGroupName :: Prelude.Maybe Prelude.Text,+    -- | A flag to indicate if In-transit encryption is enabled+    tLSEnabled :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Cluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aCLName', 'cluster_aCLName' - The name of the Access Control List associated with this cluster.+--+-- 'arn', 'cluster_arn' - The Amazon Resource Name (ARN) of the cluster.+--+-- 'autoMinorVersionUpgrade', 'cluster_autoMinorVersionUpgrade' - When set to true, the cluster will automatically receive minor engine+-- version upgrades after launch.+--+-- 'availabilityMode', 'cluster_availabilityMode' - Indicates if the cluster has a Multi-AZ configuration (multiaz) or not+-- (singleaz).+--+-- 'clusterEndpoint', 'cluster_clusterEndpoint' - The cluster\'s configuration endpoint+--+-- 'dataTiering', 'cluster_dataTiering' - Enables data tiering. Data tiering is only supported for clusters using+-- the r6gd node type. This parameter must be set when using r6gd nodes.+-- For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html Data tiering>.+--+-- 'description', 'cluster_description' - A description of the cluster+--+-- 'enginePatchVersion', 'cluster_enginePatchVersion' - The Redis engine patch version used by the cluster+--+-- 'engineVersion', 'cluster_engineVersion' - The Redis engine version used by the cluster+--+-- 'kmsKeyId', 'cluster_kmsKeyId' - The ID of the KMS key used to encrypt the cluster+--+-- 'maintenanceWindow', 'cluster_maintenanceWindow' - Specifies the weekly time range during which maintenance on the cluster+-- is performed. It is specified as a range in the format+-- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window+-- is a 60 minute period.+--+-- 'name', 'cluster_name' - The user-supplied name of the cluster. This identifier is a unique key+-- that identifies a cluster.+--+-- 'nodeType', 'cluster_nodeType' - The cluster\'s node type+--+-- 'numberOfShards', 'cluster_numberOfShards' - The number of shards in the cluster+--+-- 'parameterGroupName', 'cluster_parameterGroupName' - The name of the parameter group used by the cluster+--+-- 'parameterGroupStatus', 'cluster_parameterGroupStatus' - The status of the parameter group used by the cluster, for example+-- \'active\' or \'applying\'.+--+-- 'pendingUpdates', 'cluster_pendingUpdates' - A group of settings that are currently being applied.+--+-- 'securityGroups', 'cluster_securityGroups' - A list of security groups used by the cluster+--+-- 'shards', 'cluster_shards' - A list of shards that are members of the cluster.+--+-- 'snapshotRetentionLimit', 'cluster_snapshotRetentionLimit' - The number of days for which MemoryDB retains automatic snapshots before+-- deleting them. For example, if you set SnapshotRetentionLimit to 5, a+-- snapshot that was taken today is retained for 5 days before being+-- deleted.+--+-- 'snapshotWindow', 'cluster_snapshotWindow' - The daily time range (in UTC) during which MemoryDB begins taking a+-- daily snapshot of your shard. Example: 05:00-09:00 If you do not specify+-- this parameter, MemoryDB automatically chooses an appropriate time+-- range.+--+-- 'snsTopicArn', 'cluster_snsTopicArn' - The Amazon Resource Name (ARN) of the SNS notification topic+--+-- 'snsTopicStatus', 'cluster_snsTopicStatus' - The SNS topic must be in Active status to receive notifications+--+-- 'status', 'cluster_status' - The status of the cluster. For example, Available, Updating, Creating.+--+-- 'subnetGroupName', 'cluster_subnetGroupName' - The name of the subnet group used by the cluster+--+-- 'tLSEnabled', 'cluster_tLSEnabled' - A flag to indicate if In-transit encryption is enabled+newCluster ::+  Cluster+newCluster =+  Cluster'+    { aCLName = Prelude.Nothing,+      arn = Prelude.Nothing,+      autoMinorVersionUpgrade = Prelude.Nothing,+      availabilityMode = Prelude.Nothing,+      clusterEndpoint = Prelude.Nothing,+      dataTiering = Prelude.Nothing,+      description = Prelude.Nothing,+      enginePatchVersion = Prelude.Nothing,+      engineVersion = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      maintenanceWindow = Prelude.Nothing,+      name = Prelude.Nothing,+      nodeType = Prelude.Nothing,+      numberOfShards = Prelude.Nothing,+      parameterGroupName = Prelude.Nothing,+      parameterGroupStatus = Prelude.Nothing,+      pendingUpdates = Prelude.Nothing,+      securityGroups = Prelude.Nothing,+      shards = Prelude.Nothing,+      snapshotRetentionLimit = Prelude.Nothing,+      snapshotWindow = Prelude.Nothing,+      snsTopicArn = Prelude.Nothing,+      snsTopicStatus = Prelude.Nothing,+      status = Prelude.Nothing,+      subnetGroupName = Prelude.Nothing,+      tLSEnabled = Prelude.Nothing+    }++-- | The name of the Access Control List associated with this cluster.+cluster_aCLName :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_aCLName = Lens.lens (\Cluster' {aCLName} -> aCLName) (\s@Cluster' {} a -> s {aCLName = a} :: Cluster)++-- | The Amazon Resource Name (ARN) of the cluster.+cluster_arn :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_arn = Lens.lens (\Cluster' {arn} -> arn) (\s@Cluster' {} a -> s {arn = a} :: Cluster)++-- | When set to true, the cluster will automatically receive minor engine+-- version upgrades after launch.+cluster_autoMinorVersionUpgrade :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Bool)+cluster_autoMinorVersionUpgrade = Lens.lens (\Cluster' {autoMinorVersionUpgrade} -> autoMinorVersionUpgrade) (\s@Cluster' {} a -> s {autoMinorVersionUpgrade = a} :: Cluster)++-- | Indicates if the cluster has a Multi-AZ configuration (multiaz) or not+-- (singleaz).+cluster_availabilityMode :: Lens.Lens' Cluster (Prelude.Maybe AZStatus)+cluster_availabilityMode = Lens.lens (\Cluster' {availabilityMode} -> availabilityMode) (\s@Cluster' {} a -> s {availabilityMode = a} :: Cluster)++-- | The cluster\'s configuration endpoint+cluster_clusterEndpoint :: Lens.Lens' Cluster (Prelude.Maybe Endpoint)+cluster_clusterEndpoint = Lens.lens (\Cluster' {clusterEndpoint} -> clusterEndpoint) (\s@Cluster' {} a -> s {clusterEndpoint = a} :: Cluster)++-- | Enables data tiering. Data tiering is only supported for clusters using+-- the r6gd node type. This parameter must be set when using r6gd nodes.+-- For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html Data tiering>.+cluster_dataTiering :: Lens.Lens' Cluster (Prelude.Maybe DataTieringStatus)+cluster_dataTiering = Lens.lens (\Cluster' {dataTiering} -> dataTiering) (\s@Cluster' {} a -> s {dataTiering = a} :: Cluster)++-- | A description of the cluster+cluster_description :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_description = Lens.lens (\Cluster' {description} -> description) (\s@Cluster' {} a -> s {description = a} :: Cluster)++-- | The Redis engine patch version used by the cluster+cluster_enginePatchVersion :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_enginePatchVersion = Lens.lens (\Cluster' {enginePatchVersion} -> enginePatchVersion) (\s@Cluster' {} a -> s {enginePatchVersion = a} :: Cluster)++-- | The Redis engine version used by the cluster+cluster_engineVersion :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_engineVersion = Lens.lens (\Cluster' {engineVersion} -> engineVersion) (\s@Cluster' {} a -> s {engineVersion = a} :: Cluster)++-- | The ID of the KMS key used to encrypt the cluster+cluster_kmsKeyId :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_kmsKeyId = Lens.lens (\Cluster' {kmsKeyId} -> kmsKeyId) (\s@Cluster' {} a -> s {kmsKeyId = a} :: Cluster)++-- | Specifies the weekly time range during which maintenance on the cluster+-- is performed. It is specified as a range in the format+-- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window+-- is a 60 minute period.+cluster_maintenanceWindow :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_maintenanceWindow = Lens.lens (\Cluster' {maintenanceWindow} -> maintenanceWindow) (\s@Cluster' {} a -> s {maintenanceWindow = a} :: Cluster)++-- | The user-supplied name of the cluster. This identifier is a unique key+-- that identifies a cluster.+cluster_name :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_name = Lens.lens (\Cluster' {name} -> name) (\s@Cluster' {} a -> s {name = a} :: Cluster)++-- | The cluster\'s node type+cluster_nodeType :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_nodeType = Lens.lens (\Cluster' {nodeType} -> nodeType) (\s@Cluster' {} a -> s {nodeType = a} :: Cluster)++-- | The number of shards in the cluster+cluster_numberOfShards :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Int)+cluster_numberOfShards = Lens.lens (\Cluster' {numberOfShards} -> numberOfShards) (\s@Cluster' {} a -> s {numberOfShards = a} :: Cluster)++-- | The name of the parameter group used by the cluster+cluster_parameterGroupName :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_parameterGroupName = Lens.lens (\Cluster' {parameterGroupName} -> parameterGroupName) (\s@Cluster' {} a -> s {parameterGroupName = a} :: Cluster)++-- | The status of the parameter group used by the cluster, for example+-- \'active\' or \'applying\'.+cluster_parameterGroupStatus :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_parameterGroupStatus = Lens.lens (\Cluster' {parameterGroupStatus} -> parameterGroupStatus) (\s@Cluster' {} a -> s {parameterGroupStatus = a} :: Cluster)++-- | A group of settings that are currently being applied.+cluster_pendingUpdates :: Lens.Lens' Cluster (Prelude.Maybe ClusterPendingUpdates)+cluster_pendingUpdates = Lens.lens (\Cluster' {pendingUpdates} -> pendingUpdates) (\s@Cluster' {} a -> s {pendingUpdates = a} :: Cluster)++-- | A list of security groups used by the cluster+cluster_securityGroups :: Lens.Lens' Cluster (Prelude.Maybe [SecurityGroupMembership])+cluster_securityGroups = Lens.lens (\Cluster' {securityGroups} -> securityGroups) (\s@Cluster' {} a -> s {securityGroups = a} :: Cluster) Prelude.. Lens.mapping Lens.coerced++-- | A list of shards that are members of the cluster.+cluster_shards :: Lens.Lens' Cluster (Prelude.Maybe [Shard])+cluster_shards = Lens.lens (\Cluster' {shards} -> shards) (\s@Cluster' {} a -> s {shards = a} :: Cluster) Prelude.. Lens.mapping Lens.coerced++-- | The number of days for which MemoryDB retains automatic snapshots before+-- deleting them. For example, if you set SnapshotRetentionLimit to 5, a+-- snapshot that was taken today is retained for 5 days before being+-- deleted.+cluster_snapshotRetentionLimit :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Int)+cluster_snapshotRetentionLimit = Lens.lens (\Cluster' {snapshotRetentionLimit} -> snapshotRetentionLimit) (\s@Cluster' {} a -> s {snapshotRetentionLimit = a} :: Cluster)++-- | The daily time range (in UTC) during which MemoryDB begins taking a+-- daily snapshot of your shard. Example: 05:00-09:00 If you do not specify+-- this parameter, MemoryDB automatically chooses an appropriate time+-- range.+cluster_snapshotWindow :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_snapshotWindow = Lens.lens (\Cluster' {snapshotWindow} -> snapshotWindow) (\s@Cluster' {} a -> s {snapshotWindow = a} :: Cluster)++-- | The Amazon Resource Name (ARN) of the SNS notification topic+cluster_snsTopicArn :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_snsTopicArn = Lens.lens (\Cluster' {snsTopicArn} -> snsTopicArn) (\s@Cluster' {} a -> s {snsTopicArn = a} :: Cluster)++-- | The SNS topic must be in Active status to receive notifications+cluster_snsTopicStatus :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_snsTopicStatus = Lens.lens (\Cluster' {snsTopicStatus} -> snsTopicStatus) (\s@Cluster' {} a -> s {snsTopicStatus = a} :: Cluster)++-- | The status of the cluster. For example, Available, Updating, Creating.+cluster_status :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_status = Lens.lens (\Cluster' {status} -> status) (\s@Cluster' {} a -> s {status = a} :: Cluster)++-- | The name of the subnet group used by the cluster+cluster_subnetGroupName :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_subnetGroupName = Lens.lens (\Cluster' {subnetGroupName} -> subnetGroupName) (\s@Cluster' {} a -> s {subnetGroupName = a} :: Cluster)++-- | A flag to indicate if In-transit encryption is enabled+cluster_tLSEnabled :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Bool)+cluster_tLSEnabled = Lens.lens (\Cluster' {tLSEnabled} -> tLSEnabled) (\s@Cluster' {} a -> s {tLSEnabled = a} :: Cluster)++instance Data.FromJSON Cluster where+  parseJSON =+    Data.withObject+      "Cluster"+      ( \x ->+          Cluster'+            Prelude.<$> (x Data..:? "ACLName")+            Prelude.<*> (x Data..:? "ARN")+            Prelude.<*> (x Data..:? "AutoMinorVersionUpgrade")+            Prelude.<*> (x Data..:? "AvailabilityMode")+            Prelude.<*> (x Data..:? "ClusterEndpoint")+            Prelude.<*> (x Data..:? "DataTiering")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "EnginePatchVersion")+            Prelude.<*> (x Data..:? "EngineVersion")+            Prelude.<*> (x Data..:? "KmsKeyId")+            Prelude.<*> (x Data..:? "MaintenanceWindow")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "NodeType")+            Prelude.<*> (x Data..:? "NumberOfShards")+            Prelude.<*> (x Data..:? "ParameterGroupName")+            Prelude.<*> (x Data..:? "ParameterGroupStatus")+            Prelude.<*> (x Data..:? "PendingUpdates")+            Prelude.<*> (x Data..:? "SecurityGroups" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "Shards" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "SnapshotRetentionLimit")+            Prelude.<*> (x Data..:? "SnapshotWindow")+            Prelude.<*> (x Data..:? "SnsTopicArn")+            Prelude.<*> (x Data..:? "SnsTopicStatus")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "SubnetGroupName")+            Prelude.<*> (x Data..:? "TLSEnabled")+      )++instance Prelude.Hashable Cluster where+  hashWithSalt _salt Cluster' {..} =+    _salt+      `Prelude.hashWithSalt` aCLName+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` autoMinorVersionUpgrade+      `Prelude.hashWithSalt` availabilityMode+      `Prelude.hashWithSalt` clusterEndpoint+      `Prelude.hashWithSalt` dataTiering+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` enginePatchVersion+      `Prelude.hashWithSalt` engineVersion+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` maintenanceWindow+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` nodeType+      `Prelude.hashWithSalt` numberOfShards+      `Prelude.hashWithSalt` parameterGroupName+      `Prelude.hashWithSalt` parameterGroupStatus+      `Prelude.hashWithSalt` pendingUpdates+      `Prelude.hashWithSalt` securityGroups+      `Prelude.hashWithSalt` shards+      `Prelude.hashWithSalt` snapshotRetentionLimit+      `Prelude.hashWithSalt` snapshotWindow+      `Prelude.hashWithSalt` snsTopicArn+      `Prelude.hashWithSalt` snsTopicStatus+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` subnetGroupName+      `Prelude.hashWithSalt` tLSEnabled++instance Prelude.NFData Cluster where+  rnf Cluster' {..} =+    Prelude.rnf aCLName+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf autoMinorVersionUpgrade+      `Prelude.seq` Prelude.rnf availabilityMode+      `Prelude.seq` Prelude.rnf clusterEndpoint+      `Prelude.seq` Prelude.rnf dataTiering+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf enginePatchVersion+      `Prelude.seq` Prelude.rnf engineVersion+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf maintenanceWindow+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf nodeType+      `Prelude.seq` Prelude.rnf numberOfShards+      `Prelude.seq` Prelude.rnf parameterGroupName+      `Prelude.seq` Prelude.rnf parameterGroupStatus+      `Prelude.seq` Prelude.rnf pendingUpdates+      `Prelude.seq` Prelude.rnf securityGroups+      `Prelude.seq` Prelude.rnf shards+      `Prelude.seq` Prelude.rnf+        snapshotRetentionLimit+      `Prelude.seq` Prelude.rnf snapshotWindow+      `Prelude.seq` Prelude.rnf snsTopicArn+      `Prelude.seq` Prelude.rnf+        snsTopicStatus+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf+        subnetGroupName+      `Prelude.seq` Prelude.rnf+        tLSEnabled
+ gen/Amazonka/MemoryDb/Types/ClusterConfiguration.hs view
@@ -0,0 +1,233 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.ClusterConfiguration+-- 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.MemoryDb.Types.ClusterConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.ShardDetail+import qualified Amazonka.Prelude as Prelude++-- | A list of cluster configuration options.+--+-- /See:/ 'newClusterConfiguration' smart constructor.+data ClusterConfiguration = ClusterConfiguration'+  { -- | The description of the cluster configuration+    description :: Prelude.Maybe Prelude.Text,+    -- | The Redis engine version used by the cluster+    engineVersion :: Prelude.Maybe Prelude.Text,+    -- | The specified maintenance window for the cluster+    maintenanceWindow :: Prelude.Maybe Prelude.Text,+    -- | The name of the cluster+    name :: Prelude.Maybe Prelude.Text,+    -- | The node type used for the cluster+    nodeType :: Prelude.Maybe Prelude.Text,+    -- | The number of shards in the cluster+    numShards :: Prelude.Maybe Prelude.Int,+    -- | The name of parameter group used by the cluster+    parameterGroupName :: Prelude.Maybe Prelude.Text,+    -- | The port used by the cluster+    port :: Prelude.Maybe Prelude.Int,+    -- | The list of shards in the cluster+    shards :: Prelude.Maybe [ShardDetail],+    -- | The snapshot retention limit set by the cluster+    snapshotRetentionLimit :: Prelude.Maybe Prelude.Int,+    -- | The snapshot window set by the cluster+    snapshotWindow :: Prelude.Maybe Prelude.Text,+    -- | The name of the subnet group used by the cluster+    subnetGroupName :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the SNS notification topic for the+    -- cluster+    topicArn :: Prelude.Maybe Prelude.Text,+    -- | The ID of the VPC the cluster belongs to+    vpcId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ClusterConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'clusterConfiguration_description' - The description of the cluster configuration+--+-- 'engineVersion', 'clusterConfiguration_engineVersion' - The Redis engine version used by the cluster+--+-- 'maintenanceWindow', 'clusterConfiguration_maintenanceWindow' - The specified maintenance window for the cluster+--+-- 'name', 'clusterConfiguration_name' - The name of the cluster+--+-- 'nodeType', 'clusterConfiguration_nodeType' - The node type used for the cluster+--+-- 'numShards', 'clusterConfiguration_numShards' - The number of shards in the cluster+--+-- 'parameterGroupName', 'clusterConfiguration_parameterGroupName' - The name of parameter group used by the cluster+--+-- 'port', 'clusterConfiguration_port' - The port used by the cluster+--+-- 'shards', 'clusterConfiguration_shards' - The list of shards in the cluster+--+-- 'snapshotRetentionLimit', 'clusterConfiguration_snapshotRetentionLimit' - The snapshot retention limit set by the cluster+--+-- 'snapshotWindow', 'clusterConfiguration_snapshotWindow' - The snapshot window set by the cluster+--+-- 'subnetGroupName', 'clusterConfiguration_subnetGroupName' - The name of the subnet group used by the cluster+--+-- 'topicArn', 'clusterConfiguration_topicArn' - The Amazon Resource Name (ARN) of the SNS notification topic for the+-- cluster+--+-- 'vpcId', 'clusterConfiguration_vpcId' - The ID of the VPC the cluster belongs to+newClusterConfiguration ::+  ClusterConfiguration+newClusterConfiguration =+  ClusterConfiguration'+    { description =+        Prelude.Nothing,+      engineVersion = Prelude.Nothing,+      maintenanceWindow = Prelude.Nothing,+      name = Prelude.Nothing,+      nodeType = Prelude.Nothing,+      numShards = Prelude.Nothing,+      parameterGroupName = Prelude.Nothing,+      port = Prelude.Nothing,+      shards = Prelude.Nothing,+      snapshotRetentionLimit = Prelude.Nothing,+      snapshotWindow = Prelude.Nothing,+      subnetGroupName = Prelude.Nothing,+      topicArn = Prelude.Nothing,+      vpcId = Prelude.Nothing+    }++-- | The description of the cluster configuration+clusterConfiguration_description :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Text)+clusterConfiguration_description = Lens.lens (\ClusterConfiguration' {description} -> description) (\s@ClusterConfiguration' {} a -> s {description = a} :: ClusterConfiguration)++-- | The Redis engine version used by the cluster+clusterConfiguration_engineVersion :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Text)+clusterConfiguration_engineVersion = Lens.lens (\ClusterConfiguration' {engineVersion} -> engineVersion) (\s@ClusterConfiguration' {} a -> s {engineVersion = a} :: ClusterConfiguration)++-- | The specified maintenance window for the cluster+clusterConfiguration_maintenanceWindow :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Text)+clusterConfiguration_maintenanceWindow = Lens.lens (\ClusterConfiguration' {maintenanceWindow} -> maintenanceWindow) (\s@ClusterConfiguration' {} a -> s {maintenanceWindow = a} :: ClusterConfiguration)++-- | The name of the cluster+clusterConfiguration_name :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Text)+clusterConfiguration_name = Lens.lens (\ClusterConfiguration' {name} -> name) (\s@ClusterConfiguration' {} a -> s {name = a} :: ClusterConfiguration)++-- | The node type used for the cluster+clusterConfiguration_nodeType :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Text)+clusterConfiguration_nodeType = Lens.lens (\ClusterConfiguration' {nodeType} -> nodeType) (\s@ClusterConfiguration' {} a -> s {nodeType = a} :: ClusterConfiguration)++-- | The number of shards in the cluster+clusterConfiguration_numShards :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Int)+clusterConfiguration_numShards = Lens.lens (\ClusterConfiguration' {numShards} -> numShards) (\s@ClusterConfiguration' {} a -> s {numShards = a} :: ClusterConfiguration)++-- | The name of parameter group used by the cluster+clusterConfiguration_parameterGroupName :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Text)+clusterConfiguration_parameterGroupName = Lens.lens (\ClusterConfiguration' {parameterGroupName} -> parameterGroupName) (\s@ClusterConfiguration' {} a -> s {parameterGroupName = a} :: ClusterConfiguration)++-- | The port used by the cluster+clusterConfiguration_port :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Int)+clusterConfiguration_port = Lens.lens (\ClusterConfiguration' {port} -> port) (\s@ClusterConfiguration' {} a -> s {port = a} :: ClusterConfiguration)++-- | The list of shards in the cluster+clusterConfiguration_shards :: Lens.Lens' ClusterConfiguration (Prelude.Maybe [ShardDetail])+clusterConfiguration_shards = Lens.lens (\ClusterConfiguration' {shards} -> shards) (\s@ClusterConfiguration' {} a -> s {shards = a} :: ClusterConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The snapshot retention limit set by the cluster+clusterConfiguration_snapshotRetentionLimit :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Int)+clusterConfiguration_snapshotRetentionLimit = Lens.lens (\ClusterConfiguration' {snapshotRetentionLimit} -> snapshotRetentionLimit) (\s@ClusterConfiguration' {} a -> s {snapshotRetentionLimit = a} :: ClusterConfiguration)++-- | The snapshot window set by the cluster+clusterConfiguration_snapshotWindow :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Text)+clusterConfiguration_snapshotWindow = Lens.lens (\ClusterConfiguration' {snapshotWindow} -> snapshotWindow) (\s@ClusterConfiguration' {} a -> s {snapshotWindow = a} :: ClusterConfiguration)++-- | The name of the subnet group used by the cluster+clusterConfiguration_subnetGroupName :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Text)+clusterConfiguration_subnetGroupName = Lens.lens (\ClusterConfiguration' {subnetGroupName} -> subnetGroupName) (\s@ClusterConfiguration' {} a -> s {subnetGroupName = a} :: ClusterConfiguration)++-- | The Amazon Resource Name (ARN) of the SNS notification topic for the+-- cluster+clusterConfiguration_topicArn :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Text)+clusterConfiguration_topicArn = Lens.lens (\ClusterConfiguration' {topicArn} -> topicArn) (\s@ClusterConfiguration' {} a -> s {topicArn = a} :: ClusterConfiguration)++-- | The ID of the VPC the cluster belongs to+clusterConfiguration_vpcId :: Lens.Lens' ClusterConfiguration (Prelude.Maybe Prelude.Text)+clusterConfiguration_vpcId = Lens.lens (\ClusterConfiguration' {vpcId} -> vpcId) (\s@ClusterConfiguration' {} a -> s {vpcId = a} :: ClusterConfiguration)++instance Data.FromJSON ClusterConfiguration where+  parseJSON =+    Data.withObject+      "ClusterConfiguration"+      ( \x ->+          ClusterConfiguration'+            Prelude.<$> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "EngineVersion")+            Prelude.<*> (x Data..:? "MaintenanceWindow")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "NodeType")+            Prelude.<*> (x Data..:? "NumShards")+            Prelude.<*> (x Data..:? "ParameterGroupName")+            Prelude.<*> (x Data..:? "Port")+            Prelude.<*> (x Data..:? "Shards" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "SnapshotRetentionLimit")+            Prelude.<*> (x Data..:? "SnapshotWindow")+            Prelude.<*> (x Data..:? "SubnetGroupName")+            Prelude.<*> (x Data..:? "TopicArn")+            Prelude.<*> (x Data..:? "VpcId")+      )++instance Prelude.Hashable ClusterConfiguration where+  hashWithSalt _salt ClusterConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` engineVersion+      `Prelude.hashWithSalt` maintenanceWindow+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` nodeType+      `Prelude.hashWithSalt` numShards+      `Prelude.hashWithSalt` parameterGroupName+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` shards+      `Prelude.hashWithSalt` snapshotRetentionLimit+      `Prelude.hashWithSalt` snapshotWindow+      `Prelude.hashWithSalt` subnetGroupName+      `Prelude.hashWithSalt` topicArn+      `Prelude.hashWithSalt` vpcId++instance Prelude.NFData ClusterConfiguration where+  rnf ClusterConfiguration' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf engineVersion+      `Prelude.seq` Prelude.rnf maintenanceWindow+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf nodeType+      `Prelude.seq` Prelude.rnf numShards+      `Prelude.seq` Prelude.rnf parameterGroupName+      `Prelude.seq` Prelude.rnf port+      `Prelude.seq` Prelude.rnf shards+      `Prelude.seq` Prelude.rnf snapshotRetentionLimit+      `Prelude.seq` Prelude.rnf snapshotWindow+      `Prelude.seq` Prelude.rnf subnetGroupName+      `Prelude.seq` Prelude.rnf topicArn+      `Prelude.seq` Prelude.rnf vpcId
+ gen/Amazonka/MemoryDb/Types/ClusterPendingUpdates.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.MemoryDb.Types.ClusterPendingUpdates+-- 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.MemoryDb.Types.ClusterPendingUpdates where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.ACLsUpdateStatus+import Amazonka.MemoryDb.Types.PendingModifiedServiceUpdate+import Amazonka.MemoryDb.Types.ReshardingStatus+import qualified Amazonka.Prelude as Prelude++-- | A list of updates being applied to the cluster+--+-- /See:/ 'newClusterPendingUpdates' smart constructor.+data ClusterPendingUpdates = ClusterPendingUpdates'+  { -- | A list of ACLs associated with the cluster that are being updated+    aCLs :: Prelude.Maybe ACLsUpdateStatus,+    -- | The status of an online resharding operation.+    resharding :: Prelude.Maybe ReshardingStatus,+    -- | A list of service updates being applied to the cluster+    serviceUpdates :: Prelude.Maybe [PendingModifiedServiceUpdate]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ClusterPendingUpdates' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aCLs', 'clusterPendingUpdates_aCLs' - A list of ACLs associated with the cluster that are being updated+--+-- 'resharding', 'clusterPendingUpdates_resharding' - The status of an online resharding operation.+--+-- 'serviceUpdates', 'clusterPendingUpdates_serviceUpdates' - A list of service updates being applied to the cluster+newClusterPendingUpdates ::+  ClusterPendingUpdates+newClusterPendingUpdates =+  ClusterPendingUpdates'+    { aCLs = Prelude.Nothing,+      resharding = Prelude.Nothing,+      serviceUpdates = Prelude.Nothing+    }++-- | A list of ACLs associated with the cluster that are being updated+clusterPendingUpdates_aCLs :: Lens.Lens' ClusterPendingUpdates (Prelude.Maybe ACLsUpdateStatus)+clusterPendingUpdates_aCLs = Lens.lens (\ClusterPendingUpdates' {aCLs} -> aCLs) (\s@ClusterPendingUpdates' {} a -> s {aCLs = a} :: ClusterPendingUpdates)++-- | The status of an online resharding operation.+clusterPendingUpdates_resharding :: Lens.Lens' ClusterPendingUpdates (Prelude.Maybe ReshardingStatus)+clusterPendingUpdates_resharding = Lens.lens (\ClusterPendingUpdates' {resharding} -> resharding) (\s@ClusterPendingUpdates' {} a -> s {resharding = a} :: ClusterPendingUpdates)++-- | A list of service updates being applied to the cluster+clusterPendingUpdates_serviceUpdates :: Lens.Lens' ClusterPendingUpdates (Prelude.Maybe [PendingModifiedServiceUpdate])+clusterPendingUpdates_serviceUpdates = Lens.lens (\ClusterPendingUpdates' {serviceUpdates} -> serviceUpdates) (\s@ClusterPendingUpdates' {} a -> s {serviceUpdates = a} :: ClusterPendingUpdates) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ClusterPendingUpdates where+  parseJSON =+    Data.withObject+      "ClusterPendingUpdates"+      ( \x ->+          ClusterPendingUpdates'+            Prelude.<$> (x Data..:? "ACLs")+            Prelude.<*> (x Data..:? "Resharding")+            Prelude.<*> ( x+                            Data..:? "ServiceUpdates"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable ClusterPendingUpdates where+  hashWithSalt _salt ClusterPendingUpdates' {..} =+    _salt+      `Prelude.hashWithSalt` aCLs+      `Prelude.hashWithSalt` resharding+      `Prelude.hashWithSalt` serviceUpdates++instance Prelude.NFData ClusterPendingUpdates where+  rnf ClusterPendingUpdates' {..} =+    Prelude.rnf aCLs+      `Prelude.seq` Prelude.rnf resharding+      `Prelude.seq` Prelude.rnf serviceUpdates
+ gen/Amazonka/MemoryDb/Types/DataTieringStatus.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.MemoryDb.Types.DataTieringStatus+-- 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.MemoryDb.Types.DataTieringStatus+  ( DataTieringStatus+      ( ..,+        DataTieringStatus_False,+        DataTieringStatus_True+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DataTieringStatus = DataTieringStatus'+  { fromDataTieringStatus ::+      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 DataTieringStatus_False :: DataTieringStatus+pattern DataTieringStatus_False = DataTieringStatus' "false"++pattern DataTieringStatus_True :: DataTieringStatus+pattern DataTieringStatus_True = DataTieringStatus' "true"++{-# COMPLETE+  DataTieringStatus_False,+  DataTieringStatus_True,+  DataTieringStatus'+  #-}
+ gen/Amazonka/MemoryDb/Types/Endpoint.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.MemoryDb.Types.Endpoint+-- 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.MemoryDb.Types.Endpoint 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++-- | Represents the information required for client programs to connect to+-- the cluster and its nodes.+--+-- /See:/ 'newEndpoint' smart constructor.+data Endpoint = Endpoint'+  { -- | The DNS hostname of the node.+    address :: Prelude.Maybe Prelude.Text,+    -- | The port number that the engine is listening on.+    port :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Endpoint' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'address', 'endpoint_address' - The DNS hostname of the node.+--+-- 'port', 'endpoint_port' - The port number that the engine is listening on.+newEndpoint ::+  Endpoint+newEndpoint =+  Endpoint'+    { address = Prelude.Nothing,+      port = Prelude.Nothing+    }++-- | The DNS hostname of the node.+endpoint_address :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)+endpoint_address = Lens.lens (\Endpoint' {address} -> address) (\s@Endpoint' {} a -> s {address = a} :: Endpoint)++-- | The port number that the engine is listening on.+endpoint_port :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Int)+endpoint_port = Lens.lens (\Endpoint' {port} -> port) (\s@Endpoint' {} a -> s {port = a} :: Endpoint)++instance Data.FromJSON Endpoint where+  parseJSON =+    Data.withObject+      "Endpoint"+      ( \x ->+          Endpoint'+            Prelude.<$> (x Data..:? "Address")+            Prelude.<*> (x Data..:? "Port")+      )++instance Prelude.Hashable Endpoint where+  hashWithSalt _salt Endpoint' {..} =+    _salt+      `Prelude.hashWithSalt` address+      `Prelude.hashWithSalt` port++instance Prelude.NFData Endpoint where+  rnf Endpoint' {..} =+    Prelude.rnf address `Prelude.seq` Prelude.rnf port
+ gen/Amazonka/MemoryDb/Types/EngineVersionInfo.hs view
@@ -0,0 +1,100 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.EngineVersionInfo+-- 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.MemoryDb.Types.EngineVersionInfo where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Provides details of the Redis engine version+--+-- /See:/ 'newEngineVersionInfo' smart constructor.+data EngineVersionInfo = EngineVersionInfo'+  { -- | The patched engine version+    enginePatchVersion :: Prelude.Maybe Prelude.Text,+    -- | The engine version+    engineVersion :: Prelude.Maybe Prelude.Text,+    -- | Specifies the name of the parameter group family to which the engine+    -- default parameters apply.+    parameterGroupFamily :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EngineVersionInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'enginePatchVersion', 'engineVersionInfo_enginePatchVersion' - The patched engine version+--+-- 'engineVersion', 'engineVersionInfo_engineVersion' - The engine version+--+-- 'parameterGroupFamily', 'engineVersionInfo_parameterGroupFamily' - Specifies the name of the parameter group family to which the engine+-- default parameters apply.+newEngineVersionInfo ::+  EngineVersionInfo+newEngineVersionInfo =+  EngineVersionInfo'+    { enginePatchVersion =+        Prelude.Nothing,+      engineVersion = Prelude.Nothing,+      parameterGroupFamily = Prelude.Nothing+    }++-- | The patched engine version+engineVersionInfo_enginePatchVersion :: Lens.Lens' EngineVersionInfo (Prelude.Maybe Prelude.Text)+engineVersionInfo_enginePatchVersion = Lens.lens (\EngineVersionInfo' {enginePatchVersion} -> enginePatchVersion) (\s@EngineVersionInfo' {} a -> s {enginePatchVersion = a} :: EngineVersionInfo)++-- | The engine version+engineVersionInfo_engineVersion :: Lens.Lens' EngineVersionInfo (Prelude.Maybe Prelude.Text)+engineVersionInfo_engineVersion = Lens.lens (\EngineVersionInfo' {engineVersion} -> engineVersion) (\s@EngineVersionInfo' {} a -> s {engineVersion = a} :: EngineVersionInfo)++-- | Specifies the name of the parameter group family to which the engine+-- default parameters apply.+engineVersionInfo_parameterGroupFamily :: Lens.Lens' EngineVersionInfo (Prelude.Maybe Prelude.Text)+engineVersionInfo_parameterGroupFamily = Lens.lens (\EngineVersionInfo' {parameterGroupFamily} -> parameterGroupFamily) (\s@EngineVersionInfo' {} a -> s {parameterGroupFamily = a} :: EngineVersionInfo)++instance Data.FromJSON EngineVersionInfo where+  parseJSON =+    Data.withObject+      "EngineVersionInfo"+      ( \x ->+          EngineVersionInfo'+            Prelude.<$> (x Data..:? "EnginePatchVersion")+            Prelude.<*> (x Data..:? "EngineVersion")+            Prelude.<*> (x Data..:? "ParameterGroupFamily")+      )++instance Prelude.Hashable EngineVersionInfo where+  hashWithSalt _salt EngineVersionInfo' {..} =+    _salt+      `Prelude.hashWithSalt` enginePatchVersion+      `Prelude.hashWithSalt` engineVersion+      `Prelude.hashWithSalt` parameterGroupFamily++instance Prelude.NFData EngineVersionInfo where+  rnf EngineVersionInfo' {..} =+    Prelude.rnf enginePatchVersion+      `Prelude.seq` Prelude.rnf engineVersion+      `Prelude.seq` Prelude.rnf parameterGroupFamily
+ gen/Amazonka/MemoryDb/Types/Event.hs view
@@ -0,0 +1,117 @@+{-# 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.MemoryDb.Types.Event+-- 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.MemoryDb.Types.Event where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.SourceType+import qualified Amazonka.Prelude as Prelude++-- | Represents a single occurrence of something interesting within the+-- system. Some examples of events are creating a cluster or adding or+-- removing a node.+--+-- /See:/ 'newEvent' smart constructor.+data Event = Event'+  { -- | The date and time when the event occurred.+    date :: Prelude.Maybe Data.POSIX,+    -- | The text of the event.+    message :: Prelude.Maybe Prelude.Text,+    -- | The name for the source of the event. For example, if the event occurred+    -- at the cluster level, the identifier would be the name of the cluster.+    sourceName :: Prelude.Maybe Prelude.Text,+    -- | Specifies the origin of this event - a cluster, a parameter group, a+    -- security group, etc.+    sourceType :: Prelude.Maybe SourceType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Event' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'date', 'event_date' - The date and time when the event occurred.+--+-- 'message', 'event_message' - The text of the event.+--+-- 'sourceName', 'event_sourceName' - The name for the source of the event. For example, if the event occurred+-- at the cluster level, the identifier would be the name of the cluster.+--+-- 'sourceType', 'event_sourceType' - Specifies the origin of this event - a cluster, a parameter group, a+-- security group, etc.+newEvent ::+  Event+newEvent =+  Event'+    { date = Prelude.Nothing,+      message = Prelude.Nothing,+      sourceName = Prelude.Nothing,+      sourceType = Prelude.Nothing+    }++-- | The date and time when the event occurred.+event_date :: Lens.Lens' Event (Prelude.Maybe Prelude.UTCTime)+event_date = Lens.lens (\Event' {date} -> date) (\s@Event' {} a -> s {date = a} :: Event) Prelude.. Lens.mapping Data._Time++-- | The text of the event.+event_message :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)+event_message = Lens.lens (\Event' {message} -> message) (\s@Event' {} a -> s {message = a} :: Event)++-- | The name for the source of the event. For example, if the event occurred+-- at the cluster level, the identifier would be the name of the cluster.+event_sourceName :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)+event_sourceName = Lens.lens (\Event' {sourceName} -> sourceName) (\s@Event' {} a -> s {sourceName = a} :: Event)++-- | Specifies the origin of this event - a cluster, a parameter group, a+-- security group, etc.+event_sourceType :: Lens.Lens' Event (Prelude.Maybe SourceType)+event_sourceType = Lens.lens (\Event' {sourceType} -> sourceType) (\s@Event' {} a -> s {sourceType = a} :: Event)++instance Data.FromJSON Event where+  parseJSON =+    Data.withObject+      "Event"+      ( \x ->+          Event'+            Prelude.<$> (x Data..:? "Date")+            Prelude.<*> (x Data..:? "Message")+            Prelude.<*> (x Data..:? "SourceName")+            Prelude.<*> (x Data..:? "SourceType")+      )++instance Prelude.Hashable Event where+  hashWithSalt _salt Event' {..} =+    _salt+      `Prelude.hashWithSalt` date+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` sourceName+      `Prelude.hashWithSalt` sourceType++instance Prelude.NFData Event where+  rnf Event' {..} =+    Prelude.rnf date+      `Prelude.seq` Prelude.rnf message+      `Prelude.seq` Prelude.rnf sourceName+      `Prelude.seq` Prelude.rnf sourceType
+ gen/Amazonka/MemoryDb/Types/Filter.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.Filter+-- 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.MemoryDb.Types.Filter 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++-- | Used to streamline results of a search based on the property being+-- filtered.+--+-- /See:/ 'newFilter' smart constructor.+data Filter = Filter'+  { -- | The property being filtered. For example, UserName.+    name :: Prelude.Text,+    -- | The property values to filter on. For example, \"user-123\".+    values :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Filter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'filter_name' - The property being filtered. For example, UserName.+--+-- 'values', 'filter_values' - The property values to filter on. For example, \"user-123\".+newFilter ::+  -- | 'name'+  Prelude.Text ->+  -- | 'values'+  Prelude.NonEmpty Prelude.Text ->+  Filter+newFilter pName_ pValues_ =+  Filter'+    { name = pName_,+      values = Lens.coerced Lens.# pValues_+    }++-- | The property being filtered. For example, UserName.+filter_name :: Lens.Lens' Filter Prelude.Text+filter_name = Lens.lens (\Filter' {name} -> name) (\s@Filter' {} a -> s {name = a} :: Filter)++-- | The property values to filter on. For example, \"user-123\".+filter_values :: Lens.Lens' Filter (Prelude.NonEmpty Prelude.Text)+filter_values = Lens.lens (\Filter' {values} -> values) (\s@Filter' {} a -> s {values = a} :: Filter) Prelude.. Lens.coerced++instance Prelude.Hashable Filter where+  hashWithSalt _salt Filter' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` values++instance Prelude.NFData Filter where+  rnf Filter' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf values++instance Data.ToJSON Filter where+  toJSON Filter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Name" Data..= name),+            Prelude.Just ("Values" Data..= values)+          ]+      )
+ gen/Amazonka/MemoryDb/Types/InputAuthenticationType.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.InputAuthenticationType+-- 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.MemoryDb.Types.InputAuthenticationType+  ( InputAuthenticationType+      ( ..,+        InputAuthenticationType_Password+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype InputAuthenticationType = InputAuthenticationType'+  { fromInputAuthenticationType ::+      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 InputAuthenticationType_Password :: InputAuthenticationType+pattern InputAuthenticationType_Password = InputAuthenticationType' "password"++{-# COMPLETE+  InputAuthenticationType_Password,+  InputAuthenticationType'+  #-}
+ gen/Amazonka/MemoryDb/Types/Node.hs view
@@ -0,0 +1,128 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.Node+-- 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.MemoryDb.Types.Node where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.Endpoint+import qualified Amazonka.Prelude as Prelude++-- | Represents an individual node within a cluster. Each node runs its own+-- instance of the cluster\'s protocol-compliant caching software.+--+-- /See:/ 'newNode' smart constructor.+data Node = Node'+  { -- | The Availability Zone in which the node resides+    availabilityZone :: Prelude.Maybe Prelude.Text,+    -- | The date and time when the node was created.+    createTime :: Prelude.Maybe Data.POSIX,+    -- | The hostname for connecting to this node.+    endpoint :: Prelude.Maybe Endpoint,+    -- | The node identifier. A node name is a numeric identifier (0001, 0002,+    -- etc.). The combination of cluster name, shard name and node name+    -- uniquely identifies every node used in a customer\'s Amazon account.+    name :: Prelude.Maybe Prelude.Text,+    -- | The status of the service update on the node+    status :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Node' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'availabilityZone', 'node_availabilityZone' - The Availability Zone in which the node resides+--+-- 'createTime', 'node_createTime' - The date and time when the node was created.+--+-- 'endpoint', 'node_endpoint' - The hostname for connecting to this node.+--+-- 'name', 'node_name' - The node identifier. A node name is a numeric identifier (0001, 0002,+-- etc.). The combination of cluster name, shard name and node name+-- uniquely identifies every node used in a customer\'s Amazon account.+--+-- 'status', 'node_status' - The status of the service update on the node+newNode ::+  Node+newNode =+  Node'+    { availabilityZone = Prelude.Nothing,+      createTime = Prelude.Nothing,+      endpoint = Prelude.Nothing,+      name = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The Availability Zone in which the node resides+node_availabilityZone :: Lens.Lens' Node (Prelude.Maybe Prelude.Text)+node_availabilityZone = Lens.lens (\Node' {availabilityZone} -> availabilityZone) (\s@Node' {} a -> s {availabilityZone = a} :: Node)++-- | The date and time when the node was created.+node_createTime :: Lens.Lens' Node (Prelude.Maybe Prelude.UTCTime)+node_createTime = Lens.lens (\Node' {createTime} -> createTime) (\s@Node' {} a -> s {createTime = a} :: Node) Prelude.. Lens.mapping Data._Time++-- | The hostname for connecting to this node.+node_endpoint :: Lens.Lens' Node (Prelude.Maybe Endpoint)+node_endpoint = Lens.lens (\Node' {endpoint} -> endpoint) (\s@Node' {} a -> s {endpoint = a} :: Node)++-- | The node identifier. A node name is a numeric identifier (0001, 0002,+-- etc.). The combination of cluster name, shard name and node name+-- uniquely identifies every node used in a customer\'s Amazon account.+node_name :: Lens.Lens' Node (Prelude.Maybe Prelude.Text)+node_name = Lens.lens (\Node' {name} -> name) (\s@Node' {} a -> s {name = a} :: Node)++-- | The status of the service update on the node+node_status :: Lens.Lens' Node (Prelude.Maybe Prelude.Text)+node_status = Lens.lens (\Node' {status} -> status) (\s@Node' {} a -> s {status = a} :: Node)++instance Data.FromJSON Node where+  parseJSON =+    Data.withObject+      "Node"+      ( \x ->+          Node'+            Prelude.<$> (x Data..:? "AvailabilityZone")+            Prelude.<*> (x Data..:? "CreateTime")+            Prelude.<*> (x Data..:? "Endpoint")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable Node where+  hashWithSalt _salt Node' {..} =+    _salt+      `Prelude.hashWithSalt` availabilityZone+      `Prelude.hashWithSalt` createTime+      `Prelude.hashWithSalt` endpoint+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status++instance Prelude.NFData Node where+  rnf Node' {..} =+    Prelude.rnf availabilityZone+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf endpoint+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/MemoryDb/Types/Parameter.hs view
@@ -0,0 +1,133 @@+{-# 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.MemoryDb.Types.Parameter+-- 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.MemoryDb.Types.Parameter 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++-- | Describes an individual setting that controls some aspect of MemoryDB+-- behavior.+--+-- /See:/ 'newParameter' smart constructor.+data Parameter = Parameter'+  { -- | The valid range of values for the parameter.+    allowedValues :: Prelude.Maybe Prelude.Text,+    -- | The parameter\'s data type+    dataType :: Prelude.Maybe Prelude.Text,+    -- | A description of the parameter+    description :: Prelude.Maybe Prelude.Text,+    -- | The earliest engine version to which the parameter can apply.+    minimumEngineVersion :: Prelude.Maybe Prelude.Text,+    -- | The name of the parameter+    name :: Prelude.Maybe Prelude.Text,+    -- | The value of the parameter+    value :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Parameter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'allowedValues', 'parameter_allowedValues' - The valid range of values for the parameter.+--+-- 'dataType', 'parameter_dataType' - The parameter\'s data type+--+-- 'description', 'parameter_description' - A description of the parameter+--+-- 'minimumEngineVersion', 'parameter_minimumEngineVersion' - The earliest engine version to which the parameter can apply.+--+-- 'name', 'parameter_name' - The name of the parameter+--+-- 'value', 'parameter_value' - The value of the parameter+newParameter ::+  Parameter+newParameter =+  Parameter'+    { allowedValues = Prelude.Nothing,+      dataType = Prelude.Nothing,+      description = Prelude.Nothing,+      minimumEngineVersion = Prelude.Nothing,+      name = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | The valid range of values for the parameter.+parameter_allowedValues :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)+parameter_allowedValues = Lens.lens (\Parameter' {allowedValues} -> allowedValues) (\s@Parameter' {} a -> s {allowedValues = a} :: Parameter)++-- | The parameter\'s data type+parameter_dataType :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)+parameter_dataType = Lens.lens (\Parameter' {dataType} -> dataType) (\s@Parameter' {} a -> s {dataType = a} :: Parameter)++-- | A description of the parameter+parameter_description :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)+parameter_description = Lens.lens (\Parameter' {description} -> description) (\s@Parameter' {} a -> s {description = a} :: Parameter)++-- | The earliest engine version to which the parameter can apply.+parameter_minimumEngineVersion :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)+parameter_minimumEngineVersion = Lens.lens (\Parameter' {minimumEngineVersion} -> minimumEngineVersion) (\s@Parameter' {} a -> s {minimumEngineVersion = a} :: Parameter)++-- | The name of the parameter+parameter_name :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)+parameter_name = Lens.lens (\Parameter' {name} -> name) (\s@Parameter' {} a -> s {name = a} :: Parameter)++-- | The value of the parameter+parameter_value :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)+parameter_value = Lens.lens (\Parameter' {value} -> value) (\s@Parameter' {} a -> s {value = a} :: Parameter)++instance Data.FromJSON Parameter where+  parseJSON =+    Data.withObject+      "Parameter"+      ( \x ->+          Parameter'+            Prelude.<$> (x Data..:? "AllowedValues")+            Prelude.<*> (x Data..:? "DataType")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "MinimumEngineVersion")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Value")+      )++instance Prelude.Hashable Parameter where+  hashWithSalt _salt Parameter' {..} =+    _salt+      `Prelude.hashWithSalt` allowedValues+      `Prelude.hashWithSalt` dataType+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` minimumEngineVersion+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` value++instance Prelude.NFData Parameter where+  rnf Parameter' {..} =+    Prelude.rnf allowedValues+      `Prelude.seq` Prelude.rnf dataType+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf minimumEngineVersion+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/MemoryDb/Types/ParameterGroup.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.MemoryDb.Types.ParameterGroup+-- 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.MemoryDb.Types.ParameterGroup 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++-- | Represents the output of a CreateParameterGroup operation. A parameter+-- group represents a combination of specific values for the parameters+-- that are passed to the engine software during startup.+--+-- /See:/ 'newParameterGroup' smart constructor.+data ParameterGroup = ParameterGroup'+  { -- | The Amazon Resource Name (ARN) of the parameter group+    arn :: Prelude.Maybe Prelude.Text,+    -- | A description of the parameter group+    description :: Prelude.Maybe Prelude.Text,+    -- | The name of the parameter group family that this parameter group is+    -- compatible with.+    family :: Prelude.Maybe Prelude.Text,+    -- | The name of the parameter group+    name :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ParameterGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'parameterGroup_arn' - The Amazon Resource Name (ARN) of the parameter group+--+-- 'description', 'parameterGroup_description' - A description of the parameter group+--+-- 'family', 'parameterGroup_family' - The name of the parameter group family that this parameter group is+-- compatible with.+--+-- 'name', 'parameterGroup_name' - The name of the parameter group+newParameterGroup ::+  ParameterGroup+newParameterGroup =+  ParameterGroup'+    { arn = Prelude.Nothing,+      description = Prelude.Nothing,+      family = Prelude.Nothing,+      name = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the parameter group+parameterGroup_arn :: Lens.Lens' ParameterGroup (Prelude.Maybe Prelude.Text)+parameterGroup_arn = Lens.lens (\ParameterGroup' {arn} -> arn) (\s@ParameterGroup' {} a -> s {arn = a} :: ParameterGroup)++-- | A description of the parameter group+parameterGroup_description :: Lens.Lens' ParameterGroup (Prelude.Maybe Prelude.Text)+parameterGroup_description = Lens.lens (\ParameterGroup' {description} -> description) (\s@ParameterGroup' {} a -> s {description = a} :: ParameterGroup)++-- | The name of the parameter group family that this parameter group is+-- compatible with.+parameterGroup_family :: Lens.Lens' ParameterGroup (Prelude.Maybe Prelude.Text)+parameterGroup_family = Lens.lens (\ParameterGroup' {family} -> family) (\s@ParameterGroup' {} a -> s {family = a} :: ParameterGroup)++-- | The name of the parameter group+parameterGroup_name :: Lens.Lens' ParameterGroup (Prelude.Maybe Prelude.Text)+parameterGroup_name = Lens.lens (\ParameterGroup' {name} -> name) (\s@ParameterGroup' {} a -> s {name = a} :: ParameterGroup)++instance Data.FromJSON ParameterGroup where+  parseJSON =+    Data.withObject+      "ParameterGroup"+      ( \x ->+          ParameterGroup'+            Prelude.<$> (x Data..:? "ARN")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "Family")+            Prelude.<*> (x Data..:? "Name")+      )++instance Prelude.Hashable ParameterGroup where+  hashWithSalt _salt ParameterGroup' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` family+      `Prelude.hashWithSalt` name++instance Prelude.NFData ParameterGroup where+  rnf ParameterGroup' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf family+      `Prelude.seq` Prelude.rnf name
+ gen/Amazonka/MemoryDb/Types/ParameterNameValue.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.MemoryDb.Types.ParameterNameValue+-- 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.MemoryDb.Types.ParameterNameValue 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++-- | Describes a name-value pair that is used to update the value of a+-- parameter.+--+-- /See:/ 'newParameterNameValue' smart constructor.+data ParameterNameValue = ParameterNameValue'+  { -- | The name of the parameter+    parameterName :: Prelude.Maybe Prelude.Text,+    -- | The value of the parameter+    parameterValue :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ParameterNameValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'parameterName', 'parameterNameValue_parameterName' - The name of the parameter+--+-- 'parameterValue', 'parameterNameValue_parameterValue' - The value of the parameter+newParameterNameValue ::+  ParameterNameValue+newParameterNameValue =+  ParameterNameValue'+    { parameterName =+        Prelude.Nothing,+      parameterValue = Prelude.Nothing+    }++-- | The name of the parameter+parameterNameValue_parameterName :: Lens.Lens' ParameterNameValue (Prelude.Maybe Prelude.Text)+parameterNameValue_parameterName = Lens.lens (\ParameterNameValue' {parameterName} -> parameterName) (\s@ParameterNameValue' {} a -> s {parameterName = a} :: ParameterNameValue)++-- | The value of the parameter+parameterNameValue_parameterValue :: Lens.Lens' ParameterNameValue (Prelude.Maybe Prelude.Text)+parameterNameValue_parameterValue = Lens.lens (\ParameterNameValue' {parameterValue} -> parameterValue) (\s@ParameterNameValue' {} a -> s {parameterValue = a} :: ParameterNameValue)++instance Prelude.Hashable ParameterNameValue where+  hashWithSalt _salt ParameterNameValue' {..} =+    _salt+      `Prelude.hashWithSalt` parameterName+      `Prelude.hashWithSalt` parameterValue++instance Prelude.NFData ParameterNameValue where+  rnf ParameterNameValue' {..} =+    Prelude.rnf parameterName+      `Prelude.seq` Prelude.rnf parameterValue++instance Data.ToJSON ParameterNameValue where+  toJSON ParameterNameValue' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ParameterName" Data..=) Prelude.<$> parameterName,+            ("ParameterValue" Data..=)+              Prelude.<$> parameterValue+          ]+      )
+ gen/Amazonka/MemoryDb/Types/PendingModifiedServiceUpdate.hs view
@@ -0,0 +1,90 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.PendingModifiedServiceUpdate+-- 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.MemoryDb.Types.PendingModifiedServiceUpdate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.ServiceUpdateStatus+import qualified Amazonka.Prelude as Prelude++-- | Update action that has yet to be processed for the corresponding+-- apply\/stop request+--+-- /See:/ 'newPendingModifiedServiceUpdate' smart constructor.+data PendingModifiedServiceUpdate = PendingModifiedServiceUpdate'+  { -- | The unique ID of the service update+    serviceUpdateName :: Prelude.Maybe Prelude.Text,+    -- | The status of the service update+    status :: Prelude.Maybe ServiceUpdateStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PendingModifiedServiceUpdate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'serviceUpdateName', 'pendingModifiedServiceUpdate_serviceUpdateName' - The unique ID of the service update+--+-- 'status', 'pendingModifiedServiceUpdate_status' - The status of the service update+newPendingModifiedServiceUpdate ::+  PendingModifiedServiceUpdate+newPendingModifiedServiceUpdate =+  PendingModifiedServiceUpdate'+    { serviceUpdateName =+        Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The unique ID of the service update+pendingModifiedServiceUpdate_serviceUpdateName :: Lens.Lens' PendingModifiedServiceUpdate (Prelude.Maybe Prelude.Text)+pendingModifiedServiceUpdate_serviceUpdateName = Lens.lens (\PendingModifiedServiceUpdate' {serviceUpdateName} -> serviceUpdateName) (\s@PendingModifiedServiceUpdate' {} a -> s {serviceUpdateName = a} :: PendingModifiedServiceUpdate)++-- | The status of the service update+pendingModifiedServiceUpdate_status :: Lens.Lens' PendingModifiedServiceUpdate (Prelude.Maybe ServiceUpdateStatus)+pendingModifiedServiceUpdate_status = Lens.lens (\PendingModifiedServiceUpdate' {status} -> status) (\s@PendingModifiedServiceUpdate' {} a -> s {status = a} :: PendingModifiedServiceUpdate)++instance Data.FromJSON PendingModifiedServiceUpdate where+  parseJSON =+    Data.withObject+      "PendingModifiedServiceUpdate"+      ( \x ->+          PendingModifiedServiceUpdate'+            Prelude.<$> (x Data..:? "ServiceUpdateName")+            Prelude.<*> (x Data..:? "Status")+      )++instance+  Prelude.Hashable+    PendingModifiedServiceUpdate+  where+  hashWithSalt _salt PendingModifiedServiceUpdate' {..} =+    _salt+      `Prelude.hashWithSalt` serviceUpdateName+      `Prelude.hashWithSalt` status++instance Prelude.NFData PendingModifiedServiceUpdate where+  rnf PendingModifiedServiceUpdate' {..} =+    Prelude.rnf serviceUpdateName+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/MemoryDb/Types/RecurringCharge.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.MemoryDb.Types.RecurringCharge+-- 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.MemoryDb.Types.RecurringCharge 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 recurring charge to run this reserved node.+--+-- /See:/ 'newRecurringCharge' smart constructor.+data RecurringCharge = RecurringCharge'+  { -- | The amount of the recurring charge to run this reserved node.+    recurringChargeAmount :: Prelude.Maybe Prelude.Double,+    -- | The frequency of the recurring price charged to run this reserved node.+    recurringChargeFrequency :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecurringCharge' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'recurringChargeAmount', 'recurringCharge_recurringChargeAmount' - The amount of the recurring charge to run this reserved node.+--+-- 'recurringChargeFrequency', 'recurringCharge_recurringChargeFrequency' - The frequency of the recurring price charged to run this reserved node.+newRecurringCharge ::+  RecurringCharge+newRecurringCharge =+  RecurringCharge'+    { recurringChargeAmount =+        Prelude.Nothing,+      recurringChargeFrequency = Prelude.Nothing+    }++-- | The amount of the recurring charge to run this reserved node.+recurringCharge_recurringChargeAmount :: Lens.Lens' RecurringCharge (Prelude.Maybe Prelude.Double)+recurringCharge_recurringChargeAmount = Lens.lens (\RecurringCharge' {recurringChargeAmount} -> recurringChargeAmount) (\s@RecurringCharge' {} a -> s {recurringChargeAmount = a} :: RecurringCharge)++-- | The frequency of the recurring price charged to run this reserved node.+recurringCharge_recurringChargeFrequency :: Lens.Lens' RecurringCharge (Prelude.Maybe Prelude.Text)+recurringCharge_recurringChargeFrequency = Lens.lens (\RecurringCharge' {recurringChargeFrequency} -> recurringChargeFrequency) (\s@RecurringCharge' {} a -> s {recurringChargeFrequency = a} :: RecurringCharge)++instance Data.FromJSON RecurringCharge where+  parseJSON =+    Data.withObject+      "RecurringCharge"+      ( \x ->+          RecurringCharge'+            Prelude.<$> (x Data..:? "RecurringChargeAmount")+            Prelude.<*> (x Data..:? "RecurringChargeFrequency")+      )++instance Prelude.Hashable RecurringCharge where+  hashWithSalt _salt RecurringCharge' {..} =+    _salt+      `Prelude.hashWithSalt` recurringChargeAmount+      `Prelude.hashWithSalt` recurringChargeFrequency++instance Prelude.NFData RecurringCharge where+  rnf RecurringCharge' {..} =+    Prelude.rnf recurringChargeAmount+      `Prelude.seq` Prelude.rnf recurringChargeFrequency
+ gen/Amazonka/MemoryDb/Types/ReplicaConfigurationRequest.hs view
@@ -0,0 +1,70 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.ReplicaConfigurationRequest+-- 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.MemoryDb.Types.ReplicaConfigurationRequest 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 request to configure the number of replicas in a shard+--+-- /See:/ 'newReplicaConfigurationRequest' smart constructor.+data ReplicaConfigurationRequest = ReplicaConfigurationRequest'+  { -- | The number of replicas to scale up or down to+    replicaCount :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReplicaConfigurationRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'replicaCount', 'replicaConfigurationRequest_replicaCount' - The number of replicas to scale up or down to+newReplicaConfigurationRequest ::+  ReplicaConfigurationRequest+newReplicaConfigurationRequest =+  ReplicaConfigurationRequest'+    { replicaCount =+        Prelude.Nothing+    }++-- | The number of replicas to scale up or down to+replicaConfigurationRequest_replicaCount :: Lens.Lens' ReplicaConfigurationRequest (Prelude.Maybe Prelude.Int)+replicaConfigurationRequest_replicaCount = Lens.lens (\ReplicaConfigurationRequest' {replicaCount} -> replicaCount) (\s@ReplicaConfigurationRequest' {} a -> s {replicaCount = a} :: ReplicaConfigurationRequest)++instance Prelude.Hashable ReplicaConfigurationRequest where+  hashWithSalt _salt ReplicaConfigurationRequest' {..} =+    _salt `Prelude.hashWithSalt` replicaCount++instance Prelude.NFData ReplicaConfigurationRequest where+  rnf ReplicaConfigurationRequest' {..} =+    Prelude.rnf replicaCount++instance Data.ToJSON ReplicaConfigurationRequest where+  toJSON ReplicaConfigurationRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [("ReplicaCount" Data..=) Prelude.<$> replicaCount]+      )
+ gen/Amazonka/MemoryDb/Types/ReservedNode.hs view
@@ -0,0 +1,196 @@+{-# 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.MemoryDb.Types.ReservedNode+-- 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.MemoryDb.Types.ReservedNode where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.RecurringCharge+import qualified Amazonka.Prelude as Prelude++-- | Represents the output of a @PurchaseReservedNodesOffering@ operation.+--+-- /See:/ 'newReservedNode' smart constructor.+data ReservedNode = ReservedNode'+  { -- | The Amazon Resource Name (ARN) of the reserved node.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The duration of the reservation in seconds.+    duration :: Prelude.Maybe Prelude.Int,+    -- | The fixed price charged for this reserved node.+    fixedPrice :: Prelude.Maybe Prelude.Double,+    -- | The number of nodes that have been reserved.+    nodeCount :: Prelude.Maybe Prelude.Int,+    -- | The node type for the reserved nodes.+    nodeType :: Prelude.Maybe Prelude.Text,+    -- | The offering type of this reserved node.+    offeringType :: Prelude.Maybe Prelude.Text,+    -- | The recurring price charged to run this reserved node.+    recurringCharges :: Prelude.Maybe [RecurringCharge],+    -- | A customer-specified identifier to track this reservation.+    reservationId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the reserved node offering to purchase.+    reservedNodesOfferingId :: Prelude.Maybe Prelude.Text,+    -- | The time the reservation started.+    startTime :: Prelude.Maybe Data.POSIX,+    -- | The state of the reserved node.+    state :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReservedNode' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'reservedNode_arn' - The Amazon Resource Name (ARN) of the reserved node.+--+-- 'duration', 'reservedNode_duration' - The duration of the reservation in seconds.+--+-- 'fixedPrice', 'reservedNode_fixedPrice' - The fixed price charged for this reserved node.+--+-- 'nodeCount', 'reservedNode_nodeCount' - The number of nodes that have been reserved.+--+-- 'nodeType', 'reservedNode_nodeType' - The node type for the reserved nodes.+--+-- 'offeringType', 'reservedNode_offeringType' - The offering type of this reserved node.+--+-- 'recurringCharges', 'reservedNode_recurringCharges' - The recurring price charged to run this reserved node.+--+-- 'reservationId', 'reservedNode_reservationId' - A customer-specified identifier to track this reservation.+--+-- 'reservedNodesOfferingId', 'reservedNode_reservedNodesOfferingId' - The ID of the reserved node offering to purchase.+--+-- 'startTime', 'reservedNode_startTime' - The time the reservation started.+--+-- 'state', 'reservedNode_state' - The state of the reserved node.+newReservedNode ::+  ReservedNode+newReservedNode =+  ReservedNode'+    { arn = Prelude.Nothing,+      duration = Prelude.Nothing,+      fixedPrice = Prelude.Nothing,+      nodeCount = Prelude.Nothing,+      nodeType = Prelude.Nothing,+      offeringType = Prelude.Nothing,+      recurringCharges = Prelude.Nothing,+      reservationId = Prelude.Nothing,+      reservedNodesOfferingId = Prelude.Nothing,+      startTime = Prelude.Nothing,+      state = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the reserved node.+reservedNode_arn :: Lens.Lens' ReservedNode (Prelude.Maybe Prelude.Text)+reservedNode_arn = Lens.lens (\ReservedNode' {arn} -> arn) (\s@ReservedNode' {} a -> s {arn = a} :: ReservedNode)++-- | The duration of the reservation in seconds.+reservedNode_duration :: Lens.Lens' ReservedNode (Prelude.Maybe Prelude.Int)+reservedNode_duration = Lens.lens (\ReservedNode' {duration} -> duration) (\s@ReservedNode' {} a -> s {duration = a} :: ReservedNode)++-- | The fixed price charged for this reserved node.+reservedNode_fixedPrice :: Lens.Lens' ReservedNode (Prelude.Maybe Prelude.Double)+reservedNode_fixedPrice = Lens.lens (\ReservedNode' {fixedPrice} -> fixedPrice) (\s@ReservedNode' {} a -> s {fixedPrice = a} :: ReservedNode)++-- | The number of nodes that have been reserved.+reservedNode_nodeCount :: Lens.Lens' ReservedNode (Prelude.Maybe Prelude.Int)+reservedNode_nodeCount = Lens.lens (\ReservedNode' {nodeCount} -> nodeCount) (\s@ReservedNode' {} a -> s {nodeCount = a} :: ReservedNode)++-- | The node type for the reserved nodes.+reservedNode_nodeType :: Lens.Lens' ReservedNode (Prelude.Maybe Prelude.Text)+reservedNode_nodeType = Lens.lens (\ReservedNode' {nodeType} -> nodeType) (\s@ReservedNode' {} a -> s {nodeType = a} :: ReservedNode)++-- | The offering type of this reserved node.+reservedNode_offeringType :: Lens.Lens' ReservedNode (Prelude.Maybe Prelude.Text)+reservedNode_offeringType = Lens.lens (\ReservedNode' {offeringType} -> offeringType) (\s@ReservedNode' {} a -> s {offeringType = a} :: ReservedNode)++-- | The recurring price charged to run this reserved node.+reservedNode_recurringCharges :: Lens.Lens' ReservedNode (Prelude.Maybe [RecurringCharge])+reservedNode_recurringCharges = Lens.lens (\ReservedNode' {recurringCharges} -> recurringCharges) (\s@ReservedNode' {} a -> s {recurringCharges = a} :: ReservedNode) Prelude.. Lens.mapping Lens.coerced++-- | A customer-specified identifier to track this reservation.+reservedNode_reservationId :: Lens.Lens' ReservedNode (Prelude.Maybe Prelude.Text)+reservedNode_reservationId = Lens.lens (\ReservedNode' {reservationId} -> reservationId) (\s@ReservedNode' {} a -> s {reservationId = a} :: ReservedNode)++-- | The ID of the reserved node offering to purchase.+reservedNode_reservedNodesOfferingId :: Lens.Lens' ReservedNode (Prelude.Maybe Prelude.Text)+reservedNode_reservedNodesOfferingId = Lens.lens (\ReservedNode' {reservedNodesOfferingId} -> reservedNodesOfferingId) (\s@ReservedNode' {} a -> s {reservedNodesOfferingId = a} :: ReservedNode)++-- | The time the reservation started.+reservedNode_startTime :: Lens.Lens' ReservedNode (Prelude.Maybe Prelude.UTCTime)+reservedNode_startTime = Lens.lens (\ReservedNode' {startTime} -> startTime) (\s@ReservedNode' {} a -> s {startTime = a} :: ReservedNode) Prelude.. Lens.mapping Data._Time++-- | The state of the reserved node.+reservedNode_state :: Lens.Lens' ReservedNode (Prelude.Maybe Prelude.Text)+reservedNode_state = Lens.lens (\ReservedNode' {state} -> state) (\s@ReservedNode' {} a -> s {state = a} :: ReservedNode)++instance Data.FromJSON ReservedNode where+  parseJSON =+    Data.withObject+      "ReservedNode"+      ( \x ->+          ReservedNode'+            Prelude.<$> (x Data..:? "ARN")+            Prelude.<*> (x Data..:? "Duration")+            Prelude.<*> (x Data..:? "FixedPrice")+            Prelude.<*> (x Data..:? "NodeCount")+            Prelude.<*> (x Data..:? "NodeType")+            Prelude.<*> (x Data..:? "OfferingType")+            Prelude.<*> ( x+                            Data..:? "RecurringCharges"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "ReservationId")+            Prelude.<*> (x Data..:? "ReservedNodesOfferingId")+            Prelude.<*> (x Data..:? "StartTime")+            Prelude.<*> (x Data..:? "State")+      )++instance Prelude.Hashable ReservedNode where+  hashWithSalt _salt ReservedNode' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` duration+      `Prelude.hashWithSalt` fixedPrice+      `Prelude.hashWithSalt` nodeCount+      `Prelude.hashWithSalt` nodeType+      `Prelude.hashWithSalt` offeringType+      `Prelude.hashWithSalt` recurringCharges+      `Prelude.hashWithSalt` reservationId+      `Prelude.hashWithSalt` reservedNodesOfferingId+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` state++instance Prelude.NFData ReservedNode where+  rnf ReservedNode' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf duration+      `Prelude.seq` Prelude.rnf fixedPrice+      `Prelude.seq` Prelude.rnf nodeCount+      `Prelude.seq` Prelude.rnf nodeType+      `Prelude.seq` Prelude.rnf offeringType+      `Prelude.seq` Prelude.rnf recurringCharges+      `Prelude.seq` Prelude.rnf reservationId+      `Prelude.seq` Prelude.rnf reservedNodesOfferingId+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/MemoryDb/Types/ReservedNodesOffering.hs view
@@ -0,0 +1,139 @@+{-# 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.MemoryDb.Types.ReservedNodesOffering+-- 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.MemoryDb.Types.ReservedNodesOffering where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.RecurringCharge+import qualified Amazonka.Prelude as Prelude++-- | The offering type of this node.+--+-- /See:/ 'newReservedNodesOffering' smart constructor.+data ReservedNodesOffering = ReservedNodesOffering'+  { -- | The duration of the reservation in seconds.+    duration :: Prelude.Maybe Prelude.Int,+    -- | The fixed price charged for this reserved node.+    fixedPrice :: Prelude.Maybe Prelude.Double,+    -- | The node type for the reserved nodes. For more information, see+    -- <https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.reserved.html#reserved-nodes-supported Supported node types>.+    nodeType :: Prelude.Maybe Prelude.Text,+    -- | The offering type of this reserved node.+    offeringType :: Prelude.Maybe Prelude.Text,+    -- | The recurring price charged to run this reserved node.+    recurringCharges :: Prelude.Maybe [RecurringCharge],+    -- | The offering identifier.+    reservedNodesOfferingId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReservedNodesOffering' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'duration', 'reservedNodesOffering_duration' - The duration of the reservation in seconds.+--+-- 'fixedPrice', 'reservedNodesOffering_fixedPrice' - The fixed price charged for this reserved node.+--+-- 'nodeType', 'reservedNodesOffering_nodeType' - The node type for the reserved nodes. For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.reserved.html#reserved-nodes-supported Supported node types>.+--+-- 'offeringType', 'reservedNodesOffering_offeringType' - The offering type of this reserved node.+--+-- 'recurringCharges', 'reservedNodesOffering_recurringCharges' - The recurring price charged to run this reserved node.+--+-- 'reservedNodesOfferingId', 'reservedNodesOffering_reservedNodesOfferingId' - The offering identifier.+newReservedNodesOffering ::+  ReservedNodesOffering+newReservedNodesOffering =+  ReservedNodesOffering'+    { duration = Prelude.Nothing,+      fixedPrice = Prelude.Nothing,+      nodeType = Prelude.Nothing,+      offeringType = Prelude.Nothing,+      recurringCharges = Prelude.Nothing,+      reservedNodesOfferingId = Prelude.Nothing+    }++-- | The duration of the reservation in seconds.+reservedNodesOffering_duration :: Lens.Lens' ReservedNodesOffering (Prelude.Maybe Prelude.Int)+reservedNodesOffering_duration = Lens.lens (\ReservedNodesOffering' {duration} -> duration) (\s@ReservedNodesOffering' {} a -> s {duration = a} :: ReservedNodesOffering)++-- | The fixed price charged for this reserved node.+reservedNodesOffering_fixedPrice :: Lens.Lens' ReservedNodesOffering (Prelude.Maybe Prelude.Double)+reservedNodesOffering_fixedPrice = Lens.lens (\ReservedNodesOffering' {fixedPrice} -> fixedPrice) (\s@ReservedNodesOffering' {} a -> s {fixedPrice = a} :: ReservedNodesOffering)++-- | The node type for the reserved nodes. For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.reserved.html#reserved-nodes-supported Supported node types>.+reservedNodesOffering_nodeType :: Lens.Lens' ReservedNodesOffering (Prelude.Maybe Prelude.Text)+reservedNodesOffering_nodeType = Lens.lens (\ReservedNodesOffering' {nodeType} -> nodeType) (\s@ReservedNodesOffering' {} a -> s {nodeType = a} :: ReservedNodesOffering)++-- | The offering type of this reserved node.+reservedNodesOffering_offeringType :: Lens.Lens' ReservedNodesOffering (Prelude.Maybe Prelude.Text)+reservedNodesOffering_offeringType = Lens.lens (\ReservedNodesOffering' {offeringType} -> offeringType) (\s@ReservedNodesOffering' {} a -> s {offeringType = a} :: ReservedNodesOffering)++-- | The recurring price charged to run this reserved node.+reservedNodesOffering_recurringCharges :: Lens.Lens' ReservedNodesOffering (Prelude.Maybe [RecurringCharge])+reservedNodesOffering_recurringCharges = Lens.lens (\ReservedNodesOffering' {recurringCharges} -> recurringCharges) (\s@ReservedNodesOffering' {} a -> s {recurringCharges = a} :: ReservedNodesOffering) Prelude.. Lens.mapping Lens.coerced++-- | The offering identifier.+reservedNodesOffering_reservedNodesOfferingId :: Lens.Lens' ReservedNodesOffering (Prelude.Maybe Prelude.Text)+reservedNodesOffering_reservedNodesOfferingId = Lens.lens (\ReservedNodesOffering' {reservedNodesOfferingId} -> reservedNodesOfferingId) (\s@ReservedNodesOffering' {} a -> s {reservedNodesOfferingId = a} :: ReservedNodesOffering)++instance Data.FromJSON ReservedNodesOffering where+  parseJSON =+    Data.withObject+      "ReservedNodesOffering"+      ( \x ->+          ReservedNodesOffering'+            Prelude.<$> (x Data..:? "Duration")+            Prelude.<*> (x Data..:? "FixedPrice")+            Prelude.<*> (x Data..:? "NodeType")+            Prelude.<*> (x Data..:? "OfferingType")+            Prelude.<*> ( x+                            Data..:? "RecurringCharges"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "ReservedNodesOfferingId")+      )++instance Prelude.Hashable ReservedNodesOffering where+  hashWithSalt _salt ReservedNodesOffering' {..} =+    _salt+      `Prelude.hashWithSalt` duration+      `Prelude.hashWithSalt` fixedPrice+      `Prelude.hashWithSalt` nodeType+      `Prelude.hashWithSalt` offeringType+      `Prelude.hashWithSalt` recurringCharges+      `Prelude.hashWithSalt` reservedNodesOfferingId++instance Prelude.NFData ReservedNodesOffering where+  rnf ReservedNodesOffering' {..} =+    Prelude.rnf duration+      `Prelude.seq` Prelude.rnf fixedPrice+      `Prelude.seq` Prelude.rnf nodeType+      `Prelude.seq` Prelude.rnf offeringType+      `Prelude.seq` Prelude.rnf recurringCharges+      `Prelude.seq` Prelude.rnf reservedNodesOfferingId
+ gen/Amazonka/MemoryDb/Types/ReshardingStatus.hs view
@@ -0,0 +1,69 @@+{-# 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.MemoryDb.Types.ReshardingStatus+-- 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.MemoryDb.Types.ReshardingStatus where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.SlotMigration+import qualified Amazonka.Prelude as Prelude++-- | The status of the online resharding+--+-- /See:/ 'newReshardingStatus' smart constructor.+data ReshardingStatus = ReshardingStatus'+  { -- | The status of the online resharding slot migration+    slotMigration :: Prelude.Maybe SlotMigration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReshardingStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'slotMigration', 'reshardingStatus_slotMigration' - The status of the online resharding slot migration+newReshardingStatus ::+  ReshardingStatus+newReshardingStatus =+  ReshardingStatus' {slotMigration = Prelude.Nothing}++-- | The status of the online resharding slot migration+reshardingStatus_slotMigration :: Lens.Lens' ReshardingStatus (Prelude.Maybe SlotMigration)+reshardingStatus_slotMigration = Lens.lens (\ReshardingStatus' {slotMigration} -> slotMigration) (\s@ReshardingStatus' {} a -> s {slotMigration = a} :: ReshardingStatus)++instance Data.FromJSON ReshardingStatus where+  parseJSON =+    Data.withObject+      "ReshardingStatus"+      ( \x ->+          ReshardingStatus'+            Prelude.<$> (x Data..:? "SlotMigration")+      )++instance Prelude.Hashable ReshardingStatus where+  hashWithSalt _salt ReshardingStatus' {..} =+    _salt `Prelude.hashWithSalt` slotMigration++instance Prelude.NFData ReshardingStatus where+  rnf ReshardingStatus' {..} = Prelude.rnf slotMigration
+ gen/Amazonka/MemoryDb/Types/SecurityGroupMembership.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.MemoryDb.Types.SecurityGroupMembership+-- 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.MemoryDb.Types.SecurityGroupMembership 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++-- | Represents a single security group and its status.+--+-- /See:/ 'newSecurityGroupMembership' smart constructor.+data SecurityGroupMembership = SecurityGroupMembership'+  { -- | The identifier of the security group.+    securityGroupId :: Prelude.Maybe Prelude.Text,+    -- | The status of the security group membership. The status changes whenever+    -- a security group is modified, or when the security groups assigned to a+    -- cluster are modified.+    status :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SecurityGroupMembership' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'securityGroupId', 'securityGroupMembership_securityGroupId' - The identifier of the security group.+--+-- 'status', 'securityGroupMembership_status' - The status of the security group membership. The status changes whenever+-- a security group is modified, or when the security groups assigned to a+-- cluster are modified.+newSecurityGroupMembership ::+  SecurityGroupMembership+newSecurityGroupMembership =+  SecurityGroupMembership'+    { securityGroupId =+        Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The identifier of the security group.+securityGroupMembership_securityGroupId :: Lens.Lens' SecurityGroupMembership (Prelude.Maybe Prelude.Text)+securityGroupMembership_securityGroupId = Lens.lens (\SecurityGroupMembership' {securityGroupId} -> securityGroupId) (\s@SecurityGroupMembership' {} a -> s {securityGroupId = a} :: SecurityGroupMembership)++-- | The status of the security group membership. The status changes whenever+-- a security group is modified, or when the security groups assigned to a+-- cluster are modified.+securityGroupMembership_status :: Lens.Lens' SecurityGroupMembership (Prelude.Maybe Prelude.Text)+securityGroupMembership_status = Lens.lens (\SecurityGroupMembership' {status} -> status) (\s@SecurityGroupMembership' {} a -> s {status = a} :: SecurityGroupMembership)++instance Data.FromJSON SecurityGroupMembership where+  parseJSON =+    Data.withObject+      "SecurityGroupMembership"+      ( \x ->+          SecurityGroupMembership'+            Prelude.<$> (x Data..:? "SecurityGroupId")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable SecurityGroupMembership where+  hashWithSalt _salt SecurityGroupMembership' {..} =+    _salt+      `Prelude.hashWithSalt` securityGroupId+      `Prelude.hashWithSalt` status++instance Prelude.NFData SecurityGroupMembership where+  rnf SecurityGroupMembership' {..} =+    Prelude.rnf securityGroupId+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/MemoryDb/Types/ServiceUpdate.hs view
@@ -0,0 +1,159 @@+{-# 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.MemoryDb.Types.ServiceUpdate+-- 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.MemoryDb.Types.ServiceUpdate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.ServiceUpdateStatus+import Amazonka.MemoryDb.Types.ServiceUpdateType+import qualified Amazonka.Prelude as Prelude++-- | An update that you can apply to your MemoryDB clusters.+--+-- /See:/ 'newServiceUpdate' smart constructor.+data ServiceUpdate = ServiceUpdate'+  { -- | The date at which the service update will be automatically applied+    autoUpdateStartDate :: Prelude.Maybe Data.POSIX,+    -- | The name of the cluster to which the service update applies+    clusterName :: Prelude.Maybe Prelude.Text,+    -- | Provides details of the service update+    description :: Prelude.Maybe Prelude.Text,+    -- | A list of nodes updated by the service update+    nodesUpdated :: Prelude.Maybe Prelude.Text,+    -- | The date when the service update is initially available+    releaseDate :: Prelude.Maybe Data.POSIX,+    -- | The unique ID of the service update+    serviceUpdateName :: Prelude.Maybe Prelude.Text,+    -- | The status of the service update+    status :: Prelude.Maybe ServiceUpdateStatus,+    -- | Reflects the nature of the service update+    type' :: Prelude.Maybe ServiceUpdateType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServiceUpdate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'autoUpdateStartDate', 'serviceUpdate_autoUpdateStartDate' - The date at which the service update will be automatically applied+--+-- 'clusterName', 'serviceUpdate_clusterName' - The name of the cluster to which the service update applies+--+-- 'description', 'serviceUpdate_description' - Provides details of the service update+--+-- 'nodesUpdated', 'serviceUpdate_nodesUpdated' - A list of nodes updated by the service update+--+-- 'releaseDate', 'serviceUpdate_releaseDate' - The date when the service update is initially available+--+-- 'serviceUpdateName', 'serviceUpdate_serviceUpdateName' - The unique ID of the service update+--+-- 'status', 'serviceUpdate_status' - The status of the service update+--+-- 'type'', 'serviceUpdate_type' - Reflects the nature of the service update+newServiceUpdate ::+  ServiceUpdate+newServiceUpdate =+  ServiceUpdate'+    { autoUpdateStartDate =+        Prelude.Nothing,+      clusterName = Prelude.Nothing,+      description = Prelude.Nothing,+      nodesUpdated = Prelude.Nothing,+      releaseDate = Prelude.Nothing,+      serviceUpdateName = Prelude.Nothing,+      status = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The date at which the service update will be automatically applied+serviceUpdate_autoUpdateStartDate :: Lens.Lens' ServiceUpdate (Prelude.Maybe Prelude.UTCTime)+serviceUpdate_autoUpdateStartDate = Lens.lens (\ServiceUpdate' {autoUpdateStartDate} -> autoUpdateStartDate) (\s@ServiceUpdate' {} a -> s {autoUpdateStartDate = a} :: ServiceUpdate) Prelude.. Lens.mapping Data._Time++-- | The name of the cluster to which the service update applies+serviceUpdate_clusterName :: Lens.Lens' ServiceUpdate (Prelude.Maybe Prelude.Text)+serviceUpdate_clusterName = Lens.lens (\ServiceUpdate' {clusterName} -> clusterName) (\s@ServiceUpdate' {} a -> s {clusterName = a} :: ServiceUpdate)++-- | Provides details of the service update+serviceUpdate_description :: Lens.Lens' ServiceUpdate (Prelude.Maybe Prelude.Text)+serviceUpdate_description = Lens.lens (\ServiceUpdate' {description} -> description) (\s@ServiceUpdate' {} a -> s {description = a} :: ServiceUpdate)++-- | A list of nodes updated by the service update+serviceUpdate_nodesUpdated :: Lens.Lens' ServiceUpdate (Prelude.Maybe Prelude.Text)+serviceUpdate_nodesUpdated = Lens.lens (\ServiceUpdate' {nodesUpdated} -> nodesUpdated) (\s@ServiceUpdate' {} a -> s {nodesUpdated = a} :: ServiceUpdate)++-- | The date when the service update is initially available+serviceUpdate_releaseDate :: Lens.Lens' ServiceUpdate (Prelude.Maybe Prelude.UTCTime)+serviceUpdate_releaseDate = Lens.lens (\ServiceUpdate' {releaseDate} -> releaseDate) (\s@ServiceUpdate' {} a -> s {releaseDate = a} :: ServiceUpdate) Prelude.. Lens.mapping Data._Time++-- | The unique ID of the service update+serviceUpdate_serviceUpdateName :: Lens.Lens' ServiceUpdate (Prelude.Maybe Prelude.Text)+serviceUpdate_serviceUpdateName = Lens.lens (\ServiceUpdate' {serviceUpdateName} -> serviceUpdateName) (\s@ServiceUpdate' {} a -> s {serviceUpdateName = a} :: ServiceUpdate)++-- | The status of the service update+serviceUpdate_status :: Lens.Lens' ServiceUpdate (Prelude.Maybe ServiceUpdateStatus)+serviceUpdate_status = Lens.lens (\ServiceUpdate' {status} -> status) (\s@ServiceUpdate' {} a -> s {status = a} :: ServiceUpdate)++-- | Reflects the nature of the service update+serviceUpdate_type :: Lens.Lens' ServiceUpdate (Prelude.Maybe ServiceUpdateType)+serviceUpdate_type = Lens.lens (\ServiceUpdate' {type'} -> type') (\s@ServiceUpdate' {} a -> s {type' = a} :: ServiceUpdate)++instance Data.FromJSON ServiceUpdate where+  parseJSON =+    Data.withObject+      "ServiceUpdate"+      ( \x ->+          ServiceUpdate'+            Prelude.<$> (x Data..:? "AutoUpdateStartDate")+            Prelude.<*> (x Data..:? "ClusterName")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "NodesUpdated")+            Prelude.<*> (x Data..:? "ReleaseDate")+            Prelude.<*> (x Data..:? "ServiceUpdateName")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "Type")+      )++instance Prelude.Hashable ServiceUpdate where+  hashWithSalt _salt ServiceUpdate' {..} =+    _salt+      `Prelude.hashWithSalt` autoUpdateStartDate+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` nodesUpdated+      `Prelude.hashWithSalt` releaseDate+      `Prelude.hashWithSalt` serviceUpdateName+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` type'++instance Prelude.NFData ServiceUpdate where+  rnf ServiceUpdate' {..} =+    Prelude.rnf autoUpdateStartDate+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf nodesUpdated+      `Prelude.seq` Prelude.rnf releaseDate+      `Prelude.seq` Prelude.rnf serviceUpdateName+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/MemoryDb/Types/ServiceUpdateRequest.hs view
@@ -0,0 +1,73 @@+{-# 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.MemoryDb.Types.ServiceUpdateRequest+-- 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.MemoryDb.Types.ServiceUpdateRequest 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 request to apply a service update+--+-- /See:/ 'newServiceUpdateRequest' smart constructor.+data ServiceUpdateRequest = ServiceUpdateRequest'+  { -- | The unique ID of the service update+    serviceUpdateNameToApply :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServiceUpdateRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'serviceUpdateNameToApply', 'serviceUpdateRequest_serviceUpdateNameToApply' - The unique ID of the service update+newServiceUpdateRequest ::+  ServiceUpdateRequest+newServiceUpdateRequest =+  ServiceUpdateRequest'+    { serviceUpdateNameToApply =+        Prelude.Nothing+    }++-- | The unique ID of the service update+serviceUpdateRequest_serviceUpdateNameToApply :: Lens.Lens' ServiceUpdateRequest (Prelude.Maybe Prelude.Text)+serviceUpdateRequest_serviceUpdateNameToApply = Lens.lens (\ServiceUpdateRequest' {serviceUpdateNameToApply} -> serviceUpdateNameToApply) (\s@ServiceUpdateRequest' {} a -> s {serviceUpdateNameToApply = a} :: ServiceUpdateRequest)++instance Prelude.Hashable ServiceUpdateRequest where+  hashWithSalt _salt ServiceUpdateRequest' {..} =+    _salt+      `Prelude.hashWithSalt` serviceUpdateNameToApply++instance Prelude.NFData ServiceUpdateRequest where+  rnf ServiceUpdateRequest' {..} =+    Prelude.rnf serviceUpdateNameToApply++instance Data.ToJSON ServiceUpdateRequest where+  toJSON ServiceUpdateRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ServiceUpdateNameToApply" Data..=)+              Prelude.<$> serviceUpdateNameToApply+          ]+      )
+ gen/Amazonka/MemoryDb/Types/ServiceUpdateStatus.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.MemoryDb.Types.ServiceUpdateStatus+-- 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.MemoryDb.Types.ServiceUpdateStatus+  ( ServiceUpdateStatus+      ( ..,+        ServiceUpdateStatus_Available,+        ServiceUpdateStatus_Complete,+        ServiceUpdateStatus_In_progress,+        ServiceUpdateStatus_Scheduled+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ServiceUpdateStatus = ServiceUpdateStatus'+  { fromServiceUpdateStatus ::+      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 ServiceUpdateStatus_Available :: ServiceUpdateStatus+pattern ServiceUpdateStatus_Available = ServiceUpdateStatus' "available"++pattern ServiceUpdateStatus_Complete :: ServiceUpdateStatus+pattern ServiceUpdateStatus_Complete = ServiceUpdateStatus' "complete"++pattern ServiceUpdateStatus_In_progress :: ServiceUpdateStatus+pattern ServiceUpdateStatus_In_progress = ServiceUpdateStatus' "in-progress"++pattern ServiceUpdateStatus_Scheduled :: ServiceUpdateStatus+pattern ServiceUpdateStatus_Scheduled = ServiceUpdateStatus' "scheduled"++{-# COMPLETE+  ServiceUpdateStatus_Available,+  ServiceUpdateStatus_Complete,+  ServiceUpdateStatus_In_progress,+  ServiceUpdateStatus_Scheduled,+  ServiceUpdateStatus'+  #-}
+ gen/Amazonka/MemoryDb/Types/ServiceUpdateType.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.ServiceUpdateType+-- 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.MemoryDb.Types.ServiceUpdateType+  ( ServiceUpdateType+      ( ..,+        ServiceUpdateType_Security_update+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ServiceUpdateType = ServiceUpdateType'+  { fromServiceUpdateType ::+      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 ServiceUpdateType_Security_update :: ServiceUpdateType+pattern ServiceUpdateType_Security_update = ServiceUpdateType' "security-update"++{-# COMPLETE+  ServiceUpdateType_Security_update,+  ServiceUpdateType'+  #-}
+ gen/Amazonka/MemoryDb/Types/Shard.hs view
@@ -0,0 +1,126 @@+{-# 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.MemoryDb.Types.Shard+-- 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.MemoryDb.Types.Shard where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.Node+import qualified Amazonka.Prelude as Prelude++-- | Represents a collection of nodes in a cluster. One node in the node+-- group is the read\/write primary node. All the other nodes are read-only+-- Replica nodes.+--+-- /See:/ 'newShard' smart constructor.+data Shard = Shard'+  { -- | The name of the shard+    name :: Prelude.Maybe Prelude.Text,+    -- | A list containing information about individual nodes within the shard+    nodes :: Prelude.Maybe [Node],+    -- | The number of nodes in the shard+    numberOfNodes :: Prelude.Maybe Prelude.Int,+    -- | The keyspace for this shard.+    slots :: Prelude.Maybe Prelude.Text,+    -- | The current state of this replication group - creating, available,+    -- modifying, deleting.+    status :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Shard' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'shard_name' - The name of the shard+--+-- 'nodes', 'shard_nodes' - A list containing information about individual nodes within the shard+--+-- 'numberOfNodes', 'shard_numberOfNodes' - The number of nodes in the shard+--+-- 'slots', 'shard_slots' - The keyspace for this shard.+--+-- 'status', 'shard_status' - The current state of this replication group - creating, available,+-- modifying, deleting.+newShard ::+  Shard+newShard =+  Shard'+    { name = Prelude.Nothing,+      nodes = Prelude.Nothing,+      numberOfNodes = Prelude.Nothing,+      slots = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The name of the shard+shard_name :: Lens.Lens' Shard (Prelude.Maybe Prelude.Text)+shard_name = Lens.lens (\Shard' {name} -> name) (\s@Shard' {} a -> s {name = a} :: Shard)++-- | A list containing information about individual nodes within the shard+shard_nodes :: Lens.Lens' Shard (Prelude.Maybe [Node])+shard_nodes = Lens.lens (\Shard' {nodes} -> nodes) (\s@Shard' {} a -> s {nodes = a} :: Shard) Prelude.. Lens.mapping Lens.coerced++-- | The number of nodes in the shard+shard_numberOfNodes :: Lens.Lens' Shard (Prelude.Maybe Prelude.Int)+shard_numberOfNodes = Lens.lens (\Shard' {numberOfNodes} -> numberOfNodes) (\s@Shard' {} a -> s {numberOfNodes = a} :: Shard)++-- | The keyspace for this shard.+shard_slots :: Lens.Lens' Shard (Prelude.Maybe Prelude.Text)+shard_slots = Lens.lens (\Shard' {slots} -> slots) (\s@Shard' {} a -> s {slots = a} :: Shard)++-- | The current state of this replication group - creating, available,+-- modifying, deleting.+shard_status :: Lens.Lens' Shard (Prelude.Maybe Prelude.Text)+shard_status = Lens.lens (\Shard' {status} -> status) (\s@Shard' {} a -> s {status = a} :: Shard)++instance Data.FromJSON Shard where+  parseJSON =+    Data.withObject+      "Shard"+      ( \x ->+          Shard'+            Prelude.<$> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Nodes" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "NumberOfNodes")+            Prelude.<*> (x Data..:? "Slots")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable Shard where+  hashWithSalt _salt Shard' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` nodes+      `Prelude.hashWithSalt` numberOfNodes+      `Prelude.hashWithSalt` slots+      `Prelude.hashWithSalt` status++instance Prelude.NFData Shard where+  rnf Shard' {..} =+    Prelude.rnf name+      `Prelude.seq` Prelude.rnf nodes+      `Prelude.seq` Prelude.rnf numberOfNodes+      `Prelude.seq` Prelude.rnf slots+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/MemoryDb/Types/ShardConfiguration.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.MemoryDb.Types.ShardConfiguration+-- 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.MemoryDb.Types.ShardConfiguration 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++-- | Shard configuration options. Each shard configuration has the following:+-- Slots and ReplicaCount.+--+-- /See:/ 'newShardConfiguration' smart constructor.+data ShardConfiguration = ShardConfiguration'+  { -- | The number of read replica nodes in this shard.+    replicaCount :: Prelude.Maybe Prelude.Int,+    -- | A string that specifies the keyspace for a particular node group.+    -- Keyspaces range from 0 to 16,383. The string is in the format+    -- startkey-endkey.+    slots :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ShardConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'replicaCount', 'shardConfiguration_replicaCount' - The number of read replica nodes in this shard.+--+-- 'slots', 'shardConfiguration_slots' - A string that specifies the keyspace for a particular node group.+-- Keyspaces range from 0 to 16,383. The string is in the format+-- startkey-endkey.+newShardConfiguration ::+  ShardConfiguration+newShardConfiguration =+  ShardConfiguration'+    { replicaCount = Prelude.Nothing,+      slots = Prelude.Nothing+    }++-- | The number of read replica nodes in this shard.+shardConfiguration_replicaCount :: Lens.Lens' ShardConfiguration (Prelude.Maybe Prelude.Int)+shardConfiguration_replicaCount = Lens.lens (\ShardConfiguration' {replicaCount} -> replicaCount) (\s@ShardConfiguration' {} a -> s {replicaCount = a} :: ShardConfiguration)++-- | A string that specifies the keyspace for a particular node group.+-- Keyspaces range from 0 to 16,383. The string is in the format+-- startkey-endkey.+shardConfiguration_slots :: Lens.Lens' ShardConfiguration (Prelude.Maybe Prelude.Text)+shardConfiguration_slots = Lens.lens (\ShardConfiguration' {slots} -> slots) (\s@ShardConfiguration' {} a -> s {slots = a} :: ShardConfiguration)++instance Data.FromJSON ShardConfiguration where+  parseJSON =+    Data.withObject+      "ShardConfiguration"+      ( \x ->+          ShardConfiguration'+            Prelude.<$> (x Data..:? "ReplicaCount")+            Prelude.<*> (x Data..:? "Slots")+      )++instance Prelude.Hashable ShardConfiguration where+  hashWithSalt _salt ShardConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` replicaCount+      `Prelude.hashWithSalt` slots++instance Prelude.NFData ShardConfiguration where+  rnf ShardConfiguration' {..} =+    Prelude.rnf replicaCount+      `Prelude.seq` Prelude.rnf slots
+ gen/Amazonka/MemoryDb/Types/ShardConfigurationRequest.hs view
@@ -0,0 +1,70 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.ShardConfigurationRequest+-- 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.MemoryDb.Types.ShardConfigurationRequest 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 request to configure the sharding properties of a cluster+--+-- /See:/ 'newShardConfigurationRequest' smart constructor.+data ShardConfigurationRequest = ShardConfigurationRequest'+  { -- | The number of shards in the cluster+    shardCount :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ShardConfigurationRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'shardCount', 'shardConfigurationRequest_shardCount' - The number of shards in the cluster+newShardConfigurationRequest ::+  ShardConfigurationRequest+newShardConfigurationRequest =+  ShardConfigurationRequest'+    { shardCount =+        Prelude.Nothing+    }++-- | The number of shards in the cluster+shardConfigurationRequest_shardCount :: Lens.Lens' ShardConfigurationRequest (Prelude.Maybe Prelude.Int)+shardConfigurationRequest_shardCount = Lens.lens (\ShardConfigurationRequest' {shardCount} -> shardCount) (\s@ShardConfigurationRequest' {} a -> s {shardCount = a} :: ShardConfigurationRequest)++instance Prelude.Hashable ShardConfigurationRequest where+  hashWithSalt _salt ShardConfigurationRequest' {..} =+    _salt `Prelude.hashWithSalt` shardCount++instance Prelude.NFData ShardConfigurationRequest where+  rnf ShardConfigurationRequest' {..} =+    Prelude.rnf shardCount++instance Data.ToJSON ShardConfigurationRequest where+  toJSON ShardConfigurationRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [("ShardCount" Data..=) Prelude.<$> shardCount]+      )
+ gen/Amazonka/MemoryDb/Types/ShardDetail.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.MemoryDb.Types.ShardDetail+-- 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.MemoryDb.Types.ShardDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.ShardConfiguration+import qualified Amazonka.Prelude as Prelude++-- | Provides details of a shard in a snapshot+--+-- /See:/ 'newShardDetail' smart constructor.+data ShardDetail = ShardDetail'+  { -- | The configuration details of the shard+    configuration :: Prelude.Maybe ShardConfiguration,+    -- | The name of the shard+    name :: Prelude.Maybe Prelude.Text,+    -- | The size of the shard\'s snapshot+    size :: Prelude.Maybe Prelude.Text,+    -- | The date and time that the shard\'s snapshot was created+    snapshotCreationTime :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ShardDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'configuration', 'shardDetail_configuration' - The configuration details of the shard+--+-- 'name', 'shardDetail_name' - The name of the shard+--+-- 'size', 'shardDetail_size' - The size of the shard\'s snapshot+--+-- 'snapshotCreationTime', 'shardDetail_snapshotCreationTime' - The date and time that the shard\'s snapshot was created+newShardDetail ::+  ShardDetail+newShardDetail =+  ShardDetail'+    { configuration = Prelude.Nothing,+      name = Prelude.Nothing,+      size = Prelude.Nothing,+      snapshotCreationTime = Prelude.Nothing+    }++-- | The configuration details of the shard+shardDetail_configuration :: Lens.Lens' ShardDetail (Prelude.Maybe ShardConfiguration)+shardDetail_configuration = Lens.lens (\ShardDetail' {configuration} -> configuration) (\s@ShardDetail' {} a -> s {configuration = a} :: ShardDetail)++-- | The name of the shard+shardDetail_name :: Lens.Lens' ShardDetail (Prelude.Maybe Prelude.Text)+shardDetail_name = Lens.lens (\ShardDetail' {name} -> name) (\s@ShardDetail' {} a -> s {name = a} :: ShardDetail)++-- | The size of the shard\'s snapshot+shardDetail_size :: Lens.Lens' ShardDetail (Prelude.Maybe Prelude.Text)+shardDetail_size = Lens.lens (\ShardDetail' {size} -> size) (\s@ShardDetail' {} a -> s {size = a} :: ShardDetail)++-- | The date and time that the shard\'s snapshot was created+shardDetail_snapshotCreationTime :: Lens.Lens' ShardDetail (Prelude.Maybe Prelude.UTCTime)+shardDetail_snapshotCreationTime = Lens.lens (\ShardDetail' {snapshotCreationTime} -> snapshotCreationTime) (\s@ShardDetail' {} a -> s {snapshotCreationTime = a} :: ShardDetail) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON ShardDetail where+  parseJSON =+    Data.withObject+      "ShardDetail"+      ( \x ->+          ShardDetail'+            Prelude.<$> (x Data..:? "Configuration")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Size")+            Prelude.<*> (x Data..:? "SnapshotCreationTime")+      )++instance Prelude.Hashable ShardDetail where+  hashWithSalt _salt ShardDetail' {..} =+    _salt+      `Prelude.hashWithSalt` configuration+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` size+      `Prelude.hashWithSalt` snapshotCreationTime++instance Prelude.NFData ShardDetail where+  rnf ShardDetail' {..} =+    Prelude.rnf configuration+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf size+      `Prelude.seq` Prelude.rnf snapshotCreationTime
+ gen/Amazonka/MemoryDb/Types/SlotMigration.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.MemoryDb.Types.SlotMigration+-- 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.MemoryDb.Types.SlotMigration 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++-- | Represents the progress of an online resharding operation.+--+-- /See:/ 'newSlotMigration' smart constructor.+data SlotMigration = SlotMigration'+  { -- | The percentage of the slot migration that is complete.+    progressPercentage :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SlotMigration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'progressPercentage', 'slotMigration_progressPercentage' - The percentage of the slot migration that is complete.+newSlotMigration ::+  SlotMigration+newSlotMigration =+  SlotMigration'+    { progressPercentage =+        Prelude.Nothing+    }++-- | The percentage of the slot migration that is complete.+slotMigration_progressPercentage :: Lens.Lens' SlotMigration (Prelude.Maybe Prelude.Double)+slotMigration_progressPercentage = Lens.lens (\SlotMigration' {progressPercentage} -> progressPercentage) (\s@SlotMigration' {} a -> s {progressPercentage = a} :: SlotMigration)++instance Data.FromJSON SlotMigration where+  parseJSON =+    Data.withObject+      "SlotMigration"+      ( \x ->+          SlotMigration'+            Prelude.<$> (x Data..:? "ProgressPercentage")+      )++instance Prelude.Hashable SlotMigration where+  hashWithSalt _salt SlotMigration' {..} =+    _salt `Prelude.hashWithSalt` progressPercentage++instance Prelude.NFData SlotMigration where+  rnf SlotMigration' {..} =+    Prelude.rnf progressPercentage
+ gen/Amazonka/MemoryDb/Types/Snapshot.hs view
@@ -0,0 +1,162 @@+{-# 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.MemoryDb.Types.Snapshot+-- 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.MemoryDb.Types.Snapshot where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.ClusterConfiguration+import Amazonka.MemoryDb.Types.DataTieringStatus+import qualified Amazonka.Prelude as Prelude++-- | Represents a copy of an entire cluster as of the time when the snapshot+-- was taken.+--+-- /See:/ 'newSnapshot' smart constructor.+data Snapshot = Snapshot'+  { -- | The ARN (Amazon Resource Name) of the snapshot.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The configuration of the cluster from which the snapshot was taken+    clusterConfiguration :: Prelude.Maybe ClusterConfiguration,+    -- | Enables data tiering. Data tiering is only supported for clusters using+    -- the r6gd node type. This parameter must be set when using r6gd nodes.+    -- For more information, see+    -- <https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html Data tiering>.+    dataTiering :: Prelude.Maybe DataTieringStatus,+    -- | The ID of the KMS key used to encrypt the snapshot.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The name of the snapshot+    name :: Prelude.Maybe Prelude.Text,+    -- | Indicates whether the snapshot is from an automatic backup (automated)+    -- or was created manually (manual).+    source :: Prelude.Maybe Prelude.Text,+    -- | The status of the snapshot. Valid values: creating | available |+    -- restoring | copying | deleting.+    status :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Snapshot' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'snapshot_arn' - The ARN (Amazon Resource Name) of the snapshot.+--+-- 'clusterConfiguration', 'snapshot_clusterConfiguration' - The configuration of the cluster from which the snapshot was taken+--+-- 'dataTiering', 'snapshot_dataTiering' - Enables data tiering. Data tiering is only supported for clusters using+-- the r6gd node type. This parameter must be set when using r6gd nodes.+-- For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html Data tiering>.+--+-- 'kmsKeyId', 'snapshot_kmsKeyId' - The ID of the KMS key used to encrypt the snapshot.+--+-- 'name', 'snapshot_name' - The name of the snapshot+--+-- 'source', 'snapshot_source' - Indicates whether the snapshot is from an automatic backup (automated)+-- or was created manually (manual).+--+-- 'status', 'snapshot_status' - The status of the snapshot. Valid values: creating | available |+-- restoring | copying | deleting.+newSnapshot ::+  Snapshot+newSnapshot =+  Snapshot'+    { arn = Prelude.Nothing,+      clusterConfiguration = Prelude.Nothing,+      dataTiering = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      name = Prelude.Nothing,+      source = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The ARN (Amazon Resource Name) of the snapshot.+snapshot_arn :: Lens.Lens' Snapshot (Prelude.Maybe Prelude.Text)+snapshot_arn = Lens.lens (\Snapshot' {arn} -> arn) (\s@Snapshot' {} a -> s {arn = a} :: Snapshot)++-- | The configuration of the cluster from which the snapshot was taken+snapshot_clusterConfiguration :: Lens.Lens' Snapshot (Prelude.Maybe ClusterConfiguration)+snapshot_clusterConfiguration = Lens.lens (\Snapshot' {clusterConfiguration} -> clusterConfiguration) (\s@Snapshot' {} a -> s {clusterConfiguration = a} :: Snapshot)++-- | Enables data tiering. Data tiering is only supported for clusters using+-- the r6gd node type. This parameter must be set when using r6gd nodes.+-- For more information, see+-- <https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html Data tiering>.+snapshot_dataTiering :: Lens.Lens' Snapshot (Prelude.Maybe DataTieringStatus)+snapshot_dataTiering = Lens.lens (\Snapshot' {dataTiering} -> dataTiering) (\s@Snapshot' {} a -> s {dataTiering = a} :: Snapshot)++-- | The ID of the KMS key used to encrypt the snapshot.+snapshot_kmsKeyId :: Lens.Lens' Snapshot (Prelude.Maybe Prelude.Text)+snapshot_kmsKeyId = Lens.lens (\Snapshot' {kmsKeyId} -> kmsKeyId) (\s@Snapshot' {} a -> s {kmsKeyId = a} :: Snapshot)++-- | The name of the snapshot+snapshot_name :: Lens.Lens' Snapshot (Prelude.Maybe Prelude.Text)+snapshot_name = Lens.lens (\Snapshot' {name} -> name) (\s@Snapshot' {} a -> s {name = a} :: Snapshot)++-- | Indicates whether the snapshot is from an automatic backup (automated)+-- or was created manually (manual).+snapshot_source :: Lens.Lens' Snapshot (Prelude.Maybe Prelude.Text)+snapshot_source = Lens.lens (\Snapshot' {source} -> source) (\s@Snapshot' {} a -> s {source = a} :: Snapshot)++-- | The status of the snapshot. Valid values: creating | available |+-- restoring | copying | deleting.+snapshot_status :: Lens.Lens' Snapshot (Prelude.Maybe Prelude.Text)+snapshot_status = Lens.lens (\Snapshot' {status} -> status) (\s@Snapshot' {} a -> s {status = a} :: Snapshot)++instance Data.FromJSON Snapshot where+  parseJSON =+    Data.withObject+      "Snapshot"+      ( \x ->+          Snapshot'+            Prelude.<$> (x Data..:? "ARN")+            Prelude.<*> (x Data..:? "ClusterConfiguration")+            Prelude.<*> (x Data..:? "DataTiering")+            Prelude.<*> (x Data..:? "KmsKeyId")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Source")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable Snapshot where+  hashWithSalt _salt Snapshot' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` clusterConfiguration+      `Prelude.hashWithSalt` dataTiering+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` source+      `Prelude.hashWithSalt` status++instance Prelude.NFData Snapshot where+  rnf Snapshot' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf clusterConfiguration+      `Prelude.seq` Prelude.rnf dataTiering+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf source+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/MemoryDb/Types/SourceType.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.SourceType+-- 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.MemoryDb.Types.SourceType+  ( SourceType+      ( ..,+        SourceType_Acl,+        SourceType_Cluster,+        SourceType_Node,+        SourceType_Parameter_group,+        SourceType_Subnet_group,+        SourceType_User+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype SourceType = SourceType'+  { fromSourceType ::+      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 SourceType_Acl :: SourceType+pattern SourceType_Acl = SourceType' "acl"++pattern SourceType_Cluster :: SourceType+pattern SourceType_Cluster = SourceType' "cluster"++pattern SourceType_Node :: SourceType+pattern SourceType_Node = SourceType' "node"++pattern SourceType_Parameter_group :: SourceType+pattern SourceType_Parameter_group = SourceType' "parameter-group"++pattern SourceType_Subnet_group :: SourceType+pattern SourceType_Subnet_group = SourceType' "subnet-group"++pattern SourceType_User :: SourceType+pattern SourceType_User = SourceType' "user"++{-# COMPLETE+  SourceType_Acl,+  SourceType_Cluster,+  SourceType_Node,+  SourceType_Parameter_group,+  SourceType_Subnet_group,+  SourceType_User,+  SourceType'+  #-}
+ gen/Amazonka/MemoryDb/Types/Subnet.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.Subnet+-- 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.MemoryDb.Types.Subnet where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.AvailabilityZone+import qualified Amazonka.Prelude as Prelude++-- | Represents the subnet associated with a cluster. This parameter refers+-- to subnets defined in Amazon Virtual Private Cloud (Amazon VPC) and used+-- with MemoryDB.+--+-- /See:/ 'newSubnet' smart constructor.+data Subnet = Subnet'+  { -- | The Availability Zone where the subnet resides+    availabilityZone :: Prelude.Maybe AvailabilityZone,+    -- | The unique identifier for the subnet.+    identifier :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Subnet' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'availabilityZone', 'subnet_availabilityZone' - The Availability Zone where the subnet resides+--+-- 'identifier', 'subnet_identifier' - The unique identifier for the subnet.+newSubnet ::+  Subnet+newSubnet =+  Subnet'+    { availabilityZone = Prelude.Nothing,+      identifier = Prelude.Nothing+    }++-- | The Availability Zone where the subnet resides+subnet_availabilityZone :: Lens.Lens' Subnet (Prelude.Maybe AvailabilityZone)+subnet_availabilityZone = Lens.lens (\Subnet' {availabilityZone} -> availabilityZone) (\s@Subnet' {} a -> s {availabilityZone = a} :: Subnet)++-- | The unique identifier for the subnet.+subnet_identifier :: Lens.Lens' Subnet (Prelude.Maybe Prelude.Text)+subnet_identifier = Lens.lens (\Subnet' {identifier} -> identifier) (\s@Subnet' {} a -> s {identifier = a} :: Subnet)++instance Data.FromJSON Subnet where+  parseJSON =+    Data.withObject+      "Subnet"+      ( \x ->+          Subnet'+            Prelude.<$> (x Data..:? "AvailabilityZone")+            Prelude.<*> (x Data..:? "Identifier")+      )++instance Prelude.Hashable Subnet where+  hashWithSalt _salt Subnet' {..} =+    _salt+      `Prelude.hashWithSalt` availabilityZone+      `Prelude.hashWithSalt` identifier++instance Prelude.NFData Subnet where+  rnf Subnet' {..} =+    Prelude.rnf availabilityZone+      `Prelude.seq` Prelude.rnf identifier
+ gen/Amazonka/MemoryDb/Types/SubnetGroup.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.MemoryDb.Types.SubnetGroup+-- 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.MemoryDb.Types.SubnetGroup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.Subnet+import qualified Amazonka.Prelude as Prelude++-- | Represents the output of one of the following operations:+--+-- -   CreateSubnetGroup+--+-- -   UpdateSubnetGroup+--+-- A subnet group is a collection of subnets (typically private) that you+-- can designate for your clusters running in an Amazon Virtual Private+-- Cloud (VPC) environment.+--+-- /See:/ 'newSubnetGroup' smart constructor.+data SubnetGroup = SubnetGroup'+  { -- | The ARN (Amazon Resource Name) of the subnet group.+    arn :: Prelude.Maybe Prelude.Text,+    -- | A description of the subnet group+    description :: Prelude.Maybe Prelude.Text,+    -- | The name of the subnet group+    name :: Prelude.Maybe Prelude.Text,+    -- | A list of subnets associated with the subnet group.+    subnets :: Prelude.Maybe [Subnet],+    -- | The Amazon Virtual Private Cloud identifier (VPC ID) of the subnet+    -- group.+    vpcId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SubnetGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'subnetGroup_arn' - The ARN (Amazon Resource Name) of the subnet group.+--+-- 'description', 'subnetGroup_description' - A description of the subnet group+--+-- 'name', 'subnetGroup_name' - The name of the subnet group+--+-- 'subnets', 'subnetGroup_subnets' - A list of subnets associated with the subnet group.+--+-- 'vpcId', 'subnetGroup_vpcId' - The Amazon Virtual Private Cloud identifier (VPC ID) of the subnet+-- group.+newSubnetGroup ::+  SubnetGroup+newSubnetGroup =+  SubnetGroup'+    { arn = Prelude.Nothing,+      description = Prelude.Nothing,+      name = Prelude.Nothing,+      subnets = Prelude.Nothing,+      vpcId = Prelude.Nothing+    }++-- | The ARN (Amazon Resource Name) of the subnet group.+subnetGroup_arn :: Lens.Lens' SubnetGroup (Prelude.Maybe Prelude.Text)+subnetGroup_arn = Lens.lens (\SubnetGroup' {arn} -> arn) (\s@SubnetGroup' {} a -> s {arn = a} :: SubnetGroup)++-- | A description of the subnet group+subnetGroup_description :: Lens.Lens' SubnetGroup (Prelude.Maybe Prelude.Text)+subnetGroup_description = Lens.lens (\SubnetGroup' {description} -> description) (\s@SubnetGroup' {} a -> s {description = a} :: SubnetGroup)++-- | The name of the subnet group+subnetGroup_name :: Lens.Lens' SubnetGroup (Prelude.Maybe Prelude.Text)+subnetGroup_name = Lens.lens (\SubnetGroup' {name} -> name) (\s@SubnetGroup' {} a -> s {name = a} :: SubnetGroup)++-- | A list of subnets associated with the subnet group.+subnetGroup_subnets :: Lens.Lens' SubnetGroup (Prelude.Maybe [Subnet])+subnetGroup_subnets = Lens.lens (\SubnetGroup' {subnets} -> subnets) (\s@SubnetGroup' {} a -> s {subnets = a} :: SubnetGroup) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Virtual Private Cloud identifier (VPC ID) of the subnet+-- group.+subnetGroup_vpcId :: Lens.Lens' SubnetGroup (Prelude.Maybe Prelude.Text)+subnetGroup_vpcId = Lens.lens (\SubnetGroup' {vpcId} -> vpcId) (\s@SubnetGroup' {} a -> s {vpcId = a} :: SubnetGroup)++instance Data.FromJSON SubnetGroup where+  parseJSON =+    Data.withObject+      "SubnetGroup"+      ( \x ->+          SubnetGroup'+            Prelude.<$> (x Data..:? "ARN")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Subnets" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "VpcId")+      )++instance Prelude.Hashable SubnetGroup where+  hashWithSalt _salt SubnetGroup' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` subnets+      `Prelude.hashWithSalt` vpcId++instance Prelude.NFData SubnetGroup where+  rnf SubnetGroup' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf subnets+      `Prelude.seq` Prelude.rnf vpcId
+ gen/Amazonka/MemoryDb/Types/Tag.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.MemoryDb.Types.Tag+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.MemoryDb.Types.Tag where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A tag that can be added to an MemoryDB resource. Tags are composed of a+-- Key\/Value pair. You can use tags to categorize and track all your+-- MemoryDB resources. When you add or remove tags on clusters, those+-- actions will be replicated to all nodes in the cluster. A tag with a+-- null Value is permitted. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/tagging-resources.html Tagging your MemoryDB resources>+--+-- /See:/ 'newTag' smart constructor.+data Tag = Tag'+  { -- | The key for the tag. May not be null.+    key :: Prelude.Maybe Prelude.Text,+    -- | The tag\'s value. May be null.+    value :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Tag' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'key', 'tag_key' - The key for the tag. May not be null.+--+-- 'value', 'tag_value' - The tag\'s value. May be null.+newTag ::+  Tag+newTag =+  Tag'+    { key = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | The key for the tag. May not be null.+tag_key :: Lens.Lens' Tag (Prelude.Maybe Prelude.Text)+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)++-- | The tag\'s value. May be null.+tag_value :: Lens.Lens' Tag (Prelude.Maybe Prelude.Text)+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)++instance Data.FromJSON Tag where+  parseJSON =+    Data.withObject+      "Tag"+      ( \x ->+          Tag'+            Prelude.<$> (x Data..:? "Key")+            Prelude.<*> (x Data..:? "Value")+      )++instance Prelude.Hashable Tag where+  hashWithSalt _salt Tag' {..} =+    _salt+      `Prelude.hashWithSalt` key+      `Prelude.hashWithSalt` value++instance Prelude.NFData Tag where+  rnf Tag' {..} =+    Prelude.rnf key `Prelude.seq` Prelude.rnf value++instance Data.ToJSON Tag where+  toJSON Tag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Key" Data..=) Prelude.<$> key,+            ("Value" Data..=) Prelude.<$> value+          ]+      )
+ gen/Amazonka/MemoryDb/Types/UnprocessedCluster.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.MemoryDb.Types.UnprocessedCluster+-- 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.MemoryDb.Types.UnprocessedCluster 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 cluster whose updates have failed+--+-- /See:/ 'newUnprocessedCluster' smart constructor.+data UnprocessedCluster = UnprocessedCluster'+  { -- | The name of the cluster+    clusterName :: Prelude.Maybe Prelude.Text,+    -- | The error message associated with the update failure+    errorMessage :: Prelude.Maybe Prelude.Text,+    -- | The error type associated with the update failure+    errorType :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UnprocessedCluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'unprocessedCluster_clusterName' - The name of the cluster+--+-- 'errorMessage', 'unprocessedCluster_errorMessage' - The error message associated with the update failure+--+-- 'errorType', 'unprocessedCluster_errorType' - The error type associated with the update failure+newUnprocessedCluster ::+  UnprocessedCluster+newUnprocessedCluster =+  UnprocessedCluster'+    { clusterName = Prelude.Nothing,+      errorMessage = Prelude.Nothing,+      errorType = Prelude.Nothing+    }++-- | The name of the cluster+unprocessedCluster_clusterName :: Lens.Lens' UnprocessedCluster (Prelude.Maybe Prelude.Text)+unprocessedCluster_clusterName = Lens.lens (\UnprocessedCluster' {clusterName} -> clusterName) (\s@UnprocessedCluster' {} a -> s {clusterName = a} :: UnprocessedCluster)++-- | The error message associated with the update failure+unprocessedCluster_errorMessage :: Lens.Lens' UnprocessedCluster (Prelude.Maybe Prelude.Text)+unprocessedCluster_errorMessage = Lens.lens (\UnprocessedCluster' {errorMessage} -> errorMessage) (\s@UnprocessedCluster' {} a -> s {errorMessage = a} :: UnprocessedCluster)++-- | The error type associated with the update failure+unprocessedCluster_errorType :: Lens.Lens' UnprocessedCluster (Prelude.Maybe Prelude.Text)+unprocessedCluster_errorType = Lens.lens (\UnprocessedCluster' {errorType} -> errorType) (\s@UnprocessedCluster' {} a -> s {errorType = a} :: UnprocessedCluster)++instance Data.FromJSON UnprocessedCluster where+  parseJSON =+    Data.withObject+      "UnprocessedCluster"+      ( \x ->+          UnprocessedCluster'+            Prelude.<$> (x Data..:? "ClusterName")+            Prelude.<*> (x Data..:? "ErrorMessage")+            Prelude.<*> (x Data..:? "ErrorType")+      )++instance Prelude.Hashable UnprocessedCluster where+  hashWithSalt _salt UnprocessedCluster' {..} =+    _salt+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` errorMessage+      `Prelude.hashWithSalt` errorType++instance Prelude.NFData UnprocessedCluster where+  rnf UnprocessedCluster' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf errorMessage+      `Prelude.seq` Prelude.rnf errorType
+ gen/Amazonka/MemoryDb/Types/User.hs view
@@ -0,0 +1,151 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.MemoryDb.Types.User+-- 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.MemoryDb.Types.User where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types.Authentication+import qualified Amazonka.Prelude as Prelude++-- | You create users and assign them specific permissions by using an access+-- string. You assign the users to Access Control Lists aligned with a+-- specific role (administrators, human resources) that are then deployed+-- to one or more MemoryDB clusters.+--+-- /See:/ 'newUser' smart constructor.+data User = User'+  { -- | The names of the Access Control Lists to which the user belongs+    aCLNames :: Prelude.Maybe [Prelude.Text],+    -- | The Amazon Resource Name (ARN) of the user.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Access permissions string used for this user.+    accessString :: Prelude.Maybe Prelude.Text,+    -- | Denotes whether the user requires a password to authenticate.+    authentication :: Prelude.Maybe Authentication,+    -- | The minimum engine version supported for the user+    minimumEngineVersion :: Prelude.Maybe Prelude.Text,+    -- | The name of the user+    name :: Prelude.Maybe Prelude.Text,+    -- | Indicates the user status. Can be \"active\", \"modifying\" or+    -- \"deleting\".+    status :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'User' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aCLNames', 'user_aCLNames' - The names of the Access Control Lists to which the user belongs+--+-- 'arn', 'user_arn' - The Amazon Resource Name (ARN) of the user.+--+-- 'accessString', 'user_accessString' - Access permissions string used for this user.+--+-- 'authentication', 'user_authentication' - Denotes whether the user requires a password to authenticate.+--+-- 'minimumEngineVersion', 'user_minimumEngineVersion' - The minimum engine version supported for the user+--+-- 'name', 'user_name' - The name of the user+--+-- 'status', 'user_status' - Indicates the user status. Can be \"active\", \"modifying\" or+-- \"deleting\".+newUser ::+  User+newUser =+  User'+    { aCLNames = Prelude.Nothing,+      arn = Prelude.Nothing,+      accessString = Prelude.Nothing,+      authentication = Prelude.Nothing,+      minimumEngineVersion = Prelude.Nothing,+      name = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The names of the Access Control Lists to which the user belongs+user_aCLNames :: Lens.Lens' User (Prelude.Maybe [Prelude.Text])+user_aCLNames = Lens.lens (\User' {aCLNames} -> aCLNames) (\s@User' {} a -> s {aCLNames = a} :: User) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the user.+user_arn :: Lens.Lens' User (Prelude.Maybe Prelude.Text)+user_arn = Lens.lens (\User' {arn} -> arn) (\s@User' {} a -> s {arn = a} :: User)++-- | Access permissions string used for this user.+user_accessString :: Lens.Lens' User (Prelude.Maybe Prelude.Text)+user_accessString = Lens.lens (\User' {accessString} -> accessString) (\s@User' {} a -> s {accessString = a} :: User)++-- | Denotes whether the user requires a password to authenticate.+user_authentication :: Lens.Lens' User (Prelude.Maybe Authentication)+user_authentication = Lens.lens (\User' {authentication} -> authentication) (\s@User' {} a -> s {authentication = a} :: User)++-- | The minimum engine version supported for the user+user_minimumEngineVersion :: Lens.Lens' User (Prelude.Maybe Prelude.Text)+user_minimumEngineVersion = Lens.lens (\User' {minimumEngineVersion} -> minimumEngineVersion) (\s@User' {} a -> s {minimumEngineVersion = a} :: User)++-- | The name of the user+user_name :: Lens.Lens' User (Prelude.Maybe Prelude.Text)+user_name = Lens.lens (\User' {name} -> name) (\s@User' {} a -> s {name = a} :: User)++-- | Indicates the user status. Can be \"active\", \"modifying\" or+-- \"deleting\".+user_status :: Lens.Lens' User (Prelude.Maybe Prelude.Text)+user_status = Lens.lens (\User' {status} -> status) (\s@User' {} a -> s {status = a} :: User)++instance Data.FromJSON User where+  parseJSON =+    Data.withObject+      "User"+      ( \x ->+          User'+            Prelude.<$> (x Data..:? "ACLNames" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "ARN")+            Prelude.<*> (x Data..:? "AccessString")+            Prelude.<*> (x Data..:? "Authentication")+            Prelude.<*> (x Data..:? "MinimumEngineVersion")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable User where+  hashWithSalt _salt User' {..} =+    _salt+      `Prelude.hashWithSalt` aCLNames+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` accessString+      `Prelude.hashWithSalt` authentication+      `Prelude.hashWithSalt` minimumEngineVersion+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status++instance Prelude.NFData User where+  rnf User' {..} =+    Prelude.rnf aCLNames+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf accessString+      `Prelude.seq` Prelude.rnf authentication+      `Prelude.seq` Prelude.rnf minimumEngineVersion+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/MemoryDb/UntagResource.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.MemoryDb.UntagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Use this operation to remove tags on a resource+module Amazonka.MemoryDb.UntagResource+  ( -- * Creating a Request+    UntagResource (..),+    newUntagResource,++    -- * Request Lenses+    untagResource_resourceArn,+    untagResource_tagKeys,++    -- * Destructuring the Response+    UntagResourceResponse (..),+    newUntagResourceResponse,++    -- * Response Lenses+    untagResourceResponse_tagList,+    untagResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The Amazon Resource Name (ARN) of the resource to which the tags are to+    -- be removed+    resourceArn :: Prelude.Text,+    -- | The list of keys of the tags that are to be removed+    tagKeys :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource to which the tags are to+-- be removed+--+-- 'tagKeys', 'untagResource_tagKeys' - The list of keys of the tags that are to be removed+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource to which the tags are to+-- be removed+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The list of keys of the tags that are to be removed+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (x Data..?> "TagList" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.UntagResource" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UntagResource where+  toJSON UntagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),+            Prelude.Just ("TagKeys" Data..= tagKeys)+          ]+      )++instance Data.ToPath UntagResource where+  toPath = Prelude.const "/"++instance Data.ToQuery UntagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUntagResourceResponse' smart constructor.+data UntagResourceResponse = UntagResourceResponse'+  { -- | The list of tags removed+    tagList :: Prelude.Maybe [Tag],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tagList', 'untagResourceResponse_tagList' - The list of tags removed+--+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.+newUntagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UntagResourceResponse+newUntagResourceResponse pHttpStatus_ =+  UntagResourceResponse'+    { tagList = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of tags removed+untagResourceResponse_tagList :: Lens.Lens' UntagResourceResponse (Prelude.Maybe [Tag])+untagResourceResponse_tagList = Lens.lens (\UntagResourceResponse' {tagList} -> tagList) (\s@UntagResourceResponse' {} a -> s {tagList = a} :: UntagResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)++instance Prelude.NFData UntagResourceResponse where+  rnf UntagResourceResponse' {..} =+    Prelude.rnf tagList+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/UpdateACL.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.MemoryDb.UpdateACL+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Changes the list of users that belong to the Access Control List.+module Amazonka.MemoryDb.UpdateACL+  ( -- * Creating a Request+    UpdateACL (..),+    newUpdateACL,++    -- * Request Lenses+    updateACL_userNamesToAdd,+    updateACL_userNamesToRemove,+    updateACL_aCLName,++    -- * Destructuring the Response+    UpdateACLResponse (..),+    newUpdateACLResponse,++    -- * Response Lenses+    updateACLResponse_acl,+    updateACLResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateACL' smart constructor.+data UpdateACL = UpdateACL'+  { -- | The list of users to add to the Access Control List+    userNamesToAdd :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The list of users to remove from the Access Control List+    userNamesToRemove :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The name of the Access Control List+    aCLName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateACL' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'userNamesToAdd', 'updateACL_userNamesToAdd' - The list of users to add to the Access Control List+--+-- 'userNamesToRemove', 'updateACL_userNamesToRemove' - The list of users to remove from the Access Control List+--+-- 'aCLName', 'updateACL_aCLName' - The name of the Access Control List+newUpdateACL ::+  -- | 'aCLName'+  Prelude.Text ->+  UpdateACL+newUpdateACL pACLName_ =+  UpdateACL'+    { userNamesToAdd = Prelude.Nothing,+      userNamesToRemove = Prelude.Nothing,+      aCLName = pACLName_+    }++-- | The list of users to add to the Access Control List+updateACL_userNamesToAdd :: Lens.Lens' UpdateACL (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+updateACL_userNamesToAdd = Lens.lens (\UpdateACL' {userNamesToAdd} -> userNamesToAdd) (\s@UpdateACL' {} a -> s {userNamesToAdd = a} :: UpdateACL) Prelude.. Lens.mapping Lens.coerced++-- | The list of users to remove from the Access Control List+updateACL_userNamesToRemove :: Lens.Lens' UpdateACL (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+updateACL_userNamesToRemove = Lens.lens (\UpdateACL' {userNamesToRemove} -> userNamesToRemove) (\s@UpdateACL' {} a -> s {userNamesToRemove = a} :: UpdateACL) Prelude.. Lens.mapping Lens.coerced++-- | The name of the Access Control List+updateACL_aCLName :: Lens.Lens' UpdateACL Prelude.Text+updateACL_aCLName = Lens.lens (\UpdateACL' {aCLName} -> aCLName) (\s@UpdateACL' {} a -> s {aCLName = a} :: UpdateACL)++instance Core.AWSRequest UpdateACL where+  type AWSResponse UpdateACL = UpdateACLResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateACLResponse'+            Prelude.<$> (x Data..?> "ACL")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateACL where+  hashWithSalt _salt UpdateACL' {..} =+    _salt+      `Prelude.hashWithSalt` userNamesToAdd+      `Prelude.hashWithSalt` userNamesToRemove+      `Prelude.hashWithSalt` aCLName++instance Prelude.NFData UpdateACL where+  rnf UpdateACL' {..} =+    Prelude.rnf userNamesToAdd+      `Prelude.seq` Prelude.rnf userNamesToRemove+      `Prelude.seq` Prelude.rnf aCLName++instance Data.ToHeaders UpdateACL where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("AmazonMemoryDB.UpdateACL" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateACL where+  toJSON UpdateACL' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("UserNamesToAdd" Data..=)+              Prelude.<$> userNamesToAdd,+            ("UserNamesToRemove" Data..=)+              Prelude.<$> userNamesToRemove,+            Prelude.Just ("ACLName" Data..= aCLName)+          ]+      )++instance Data.ToPath UpdateACL where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateACL where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateACLResponse' smart constructor.+data UpdateACLResponse = UpdateACLResponse'+  { -- | The updated Access Control List+    acl :: Prelude.Maybe ACL,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateACLResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acl', 'updateACLResponse_acl' - The updated Access Control List+--+-- 'httpStatus', 'updateACLResponse_httpStatus' - The response's http status code.+newUpdateACLResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateACLResponse+newUpdateACLResponse pHttpStatus_ =+  UpdateACLResponse'+    { acl = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The updated Access Control List+updateACLResponse_acl :: Lens.Lens' UpdateACLResponse (Prelude.Maybe ACL)+updateACLResponse_acl = Lens.lens (\UpdateACLResponse' {acl} -> acl) (\s@UpdateACLResponse' {} a -> s {acl = a} :: UpdateACLResponse)++-- | The response's http status code.+updateACLResponse_httpStatus :: Lens.Lens' UpdateACLResponse Prelude.Int+updateACLResponse_httpStatus = Lens.lens (\UpdateACLResponse' {httpStatus} -> httpStatus) (\s@UpdateACLResponse' {} a -> s {httpStatus = a} :: UpdateACLResponse)++instance Prelude.NFData UpdateACLResponse where+  rnf UpdateACLResponse' {..} =+    Prelude.rnf acl+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/UpdateCluster.hs view
@@ -0,0 +1,441 @@+{-# 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.MemoryDb.UpdateCluster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Modifies the settings for a cluster. You can use this operation to+-- change one or more cluster configuration settings by specifying the+-- settings and the new values.+module Amazonka.MemoryDb.UpdateCluster+  ( -- * Creating a Request+    UpdateCluster (..),+    newUpdateCluster,++    -- * Request Lenses+    updateCluster_aCLName,+    updateCluster_description,+    updateCluster_engineVersion,+    updateCluster_maintenanceWindow,+    updateCluster_nodeType,+    updateCluster_parameterGroupName,+    updateCluster_replicaConfiguration,+    updateCluster_securityGroupIds,+    updateCluster_shardConfiguration,+    updateCluster_snapshotRetentionLimit,+    updateCluster_snapshotWindow,+    updateCluster_snsTopicArn,+    updateCluster_snsTopicStatus,+    updateCluster_clusterName,++    -- * Destructuring the Response+    UpdateClusterResponse (..),+    newUpdateClusterResponse,++    -- * Response Lenses+    updateClusterResponse_cluster,+    updateClusterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateCluster' smart constructor.+data UpdateCluster = UpdateCluster'+  { -- | The Access Control List that is associated with the cluster+    aCLName :: Prelude.Maybe Prelude.Text,+    -- | The description of the cluster to update+    description :: Prelude.Maybe Prelude.Text,+    -- | The upgraded version of the engine to be run on the nodes. You can+    -- upgrade to a newer engine version, but you cannot downgrade to an+    -- earlier engine version. If you want to use an earlier engine version,+    -- you must delete the existing cluster and create it anew with the earlier+    -- engine version.+    engineVersion :: Prelude.Maybe Prelude.Text,+    -- | Specifies the weekly time range during which maintenance on the cluster+    -- is performed. It is specified as a range in the format+    -- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window+    -- is a 60 minute period.+    --+    -- Valid values for @ddd@ are:+    --+    -- -   @sun@+    --+    -- -   @mon@+    --+    -- -   @tue@+    --+    -- -   @wed@+    --+    -- -   @thu@+    --+    -- -   @fri@+    --+    -- -   @sat@+    --+    -- Example: @sun:23:00-mon:01:30@+    maintenanceWindow :: Prelude.Maybe Prelude.Text,+    -- | A valid node type that you want to scale this cluster up or down to.+    nodeType :: Prelude.Maybe Prelude.Text,+    -- | The name of the parameter group to update+    parameterGroupName :: Prelude.Maybe Prelude.Text,+    -- | The number of replicas that will reside in each shard+    replicaConfiguration :: Prelude.Maybe ReplicaConfigurationRequest,+    -- | The SecurityGroupIds to update+    securityGroupIds :: Prelude.Maybe [Prelude.Text],+    -- | The number of shards in the cluster+    shardConfiguration :: Prelude.Maybe ShardConfigurationRequest,+    -- | The number of days for which MemoryDB retains automatic cluster+    -- snapshots before deleting them. For example, if you set+    -- SnapshotRetentionLimit to 5, a snapshot that was taken today is retained+    -- for 5 days before being deleted.+    snapshotRetentionLimit :: Prelude.Maybe Prelude.Int,+    -- | The daily time range (in UTC) during which MemoryDB begins taking a+    -- daily snapshot of your cluster.+    snapshotWindow :: Prelude.Maybe Prelude.Text,+    -- | The SNS topic ARN to update+    snsTopicArn :: Prelude.Maybe Prelude.Text,+    -- | The status of the Amazon SNS notification topic. Notifications are sent+    -- only if the status is active.+    snsTopicStatus :: Prelude.Maybe Prelude.Text,+    -- | The name of the cluster to update+    clusterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateCluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aCLName', 'updateCluster_aCLName' - The Access Control List that is associated with the cluster+--+-- 'description', 'updateCluster_description' - The description of the cluster to update+--+-- 'engineVersion', 'updateCluster_engineVersion' - The upgraded version of the engine to be run on the nodes. You can+-- upgrade to a newer engine version, but you cannot downgrade to an+-- earlier engine version. If you want to use an earlier engine version,+-- you must delete the existing cluster and create it anew with the earlier+-- engine version.+--+-- 'maintenanceWindow', 'updateCluster_maintenanceWindow' - Specifies the weekly time range during which maintenance on the cluster+-- is performed. It is specified as a range in the format+-- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window+-- is a 60 minute period.+--+-- Valid values for @ddd@ are:+--+-- -   @sun@+--+-- -   @mon@+--+-- -   @tue@+--+-- -   @wed@+--+-- -   @thu@+--+-- -   @fri@+--+-- -   @sat@+--+-- Example: @sun:23:00-mon:01:30@+--+-- 'nodeType', 'updateCluster_nodeType' - A valid node type that you want to scale this cluster up or down to.+--+-- 'parameterGroupName', 'updateCluster_parameterGroupName' - The name of the parameter group to update+--+-- 'replicaConfiguration', 'updateCluster_replicaConfiguration' - The number of replicas that will reside in each shard+--+-- 'securityGroupIds', 'updateCluster_securityGroupIds' - The SecurityGroupIds to update+--+-- 'shardConfiguration', 'updateCluster_shardConfiguration' - The number of shards in the cluster+--+-- 'snapshotRetentionLimit', 'updateCluster_snapshotRetentionLimit' - The number of days for which MemoryDB retains automatic cluster+-- snapshots before deleting them. For example, if you set+-- SnapshotRetentionLimit to 5, a snapshot that was taken today is retained+-- for 5 days before being deleted.+--+-- 'snapshotWindow', 'updateCluster_snapshotWindow' - The daily time range (in UTC) during which MemoryDB begins taking a+-- daily snapshot of your cluster.+--+-- 'snsTopicArn', 'updateCluster_snsTopicArn' - The SNS topic ARN to update+--+-- 'snsTopicStatus', 'updateCluster_snsTopicStatus' - The status of the Amazon SNS notification topic. Notifications are sent+-- only if the status is active.+--+-- 'clusterName', 'updateCluster_clusterName' - The name of the cluster to update+newUpdateCluster ::+  -- | 'clusterName'+  Prelude.Text ->+  UpdateCluster+newUpdateCluster pClusterName_ =+  UpdateCluster'+    { aCLName = Prelude.Nothing,+      description = Prelude.Nothing,+      engineVersion = Prelude.Nothing,+      maintenanceWindow = Prelude.Nothing,+      nodeType = Prelude.Nothing,+      parameterGroupName = Prelude.Nothing,+      replicaConfiguration = Prelude.Nothing,+      securityGroupIds = Prelude.Nothing,+      shardConfiguration = Prelude.Nothing,+      snapshotRetentionLimit = Prelude.Nothing,+      snapshotWindow = Prelude.Nothing,+      snsTopicArn = Prelude.Nothing,+      snsTopicStatus = Prelude.Nothing,+      clusterName = pClusterName_+    }++-- | The Access Control List that is associated with the cluster+updateCluster_aCLName :: Lens.Lens' UpdateCluster (Prelude.Maybe Prelude.Text)+updateCluster_aCLName = Lens.lens (\UpdateCluster' {aCLName} -> aCLName) (\s@UpdateCluster' {} a -> s {aCLName = a} :: UpdateCluster)++-- | The description of the cluster to update+updateCluster_description :: Lens.Lens' UpdateCluster (Prelude.Maybe Prelude.Text)+updateCluster_description = Lens.lens (\UpdateCluster' {description} -> description) (\s@UpdateCluster' {} a -> s {description = a} :: UpdateCluster)++-- | The upgraded version of the engine to be run on the nodes. You can+-- upgrade to a newer engine version, but you cannot downgrade to an+-- earlier engine version. If you want to use an earlier engine version,+-- you must delete the existing cluster and create it anew with the earlier+-- engine version.+updateCluster_engineVersion :: Lens.Lens' UpdateCluster (Prelude.Maybe Prelude.Text)+updateCluster_engineVersion = Lens.lens (\UpdateCluster' {engineVersion} -> engineVersion) (\s@UpdateCluster' {} a -> s {engineVersion = a} :: UpdateCluster)++-- | Specifies the weekly time range during which maintenance on the cluster+-- is performed. It is specified as a range in the format+-- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window+-- is a 60 minute period.+--+-- Valid values for @ddd@ are:+--+-- -   @sun@+--+-- -   @mon@+--+-- -   @tue@+--+-- -   @wed@+--+-- -   @thu@+--+-- -   @fri@+--+-- -   @sat@+--+-- Example: @sun:23:00-mon:01:30@+updateCluster_maintenanceWindow :: Lens.Lens' UpdateCluster (Prelude.Maybe Prelude.Text)+updateCluster_maintenanceWindow = Lens.lens (\UpdateCluster' {maintenanceWindow} -> maintenanceWindow) (\s@UpdateCluster' {} a -> s {maintenanceWindow = a} :: UpdateCluster)++-- | A valid node type that you want to scale this cluster up or down to.+updateCluster_nodeType :: Lens.Lens' UpdateCluster (Prelude.Maybe Prelude.Text)+updateCluster_nodeType = Lens.lens (\UpdateCluster' {nodeType} -> nodeType) (\s@UpdateCluster' {} a -> s {nodeType = a} :: UpdateCluster)++-- | The name of the parameter group to update+updateCluster_parameterGroupName :: Lens.Lens' UpdateCluster (Prelude.Maybe Prelude.Text)+updateCluster_parameterGroupName = Lens.lens (\UpdateCluster' {parameterGroupName} -> parameterGroupName) (\s@UpdateCluster' {} a -> s {parameterGroupName = a} :: UpdateCluster)++-- | The number of replicas that will reside in each shard+updateCluster_replicaConfiguration :: Lens.Lens' UpdateCluster (Prelude.Maybe ReplicaConfigurationRequest)+updateCluster_replicaConfiguration = Lens.lens (\UpdateCluster' {replicaConfiguration} -> replicaConfiguration) (\s@UpdateCluster' {} a -> s {replicaConfiguration = a} :: UpdateCluster)++-- | The SecurityGroupIds to update+updateCluster_securityGroupIds :: Lens.Lens' UpdateCluster (Prelude.Maybe [Prelude.Text])+updateCluster_securityGroupIds = Lens.lens (\UpdateCluster' {securityGroupIds} -> securityGroupIds) (\s@UpdateCluster' {} a -> s {securityGroupIds = a} :: UpdateCluster) Prelude.. Lens.mapping Lens.coerced++-- | The number of shards in the cluster+updateCluster_shardConfiguration :: Lens.Lens' UpdateCluster (Prelude.Maybe ShardConfigurationRequest)+updateCluster_shardConfiguration = Lens.lens (\UpdateCluster' {shardConfiguration} -> shardConfiguration) (\s@UpdateCluster' {} a -> s {shardConfiguration = a} :: UpdateCluster)++-- | The number of days for which MemoryDB retains automatic cluster+-- snapshots before deleting them. For example, if you set+-- SnapshotRetentionLimit to 5, a snapshot that was taken today is retained+-- for 5 days before being deleted.+updateCluster_snapshotRetentionLimit :: Lens.Lens' UpdateCluster (Prelude.Maybe Prelude.Int)+updateCluster_snapshotRetentionLimit = Lens.lens (\UpdateCluster' {snapshotRetentionLimit} -> snapshotRetentionLimit) (\s@UpdateCluster' {} a -> s {snapshotRetentionLimit = a} :: UpdateCluster)++-- | The daily time range (in UTC) during which MemoryDB begins taking a+-- daily snapshot of your cluster.+updateCluster_snapshotWindow :: Lens.Lens' UpdateCluster (Prelude.Maybe Prelude.Text)+updateCluster_snapshotWindow = Lens.lens (\UpdateCluster' {snapshotWindow} -> snapshotWindow) (\s@UpdateCluster' {} a -> s {snapshotWindow = a} :: UpdateCluster)++-- | The SNS topic ARN to update+updateCluster_snsTopicArn :: Lens.Lens' UpdateCluster (Prelude.Maybe Prelude.Text)+updateCluster_snsTopicArn = Lens.lens (\UpdateCluster' {snsTopicArn} -> snsTopicArn) (\s@UpdateCluster' {} a -> s {snsTopicArn = a} :: UpdateCluster)++-- | The status of the Amazon SNS notification topic. Notifications are sent+-- only if the status is active.+updateCluster_snsTopicStatus :: Lens.Lens' UpdateCluster (Prelude.Maybe Prelude.Text)+updateCluster_snsTopicStatus = Lens.lens (\UpdateCluster' {snsTopicStatus} -> snsTopicStatus) (\s@UpdateCluster' {} a -> s {snsTopicStatus = a} :: UpdateCluster)++-- | The name of the cluster to update+updateCluster_clusterName :: Lens.Lens' UpdateCluster Prelude.Text+updateCluster_clusterName = Lens.lens (\UpdateCluster' {clusterName} -> clusterName) (\s@UpdateCluster' {} a -> s {clusterName = a} :: UpdateCluster)++instance Core.AWSRequest UpdateCluster where+  type+    AWSResponse UpdateCluster =+      UpdateClusterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateClusterResponse'+            Prelude.<$> (x Data..?> "Cluster")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateCluster where+  hashWithSalt _salt UpdateCluster' {..} =+    _salt+      `Prelude.hashWithSalt` aCLName+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` engineVersion+      `Prelude.hashWithSalt` maintenanceWindow+      `Prelude.hashWithSalt` nodeType+      `Prelude.hashWithSalt` parameterGroupName+      `Prelude.hashWithSalt` replicaConfiguration+      `Prelude.hashWithSalt` securityGroupIds+      `Prelude.hashWithSalt` shardConfiguration+      `Prelude.hashWithSalt` snapshotRetentionLimit+      `Prelude.hashWithSalt` snapshotWindow+      `Prelude.hashWithSalt` snsTopicArn+      `Prelude.hashWithSalt` snsTopicStatus+      `Prelude.hashWithSalt` clusterName++instance Prelude.NFData UpdateCluster where+  rnf UpdateCluster' {..} =+    Prelude.rnf aCLName+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf engineVersion+      `Prelude.seq` Prelude.rnf maintenanceWindow+      `Prelude.seq` Prelude.rnf nodeType+      `Prelude.seq` Prelude.rnf parameterGroupName+      `Prelude.seq` Prelude.rnf replicaConfiguration+      `Prelude.seq` Prelude.rnf securityGroupIds+      `Prelude.seq` Prelude.rnf shardConfiguration+      `Prelude.seq` Prelude.rnf snapshotRetentionLimit+      `Prelude.seq` Prelude.rnf snapshotWindow+      `Prelude.seq` Prelude.rnf snsTopicArn+      `Prelude.seq` Prelude.rnf snsTopicStatus+      `Prelude.seq` Prelude.rnf clusterName++instance Data.ToHeaders UpdateCluster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.UpdateCluster" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateCluster where+  toJSON UpdateCluster' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ACLName" Data..=) Prelude.<$> aCLName,+            ("Description" Data..=) Prelude.<$> description,+            ("EngineVersion" Data..=) Prelude.<$> engineVersion,+            ("MaintenanceWindow" Data..=)+              Prelude.<$> maintenanceWindow,+            ("NodeType" Data..=) Prelude.<$> nodeType,+            ("ParameterGroupName" Data..=)+              Prelude.<$> parameterGroupName,+            ("ReplicaConfiguration" Data..=)+              Prelude.<$> replicaConfiguration,+            ("SecurityGroupIds" Data..=)+              Prelude.<$> securityGroupIds,+            ("ShardConfiguration" Data..=)+              Prelude.<$> shardConfiguration,+            ("SnapshotRetentionLimit" Data..=)+              Prelude.<$> snapshotRetentionLimit,+            ("SnapshotWindow" Data..=)+              Prelude.<$> snapshotWindow,+            ("SnsTopicArn" Data..=) Prelude.<$> snsTopicArn,+            ("SnsTopicStatus" Data..=)+              Prelude.<$> snsTopicStatus,+            Prelude.Just ("ClusterName" Data..= clusterName)+          ]+      )++instance Data.ToPath UpdateCluster where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateCluster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateClusterResponse' smart constructor.+data UpdateClusterResponse = UpdateClusterResponse'+  { -- | The updated cluster+    cluster :: Prelude.Maybe Cluster,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateClusterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cluster', 'updateClusterResponse_cluster' - The updated cluster+--+-- 'httpStatus', 'updateClusterResponse_httpStatus' - The response's http status code.+newUpdateClusterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateClusterResponse+newUpdateClusterResponse pHttpStatus_ =+  UpdateClusterResponse'+    { cluster = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The updated cluster+updateClusterResponse_cluster :: Lens.Lens' UpdateClusterResponse (Prelude.Maybe Cluster)+updateClusterResponse_cluster = Lens.lens (\UpdateClusterResponse' {cluster} -> cluster) (\s@UpdateClusterResponse' {} a -> s {cluster = a} :: UpdateClusterResponse)++-- | The response's http status code.+updateClusterResponse_httpStatus :: Lens.Lens' UpdateClusterResponse Prelude.Int+updateClusterResponse_httpStatus = Lens.lens (\UpdateClusterResponse' {httpStatus} -> httpStatus) (\s@UpdateClusterResponse' {} a -> s {httpStatus = a} :: UpdateClusterResponse)++instance Prelude.NFData UpdateClusterResponse where+  rnf UpdateClusterResponse' {..} =+    Prelude.rnf cluster+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/UpdateParameterGroup.hs view
@@ -0,0 +1,197 @@+{-# 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.MemoryDb.UpdateParameterGroup+-- 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 parameters of a parameter group. You can modify up to 20+-- parameters in a single request by submitting a list parameter name and+-- value pairs.+module Amazonka.MemoryDb.UpdateParameterGroup+  ( -- * Creating a Request+    UpdateParameterGroup (..),+    newUpdateParameterGroup,++    -- * Request Lenses+    updateParameterGroup_parameterGroupName,+    updateParameterGroup_parameterNameValues,++    -- * Destructuring the Response+    UpdateParameterGroupResponse (..),+    newUpdateParameterGroupResponse,++    -- * Response Lenses+    updateParameterGroupResponse_parameterGroup,+    updateParameterGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateParameterGroup' smart constructor.+data UpdateParameterGroup = UpdateParameterGroup'+  { -- | The name of the parameter group to update.+    parameterGroupName :: Prelude.Text,+    -- | An array of parameter names and values for the parameter update. You+    -- must supply at least one parameter name and value; subsequent arguments+    -- are optional. A maximum of 20 parameters may be updated per request.+    parameterNameValues :: [ParameterNameValue]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateParameterGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'parameterGroupName', 'updateParameterGroup_parameterGroupName' - The name of the parameter group to update.+--+-- 'parameterNameValues', 'updateParameterGroup_parameterNameValues' - An array of parameter names and values for the parameter update. You+-- must supply at least one parameter name and value; subsequent arguments+-- are optional. A maximum of 20 parameters may be updated per request.+newUpdateParameterGroup ::+  -- | 'parameterGroupName'+  Prelude.Text ->+  UpdateParameterGroup+newUpdateParameterGroup pParameterGroupName_ =+  UpdateParameterGroup'+    { parameterGroupName =+        pParameterGroupName_,+      parameterNameValues = Prelude.mempty+    }++-- | The name of the parameter group to update.+updateParameterGroup_parameterGroupName :: Lens.Lens' UpdateParameterGroup Prelude.Text+updateParameterGroup_parameterGroupName = Lens.lens (\UpdateParameterGroup' {parameterGroupName} -> parameterGroupName) (\s@UpdateParameterGroup' {} a -> s {parameterGroupName = a} :: UpdateParameterGroup)++-- | An array of parameter names and values for the parameter update. You+-- must supply at least one parameter name and value; subsequent arguments+-- are optional. A maximum of 20 parameters may be updated per request.+updateParameterGroup_parameterNameValues :: Lens.Lens' UpdateParameterGroup [ParameterNameValue]+updateParameterGroup_parameterNameValues = Lens.lens (\UpdateParameterGroup' {parameterNameValues} -> parameterNameValues) (\s@UpdateParameterGroup' {} a -> s {parameterNameValues = a} :: UpdateParameterGroup) Prelude.. Lens.coerced++instance Core.AWSRequest UpdateParameterGroup where+  type+    AWSResponse UpdateParameterGroup =+      UpdateParameterGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateParameterGroupResponse'+            Prelude.<$> (x Data..?> "ParameterGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateParameterGroup where+  hashWithSalt _salt UpdateParameterGroup' {..} =+    _salt+      `Prelude.hashWithSalt` parameterGroupName+      `Prelude.hashWithSalt` parameterNameValues++instance Prelude.NFData UpdateParameterGroup where+  rnf UpdateParameterGroup' {..} =+    Prelude.rnf parameterGroupName+      `Prelude.seq` Prelude.rnf parameterNameValues++instance Data.ToHeaders UpdateParameterGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.UpdateParameterGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateParameterGroup where+  toJSON UpdateParameterGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("ParameterGroupName" Data..= parameterGroupName),+            Prelude.Just+              ("ParameterNameValues" Data..= parameterNameValues)+          ]+      )++instance Data.ToPath UpdateParameterGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateParameterGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateParameterGroupResponse' smart constructor.+data UpdateParameterGroupResponse = UpdateParameterGroupResponse'+  { -- | The updated parameter group+    parameterGroup :: Prelude.Maybe ParameterGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateParameterGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'parameterGroup', 'updateParameterGroupResponse_parameterGroup' - The updated parameter group+--+-- 'httpStatus', 'updateParameterGroupResponse_httpStatus' - The response's http status code.+newUpdateParameterGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateParameterGroupResponse+newUpdateParameterGroupResponse pHttpStatus_ =+  UpdateParameterGroupResponse'+    { parameterGroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The updated parameter group+updateParameterGroupResponse_parameterGroup :: Lens.Lens' UpdateParameterGroupResponse (Prelude.Maybe ParameterGroup)+updateParameterGroupResponse_parameterGroup = Lens.lens (\UpdateParameterGroupResponse' {parameterGroup} -> parameterGroup) (\s@UpdateParameterGroupResponse' {} a -> s {parameterGroup = a} :: UpdateParameterGroupResponse)++-- | The response's http status code.+updateParameterGroupResponse_httpStatus :: Lens.Lens' UpdateParameterGroupResponse Prelude.Int+updateParameterGroupResponse_httpStatus = Lens.lens (\UpdateParameterGroupResponse' {httpStatus} -> httpStatus) (\s@UpdateParameterGroupResponse' {} a -> s {httpStatus = a} :: UpdateParameterGroupResponse)++instance Prelude.NFData UpdateParameterGroupResponse where+  rnf UpdateParameterGroupResponse' {..} =+    Prelude.rnf parameterGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/UpdateSubnetGroup.hs view
@@ -0,0 +1,201 @@+{-# 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.MemoryDb.UpdateSubnetGroup+-- 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 a subnet group. For more information, see+-- <https://docs.aws.amazon.com/MemoryDB/latest/devguide/ubnetGroups.Modifying.html Updating a subnet group>+module Amazonka.MemoryDb.UpdateSubnetGroup+  ( -- * Creating a Request+    UpdateSubnetGroup (..),+    newUpdateSubnetGroup,++    -- * Request Lenses+    updateSubnetGroup_description,+    updateSubnetGroup_subnetIds,+    updateSubnetGroup_subnetGroupName,++    -- * Destructuring the Response+    UpdateSubnetGroupResponse (..),+    newUpdateSubnetGroupResponse,++    -- * Response Lenses+    updateSubnetGroupResponse_subnetGroup,+    updateSubnetGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateSubnetGroup' smart constructor.+data UpdateSubnetGroup = UpdateSubnetGroup'+  { -- | A description of the subnet group+    description :: Prelude.Maybe Prelude.Text,+    -- | The EC2 subnet IDs for the subnet group.+    subnetIds :: Prelude.Maybe [Prelude.Text],+    -- | The name of the subnet group+    subnetGroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateSubnetGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'updateSubnetGroup_description' - A description of the subnet group+--+-- 'subnetIds', 'updateSubnetGroup_subnetIds' - The EC2 subnet IDs for the subnet group.+--+-- 'subnetGroupName', 'updateSubnetGroup_subnetGroupName' - The name of the subnet group+newUpdateSubnetGroup ::+  -- | 'subnetGroupName'+  Prelude.Text ->+  UpdateSubnetGroup+newUpdateSubnetGroup pSubnetGroupName_ =+  UpdateSubnetGroup'+    { description = Prelude.Nothing,+      subnetIds = Prelude.Nothing,+      subnetGroupName = pSubnetGroupName_+    }++-- | A description of the subnet group+updateSubnetGroup_description :: Lens.Lens' UpdateSubnetGroup (Prelude.Maybe Prelude.Text)+updateSubnetGroup_description = Lens.lens (\UpdateSubnetGroup' {description} -> description) (\s@UpdateSubnetGroup' {} a -> s {description = a} :: UpdateSubnetGroup)++-- | The EC2 subnet IDs for the subnet group.+updateSubnetGroup_subnetIds :: Lens.Lens' UpdateSubnetGroup (Prelude.Maybe [Prelude.Text])+updateSubnetGroup_subnetIds = Lens.lens (\UpdateSubnetGroup' {subnetIds} -> subnetIds) (\s@UpdateSubnetGroup' {} a -> s {subnetIds = a} :: UpdateSubnetGroup) Prelude.. Lens.mapping Lens.coerced++-- | The name of the subnet group+updateSubnetGroup_subnetGroupName :: Lens.Lens' UpdateSubnetGroup Prelude.Text+updateSubnetGroup_subnetGroupName = Lens.lens (\UpdateSubnetGroup' {subnetGroupName} -> subnetGroupName) (\s@UpdateSubnetGroup' {} a -> s {subnetGroupName = a} :: UpdateSubnetGroup)++instance Core.AWSRequest UpdateSubnetGroup where+  type+    AWSResponse UpdateSubnetGroup =+      UpdateSubnetGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateSubnetGroupResponse'+            Prelude.<$> (x Data..?> "SubnetGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateSubnetGroup where+  hashWithSalt _salt UpdateSubnetGroup' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` subnetIds+      `Prelude.hashWithSalt` subnetGroupName++instance Prelude.NFData UpdateSubnetGroup where+  rnf UpdateSubnetGroup' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf subnetIds+      `Prelude.seq` Prelude.rnf subnetGroupName++instance Data.ToHeaders UpdateSubnetGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "AmazonMemoryDB.UpdateSubnetGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateSubnetGroup where+  toJSON UpdateSubnetGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("SubnetIds" Data..=) Prelude.<$> subnetIds,+            Prelude.Just+              ("SubnetGroupName" Data..= subnetGroupName)+          ]+      )++instance Data.ToPath UpdateSubnetGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateSubnetGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateSubnetGroupResponse' smart constructor.+data UpdateSubnetGroupResponse = UpdateSubnetGroupResponse'+  { -- | The updated subnet group+    subnetGroup :: Prelude.Maybe SubnetGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateSubnetGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'subnetGroup', 'updateSubnetGroupResponse_subnetGroup' - The updated subnet group+--+-- 'httpStatus', 'updateSubnetGroupResponse_httpStatus' - The response's http status code.+newUpdateSubnetGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateSubnetGroupResponse+newUpdateSubnetGroupResponse pHttpStatus_ =+  UpdateSubnetGroupResponse'+    { subnetGroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The updated subnet group+updateSubnetGroupResponse_subnetGroup :: Lens.Lens' UpdateSubnetGroupResponse (Prelude.Maybe SubnetGroup)+updateSubnetGroupResponse_subnetGroup = Lens.lens (\UpdateSubnetGroupResponse' {subnetGroup} -> subnetGroup) (\s@UpdateSubnetGroupResponse' {} a -> s {subnetGroup = a} :: UpdateSubnetGroupResponse)++-- | The response's http status code.+updateSubnetGroupResponse_httpStatus :: Lens.Lens' UpdateSubnetGroupResponse Prelude.Int+updateSubnetGroupResponse_httpStatus = Lens.lens (\UpdateSubnetGroupResponse' {httpStatus} -> httpStatus) (\s@UpdateSubnetGroupResponse' {} a -> s {httpStatus = a} :: UpdateSubnetGroupResponse)++instance Prelude.NFData UpdateSubnetGroupResponse where+  rnf UpdateSubnetGroupResponse' {..} =+    Prelude.rnf subnetGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/UpdateUser.hs view
@@ -0,0 +1,198 @@+{-# 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.MemoryDb.UpdateUser+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Changes user password(s) and\/or access string.+module Amazonka.MemoryDb.UpdateUser+  ( -- * Creating a Request+    UpdateUser (..),+    newUpdateUser,++    -- * Request Lenses+    updateUser_accessString,+    updateUser_authenticationMode,+    updateUser_userName,++    -- * Destructuring the Response+    UpdateUserResponse (..),+    newUpdateUserResponse,++    -- * Response Lenses+    updateUserResponse_user,+    updateUserResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateUser' smart constructor.+data UpdateUser = UpdateUser'+  { -- | Access permissions string used for this user.+    accessString :: Prelude.Maybe Prelude.Text,+    -- | Denotes the user\'s authentication properties, such as whether it+    -- requires a password to authenticate.+    authenticationMode :: Prelude.Maybe AuthenticationMode,+    -- | The name of the user+    userName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateUser' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accessString', 'updateUser_accessString' - Access permissions string used for this user.+--+-- 'authenticationMode', 'updateUser_authenticationMode' - Denotes the user\'s authentication properties, such as whether it+-- requires a password to authenticate.+--+-- 'userName', 'updateUser_userName' - The name of the user+newUpdateUser ::+  -- | 'userName'+  Prelude.Text ->+  UpdateUser+newUpdateUser pUserName_ =+  UpdateUser'+    { accessString = Prelude.Nothing,+      authenticationMode = Prelude.Nothing,+      userName = pUserName_+    }++-- | Access permissions string used for this user.+updateUser_accessString :: Lens.Lens' UpdateUser (Prelude.Maybe Prelude.Text)+updateUser_accessString = Lens.lens (\UpdateUser' {accessString} -> accessString) (\s@UpdateUser' {} a -> s {accessString = a} :: UpdateUser)++-- | Denotes the user\'s authentication properties, such as whether it+-- requires a password to authenticate.+updateUser_authenticationMode :: Lens.Lens' UpdateUser (Prelude.Maybe AuthenticationMode)+updateUser_authenticationMode = Lens.lens (\UpdateUser' {authenticationMode} -> authenticationMode) (\s@UpdateUser' {} a -> s {authenticationMode = a} :: UpdateUser)++-- | The name of the user+updateUser_userName :: Lens.Lens' UpdateUser Prelude.Text+updateUser_userName = Lens.lens (\UpdateUser' {userName} -> userName) (\s@UpdateUser' {} a -> s {userName = a} :: UpdateUser)++instance Core.AWSRequest UpdateUser where+  type AWSResponse UpdateUser = UpdateUserResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateUserResponse'+            Prelude.<$> (x Data..?> "User")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateUser where+  hashWithSalt _salt UpdateUser' {..} =+    _salt+      `Prelude.hashWithSalt` accessString+      `Prelude.hashWithSalt` authenticationMode+      `Prelude.hashWithSalt` userName++instance Prelude.NFData UpdateUser where+  rnf UpdateUser' {..} =+    Prelude.rnf accessString+      `Prelude.seq` Prelude.rnf authenticationMode+      `Prelude.seq` Prelude.rnf userName++instance Data.ToHeaders UpdateUser where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ("AmazonMemoryDB.UpdateUser" :: Prelude.ByteString),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateUser where+  toJSON UpdateUser' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AccessString" Data..=) Prelude.<$> accessString,+            ("AuthenticationMode" Data..=)+              Prelude.<$> authenticationMode,+            Prelude.Just ("UserName" Data..= userName)+          ]+      )++instance Data.ToPath UpdateUser where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateUser where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateUserResponse' smart constructor.+data UpdateUserResponse = UpdateUserResponse'+  { -- | The updated user+    user :: Prelude.Maybe User,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateUserResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'user', 'updateUserResponse_user' - The updated user+--+-- 'httpStatus', 'updateUserResponse_httpStatus' - The response's http status code.+newUpdateUserResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateUserResponse+newUpdateUserResponse pHttpStatus_ =+  UpdateUserResponse'+    { user = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The updated user+updateUserResponse_user :: Lens.Lens' UpdateUserResponse (Prelude.Maybe User)+updateUserResponse_user = Lens.lens (\UpdateUserResponse' {user} -> user) (\s@UpdateUserResponse' {} a -> s {user = a} :: UpdateUserResponse)++-- | The response's http status code.+updateUserResponse_httpStatus :: Lens.Lens' UpdateUserResponse Prelude.Int+updateUserResponse_httpStatus = Lens.lens (\UpdateUserResponse' {httpStatus} -> httpStatus) (\s@UpdateUserResponse' {} a -> s {httpStatus = a} :: UpdateUserResponse)++instance Prelude.NFData UpdateUserResponse where+  rnf UpdateUserResponse' {..} =+    Prelude.rnf user+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/MemoryDb/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.MemoryDb.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.MemoryDb.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.MemoryDb.Lens+import Amazonka.MemoryDb.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.MemoryDb+import Test.Amazonka.MemoryDb.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "MemoryDb"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/MemoryDb.hs view
@@ -0,0 +1,798 @@+{-# 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.MemoryDb+-- 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.MemoryDb where++import Amazonka.MemoryDb+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.MemoryDb.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"+--         [ requestBatchUpdateCluster $+--             newBatchUpdateCluster+--+--         , requestCopySnapshot $+--             newCopySnapshot+--+--         , requestCreateACL $+--             newCreateACL+--+--         , requestCreateCluster $+--             newCreateCluster+--+--         , requestCreateParameterGroup $+--             newCreateParameterGroup+--+--         , requestCreateSnapshot $+--             newCreateSnapshot+--+--         , requestCreateSubnetGroup $+--             newCreateSubnetGroup+--+--         , requestCreateUser $+--             newCreateUser+--+--         , requestDeleteACL $+--             newDeleteACL+--+--         , requestDeleteCluster $+--             newDeleteCluster+--+--         , requestDeleteParameterGroup $+--             newDeleteParameterGroup+--+--         , requestDeleteSnapshot $+--             newDeleteSnapshot+--+--         , requestDeleteSubnetGroup $+--             newDeleteSubnetGroup+--+--         , requestDeleteUser $+--             newDeleteUser+--+--         , requestDescribeACLs $+--             newDescribeACLs+--+--         , requestDescribeClusters $+--             newDescribeClusters+--+--         , requestDescribeEngineVersions $+--             newDescribeEngineVersions+--+--         , requestDescribeEvents $+--             newDescribeEvents+--+--         , requestDescribeParameterGroups $+--             newDescribeParameterGroups+--+--         , requestDescribeParameters $+--             newDescribeParameters+--+--         , requestDescribeReservedNodes $+--             newDescribeReservedNodes+--+--         , requestDescribeReservedNodesOfferings $+--             newDescribeReservedNodesOfferings+--+--         , requestDescribeServiceUpdates $+--             newDescribeServiceUpdates+--+--         , requestDescribeSnapshots $+--             newDescribeSnapshots+--+--         , requestDescribeSubnetGroups $+--             newDescribeSubnetGroups+--+--         , requestDescribeUsers $+--             newDescribeUsers+--+--         , requestFailoverShard $+--             newFailoverShard+--+--         , requestListAllowedNodeTypeUpdates $+--             newListAllowedNodeTypeUpdates+--+--         , requestListTags $+--             newListTags+--+--         , requestPurchaseReservedNodesOffering $+--             newPurchaseReservedNodesOffering+--+--         , requestResetParameterGroup $+--             newResetParameterGroup+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateACL $+--             newUpdateACL+--+--         , requestUpdateCluster $+--             newUpdateCluster+--+--         , requestUpdateParameterGroup $+--             newUpdateParameterGroup+--+--         , requestUpdateSubnetGroup $+--             newUpdateSubnetGroup+--+--         , requestUpdateUser $+--             newUpdateUser+--+--           ]++--     , testGroup "response"+--         [ responseBatchUpdateCluster $+--             newBatchUpdateClusterResponse+--+--         , responseCopySnapshot $+--             newCopySnapshotResponse+--+--         , responseCreateACL $+--             newCreateACLResponse+--+--         , responseCreateCluster $+--             newCreateClusterResponse+--+--         , responseCreateParameterGroup $+--             newCreateParameterGroupResponse+--+--         , responseCreateSnapshot $+--             newCreateSnapshotResponse+--+--         , responseCreateSubnetGroup $+--             newCreateSubnetGroupResponse+--+--         , responseCreateUser $+--             newCreateUserResponse+--+--         , responseDeleteACL $+--             newDeleteACLResponse+--+--         , responseDeleteCluster $+--             newDeleteClusterResponse+--+--         , responseDeleteParameterGroup $+--             newDeleteParameterGroupResponse+--+--         , responseDeleteSnapshot $+--             newDeleteSnapshotResponse+--+--         , responseDeleteSubnetGroup $+--             newDeleteSubnetGroupResponse+--+--         , responseDeleteUser $+--             newDeleteUserResponse+--+--         , responseDescribeACLs $+--             newDescribeACLsResponse+--+--         , responseDescribeClusters $+--             newDescribeClustersResponse+--+--         , responseDescribeEngineVersions $+--             newDescribeEngineVersionsResponse+--+--         , responseDescribeEvents $+--             newDescribeEventsResponse+--+--         , responseDescribeParameterGroups $+--             newDescribeParameterGroupsResponse+--+--         , responseDescribeParameters $+--             newDescribeParametersResponse+--+--         , responseDescribeReservedNodes $+--             newDescribeReservedNodesResponse+--+--         , responseDescribeReservedNodesOfferings $+--             newDescribeReservedNodesOfferingsResponse+--+--         , responseDescribeServiceUpdates $+--             newDescribeServiceUpdatesResponse+--+--         , responseDescribeSnapshots $+--             newDescribeSnapshotsResponse+--+--         , responseDescribeSubnetGroups $+--             newDescribeSubnetGroupsResponse+--+--         , responseDescribeUsers $+--             newDescribeUsersResponse+--+--         , responseFailoverShard $+--             newFailoverShardResponse+--+--         , responseListAllowedNodeTypeUpdates $+--             newListAllowedNodeTypeUpdatesResponse+--+--         , responseListTags $+--             newListTagsResponse+--+--         , responsePurchaseReservedNodesOffering $+--             newPurchaseReservedNodesOfferingResponse+--+--         , responseResetParameterGroup $+--             newResetParameterGroupResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateACL $+--             newUpdateACLResponse+--+--         , responseUpdateCluster $+--             newUpdateClusterResponse+--+--         , responseUpdateParameterGroup $+--             newUpdateParameterGroupResponse+--+--         , responseUpdateSubnetGroup $+--             newUpdateSubnetGroupResponse+--+--         , responseUpdateUser $+--             newUpdateUserResponse+--+--           ]+--     ]++-- Requests++requestBatchUpdateCluster :: BatchUpdateCluster -> TestTree+requestBatchUpdateCluster =+  req+    "BatchUpdateCluster"+    "fixture/BatchUpdateCluster.yaml"++requestCopySnapshot :: CopySnapshot -> TestTree+requestCopySnapshot =+  req+    "CopySnapshot"+    "fixture/CopySnapshot.yaml"++requestCreateACL :: CreateACL -> TestTree+requestCreateACL =+  req+    "CreateACL"+    "fixture/CreateACL.yaml"++requestCreateCluster :: CreateCluster -> TestTree+requestCreateCluster =+  req+    "CreateCluster"+    "fixture/CreateCluster.yaml"++requestCreateParameterGroup :: CreateParameterGroup -> TestTree+requestCreateParameterGroup =+  req+    "CreateParameterGroup"+    "fixture/CreateParameterGroup.yaml"++requestCreateSnapshot :: CreateSnapshot -> TestTree+requestCreateSnapshot =+  req+    "CreateSnapshot"+    "fixture/CreateSnapshot.yaml"++requestCreateSubnetGroup :: CreateSubnetGroup -> TestTree+requestCreateSubnetGroup =+  req+    "CreateSubnetGroup"+    "fixture/CreateSubnetGroup.yaml"++requestCreateUser :: CreateUser -> TestTree+requestCreateUser =+  req+    "CreateUser"+    "fixture/CreateUser.yaml"++requestDeleteACL :: DeleteACL -> TestTree+requestDeleteACL =+  req+    "DeleteACL"+    "fixture/DeleteACL.yaml"++requestDeleteCluster :: DeleteCluster -> TestTree+requestDeleteCluster =+  req+    "DeleteCluster"+    "fixture/DeleteCluster.yaml"++requestDeleteParameterGroup :: DeleteParameterGroup -> TestTree+requestDeleteParameterGroup =+  req+    "DeleteParameterGroup"+    "fixture/DeleteParameterGroup.yaml"++requestDeleteSnapshot :: DeleteSnapshot -> TestTree+requestDeleteSnapshot =+  req+    "DeleteSnapshot"+    "fixture/DeleteSnapshot.yaml"++requestDeleteSubnetGroup :: DeleteSubnetGroup -> TestTree+requestDeleteSubnetGroup =+  req+    "DeleteSubnetGroup"+    "fixture/DeleteSubnetGroup.yaml"++requestDeleteUser :: DeleteUser -> TestTree+requestDeleteUser =+  req+    "DeleteUser"+    "fixture/DeleteUser.yaml"++requestDescribeACLs :: DescribeACLs -> TestTree+requestDescribeACLs =+  req+    "DescribeACLs"+    "fixture/DescribeACLs.yaml"++requestDescribeClusters :: DescribeClusters -> TestTree+requestDescribeClusters =+  req+    "DescribeClusters"+    "fixture/DescribeClusters.yaml"++requestDescribeEngineVersions :: DescribeEngineVersions -> TestTree+requestDescribeEngineVersions =+  req+    "DescribeEngineVersions"+    "fixture/DescribeEngineVersions.yaml"++requestDescribeEvents :: DescribeEvents -> TestTree+requestDescribeEvents =+  req+    "DescribeEvents"+    "fixture/DescribeEvents.yaml"++requestDescribeParameterGroups :: DescribeParameterGroups -> TestTree+requestDescribeParameterGroups =+  req+    "DescribeParameterGroups"+    "fixture/DescribeParameterGroups.yaml"++requestDescribeParameters :: DescribeParameters -> TestTree+requestDescribeParameters =+  req+    "DescribeParameters"+    "fixture/DescribeParameters.yaml"++requestDescribeReservedNodes :: DescribeReservedNodes -> TestTree+requestDescribeReservedNodes =+  req+    "DescribeReservedNodes"+    "fixture/DescribeReservedNodes.yaml"++requestDescribeReservedNodesOfferings :: DescribeReservedNodesOfferings -> TestTree+requestDescribeReservedNodesOfferings =+  req+    "DescribeReservedNodesOfferings"+    "fixture/DescribeReservedNodesOfferings.yaml"++requestDescribeServiceUpdates :: DescribeServiceUpdates -> TestTree+requestDescribeServiceUpdates =+  req+    "DescribeServiceUpdates"+    "fixture/DescribeServiceUpdates.yaml"++requestDescribeSnapshots :: DescribeSnapshots -> TestTree+requestDescribeSnapshots =+  req+    "DescribeSnapshots"+    "fixture/DescribeSnapshots.yaml"++requestDescribeSubnetGroups :: DescribeSubnetGroups -> TestTree+requestDescribeSubnetGroups =+  req+    "DescribeSubnetGroups"+    "fixture/DescribeSubnetGroups.yaml"++requestDescribeUsers :: DescribeUsers -> TestTree+requestDescribeUsers =+  req+    "DescribeUsers"+    "fixture/DescribeUsers.yaml"++requestFailoverShard :: FailoverShard -> TestTree+requestFailoverShard =+  req+    "FailoverShard"+    "fixture/FailoverShard.yaml"++requestListAllowedNodeTypeUpdates :: ListAllowedNodeTypeUpdates -> TestTree+requestListAllowedNodeTypeUpdates =+  req+    "ListAllowedNodeTypeUpdates"+    "fixture/ListAllowedNodeTypeUpdates.yaml"++requestListTags :: ListTags -> TestTree+requestListTags =+  req+    "ListTags"+    "fixture/ListTags.yaml"++requestPurchaseReservedNodesOffering :: PurchaseReservedNodesOffering -> TestTree+requestPurchaseReservedNodesOffering =+  req+    "PurchaseReservedNodesOffering"+    "fixture/PurchaseReservedNodesOffering.yaml"++requestResetParameterGroup :: ResetParameterGroup -> TestTree+requestResetParameterGroup =+  req+    "ResetParameterGroup"+    "fixture/ResetParameterGroup.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateACL :: UpdateACL -> TestTree+requestUpdateACL =+  req+    "UpdateACL"+    "fixture/UpdateACL.yaml"++requestUpdateCluster :: UpdateCluster -> TestTree+requestUpdateCluster =+  req+    "UpdateCluster"+    "fixture/UpdateCluster.yaml"++requestUpdateParameterGroup :: UpdateParameterGroup -> TestTree+requestUpdateParameterGroup =+  req+    "UpdateParameterGroup"+    "fixture/UpdateParameterGroup.yaml"++requestUpdateSubnetGroup :: UpdateSubnetGroup -> TestTree+requestUpdateSubnetGroup =+  req+    "UpdateSubnetGroup"+    "fixture/UpdateSubnetGroup.yaml"++requestUpdateUser :: UpdateUser -> TestTree+requestUpdateUser =+  req+    "UpdateUser"+    "fixture/UpdateUser.yaml"++-- Responses++responseBatchUpdateCluster :: BatchUpdateClusterResponse -> TestTree+responseBatchUpdateCluster =+  res+    "BatchUpdateClusterResponse"+    "fixture/BatchUpdateClusterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchUpdateCluster)++responseCopySnapshot :: CopySnapshotResponse -> TestTree+responseCopySnapshot =+  res+    "CopySnapshotResponse"+    "fixture/CopySnapshotResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CopySnapshot)++responseCreateACL :: CreateACLResponse -> TestTree+responseCreateACL =+  res+    "CreateACLResponse"+    "fixture/CreateACLResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateACL)++responseCreateCluster :: CreateClusterResponse -> TestTree+responseCreateCluster =+  res+    "CreateClusterResponse"+    "fixture/CreateClusterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateCluster)++responseCreateParameterGroup :: CreateParameterGroupResponse -> TestTree+responseCreateParameterGroup =+  res+    "CreateParameterGroupResponse"+    "fixture/CreateParameterGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateParameterGroup)++responseCreateSnapshot :: CreateSnapshotResponse -> TestTree+responseCreateSnapshot =+  res+    "CreateSnapshotResponse"+    "fixture/CreateSnapshotResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateSnapshot)++responseCreateSubnetGroup :: CreateSubnetGroupResponse -> TestTree+responseCreateSubnetGroup =+  res+    "CreateSubnetGroupResponse"+    "fixture/CreateSubnetGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateSubnetGroup)++responseCreateUser :: CreateUserResponse -> TestTree+responseCreateUser =+  res+    "CreateUserResponse"+    "fixture/CreateUserResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateUser)++responseDeleteACL :: DeleteACLResponse -> TestTree+responseDeleteACL =+  res+    "DeleteACLResponse"+    "fixture/DeleteACLResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteACL)++responseDeleteCluster :: DeleteClusterResponse -> TestTree+responseDeleteCluster =+  res+    "DeleteClusterResponse"+    "fixture/DeleteClusterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteCluster)++responseDeleteParameterGroup :: DeleteParameterGroupResponse -> TestTree+responseDeleteParameterGroup =+  res+    "DeleteParameterGroupResponse"+    "fixture/DeleteParameterGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteParameterGroup)++responseDeleteSnapshot :: DeleteSnapshotResponse -> TestTree+responseDeleteSnapshot =+  res+    "DeleteSnapshotResponse"+    "fixture/DeleteSnapshotResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteSnapshot)++responseDeleteSubnetGroup :: DeleteSubnetGroupResponse -> TestTree+responseDeleteSubnetGroup =+  res+    "DeleteSubnetGroupResponse"+    "fixture/DeleteSubnetGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteSubnetGroup)++responseDeleteUser :: DeleteUserResponse -> TestTree+responseDeleteUser =+  res+    "DeleteUserResponse"+    "fixture/DeleteUserResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteUser)++responseDescribeACLs :: DescribeACLsResponse -> TestTree+responseDescribeACLs =+  res+    "DescribeACLsResponse"+    "fixture/DescribeACLsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeACLs)++responseDescribeClusters :: DescribeClustersResponse -> TestTree+responseDescribeClusters =+  res+    "DescribeClustersResponse"+    "fixture/DescribeClustersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeClusters)++responseDescribeEngineVersions :: DescribeEngineVersionsResponse -> TestTree+responseDescribeEngineVersions =+  res+    "DescribeEngineVersionsResponse"+    "fixture/DescribeEngineVersionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeEngineVersions)++responseDescribeEvents :: DescribeEventsResponse -> TestTree+responseDescribeEvents =+  res+    "DescribeEventsResponse"+    "fixture/DescribeEventsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeEvents)++responseDescribeParameterGroups :: DescribeParameterGroupsResponse -> TestTree+responseDescribeParameterGroups =+  res+    "DescribeParameterGroupsResponse"+    "fixture/DescribeParameterGroupsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeParameterGroups)++responseDescribeParameters :: DescribeParametersResponse -> TestTree+responseDescribeParameters =+  res+    "DescribeParametersResponse"+    "fixture/DescribeParametersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeParameters)++responseDescribeReservedNodes :: DescribeReservedNodesResponse -> TestTree+responseDescribeReservedNodes =+  res+    "DescribeReservedNodesResponse"+    "fixture/DescribeReservedNodesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeReservedNodes)++responseDescribeReservedNodesOfferings :: DescribeReservedNodesOfferingsResponse -> TestTree+responseDescribeReservedNodesOfferings =+  res+    "DescribeReservedNodesOfferingsResponse"+    "fixture/DescribeReservedNodesOfferingsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeReservedNodesOfferings)++responseDescribeServiceUpdates :: DescribeServiceUpdatesResponse -> TestTree+responseDescribeServiceUpdates =+  res+    "DescribeServiceUpdatesResponse"+    "fixture/DescribeServiceUpdatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeServiceUpdates)++responseDescribeSnapshots :: DescribeSnapshotsResponse -> TestTree+responseDescribeSnapshots =+  res+    "DescribeSnapshotsResponse"+    "fixture/DescribeSnapshotsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeSnapshots)++responseDescribeSubnetGroups :: DescribeSubnetGroupsResponse -> TestTree+responseDescribeSubnetGroups =+  res+    "DescribeSubnetGroupsResponse"+    "fixture/DescribeSubnetGroupsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeSubnetGroups)++responseDescribeUsers :: DescribeUsersResponse -> TestTree+responseDescribeUsers =+  res+    "DescribeUsersResponse"+    "fixture/DescribeUsersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeUsers)++responseFailoverShard :: FailoverShardResponse -> TestTree+responseFailoverShard =+  res+    "FailoverShardResponse"+    "fixture/FailoverShardResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy FailoverShard)++responseListAllowedNodeTypeUpdates :: ListAllowedNodeTypeUpdatesResponse -> TestTree+responseListAllowedNodeTypeUpdates =+  res+    "ListAllowedNodeTypeUpdatesResponse"+    "fixture/ListAllowedNodeTypeUpdatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAllowedNodeTypeUpdates)++responseListTags :: ListTagsResponse -> TestTree+responseListTags =+  res+    "ListTagsResponse"+    "fixture/ListTagsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTags)++responsePurchaseReservedNodesOffering :: PurchaseReservedNodesOfferingResponse -> TestTree+responsePurchaseReservedNodesOffering =+  res+    "PurchaseReservedNodesOfferingResponse"+    "fixture/PurchaseReservedNodesOfferingResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PurchaseReservedNodesOffering)++responseResetParameterGroup :: ResetParameterGroupResponse -> TestTree+responseResetParameterGroup =+  res+    "ResetParameterGroupResponse"+    "fixture/ResetParameterGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ResetParameterGroup)++responseTagResource :: TagResourceResponse -> TestTree+responseTagResource =+  res+    "TagResourceResponse"+    "fixture/TagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TagResource)++responseUntagResource :: UntagResourceResponse -> TestTree+responseUntagResource =+  res+    "UntagResourceResponse"+    "fixture/UntagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UntagResource)++responseUpdateACL :: UpdateACLResponse -> TestTree+responseUpdateACL =+  res+    "UpdateACLResponse"+    "fixture/UpdateACLResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateACL)++responseUpdateCluster :: UpdateClusterResponse -> TestTree+responseUpdateCluster =+  res+    "UpdateClusterResponse"+    "fixture/UpdateClusterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateCluster)++responseUpdateParameterGroup :: UpdateParameterGroupResponse -> TestTree+responseUpdateParameterGroup =+  res+    "UpdateParameterGroupResponse"+    "fixture/UpdateParameterGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateParameterGroup)++responseUpdateSubnetGroup :: UpdateSubnetGroupResponse -> TestTree+responseUpdateSubnetGroup =+  res+    "UpdateSubnetGroupResponse"+    "fixture/UpdateSubnetGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateSubnetGroup)++responseUpdateUser :: UpdateUserResponse -> TestTree+responseUpdateUser =+  res+    "UpdateUserResponse"+    "fixture/UpdateUserResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateUser)
+ test/Test/Amazonka/MemoryDb.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.MemoryDb+-- 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.MemoryDb+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/MemoryDb/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.MemoryDb.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.MemoryDb.Internal where