packages feed

amazonka-appmesh (empty) → 2.0

raw patch · 288 files changed

+32674/−0 lines, 288 filesdep +amazonka-appmeshdep +amazonka-coredep +amazonka-test

Dependencies added: amazonka-appmesh, amazonka-core, 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 App Mesh SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2019-01-25@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-appmesh)+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.AppMesh](http://hackage.haskell.org/package/amazonka-appmesh/docs/Amazonka-AppMesh.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-appmesh` 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-appmesh.cabal view
@@ -0,0 +1,283 @@+cabal-version:      2.2+name:               amazonka-appmesh+version:            2.0+synopsis:           Amazon App Mesh SDK.+homepage:           https://github.com/brendanhay/amazonka+bug-reports:        https://github.com/brendanhay/amazonka/issues+license:            MPL-2.0+license-file:       LICENSE+author:             Brendan Hay+maintainer:+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>++copyright:          Copyright (c) 2013-2023 Brendan Hay+category:           AWS+build-type:         Simple+extra-source-files:+  fixture/*.proto+  fixture/*.yaml+  README.md+  src/.gitkeep++description:+  Derived from API version @2019-01-25@ 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.AppMesh.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.AppMesh" 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-appmesh++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.AppMesh+    Amazonka.AppMesh.CreateGatewayRoute+    Amazonka.AppMesh.CreateMesh+    Amazonka.AppMesh.CreateRoute+    Amazonka.AppMesh.CreateVirtualGateway+    Amazonka.AppMesh.CreateVirtualNode+    Amazonka.AppMesh.CreateVirtualRouter+    Amazonka.AppMesh.CreateVirtualService+    Amazonka.AppMesh.DeleteGatewayRoute+    Amazonka.AppMesh.DeleteMesh+    Amazonka.AppMesh.DeleteRoute+    Amazonka.AppMesh.DeleteVirtualGateway+    Amazonka.AppMesh.DeleteVirtualNode+    Amazonka.AppMesh.DeleteVirtualRouter+    Amazonka.AppMesh.DeleteVirtualService+    Amazonka.AppMesh.DescribeGatewayRoute+    Amazonka.AppMesh.DescribeMesh+    Amazonka.AppMesh.DescribeRoute+    Amazonka.AppMesh.DescribeVirtualGateway+    Amazonka.AppMesh.DescribeVirtualNode+    Amazonka.AppMesh.DescribeVirtualRouter+    Amazonka.AppMesh.DescribeVirtualService+    Amazonka.AppMesh.Lens+    Amazonka.AppMesh.ListGatewayRoutes+    Amazonka.AppMesh.ListMeshes+    Amazonka.AppMesh.ListRoutes+    Amazonka.AppMesh.ListTagsForResource+    Amazonka.AppMesh.ListVirtualGateways+    Amazonka.AppMesh.ListVirtualNodes+    Amazonka.AppMesh.ListVirtualRouters+    Amazonka.AppMesh.ListVirtualServices+    Amazonka.AppMesh.TagResource+    Amazonka.AppMesh.Types+    Amazonka.AppMesh.Types.AccessLog+    Amazonka.AppMesh.Types.AwsCloudMapInstanceAttribute+    Amazonka.AppMesh.Types.AwsCloudMapServiceDiscovery+    Amazonka.AppMesh.Types.Backend+    Amazonka.AppMesh.Types.BackendDefaults+    Amazonka.AppMesh.Types.ClientPolicy+    Amazonka.AppMesh.Types.ClientPolicyTls+    Amazonka.AppMesh.Types.ClientTlsCertificate+    Amazonka.AppMesh.Types.DefaultGatewayRouteRewrite+    Amazonka.AppMesh.Types.DnsResponseType+    Amazonka.AppMesh.Types.DnsServiceDiscovery+    Amazonka.AppMesh.Types.Duration+    Amazonka.AppMesh.Types.DurationUnit+    Amazonka.AppMesh.Types.EgressFilter+    Amazonka.AppMesh.Types.EgressFilterType+    Amazonka.AppMesh.Types.FileAccessLog+    Amazonka.AppMesh.Types.GatewayRouteData+    Amazonka.AppMesh.Types.GatewayRouteHostnameMatch+    Amazonka.AppMesh.Types.GatewayRouteHostnameRewrite+    Amazonka.AppMesh.Types.GatewayRouteRef+    Amazonka.AppMesh.Types.GatewayRouteSpec+    Amazonka.AppMesh.Types.GatewayRouteStatus+    Amazonka.AppMesh.Types.GatewayRouteStatusCode+    Amazonka.AppMesh.Types.GatewayRouteTarget+    Amazonka.AppMesh.Types.GatewayRouteVirtualService+    Amazonka.AppMesh.Types.GrpcGatewayRoute+    Amazonka.AppMesh.Types.GrpcGatewayRouteAction+    Amazonka.AppMesh.Types.GrpcGatewayRouteMatch+    Amazonka.AppMesh.Types.GrpcGatewayRouteMetadata+    Amazonka.AppMesh.Types.GrpcGatewayRouteRewrite+    Amazonka.AppMesh.Types.GrpcMetadataMatchMethod+    Amazonka.AppMesh.Types.GrpcRetryPolicy+    Amazonka.AppMesh.Types.GrpcRetryPolicyEvent+    Amazonka.AppMesh.Types.GrpcRoute+    Amazonka.AppMesh.Types.GrpcRouteAction+    Amazonka.AppMesh.Types.GrpcRouteMatch+    Amazonka.AppMesh.Types.GrpcRouteMetadata+    Amazonka.AppMesh.Types.GrpcRouteMetadataMatchMethod+    Amazonka.AppMesh.Types.GrpcTimeout+    Amazonka.AppMesh.Types.HeaderMatchMethod+    Amazonka.AppMesh.Types.HealthCheckPolicy+    Amazonka.AppMesh.Types.HttpGatewayRoute+    Amazonka.AppMesh.Types.HttpGatewayRouteAction+    Amazonka.AppMesh.Types.HttpGatewayRouteHeader+    Amazonka.AppMesh.Types.HttpGatewayRouteMatch+    Amazonka.AppMesh.Types.HttpGatewayRoutePathRewrite+    Amazonka.AppMesh.Types.HttpGatewayRoutePrefixRewrite+    Amazonka.AppMesh.Types.HttpGatewayRouteRewrite+    Amazonka.AppMesh.Types.HttpMethod+    Amazonka.AppMesh.Types.HttpPathMatch+    Amazonka.AppMesh.Types.HttpQueryParameter+    Amazonka.AppMesh.Types.HttpRetryPolicy+    Amazonka.AppMesh.Types.HttpRoute+    Amazonka.AppMesh.Types.HttpRouteAction+    Amazonka.AppMesh.Types.HttpRouteHeader+    Amazonka.AppMesh.Types.HttpRouteMatch+    Amazonka.AppMesh.Types.HttpScheme+    Amazonka.AppMesh.Types.HttpTimeout+    Amazonka.AppMesh.Types.IpPreference+    Amazonka.AppMesh.Types.JsonFormatRef+    Amazonka.AppMesh.Types.Listener+    Amazonka.AppMesh.Types.ListenerTimeout+    Amazonka.AppMesh.Types.ListenerTls+    Amazonka.AppMesh.Types.ListenerTlsAcmCertificate+    Amazonka.AppMesh.Types.ListenerTlsCertificate+    Amazonka.AppMesh.Types.ListenerTlsFileCertificate+    Amazonka.AppMesh.Types.ListenerTlsMode+    Amazonka.AppMesh.Types.ListenerTlsSdsCertificate+    Amazonka.AppMesh.Types.ListenerTlsValidationContext+    Amazonka.AppMesh.Types.ListenerTlsValidationContextTrust+    Amazonka.AppMesh.Types.Logging+    Amazonka.AppMesh.Types.LoggingFormat+    Amazonka.AppMesh.Types.MatchRange+    Amazonka.AppMesh.Types.MeshData+    Amazonka.AppMesh.Types.MeshRef+    Amazonka.AppMesh.Types.MeshServiceDiscovery+    Amazonka.AppMesh.Types.MeshSpec+    Amazonka.AppMesh.Types.MeshStatus+    Amazonka.AppMesh.Types.MeshStatusCode+    Amazonka.AppMesh.Types.OutlierDetection+    Amazonka.AppMesh.Types.PortMapping+    Amazonka.AppMesh.Types.PortProtocol+    Amazonka.AppMesh.Types.QueryParameterMatch+    Amazonka.AppMesh.Types.ResourceMetadata+    Amazonka.AppMesh.Types.RouteData+    Amazonka.AppMesh.Types.RouteRef+    Amazonka.AppMesh.Types.RouteSpec+    Amazonka.AppMesh.Types.RouteStatus+    Amazonka.AppMesh.Types.RouteStatusCode+    Amazonka.AppMesh.Types.ServiceDiscovery+    Amazonka.AppMesh.Types.SubjectAlternativeNameMatchers+    Amazonka.AppMesh.Types.SubjectAlternativeNames+    Amazonka.AppMesh.Types.TagRef+    Amazonka.AppMesh.Types.TcpRetryPolicyEvent+    Amazonka.AppMesh.Types.TcpRoute+    Amazonka.AppMesh.Types.TcpRouteAction+    Amazonka.AppMesh.Types.TcpRouteMatch+    Amazonka.AppMesh.Types.TcpTimeout+    Amazonka.AppMesh.Types.TlsValidationContext+    Amazonka.AppMesh.Types.TlsValidationContextAcmTrust+    Amazonka.AppMesh.Types.TlsValidationContextFileTrust+    Amazonka.AppMesh.Types.TlsValidationContextSdsTrust+    Amazonka.AppMesh.Types.TlsValidationContextTrust+    Amazonka.AppMesh.Types.VirtualGatewayAccessLog+    Amazonka.AppMesh.Types.VirtualGatewayBackendDefaults+    Amazonka.AppMesh.Types.VirtualGatewayClientPolicy+    Amazonka.AppMesh.Types.VirtualGatewayClientPolicyTls+    Amazonka.AppMesh.Types.VirtualGatewayClientTlsCertificate+    Amazonka.AppMesh.Types.VirtualGatewayConnectionPool+    Amazonka.AppMesh.Types.VirtualGatewayData+    Amazonka.AppMesh.Types.VirtualGatewayFileAccessLog+    Amazonka.AppMesh.Types.VirtualGatewayGrpcConnectionPool+    Amazonka.AppMesh.Types.VirtualGatewayHealthCheckPolicy+    Amazonka.AppMesh.Types.VirtualGatewayHttp2ConnectionPool+    Amazonka.AppMesh.Types.VirtualGatewayHttpConnectionPool+    Amazonka.AppMesh.Types.VirtualGatewayListener+    Amazonka.AppMesh.Types.VirtualGatewayListenerTls+    Amazonka.AppMesh.Types.VirtualGatewayListenerTlsAcmCertificate+    Amazonka.AppMesh.Types.VirtualGatewayListenerTlsCertificate+    Amazonka.AppMesh.Types.VirtualGatewayListenerTlsFileCertificate+    Amazonka.AppMesh.Types.VirtualGatewayListenerTlsMode+    Amazonka.AppMesh.Types.VirtualGatewayListenerTlsSdsCertificate+    Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContext+    Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContextTrust+    Amazonka.AppMesh.Types.VirtualGatewayLogging+    Amazonka.AppMesh.Types.VirtualGatewayPortMapping+    Amazonka.AppMesh.Types.VirtualGatewayPortProtocol+    Amazonka.AppMesh.Types.VirtualGatewayRef+    Amazonka.AppMesh.Types.VirtualGatewaySpec+    Amazonka.AppMesh.Types.VirtualGatewayStatus+    Amazonka.AppMesh.Types.VirtualGatewayStatusCode+    Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContext+    Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextAcmTrust+    Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextFileTrust+    Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextSdsTrust+    Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextTrust+    Amazonka.AppMesh.Types.VirtualNodeConnectionPool+    Amazonka.AppMesh.Types.VirtualNodeData+    Amazonka.AppMesh.Types.VirtualNodeGrpcConnectionPool+    Amazonka.AppMesh.Types.VirtualNodeHttp2ConnectionPool+    Amazonka.AppMesh.Types.VirtualNodeHttpConnectionPool+    Amazonka.AppMesh.Types.VirtualNodeRef+    Amazonka.AppMesh.Types.VirtualNodeServiceProvider+    Amazonka.AppMesh.Types.VirtualNodeSpec+    Amazonka.AppMesh.Types.VirtualNodeStatus+    Amazonka.AppMesh.Types.VirtualNodeStatusCode+    Amazonka.AppMesh.Types.VirtualNodeTcpConnectionPool+    Amazonka.AppMesh.Types.VirtualRouterData+    Amazonka.AppMesh.Types.VirtualRouterListener+    Amazonka.AppMesh.Types.VirtualRouterRef+    Amazonka.AppMesh.Types.VirtualRouterServiceProvider+    Amazonka.AppMesh.Types.VirtualRouterSpec+    Amazonka.AppMesh.Types.VirtualRouterStatus+    Amazonka.AppMesh.Types.VirtualRouterStatusCode+    Amazonka.AppMesh.Types.VirtualServiceBackend+    Amazonka.AppMesh.Types.VirtualServiceData+    Amazonka.AppMesh.Types.VirtualServiceProvider+    Amazonka.AppMesh.Types.VirtualServiceRef+    Amazonka.AppMesh.Types.VirtualServiceSpec+    Amazonka.AppMesh.Types.VirtualServiceStatus+    Amazonka.AppMesh.Types.VirtualServiceStatusCode+    Amazonka.AppMesh.Types.WeightedTarget+    Amazonka.AppMesh.UntagResource+    Amazonka.AppMesh.UpdateGatewayRoute+    Amazonka.AppMesh.UpdateMesh+    Amazonka.AppMesh.UpdateRoute+    Amazonka.AppMesh.UpdateVirtualGateway+    Amazonka.AppMesh.UpdateVirtualNode+    Amazonka.AppMesh.UpdateVirtualRouter+    Amazonka.AppMesh.UpdateVirtualService+    Amazonka.AppMesh.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-appmesh-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.AppMesh+    Test.Amazonka.AppMesh.Internal+    Test.Amazonka.Gen.AppMesh++  build-depends:+    , amazonka-appmesh+    , amazonka-core         >=2.0 && <2.1+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/CreateGatewayRoute.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/CreateGatewayRouteResponse.proto view
+ fixture/CreateMesh.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/CreateMeshResponse.proto view
+ fixture/CreateRoute.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/CreateRouteResponse.proto view
+ fixture/CreateVirtualGateway.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/CreateVirtualGatewayResponse.proto view
+ fixture/CreateVirtualNode.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/CreateVirtualNodeResponse.proto view
+ fixture/CreateVirtualRouter.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/CreateVirtualRouterResponse.proto view
+ fixture/CreateVirtualService.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/CreateVirtualServiceResponse.proto view
+ fixture/DeleteGatewayRoute.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DeleteGatewayRouteResponse.proto view
+ fixture/DeleteMesh.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DeleteMeshResponse.proto view
+ fixture/DeleteRoute.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DeleteRouteResponse.proto view
+ fixture/DeleteVirtualGateway.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DeleteVirtualGatewayResponse.proto view
+ fixture/DeleteVirtualNode.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DeleteVirtualNodeResponse.proto view
+ fixture/DeleteVirtualRouter.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DeleteVirtualRouterResponse.proto view
+ fixture/DeleteVirtualService.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DeleteVirtualServiceResponse.proto view
+ fixture/DescribeGatewayRoute.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DescribeGatewayRouteResponse.proto view
+ fixture/DescribeMesh.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DescribeMeshResponse.proto view
+ fixture/DescribeRoute.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DescribeRouteResponse.proto view
+ fixture/DescribeVirtualGateway.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DescribeVirtualGatewayResponse.proto view
+ fixture/DescribeVirtualNode.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DescribeVirtualNodeResponse.proto view
+ fixture/DescribeVirtualRouter.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DescribeVirtualRouterResponse.proto view
+ fixture/DescribeVirtualService.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/DescribeVirtualServiceResponse.proto view
+ fixture/ListGatewayRoutes.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/ListGatewayRoutesResponse.proto view
+ fixture/ListMeshes.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/ListMeshesResponse.proto view
+ fixture/ListRoutes.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/ListRoutesResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListTagsForResourceResponse.proto view
+ fixture/ListVirtualGateways.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/ListVirtualGatewaysResponse.proto view
+ fixture/ListVirtualNodes.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/ListVirtualNodesResponse.proto view
+ fixture/ListVirtualRouters.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/ListVirtualRoutersResponse.proto view
+ fixture/ListVirtualServices.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/ListVirtualServicesResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/UpdateGatewayRoute.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/UpdateGatewayRouteResponse.proto view
+ fixture/UpdateMesh.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/UpdateMeshResponse.proto view
+ fixture/UpdateRoute.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/UpdateRouteResponse.proto view
+ fixture/UpdateVirtualGateway.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/UpdateVirtualGatewayResponse.proto view
+ fixture/UpdateVirtualNode.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/UpdateVirtualNodeResponse.proto view
+ fixture/UpdateVirtualRouter.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/UpdateVirtualRouterResponse.proto view
+ fixture/UpdateVirtualService.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/appmesh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  appmesh.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/UpdateVirtualServiceResponse.proto view
+ gen/Amazonka/AppMesh.hs view
@@ -0,0 +1,1002 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.AppMesh+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Derived from API version @2019-01-25@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- App Mesh is a service mesh based on the Envoy proxy that makes it easy+-- to monitor and control microservices. App Mesh standardizes how your+-- microservices communicate, giving you end-to-end visibility and helping+-- to ensure high availability for your applications.+--+-- App Mesh gives you consistent visibility and network traffic controls+-- for every microservice in an application. You can use App Mesh with+-- Amazon Web Services Fargate, Amazon ECS, Amazon EKS, Kubernetes on+-- Amazon Web Services, and Amazon EC2.+--+-- App Mesh supports microservice applications that use service discovery+-- naming for their components. For more information about service+-- discovery on Amazon ECS, see+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html Service Discovery>+-- in the /Amazon Elastic Container Service Developer Guide/. Kubernetes+-- @kube-dns@ and @coredns@ are supported. For more information, see+-- <https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/ DNS for Services and Pods>+-- in the Kubernetes documentation.+module Amazonka.AppMesh+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** BadRequestException+    _BadRequestException,++    -- ** ConflictException+    _ConflictException,++    -- ** ForbiddenException+    _ForbiddenException,++    -- ** InternalServerErrorException+    _InternalServerErrorException,++    -- ** LimitExceededException+    _LimitExceededException,++    -- ** NotFoundException+    _NotFoundException,++    -- ** ResourceInUseException+    _ResourceInUseException,++    -- ** ServiceUnavailableException+    _ServiceUnavailableException,++    -- ** TooManyRequestsException+    _TooManyRequestsException,++    -- ** TooManyTagsException+    _TooManyTagsException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** CreateGatewayRoute+    CreateGatewayRoute (CreateGatewayRoute'),+    newCreateGatewayRoute,+    CreateGatewayRouteResponse (CreateGatewayRouteResponse'),+    newCreateGatewayRouteResponse,++    -- ** CreateMesh+    CreateMesh (CreateMesh'),+    newCreateMesh,+    CreateMeshResponse (CreateMeshResponse'),+    newCreateMeshResponse,++    -- ** CreateRoute+    CreateRoute (CreateRoute'),+    newCreateRoute,+    CreateRouteResponse (CreateRouteResponse'),+    newCreateRouteResponse,++    -- ** CreateVirtualGateway+    CreateVirtualGateway (CreateVirtualGateway'),+    newCreateVirtualGateway,+    CreateVirtualGatewayResponse (CreateVirtualGatewayResponse'),+    newCreateVirtualGatewayResponse,++    -- ** CreateVirtualNode+    CreateVirtualNode (CreateVirtualNode'),+    newCreateVirtualNode,+    CreateVirtualNodeResponse (CreateVirtualNodeResponse'),+    newCreateVirtualNodeResponse,++    -- ** CreateVirtualRouter+    CreateVirtualRouter (CreateVirtualRouter'),+    newCreateVirtualRouter,+    CreateVirtualRouterResponse (CreateVirtualRouterResponse'),+    newCreateVirtualRouterResponse,++    -- ** CreateVirtualService+    CreateVirtualService (CreateVirtualService'),+    newCreateVirtualService,+    CreateVirtualServiceResponse (CreateVirtualServiceResponse'),+    newCreateVirtualServiceResponse,++    -- ** DeleteGatewayRoute+    DeleteGatewayRoute (DeleteGatewayRoute'),+    newDeleteGatewayRoute,+    DeleteGatewayRouteResponse (DeleteGatewayRouteResponse'),+    newDeleteGatewayRouteResponse,++    -- ** DeleteMesh+    DeleteMesh (DeleteMesh'),+    newDeleteMesh,+    DeleteMeshResponse (DeleteMeshResponse'),+    newDeleteMeshResponse,++    -- ** DeleteRoute+    DeleteRoute (DeleteRoute'),+    newDeleteRoute,+    DeleteRouteResponse (DeleteRouteResponse'),+    newDeleteRouteResponse,++    -- ** DeleteVirtualGateway+    DeleteVirtualGateway (DeleteVirtualGateway'),+    newDeleteVirtualGateway,+    DeleteVirtualGatewayResponse (DeleteVirtualGatewayResponse'),+    newDeleteVirtualGatewayResponse,++    -- ** DeleteVirtualNode+    DeleteVirtualNode (DeleteVirtualNode'),+    newDeleteVirtualNode,+    DeleteVirtualNodeResponse (DeleteVirtualNodeResponse'),+    newDeleteVirtualNodeResponse,++    -- ** DeleteVirtualRouter+    DeleteVirtualRouter (DeleteVirtualRouter'),+    newDeleteVirtualRouter,+    DeleteVirtualRouterResponse (DeleteVirtualRouterResponse'),+    newDeleteVirtualRouterResponse,++    -- ** DeleteVirtualService+    DeleteVirtualService (DeleteVirtualService'),+    newDeleteVirtualService,+    DeleteVirtualServiceResponse (DeleteVirtualServiceResponse'),+    newDeleteVirtualServiceResponse,++    -- ** DescribeGatewayRoute+    DescribeGatewayRoute (DescribeGatewayRoute'),+    newDescribeGatewayRoute,+    DescribeGatewayRouteResponse (DescribeGatewayRouteResponse'),+    newDescribeGatewayRouteResponse,++    -- ** DescribeMesh+    DescribeMesh (DescribeMesh'),+    newDescribeMesh,+    DescribeMeshResponse (DescribeMeshResponse'),+    newDescribeMeshResponse,++    -- ** DescribeRoute+    DescribeRoute (DescribeRoute'),+    newDescribeRoute,+    DescribeRouteResponse (DescribeRouteResponse'),+    newDescribeRouteResponse,++    -- ** DescribeVirtualGateway+    DescribeVirtualGateway (DescribeVirtualGateway'),+    newDescribeVirtualGateway,+    DescribeVirtualGatewayResponse (DescribeVirtualGatewayResponse'),+    newDescribeVirtualGatewayResponse,++    -- ** DescribeVirtualNode+    DescribeVirtualNode (DescribeVirtualNode'),+    newDescribeVirtualNode,+    DescribeVirtualNodeResponse (DescribeVirtualNodeResponse'),+    newDescribeVirtualNodeResponse,++    -- ** DescribeVirtualRouter+    DescribeVirtualRouter (DescribeVirtualRouter'),+    newDescribeVirtualRouter,+    DescribeVirtualRouterResponse (DescribeVirtualRouterResponse'),+    newDescribeVirtualRouterResponse,++    -- ** DescribeVirtualService+    DescribeVirtualService (DescribeVirtualService'),+    newDescribeVirtualService,+    DescribeVirtualServiceResponse (DescribeVirtualServiceResponse'),+    newDescribeVirtualServiceResponse,++    -- ** ListGatewayRoutes (Paginated)+    ListGatewayRoutes (ListGatewayRoutes'),+    newListGatewayRoutes,+    ListGatewayRoutesResponse (ListGatewayRoutesResponse'),+    newListGatewayRoutesResponse,++    -- ** ListMeshes (Paginated)+    ListMeshes (ListMeshes'),+    newListMeshes,+    ListMeshesResponse (ListMeshesResponse'),+    newListMeshesResponse,++    -- ** ListRoutes (Paginated)+    ListRoutes (ListRoutes'),+    newListRoutes,+    ListRoutesResponse (ListRoutesResponse'),+    newListRoutesResponse,++    -- ** ListTagsForResource (Paginated)+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** ListVirtualGateways (Paginated)+    ListVirtualGateways (ListVirtualGateways'),+    newListVirtualGateways,+    ListVirtualGatewaysResponse (ListVirtualGatewaysResponse'),+    newListVirtualGatewaysResponse,++    -- ** ListVirtualNodes (Paginated)+    ListVirtualNodes (ListVirtualNodes'),+    newListVirtualNodes,+    ListVirtualNodesResponse (ListVirtualNodesResponse'),+    newListVirtualNodesResponse,++    -- ** ListVirtualRouters (Paginated)+    ListVirtualRouters (ListVirtualRouters'),+    newListVirtualRouters,+    ListVirtualRoutersResponse (ListVirtualRoutersResponse'),+    newListVirtualRoutersResponse,++    -- ** ListVirtualServices (Paginated)+    ListVirtualServices (ListVirtualServices'),+    newListVirtualServices,+    ListVirtualServicesResponse (ListVirtualServicesResponse'),+    newListVirtualServicesResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateGatewayRoute+    UpdateGatewayRoute (UpdateGatewayRoute'),+    newUpdateGatewayRoute,+    UpdateGatewayRouteResponse (UpdateGatewayRouteResponse'),+    newUpdateGatewayRouteResponse,++    -- ** UpdateMesh+    UpdateMesh (UpdateMesh'),+    newUpdateMesh,+    UpdateMeshResponse (UpdateMeshResponse'),+    newUpdateMeshResponse,++    -- ** UpdateRoute+    UpdateRoute (UpdateRoute'),+    newUpdateRoute,+    UpdateRouteResponse (UpdateRouteResponse'),+    newUpdateRouteResponse,++    -- ** UpdateVirtualGateway+    UpdateVirtualGateway (UpdateVirtualGateway'),+    newUpdateVirtualGateway,+    UpdateVirtualGatewayResponse (UpdateVirtualGatewayResponse'),+    newUpdateVirtualGatewayResponse,++    -- ** UpdateVirtualNode+    UpdateVirtualNode (UpdateVirtualNode'),+    newUpdateVirtualNode,+    UpdateVirtualNodeResponse (UpdateVirtualNodeResponse'),+    newUpdateVirtualNodeResponse,++    -- ** UpdateVirtualRouter+    UpdateVirtualRouter (UpdateVirtualRouter'),+    newUpdateVirtualRouter,+    UpdateVirtualRouterResponse (UpdateVirtualRouterResponse'),+    newUpdateVirtualRouterResponse,++    -- ** UpdateVirtualService+    UpdateVirtualService (UpdateVirtualService'),+    newUpdateVirtualService,+    UpdateVirtualServiceResponse (UpdateVirtualServiceResponse'),+    newUpdateVirtualServiceResponse,++    -- * Types++    -- ** DefaultGatewayRouteRewrite+    DefaultGatewayRouteRewrite (..),++    -- ** DnsResponseType+    DnsResponseType (..),++    -- ** DurationUnit+    DurationUnit (..),++    -- ** EgressFilterType+    EgressFilterType (..),++    -- ** GatewayRouteStatusCode+    GatewayRouteStatusCode (..),++    -- ** GrpcRetryPolicyEvent+    GrpcRetryPolicyEvent (..),++    -- ** HttpMethod+    HttpMethod (..),++    -- ** HttpScheme+    HttpScheme (..),++    -- ** IpPreference+    IpPreference (..),++    -- ** ListenerTlsMode+    ListenerTlsMode (..),++    -- ** MeshStatusCode+    MeshStatusCode (..),++    -- ** PortProtocol+    PortProtocol (..),++    -- ** RouteStatusCode+    RouteStatusCode (..),++    -- ** TcpRetryPolicyEvent+    TcpRetryPolicyEvent (..),++    -- ** VirtualGatewayListenerTlsMode+    VirtualGatewayListenerTlsMode (..),++    -- ** VirtualGatewayPortProtocol+    VirtualGatewayPortProtocol (..),++    -- ** VirtualGatewayStatusCode+    VirtualGatewayStatusCode (..),++    -- ** VirtualNodeStatusCode+    VirtualNodeStatusCode (..),++    -- ** VirtualRouterStatusCode+    VirtualRouterStatusCode (..),++    -- ** VirtualServiceStatusCode+    VirtualServiceStatusCode (..),++    -- ** AccessLog+    AccessLog (AccessLog'),+    newAccessLog,++    -- ** AwsCloudMapInstanceAttribute+    AwsCloudMapInstanceAttribute (AwsCloudMapInstanceAttribute'),+    newAwsCloudMapInstanceAttribute,++    -- ** AwsCloudMapServiceDiscovery+    AwsCloudMapServiceDiscovery (AwsCloudMapServiceDiscovery'),+    newAwsCloudMapServiceDiscovery,++    -- ** Backend+    Backend (Backend'),+    newBackend,++    -- ** BackendDefaults+    BackendDefaults (BackendDefaults'),+    newBackendDefaults,++    -- ** ClientPolicy+    ClientPolicy (ClientPolicy'),+    newClientPolicy,++    -- ** ClientPolicyTls+    ClientPolicyTls (ClientPolicyTls'),+    newClientPolicyTls,++    -- ** ClientTlsCertificate+    ClientTlsCertificate (ClientTlsCertificate'),+    newClientTlsCertificate,++    -- ** DnsServiceDiscovery+    DnsServiceDiscovery (DnsServiceDiscovery'),+    newDnsServiceDiscovery,++    -- ** Duration+    Duration (Duration'),+    newDuration,++    -- ** EgressFilter+    EgressFilter (EgressFilter'),+    newEgressFilter,++    -- ** FileAccessLog+    FileAccessLog (FileAccessLog'),+    newFileAccessLog,++    -- ** GatewayRouteData+    GatewayRouteData (GatewayRouteData'),+    newGatewayRouteData,++    -- ** GatewayRouteHostnameMatch+    GatewayRouteHostnameMatch (GatewayRouteHostnameMatch'),+    newGatewayRouteHostnameMatch,++    -- ** GatewayRouteHostnameRewrite+    GatewayRouteHostnameRewrite (GatewayRouteHostnameRewrite'),+    newGatewayRouteHostnameRewrite,++    -- ** GatewayRouteRef+    GatewayRouteRef (GatewayRouteRef'),+    newGatewayRouteRef,++    -- ** GatewayRouteSpec+    GatewayRouteSpec (GatewayRouteSpec'),+    newGatewayRouteSpec,++    -- ** GatewayRouteStatus+    GatewayRouteStatus (GatewayRouteStatus'),+    newGatewayRouteStatus,++    -- ** GatewayRouteTarget+    GatewayRouteTarget (GatewayRouteTarget'),+    newGatewayRouteTarget,++    -- ** GatewayRouteVirtualService+    GatewayRouteVirtualService (GatewayRouteVirtualService'),+    newGatewayRouteVirtualService,++    -- ** GrpcGatewayRoute+    GrpcGatewayRoute (GrpcGatewayRoute'),+    newGrpcGatewayRoute,++    -- ** GrpcGatewayRouteAction+    GrpcGatewayRouteAction (GrpcGatewayRouteAction'),+    newGrpcGatewayRouteAction,++    -- ** GrpcGatewayRouteMatch+    GrpcGatewayRouteMatch (GrpcGatewayRouteMatch'),+    newGrpcGatewayRouteMatch,++    -- ** GrpcGatewayRouteMetadata+    GrpcGatewayRouteMetadata (GrpcGatewayRouteMetadata'),+    newGrpcGatewayRouteMetadata,++    -- ** GrpcGatewayRouteRewrite+    GrpcGatewayRouteRewrite (GrpcGatewayRouteRewrite'),+    newGrpcGatewayRouteRewrite,++    -- ** GrpcMetadataMatchMethod+    GrpcMetadataMatchMethod (GrpcMetadataMatchMethod'),+    newGrpcMetadataMatchMethod,++    -- ** GrpcRetryPolicy+    GrpcRetryPolicy (GrpcRetryPolicy'),+    newGrpcRetryPolicy,++    -- ** GrpcRoute+    GrpcRoute (GrpcRoute'),+    newGrpcRoute,++    -- ** GrpcRouteAction+    GrpcRouteAction (GrpcRouteAction'),+    newGrpcRouteAction,++    -- ** GrpcRouteMatch+    GrpcRouteMatch (GrpcRouteMatch'),+    newGrpcRouteMatch,++    -- ** GrpcRouteMetadata+    GrpcRouteMetadata (GrpcRouteMetadata'),+    newGrpcRouteMetadata,++    -- ** GrpcRouteMetadataMatchMethod+    GrpcRouteMetadataMatchMethod (GrpcRouteMetadataMatchMethod'),+    newGrpcRouteMetadataMatchMethod,++    -- ** GrpcTimeout+    GrpcTimeout (GrpcTimeout'),+    newGrpcTimeout,++    -- ** HeaderMatchMethod+    HeaderMatchMethod (HeaderMatchMethod'),+    newHeaderMatchMethod,++    -- ** HealthCheckPolicy+    HealthCheckPolicy (HealthCheckPolicy'),+    newHealthCheckPolicy,++    -- ** HttpGatewayRoute+    HttpGatewayRoute (HttpGatewayRoute'),+    newHttpGatewayRoute,++    -- ** HttpGatewayRouteAction+    HttpGatewayRouteAction (HttpGatewayRouteAction'),+    newHttpGatewayRouteAction,++    -- ** HttpGatewayRouteHeader+    HttpGatewayRouteHeader (HttpGatewayRouteHeader'),+    newHttpGatewayRouteHeader,++    -- ** HttpGatewayRouteMatch+    HttpGatewayRouteMatch (HttpGatewayRouteMatch'),+    newHttpGatewayRouteMatch,++    -- ** HttpGatewayRoutePathRewrite+    HttpGatewayRoutePathRewrite (HttpGatewayRoutePathRewrite'),+    newHttpGatewayRoutePathRewrite,++    -- ** HttpGatewayRoutePrefixRewrite+    HttpGatewayRoutePrefixRewrite (HttpGatewayRoutePrefixRewrite'),+    newHttpGatewayRoutePrefixRewrite,++    -- ** HttpGatewayRouteRewrite+    HttpGatewayRouteRewrite (HttpGatewayRouteRewrite'),+    newHttpGatewayRouteRewrite,++    -- ** HttpPathMatch+    HttpPathMatch (HttpPathMatch'),+    newHttpPathMatch,++    -- ** HttpQueryParameter+    HttpQueryParameter (HttpQueryParameter'),+    newHttpQueryParameter,++    -- ** HttpRetryPolicy+    HttpRetryPolicy (HttpRetryPolicy'),+    newHttpRetryPolicy,++    -- ** HttpRoute+    HttpRoute (HttpRoute'),+    newHttpRoute,++    -- ** HttpRouteAction+    HttpRouteAction (HttpRouteAction'),+    newHttpRouteAction,++    -- ** HttpRouteHeader+    HttpRouteHeader (HttpRouteHeader'),+    newHttpRouteHeader,++    -- ** HttpRouteMatch+    HttpRouteMatch (HttpRouteMatch'),+    newHttpRouteMatch,++    -- ** HttpTimeout+    HttpTimeout (HttpTimeout'),+    newHttpTimeout,++    -- ** JsonFormatRef+    JsonFormatRef (JsonFormatRef'),+    newJsonFormatRef,++    -- ** Listener+    Listener (Listener'),+    newListener,++    -- ** ListenerTimeout+    ListenerTimeout (ListenerTimeout'),+    newListenerTimeout,++    -- ** ListenerTls+    ListenerTls (ListenerTls'),+    newListenerTls,++    -- ** ListenerTlsAcmCertificate+    ListenerTlsAcmCertificate (ListenerTlsAcmCertificate'),+    newListenerTlsAcmCertificate,++    -- ** ListenerTlsCertificate+    ListenerTlsCertificate (ListenerTlsCertificate'),+    newListenerTlsCertificate,++    -- ** ListenerTlsFileCertificate+    ListenerTlsFileCertificate (ListenerTlsFileCertificate'),+    newListenerTlsFileCertificate,++    -- ** ListenerTlsSdsCertificate+    ListenerTlsSdsCertificate (ListenerTlsSdsCertificate'),+    newListenerTlsSdsCertificate,++    -- ** ListenerTlsValidationContext+    ListenerTlsValidationContext (ListenerTlsValidationContext'),+    newListenerTlsValidationContext,++    -- ** ListenerTlsValidationContextTrust+    ListenerTlsValidationContextTrust (ListenerTlsValidationContextTrust'),+    newListenerTlsValidationContextTrust,++    -- ** Logging+    Logging (Logging'),+    newLogging,++    -- ** LoggingFormat+    LoggingFormat (LoggingFormat'),+    newLoggingFormat,++    -- ** MatchRange+    MatchRange (MatchRange'),+    newMatchRange,++    -- ** MeshData+    MeshData (MeshData'),+    newMeshData,++    -- ** MeshRef+    MeshRef (MeshRef'),+    newMeshRef,++    -- ** MeshServiceDiscovery+    MeshServiceDiscovery (MeshServiceDiscovery'),+    newMeshServiceDiscovery,++    -- ** MeshSpec+    MeshSpec (MeshSpec'),+    newMeshSpec,++    -- ** MeshStatus+    MeshStatus (MeshStatus'),+    newMeshStatus,++    -- ** OutlierDetection+    OutlierDetection (OutlierDetection'),+    newOutlierDetection,++    -- ** PortMapping+    PortMapping (PortMapping'),+    newPortMapping,++    -- ** QueryParameterMatch+    QueryParameterMatch (QueryParameterMatch'),+    newQueryParameterMatch,++    -- ** ResourceMetadata+    ResourceMetadata (ResourceMetadata'),+    newResourceMetadata,++    -- ** RouteData+    RouteData (RouteData'),+    newRouteData,++    -- ** RouteRef+    RouteRef (RouteRef'),+    newRouteRef,++    -- ** RouteSpec+    RouteSpec (RouteSpec'),+    newRouteSpec,++    -- ** RouteStatus+    RouteStatus (RouteStatus'),+    newRouteStatus,++    -- ** ServiceDiscovery+    ServiceDiscovery (ServiceDiscovery'),+    newServiceDiscovery,++    -- ** SubjectAlternativeNameMatchers+    SubjectAlternativeNameMatchers (SubjectAlternativeNameMatchers'),+    newSubjectAlternativeNameMatchers,++    -- ** SubjectAlternativeNames+    SubjectAlternativeNames (SubjectAlternativeNames'),+    newSubjectAlternativeNames,++    -- ** TagRef+    TagRef (TagRef'),+    newTagRef,++    -- ** TcpRoute+    TcpRoute (TcpRoute'),+    newTcpRoute,++    -- ** TcpRouteAction+    TcpRouteAction (TcpRouteAction'),+    newTcpRouteAction,++    -- ** TcpRouteMatch+    TcpRouteMatch (TcpRouteMatch'),+    newTcpRouteMatch,++    -- ** TcpTimeout+    TcpTimeout (TcpTimeout'),+    newTcpTimeout,++    -- ** TlsValidationContext+    TlsValidationContext (TlsValidationContext'),+    newTlsValidationContext,++    -- ** TlsValidationContextAcmTrust+    TlsValidationContextAcmTrust (TlsValidationContextAcmTrust'),+    newTlsValidationContextAcmTrust,++    -- ** TlsValidationContextFileTrust+    TlsValidationContextFileTrust (TlsValidationContextFileTrust'),+    newTlsValidationContextFileTrust,++    -- ** TlsValidationContextSdsTrust+    TlsValidationContextSdsTrust (TlsValidationContextSdsTrust'),+    newTlsValidationContextSdsTrust,++    -- ** TlsValidationContextTrust+    TlsValidationContextTrust (TlsValidationContextTrust'),+    newTlsValidationContextTrust,++    -- ** VirtualGatewayAccessLog+    VirtualGatewayAccessLog (VirtualGatewayAccessLog'),+    newVirtualGatewayAccessLog,++    -- ** VirtualGatewayBackendDefaults+    VirtualGatewayBackendDefaults (VirtualGatewayBackendDefaults'),+    newVirtualGatewayBackendDefaults,++    -- ** VirtualGatewayClientPolicy+    VirtualGatewayClientPolicy (VirtualGatewayClientPolicy'),+    newVirtualGatewayClientPolicy,++    -- ** VirtualGatewayClientPolicyTls+    VirtualGatewayClientPolicyTls (VirtualGatewayClientPolicyTls'),+    newVirtualGatewayClientPolicyTls,++    -- ** VirtualGatewayClientTlsCertificate+    VirtualGatewayClientTlsCertificate (VirtualGatewayClientTlsCertificate'),+    newVirtualGatewayClientTlsCertificate,++    -- ** VirtualGatewayConnectionPool+    VirtualGatewayConnectionPool (VirtualGatewayConnectionPool'),+    newVirtualGatewayConnectionPool,++    -- ** VirtualGatewayData+    VirtualGatewayData (VirtualGatewayData'),+    newVirtualGatewayData,++    -- ** VirtualGatewayFileAccessLog+    VirtualGatewayFileAccessLog (VirtualGatewayFileAccessLog'),+    newVirtualGatewayFileAccessLog,++    -- ** VirtualGatewayGrpcConnectionPool+    VirtualGatewayGrpcConnectionPool (VirtualGatewayGrpcConnectionPool'),+    newVirtualGatewayGrpcConnectionPool,++    -- ** VirtualGatewayHealthCheckPolicy+    VirtualGatewayHealthCheckPolicy (VirtualGatewayHealthCheckPolicy'),+    newVirtualGatewayHealthCheckPolicy,++    -- ** VirtualGatewayHttp2ConnectionPool+    VirtualGatewayHttp2ConnectionPool (VirtualGatewayHttp2ConnectionPool'),+    newVirtualGatewayHttp2ConnectionPool,++    -- ** VirtualGatewayHttpConnectionPool+    VirtualGatewayHttpConnectionPool (VirtualGatewayHttpConnectionPool'),+    newVirtualGatewayHttpConnectionPool,++    -- ** VirtualGatewayListener+    VirtualGatewayListener (VirtualGatewayListener'),+    newVirtualGatewayListener,++    -- ** VirtualGatewayListenerTls+    VirtualGatewayListenerTls (VirtualGatewayListenerTls'),+    newVirtualGatewayListenerTls,++    -- ** VirtualGatewayListenerTlsAcmCertificate+    VirtualGatewayListenerTlsAcmCertificate (VirtualGatewayListenerTlsAcmCertificate'),+    newVirtualGatewayListenerTlsAcmCertificate,++    -- ** VirtualGatewayListenerTlsCertificate+    VirtualGatewayListenerTlsCertificate (VirtualGatewayListenerTlsCertificate'),+    newVirtualGatewayListenerTlsCertificate,++    -- ** VirtualGatewayListenerTlsFileCertificate+    VirtualGatewayListenerTlsFileCertificate (VirtualGatewayListenerTlsFileCertificate'),+    newVirtualGatewayListenerTlsFileCertificate,++    -- ** VirtualGatewayListenerTlsSdsCertificate+    VirtualGatewayListenerTlsSdsCertificate (VirtualGatewayListenerTlsSdsCertificate'),+    newVirtualGatewayListenerTlsSdsCertificate,++    -- ** VirtualGatewayListenerTlsValidationContext+    VirtualGatewayListenerTlsValidationContext (VirtualGatewayListenerTlsValidationContext'),+    newVirtualGatewayListenerTlsValidationContext,++    -- ** VirtualGatewayListenerTlsValidationContextTrust+    VirtualGatewayListenerTlsValidationContextTrust (VirtualGatewayListenerTlsValidationContextTrust'),+    newVirtualGatewayListenerTlsValidationContextTrust,++    -- ** VirtualGatewayLogging+    VirtualGatewayLogging (VirtualGatewayLogging'),+    newVirtualGatewayLogging,++    -- ** VirtualGatewayPortMapping+    VirtualGatewayPortMapping (VirtualGatewayPortMapping'),+    newVirtualGatewayPortMapping,++    -- ** VirtualGatewayRef+    VirtualGatewayRef (VirtualGatewayRef'),+    newVirtualGatewayRef,++    -- ** VirtualGatewaySpec+    VirtualGatewaySpec (VirtualGatewaySpec'),+    newVirtualGatewaySpec,++    -- ** VirtualGatewayStatus+    VirtualGatewayStatus (VirtualGatewayStatus'),+    newVirtualGatewayStatus,++    -- ** VirtualGatewayTlsValidationContext+    VirtualGatewayTlsValidationContext (VirtualGatewayTlsValidationContext'),+    newVirtualGatewayTlsValidationContext,++    -- ** VirtualGatewayTlsValidationContextAcmTrust+    VirtualGatewayTlsValidationContextAcmTrust (VirtualGatewayTlsValidationContextAcmTrust'),+    newVirtualGatewayTlsValidationContextAcmTrust,++    -- ** VirtualGatewayTlsValidationContextFileTrust+    VirtualGatewayTlsValidationContextFileTrust (VirtualGatewayTlsValidationContextFileTrust'),+    newVirtualGatewayTlsValidationContextFileTrust,++    -- ** VirtualGatewayTlsValidationContextSdsTrust+    VirtualGatewayTlsValidationContextSdsTrust (VirtualGatewayTlsValidationContextSdsTrust'),+    newVirtualGatewayTlsValidationContextSdsTrust,++    -- ** VirtualGatewayTlsValidationContextTrust+    VirtualGatewayTlsValidationContextTrust (VirtualGatewayTlsValidationContextTrust'),+    newVirtualGatewayTlsValidationContextTrust,++    -- ** VirtualNodeConnectionPool+    VirtualNodeConnectionPool (VirtualNodeConnectionPool'),+    newVirtualNodeConnectionPool,++    -- ** VirtualNodeData+    VirtualNodeData (VirtualNodeData'),+    newVirtualNodeData,++    -- ** VirtualNodeGrpcConnectionPool+    VirtualNodeGrpcConnectionPool (VirtualNodeGrpcConnectionPool'),+    newVirtualNodeGrpcConnectionPool,++    -- ** VirtualNodeHttp2ConnectionPool+    VirtualNodeHttp2ConnectionPool (VirtualNodeHttp2ConnectionPool'),+    newVirtualNodeHttp2ConnectionPool,++    -- ** VirtualNodeHttpConnectionPool+    VirtualNodeHttpConnectionPool (VirtualNodeHttpConnectionPool'),+    newVirtualNodeHttpConnectionPool,++    -- ** VirtualNodeRef+    VirtualNodeRef (VirtualNodeRef'),+    newVirtualNodeRef,++    -- ** VirtualNodeServiceProvider+    VirtualNodeServiceProvider (VirtualNodeServiceProvider'),+    newVirtualNodeServiceProvider,++    -- ** VirtualNodeSpec+    VirtualNodeSpec (VirtualNodeSpec'),+    newVirtualNodeSpec,++    -- ** VirtualNodeStatus+    VirtualNodeStatus (VirtualNodeStatus'),+    newVirtualNodeStatus,++    -- ** VirtualNodeTcpConnectionPool+    VirtualNodeTcpConnectionPool (VirtualNodeTcpConnectionPool'),+    newVirtualNodeTcpConnectionPool,++    -- ** VirtualRouterData+    VirtualRouterData (VirtualRouterData'),+    newVirtualRouterData,++    -- ** VirtualRouterListener+    VirtualRouterListener (VirtualRouterListener'),+    newVirtualRouterListener,++    -- ** VirtualRouterRef+    VirtualRouterRef (VirtualRouterRef'),+    newVirtualRouterRef,++    -- ** VirtualRouterServiceProvider+    VirtualRouterServiceProvider (VirtualRouterServiceProvider'),+    newVirtualRouterServiceProvider,++    -- ** VirtualRouterSpec+    VirtualRouterSpec (VirtualRouterSpec'),+    newVirtualRouterSpec,++    -- ** VirtualRouterStatus+    VirtualRouterStatus (VirtualRouterStatus'),+    newVirtualRouterStatus,++    -- ** VirtualServiceBackend+    VirtualServiceBackend (VirtualServiceBackend'),+    newVirtualServiceBackend,++    -- ** VirtualServiceData+    VirtualServiceData (VirtualServiceData'),+    newVirtualServiceData,++    -- ** VirtualServiceProvider+    VirtualServiceProvider (VirtualServiceProvider'),+    newVirtualServiceProvider,++    -- ** VirtualServiceRef+    VirtualServiceRef (VirtualServiceRef'),+    newVirtualServiceRef,++    -- ** VirtualServiceSpec+    VirtualServiceSpec (VirtualServiceSpec'),+    newVirtualServiceSpec,++    -- ** VirtualServiceStatus+    VirtualServiceStatus (VirtualServiceStatus'),+    newVirtualServiceStatus,++    -- ** WeightedTarget+    WeightedTarget (WeightedTarget'),+    newWeightedTarget,+  )+where++import Amazonka.AppMesh.CreateGatewayRoute+import Amazonka.AppMesh.CreateMesh+import Amazonka.AppMesh.CreateRoute+import Amazonka.AppMesh.CreateVirtualGateway+import Amazonka.AppMesh.CreateVirtualNode+import Amazonka.AppMesh.CreateVirtualRouter+import Amazonka.AppMesh.CreateVirtualService+import Amazonka.AppMesh.DeleteGatewayRoute+import Amazonka.AppMesh.DeleteMesh+import Amazonka.AppMesh.DeleteRoute+import Amazonka.AppMesh.DeleteVirtualGateway+import Amazonka.AppMesh.DeleteVirtualNode+import Amazonka.AppMesh.DeleteVirtualRouter+import Amazonka.AppMesh.DeleteVirtualService+import Amazonka.AppMesh.DescribeGatewayRoute+import Amazonka.AppMesh.DescribeMesh+import Amazonka.AppMesh.DescribeRoute+import Amazonka.AppMesh.DescribeVirtualGateway+import Amazonka.AppMesh.DescribeVirtualNode+import Amazonka.AppMesh.DescribeVirtualRouter+import Amazonka.AppMesh.DescribeVirtualService+import Amazonka.AppMesh.Lens+import Amazonka.AppMesh.ListGatewayRoutes+import Amazonka.AppMesh.ListMeshes+import Amazonka.AppMesh.ListRoutes+import Amazonka.AppMesh.ListTagsForResource+import Amazonka.AppMesh.ListVirtualGateways+import Amazonka.AppMesh.ListVirtualNodes+import Amazonka.AppMesh.ListVirtualRouters+import Amazonka.AppMesh.ListVirtualServices+import Amazonka.AppMesh.TagResource+import Amazonka.AppMesh.Types+import Amazonka.AppMesh.UntagResource+import Amazonka.AppMesh.UpdateGatewayRoute+import Amazonka.AppMesh.UpdateMesh+import Amazonka.AppMesh.UpdateRoute+import Amazonka.AppMesh.UpdateVirtualGateway+import Amazonka.AppMesh.UpdateVirtualNode+import Amazonka.AppMesh.UpdateVirtualRouter+import Amazonka.AppMesh.UpdateVirtualService+import Amazonka.AppMesh.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 'AppMesh'.++-- $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/AppMesh/CreateGatewayRoute.hs view
@@ -0,0 +1,310 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.CreateGatewayRoute+-- 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 gateway route.+--+-- A gateway route is attached to a virtual gateway and routes traffic to+-- an existing virtual service. If a route matches a request, it can+-- distribute traffic to a target virtual service.+--+-- For more information about gateway routes, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/gateway-routes.html Gateway routes>.+module Amazonka.AppMesh.CreateGatewayRoute+  ( -- * Creating a Request+    CreateGatewayRoute (..),+    newCreateGatewayRoute,++    -- * Request Lenses+    createGatewayRoute_clientToken,+    createGatewayRoute_meshOwner,+    createGatewayRoute_tags,+    createGatewayRoute_gatewayRouteName,+    createGatewayRoute_meshName,+    createGatewayRoute_spec,+    createGatewayRoute_virtualGatewayName,++    -- * Destructuring the Response+    CreateGatewayRouteResponse (..),+    newCreateGatewayRouteResponse,++    -- * Response Lenses+    createGatewayRouteResponse_httpStatus,+    createGatewayRouteResponse_gatewayRoute,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateGatewayRoute' smart constructor.+data CreateGatewayRoute = CreateGatewayRoute'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then the account that you specify must share+    -- the mesh with your account before you can create the resource in the+    -- service mesh. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | Optional metadata that you can apply to the gateway route to assist with+    -- categorization and organization. Each tag consists of a key and an+    -- optional value, both of which you define. Tag keys can have a maximum+    -- character length of 128 characters, and tag values can have a maximum+    -- length of 256 characters.+    tags :: Prelude.Maybe [TagRef],+    -- | The name to use for the gateway route.+    gatewayRouteName :: Prelude.Text,+    -- | The name of the service mesh to create the gateway route in.+    meshName :: Prelude.Text,+    -- | The gateway route specification to apply.+    spec :: GatewayRouteSpec,+    -- | The name of the virtual gateway to associate the gateway route with. If+    -- the virtual gateway is in a shared mesh, then you must be the owner of+    -- the virtual gateway resource.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateGatewayRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createGatewayRoute_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'createGatewayRoute_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'tags', 'createGatewayRoute_tags' - Optional metadata that you can apply to the gateway route to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+--+-- 'gatewayRouteName', 'createGatewayRoute_gatewayRouteName' - The name to use for the gateway route.+--+-- 'meshName', 'createGatewayRoute_meshName' - The name of the service mesh to create the gateway route in.+--+-- 'spec', 'createGatewayRoute_spec' - The gateway route specification to apply.+--+-- 'virtualGatewayName', 'createGatewayRoute_virtualGatewayName' - The name of the virtual gateway to associate the gateway route with. If+-- the virtual gateway is in a shared mesh, then you must be the owner of+-- the virtual gateway resource.+newCreateGatewayRoute ::+  -- | 'gatewayRouteName'+  Prelude.Text ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'spec'+  GatewayRouteSpec ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  CreateGatewayRoute+newCreateGatewayRoute+  pGatewayRouteName_+  pMeshName_+  pSpec_+  pVirtualGatewayName_ =+    CreateGatewayRoute'+      { clientToken = Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        tags = Prelude.Nothing,+        gatewayRouteName = pGatewayRouteName_,+        meshName = pMeshName_,+        spec = pSpec_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+createGatewayRoute_clientToken :: Lens.Lens' CreateGatewayRoute (Prelude.Maybe Prelude.Text)+createGatewayRoute_clientToken = Lens.lens (\CreateGatewayRoute' {clientToken} -> clientToken) (\s@CreateGatewayRoute' {} a -> s {clientToken = a} :: CreateGatewayRoute)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+createGatewayRoute_meshOwner :: Lens.Lens' CreateGatewayRoute (Prelude.Maybe Prelude.Text)+createGatewayRoute_meshOwner = Lens.lens (\CreateGatewayRoute' {meshOwner} -> meshOwner) (\s@CreateGatewayRoute' {} a -> s {meshOwner = a} :: CreateGatewayRoute)++-- | Optional metadata that you can apply to the gateway route to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+createGatewayRoute_tags :: Lens.Lens' CreateGatewayRoute (Prelude.Maybe [TagRef])+createGatewayRoute_tags = Lens.lens (\CreateGatewayRoute' {tags} -> tags) (\s@CreateGatewayRoute' {} a -> s {tags = a} :: CreateGatewayRoute) Prelude.. Lens.mapping Lens.coerced++-- | The name to use for the gateway route.+createGatewayRoute_gatewayRouteName :: Lens.Lens' CreateGatewayRoute Prelude.Text+createGatewayRoute_gatewayRouteName = Lens.lens (\CreateGatewayRoute' {gatewayRouteName} -> gatewayRouteName) (\s@CreateGatewayRoute' {} a -> s {gatewayRouteName = a} :: CreateGatewayRoute)++-- | The name of the service mesh to create the gateway route in.+createGatewayRoute_meshName :: Lens.Lens' CreateGatewayRoute Prelude.Text+createGatewayRoute_meshName = Lens.lens (\CreateGatewayRoute' {meshName} -> meshName) (\s@CreateGatewayRoute' {} a -> s {meshName = a} :: CreateGatewayRoute)++-- | The gateway route specification to apply.+createGatewayRoute_spec :: Lens.Lens' CreateGatewayRoute GatewayRouteSpec+createGatewayRoute_spec = Lens.lens (\CreateGatewayRoute' {spec} -> spec) (\s@CreateGatewayRoute' {} a -> s {spec = a} :: CreateGatewayRoute)++-- | The name of the virtual gateway to associate the gateway route with. If+-- the virtual gateway is in a shared mesh, then you must be the owner of+-- the virtual gateway resource.+createGatewayRoute_virtualGatewayName :: Lens.Lens' CreateGatewayRoute Prelude.Text+createGatewayRoute_virtualGatewayName = Lens.lens (\CreateGatewayRoute' {virtualGatewayName} -> virtualGatewayName) (\s@CreateGatewayRoute' {} a -> s {virtualGatewayName = a} :: CreateGatewayRoute)++instance Core.AWSRequest CreateGatewayRoute where+  type+    AWSResponse CreateGatewayRoute =+      CreateGatewayRouteResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateGatewayRouteResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable CreateGatewayRoute where+  hashWithSalt _salt CreateGatewayRoute' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` gatewayRouteName+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData CreateGatewayRoute where+  rnf CreateGatewayRoute' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf gatewayRouteName+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualGatewayName++instance Data.ToHeaders CreateGatewayRoute where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateGatewayRoute where+  toJSON CreateGatewayRoute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("gatewayRouteName" Data..= gatewayRouteName),+            Prelude.Just ("spec" Data..= spec)+          ]+      )++instance Data.ToPath CreateGatewayRoute where+  toPath CreateGatewayRoute' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualGateway/",+        Data.toBS virtualGatewayName,+        "/gatewayRoutes"+      ]++instance Data.ToQuery CreateGatewayRoute where+  toQuery CreateGatewayRoute' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- | /See:/ 'newCreateGatewayRouteResponse' smart constructor.+data CreateGatewayRouteResponse = CreateGatewayRouteResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your gateway route following the create call.+    gatewayRoute :: GatewayRouteData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateGatewayRouteResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'createGatewayRouteResponse_httpStatus' - The response's http status code.+--+-- 'gatewayRoute', 'createGatewayRouteResponse_gatewayRoute' - The full description of your gateway route following the create call.+newCreateGatewayRouteResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'gatewayRoute'+  GatewayRouteData ->+  CreateGatewayRouteResponse+newCreateGatewayRouteResponse+  pHttpStatus_+  pGatewayRoute_ =+    CreateGatewayRouteResponse'+      { httpStatus =+          pHttpStatus_,+        gatewayRoute = pGatewayRoute_+      }++-- | The response's http status code.+createGatewayRouteResponse_httpStatus :: Lens.Lens' CreateGatewayRouteResponse Prelude.Int+createGatewayRouteResponse_httpStatus = Lens.lens (\CreateGatewayRouteResponse' {httpStatus} -> httpStatus) (\s@CreateGatewayRouteResponse' {} a -> s {httpStatus = a} :: CreateGatewayRouteResponse)++-- | The full description of your gateway route following the create call.+createGatewayRouteResponse_gatewayRoute :: Lens.Lens' CreateGatewayRouteResponse GatewayRouteData+createGatewayRouteResponse_gatewayRoute = Lens.lens (\CreateGatewayRouteResponse' {gatewayRoute} -> gatewayRoute) (\s@CreateGatewayRouteResponse' {} a -> s {gatewayRoute = a} :: CreateGatewayRouteResponse)++instance Prelude.NFData CreateGatewayRouteResponse where+  rnf CreateGatewayRouteResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf gatewayRoute
+ gen/Amazonka/AppMesh/CreateMesh.hs view
@@ -0,0 +1,238 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.CreateMesh+-- 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 service mesh.+--+-- A service mesh is a logical boundary for network traffic between+-- services that are represented by resources within the mesh. After you+-- create your service mesh, you can create virtual services, virtual+-- nodes, virtual routers, and routes to distribute traffic between the+-- applications in your mesh.+--+-- For more information about service meshes, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html Service meshes>.+module Amazonka.AppMesh.CreateMesh+  ( -- * Creating a Request+    CreateMesh (..),+    newCreateMesh,++    -- * Request Lenses+    createMesh_clientToken,+    createMesh_spec,+    createMesh_tags,+    createMesh_meshName,++    -- * Destructuring the Response+    CreateMeshResponse (..),+    newCreateMeshResponse,++    -- * Response Lenses+    createMeshResponse_httpStatus,+    createMeshResponse_mesh,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newCreateMesh' smart constructor.+data CreateMesh = CreateMesh'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The service mesh specification to apply.+    spec :: Prelude.Maybe MeshSpec,+    -- | Optional metadata that you can apply to the service mesh to assist with+    -- categorization and organization. Each tag consists of a key and an+    -- optional value, both of which you define. Tag keys can have a maximum+    -- character length of 128 characters, and tag values can have a maximum+    -- length of 256 characters.+    tags :: Prelude.Maybe [TagRef],+    -- | The name to use for the service mesh.+    meshName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateMesh' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createMesh_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'spec', 'createMesh_spec' - The service mesh specification to apply.+--+-- 'tags', 'createMesh_tags' - Optional metadata that you can apply to the service mesh to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+--+-- 'meshName', 'createMesh_meshName' - The name to use for the service mesh.+newCreateMesh ::+  -- | 'meshName'+  Prelude.Text ->+  CreateMesh+newCreateMesh pMeshName_ =+  CreateMesh'+    { clientToken = Prelude.Nothing,+      spec = Prelude.Nothing,+      tags = Prelude.Nothing,+      meshName = pMeshName_+    }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+createMesh_clientToken :: Lens.Lens' CreateMesh (Prelude.Maybe Prelude.Text)+createMesh_clientToken = Lens.lens (\CreateMesh' {clientToken} -> clientToken) (\s@CreateMesh' {} a -> s {clientToken = a} :: CreateMesh)++-- | The service mesh specification to apply.+createMesh_spec :: Lens.Lens' CreateMesh (Prelude.Maybe MeshSpec)+createMesh_spec = Lens.lens (\CreateMesh' {spec} -> spec) (\s@CreateMesh' {} a -> s {spec = a} :: CreateMesh)++-- | Optional metadata that you can apply to the service mesh to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+createMesh_tags :: Lens.Lens' CreateMesh (Prelude.Maybe [TagRef])+createMesh_tags = Lens.lens (\CreateMesh' {tags} -> tags) (\s@CreateMesh' {} a -> s {tags = a} :: CreateMesh) Prelude.. Lens.mapping Lens.coerced++-- | The name to use for the service mesh.+createMesh_meshName :: Lens.Lens' CreateMesh Prelude.Text+createMesh_meshName = Lens.lens (\CreateMesh' {meshName} -> meshName) (\s@CreateMesh' {} a -> s {meshName = a} :: CreateMesh)++instance Core.AWSRequest CreateMesh where+  type AWSResponse CreateMesh = CreateMeshResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateMeshResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable CreateMesh where+  hashWithSalt _salt CreateMesh' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` meshName++instance Prelude.NFData CreateMesh where+  rnf CreateMesh' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf meshName++instance Data.ToHeaders CreateMesh where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateMesh where+  toJSON CreateMesh' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("spec" Data..=) Prelude.<$> spec,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("meshName" Data..= meshName)+          ]+      )++instance Data.ToPath CreateMesh where+  toPath = Prelude.const "/v20190125/meshes"++instance Data.ToQuery CreateMesh where+  toQuery = Prelude.const Prelude.mempty++-- |+--+-- /See:/ 'newCreateMeshResponse' smart constructor.+data CreateMeshResponse = CreateMeshResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your service mesh following the create call.+    mesh :: MeshData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateMeshResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'createMeshResponse_httpStatus' - The response's http status code.+--+-- 'mesh', 'createMeshResponse_mesh' - The full description of your service mesh following the create call.+newCreateMeshResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'mesh'+  MeshData ->+  CreateMeshResponse+newCreateMeshResponse pHttpStatus_ pMesh_ =+  CreateMeshResponse'+    { httpStatus = pHttpStatus_,+      mesh = pMesh_+    }++-- | The response's http status code.+createMeshResponse_httpStatus :: Lens.Lens' CreateMeshResponse Prelude.Int+createMeshResponse_httpStatus = Lens.lens (\CreateMeshResponse' {httpStatus} -> httpStatus) (\s@CreateMeshResponse' {} a -> s {httpStatus = a} :: CreateMeshResponse)++-- | The full description of your service mesh following the create call.+createMeshResponse_mesh :: Lens.Lens' CreateMeshResponse MeshData+createMeshResponse_mesh = Lens.lens (\CreateMeshResponse' {mesh} -> mesh) (\s@CreateMeshResponse' {} a -> s {mesh = a} :: CreateMeshResponse)++instance Prelude.NFData CreateMeshResponse where+  rnf CreateMeshResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf mesh
+ gen/Amazonka/AppMesh/CreateRoute.hs view
@@ -0,0 +1,307 @@+{-# 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.AppMesh.CreateRoute+-- 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 route that is associated with a virtual router.+--+-- You can route several different protocols and define a retry policy for+-- a route. Traffic can be routed to one or more virtual nodes.+--+-- For more information about routes, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html Routes>.+module Amazonka.AppMesh.CreateRoute+  ( -- * Creating a Request+    CreateRoute (..),+    newCreateRoute,++    -- * Request Lenses+    createRoute_clientToken,+    createRoute_meshOwner,+    createRoute_tags,+    createRoute_meshName,+    createRoute_routeName,+    createRoute_spec,+    createRoute_virtualRouterName,++    -- * Destructuring the Response+    CreateRouteResponse (..),+    newCreateRouteResponse,++    -- * Response Lenses+    createRouteResponse_httpStatus,+    createRouteResponse_route,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newCreateRoute' smart constructor.+data CreateRoute = CreateRoute'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then the account that you specify must share+    -- the mesh with your account before you can create the resource in the+    -- service mesh. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | Optional metadata that you can apply to the route to assist with+    -- categorization and organization. Each tag consists of a key and an+    -- optional value, both of which you define. Tag keys can have a maximum+    -- character length of 128 characters, and tag values can have a maximum+    -- length of 256 characters.+    tags :: Prelude.Maybe [TagRef],+    -- | The name of the service mesh to create the route in.+    meshName :: Prelude.Text,+    -- | The name to use for the route.+    routeName :: Prelude.Text,+    -- | The route specification to apply.+    spec :: RouteSpec,+    -- | The name of the virtual router in which to create the route. If the+    -- virtual router is in a shared mesh, then you must be the owner of the+    -- virtual router resource.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createRoute_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'createRoute_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'tags', 'createRoute_tags' - Optional metadata that you can apply to the route to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+--+-- 'meshName', 'createRoute_meshName' - The name of the service mesh to create the route in.+--+-- 'routeName', 'createRoute_routeName' - The name to use for the route.+--+-- 'spec', 'createRoute_spec' - The route specification to apply.+--+-- 'virtualRouterName', 'createRoute_virtualRouterName' - The name of the virtual router in which to create the route. If the+-- virtual router is in a shared mesh, then you must be the owner of the+-- virtual router resource.+newCreateRoute ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'routeName'+  Prelude.Text ->+  -- | 'spec'+  RouteSpec ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  CreateRoute+newCreateRoute+  pMeshName_+  pRouteName_+  pSpec_+  pVirtualRouterName_ =+    CreateRoute'+      { clientToken = Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        tags = Prelude.Nothing,+        meshName = pMeshName_,+        routeName = pRouteName_,+        spec = pSpec_,+        virtualRouterName = pVirtualRouterName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+createRoute_clientToken :: Lens.Lens' CreateRoute (Prelude.Maybe Prelude.Text)+createRoute_clientToken = Lens.lens (\CreateRoute' {clientToken} -> clientToken) (\s@CreateRoute' {} a -> s {clientToken = a} :: CreateRoute)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+createRoute_meshOwner :: Lens.Lens' CreateRoute (Prelude.Maybe Prelude.Text)+createRoute_meshOwner = Lens.lens (\CreateRoute' {meshOwner} -> meshOwner) (\s@CreateRoute' {} a -> s {meshOwner = a} :: CreateRoute)++-- | Optional metadata that you can apply to the route to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+createRoute_tags :: Lens.Lens' CreateRoute (Prelude.Maybe [TagRef])+createRoute_tags = Lens.lens (\CreateRoute' {tags} -> tags) (\s@CreateRoute' {} a -> s {tags = a} :: CreateRoute) Prelude.. Lens.mapping Lens.coerced++-- | The name of the service mesh to create the route in.+createRoute_meshName :: Lens.Lens' CreateRoute Prelude.Text+createRoute_meshName = Lens.lens (\CreateRoute' {meshName} -> meshName) (\s@CreateRoute' {} a -> s {meshName = a} :: CreateRoute)++-- | The name to use for the route.+createRoute_routeName :: Lens.Lens' CreateRoute Prelude.Text+createRoute_routeName = Lens.lens (\CreateRoute' {routeName} -> routeName) (\s@CreateRoute' {} a -> s {routeName = a} :: CreateRoute)++-- | The route specification to apply.+createRoute_spec :: Lens.Lens' CreateRoute RouteSpec+createRoute_spec = Lens.lens (\CreateRoute' {spec} -> spec) (\s@CreateRoute' {} a -> s {spec = a} :: CreateRoute)++-- | The name of the virtual router in which to create the route. If the+-- virtual router is in a shared mesh, then you must be the owner of the+-- virtual router resource.+createRoute_virtualRouterName :: Lens.Lens' CreateRoute Prelude.Text+createRoute_virtualRouterName = Lens.lens (\CreateRoute' {virtualRouterName} -> virtualRouterName) (\s@CreateRoute' {} a -> s {virtualRouterName = a} :: CreateRoute)++instance Core.AWSRequest CreateRoute where+  type AWSResponse CreateRoute = CreateRouteResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateRouteResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable CreateRoute where+  hashWithSalt _salt CreateRoute' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` routeName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData CreateRoute where+  rnf CreateRoute' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf routeName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualRouterName++instance Data.ToHeaders CreateRoute where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateRoute where+  toJSON CreateRoute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("routeName" Data..= routeName),+            Prelude.Just ("spec" Data..= spec)+          ]+      )++instance Data.ToPath CreateRoute where+  toPath CreateRoute' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualRouter/",+        Data.toBS virtualRouterName,+        "/routes"+      ]++instance Data.ToQuery CreateRoute where+  toQuery CreateRoute' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newCreateRouteResponse' smart constructor.+data CreateRouteResponse = CreateRouteResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your mesh following the create call.+    route :: RouteData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateRouteResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'createRouteResponse_httpStatus' - The response's http status code.+--+-- 'route', 'createRouteResponse_route' - The full description of your mesh following the create call.+newCreateRouteResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'route'+  RouteData ->+  CreateRouteResponse+newCreateRouteResponse pHttpStatus_ pRoute_ =+  CreateRouteResponse'+    { httpStatus = pHttpStatus_,+      route = pRoute_+    }++-- | The response's http status code.+createRouteResponse_httpStatus :: Lens.Lens' CreateRouteResponse Prelude.Int+createRouteResponse_httpStatus = Lens.lens (\CreateRouteResponse' {httpStatus} -> httpStatus) (\s@CreateRouteResponse' {} a -> s {httpStatus = a} :: CreateRouteResponse)++-- | The full description of your mesh following the create call.+createRouteResponse_route :: Lens.Lens' CreateRouteResponse RouteData+createRouteResponse_route = Lens.lens (\CreateRouteResponse' {route} -> route) (\s@CreateRouteResponse' {} a -> s {route = a} :: CreateRouteResponse)++instance Prelude.NFData CreateRouteResponse where+  rnf CreateRouteResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf route
+ gen/Amazonka/AppMesh/CreateVirtualGateway.hs view
@@ -0,0 +1,291 @@+{-# 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.AppMesh.CreateVirtualGateway+-- 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 virtual gateway.+--+-- A virtual gateway allows resources outside your mesh to communicate to+-- resources that are inside your mesh. The virtual gateway represents an+-- Envoy proxy running in an Amazon ECS task, in a Kubernetes service, or+-- on an Amazon EC2 instance. Unlike a virtual node, which represents an+-- Envoy running with an application, a virtual gateway represents Envoy+-- deployed by itself.+--+-- For more information about virtual gateways, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_gateways.html Virtual gateways>.+module Amazonka.AppMesh.CreateVirtualGateway+  ( -- * Creating a Request+    CreateVirtualGateway (..),+    newCreateVirtualGateway,++    -- * Request Lenses+    createVirtualGateway_clientToken,+    createVirtualGateway_meshOwner,+    createVirtualGateway_tags,+    createVirtualGateway_meshName,+    createVirtualGateway_spec,+    createVirtualGateway_virtualGatewayName,++    -- * Destructuring the Response+    CreateVirtualGatewayResponse (..),+    newCreateVirtualGatewayResponse,++    -- * Response Lenses+    createVirtualGatewayResponse_httpStatus,+    createVirtualGatewayResponse_virtualGateway,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateVirtualGateway' smart constructor.+data CreateVirtualGateway = CreateVirtualGateway'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then the account that you specify must share+    -- the mesh with your account before you can create the resource in the+    -- service mesh. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | Optional metadata that you can apply to the virtual gateway to assist+    -- with categorization and organization. Each tag consists of a key and an+    -- optional value, both of which you define. Tag keys can have a maximum+    -- character length of 128 characters, and tag values can have a maximum+    -- length of 256 characters.+    tags :: Prelude.Maybe [TagRef],+    -- | The name of the service mesh to create the virtual gateway in.+    meshName :: Prelude.Text,+    -- | The virtual gateway specification to apply.+    spec :: VirtualGatewaySpec,+    -- | The name to use for the virtual gateway.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateVirtualGateway' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createVirtualGateway_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'createVirtualGateway_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'tags', 'createVirtualGateway_tags' - Optional metadata that you can apply to the virtual gateway to assist+-- with categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+--+-- 'meshName', 'createVirtualGateway_meshName' - The name of the service mesh to create the virtual gateway in.+--+-- 'spec', 'createVirtualGateway_spec' - The virtual gateway specification to apply.+--+-- 'virtualGatewayName', 'createVirtualGateway_virtualGatewayName' - The name to use for the virtual gateway.+newCreateVirtualGateway ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'spec'+  VirtualGatewaySpec ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  CreateVirtualGateway+newCreateVirtualGateway+  pMeshName_+  pSpec_+  pVirtualGatewayName_ =+    CreateVirtualGateway'+      { clientToken =+          Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        tags = Prelude.Nothing,+        meshName = pMeshName_,+        spec = pSpec_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+createVirtualGateway_clientToken :: Lens.Lens' CreateVirtualGateway (Prelude.Maybe Prelude.Text)+createVirtualGateway_clientToken = Lens.lens (\CreateVirtualGateway' {clientToken} -> clientToken) (\s@CreateVirtualGateway' {} a -> s {clientToken = a} :: CreateVirtualGateway)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+createVirtualGateway_meshOwner :: Lens.Lens' CreateVirtualGateway (Prelude.Maybe Prelude.Text)+createVirtualGateway_meshOwner = Lens.lens (\CreateVirtualGateway' {meshOwner} -> meshOwner) (\s@CreateVirtualGateway' {} a -> s {meshOwner = a} :: CreateVirtualGateway)++-- | Optional metadata that you can apply to the virtual gateway to assist+-- with categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+createVirtualGateway_tags :: Lens.Lens' CreateVirtualGateway (Prelude.Maybe [TagRef])+createVirtualGateway_tags = Lens.lens (\CreateVirtualGateway' {tags} -> tags) (\s@CreateVirtualGateway' {} a -> s {tags = a} :: CreateVirtualGateway) Prelude.. Lens.mapping Lens.coerced++-- | The name of the service mesh to create the virtual gateway in.+createVirtualGateway_meshName :: Lens.Lens' CreateVirtualGateway Prelude.Text+createVirtualGateway_meshName = Lens.lens (\CreateVirtualGateway' {meshName} -> meshName) (\s@CreateVirtualGateway' {} a -> s {meshName = a} :: CreateVirtualGateway)++-- | The virtual gateway specification to apply.+createVirtualGateway_spec :: Lens.Lens' CreateVirtualGateway VirtualGatewaySpec+createVirtualGateway_spec = Lens.lens (\CreateVirtualGateway' {spec} -> spec) (\s@CreateVirtualGateway' {} a -> s {spec = a} :: CreateVirtualGateway)++-- | The name to use for the virtual gateway.+createVirtualGateway_virtualGatewayName :: Lens.Lens' CreateVirtualGateway Prelude.Text+createVirtualGateway_virtualGatewayName = Lens.lens (\CreateVirtualGateway' {virtualGatewayName} -> virtualGatewayName) (\s@CreateVirtualGateway' {} a -> s {virtualGatewayName = a} :: CreateVirtualGateway)++instance Core.AWSRequest CreateVirtualGateway where+  type+    AWSResponse CreateVirtualGateway =+      CreateVirtualGatewayResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateVirtualGatewayResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable CreateVirtualGateway where+  hashWithSalt _salt CreateVirtualGateway' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData CreateVirtualGateway where+  rnf CreateVirtualGateway' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualGatewayName++instance Data.ToHeaders CreateVirtualGateway where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateVirtualGateway where+  toJSON CreateVirtualGateway' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("spec" Data..= spec),+            Prelude.Just+              ("virtualGatewayName" Data..= virtualGatewayName)+          ]+      )++instance Data.ToPath CreateVirtualGateway where+  toPath CreateVirtualGateway' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualGateways"+      ]++instance Data.ToQuery CreateVirtualGateway where+  toQuery CreateVirtualGateway' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- | /See:/ 'newCreateVirtualGatewayResponse' smart constructor.+data CreateVirtualGatewayResponse = CreateVirtualGatewayResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your virtual gateway following the create call.+    virtualGateway :: VirtualGatewayData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateVirtualGatewayResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'createVirtualGatewayResponse_httpStatus' - The response's http status code.+--+-- 'virtualGateway', 'createVirtualGatewayResponse_virtualGateway' - The full description of your virtual gateway following the create call.+newCreateVirtualGatewayResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualGateway'+  VirtualGatewayData ->+  CreateVirtualGatewayResponse+newCreateVirtualGatewayResponse+  pHttpStatus_+  pVirtualGateway_ =+    CreateVirtualGatewayResponse'+      { httpStatus =+          pHttpStatus_,+        virtualGateway = pVirtualGateway_+      }++-- | The response's http status code.+createVirtualGatewayResponse_httpStatus :: Lens.Lens' CreateVirtualGatewayResponse Prelude.Int+createVirtualGatewayResponse_httpStatus = Lens.lens (\CreateVirtualGatewayResponse' {httpStatus} -> httpStatus) (\s@CreateVirtualGatewayResponse' {} a -> s {httpStatus = a} :: CreateVirtualGatewayResponse)++-- | The full description of your virtual gateway following the create call.+createVirtualGatewayResponse_virtualGateway :: Lens.Lens' CreateVirtualGatewayResponse VirtualGatewayData+createVirtualGatewayResponse_virtualGateway = Lens.lens (\CreateVirtualGatewayResponse' {virtualGateway} -> virtualGateway) (\s@CreateVirtualGatewayResponse' {} a -> s {virtualGateway = a} :: CreateVirtualGatewayResponse)++instance Prelude.NFData CreateVirtualGatewayResponse where+  rnf CreateVirtualGatewayResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualGateway
+ gen/Amazonka/AppMesh/CreateVirtualNode.hs view
@@ -0,0 +1,314 @@+{-# 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.AppMesh.CreateVirtualNode+-- 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 virtual node within a service mesh.+--+-- A virtual node acts as a logical pointer to a particular task group,+-- such as an Amazon ECS service or a Kubernetes deployment. When you+-- create a virtual node, you can specify the service discovery information+-- for your task group, and whether the proxy running in a task group will+-- communicate with other proxies using Transport Layer Security (TLS).+--+-- You define a @listener@ for any inbound traffic that your virtual node+-- expects. Any virtual service that your virtual node expects to+-- communicate to is specified as a @backend@.+--+-- The response metadata for your new virtual node contains the @arn@ that+-- is associated with the virtual node. Set this value to the full ARN; for+-- example,+-- @arn:aws:appmesh:us-west-2:123456789012:myMesh\/default\/virtualNode\/myApp@)+-- as the @APPMESH_RESOURCE_ARN@ environment variable for your task+-- group\'s Envoy proxy container in your task definition or pod spec. This+-- is then mapped to the @node.id@ and @node.cluster@ Envoy parameters.+--+-- By default, App Mesh uses the name of the resource you specified in+-- @APPMESH_RESOURCE_ARN@ when Envoy is referring to itself in metrics and+-- traces. You can override this behavior by setting the+-- @APPMESH_RESOURCE_CLUSTER@ environment variable with your own name.+--+-- For more information about virtual nodes, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html Virtual nodes>.+-- You must be using @1.15.0@ or later of the Envoy image when setting+-- these variables. For more information aboutApp Mesh Envoy variables, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy.html Envoy image>+-- in the App Mesh User Guide.+module Amazonka.AppMesh.CreateVirtualNode+  ( -- * Creating a Request+    CreateVirtualNode (..),+    newCreateVirtualNode,++    -- * Request Lenses+    createVirtualNode_clientToken,+    createVirtualNode_meshOwner,+    createVirtualNode_tags,+    createVirtualNode_meshName,+    createVirtualNode_spec,+    createVirtualNode_virtualNodeName,++    -- * Destructuring the Response+    CreateVirtualNodeResponse (..),+    newCreateVirtualNodeResponse,++    -- * Response Lenses+    createVirtualNodeResponse_httpStatus,+    createVirtualNodeResponse_virtualNode,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newCreateVirtualNode' smart constructor.+data CreateVirtualNode = CreateVirtualNode'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then the account that you specify must share+    -- the mesh with your account before you can create the resource in the+    -- service mesh. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | Optional metadata that you can apply to the virtual node to assist with+    -- categorization and organization. Each tag consists of a key and an+    -- optional value, both of which you define. Tag keys can have a maximum+    -- character length of 128 characters, and tag values can have a maximum+    -- length of 256 characters.+    tags :: Prelude.Maybe [TagRef],+    -- | The name of the service mesh to create the virtual node in.+    meshName :: Prelude.Text,+    -- | The virtual node specification to apply.+    spec :: VirtualNodeSpec,+    -- | The name to use for the virtual node.+    virtualNodeName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateVirtualNode' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createVirtualNode_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'createVirtualNode_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'tags', 'createVirtualNode_tags' - Optional metadata that you can apply to the virtual node to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+--+-- 'meshName', 'createVirtualNode_meshName' - The name of the service mesh to create the virtual node in.+--+-- 'spec', 'createVirtualNode_spec' - The virtual node specification to apply.+--+-- 'virtualNodeName', 'createVirtualNode_virtualNodeName' - The name to use for the virtual node.+newCreateVirtualNode ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'spec'+  VirtualNodeSpec ->+  -- | 'virtualNodeName'+  Prelude.Text ->+  CreateVirtualNode+newCreateVirtualNode+  pMeshName_+  pSpec_+  pVirtualNodeName_ =+    CreateVirtualNode'+      { clientToken = Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        tags = Prelude.Nothing,+        meshName = pMeshName_,+        spec = pSpec_,+        virtualNodeName = pVirtualNodeName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+createVirtualNode_clientToken :: Lens.Lens' CreateVirtualNode (Prelude.Maybe Prelude.Text)+createVirtualNode_clientToken = Lens.lens (\CreateVirtualNode' {clientToken} -> clientToken) (\s@CreateVirtualNode' {} a -> s {clientToken = a} :: CreateVirtualNode)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+createVirtualNode_meshOwner :: Lens.Lens' CreateVirtualNode (Prelude.Maybe Prelude.Text)+createVirtualNode_meshOwner = Lens.lens (\CreateVirtualNode' {meshOwner} -> meshOwner) (\s@CreateVirtualNode' {} a -> s {meshOwner = a} :: CreateVirtualNode)++-- | Optional metadata that you can apply to the virtual node to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+createVirtualNode_tags :: Lens.Lens' CreateVirtualNode (Prelude.Maybe [TagRef])+createVirtualNode_tags = Lens.lens (\CreateVirtualNode' {tags} -> tags) (\s@CreateVirtualNode' {} a -> s {tags = a} :: CreateVirtualNode) Prelude.. Lens.mapping Lens.coerced++-- | The name of the service mesh to create the virtual node in.+createVirtualNode_meshName :: Lens.Lens' CreateVirtualNode Prelude.Text+createVirtualNode_meshName = Lens.lens (\CreateVirtualNode' {meshName} -> meshName) (\s@CreateVirtualNode' {} a -> s {meshName = a} :: CreateVirtualNode)++-- | The virtual node specification to apply.+createVirtualNode_spec :: Lens.Lens' CreateVirtualNode VirtualNodeSpec+createVirtualNode_spec = Lens.lens (\CreateVirtualNode' {spec} -> spec) (\s@CreateVirtualNode' {} a -> s {spec = a} :: CreateVirtualNode)++-- | The name to use for the virtual node.+createVirtualNode_virtualNodeName :: Lens.Lens' CreateVirtualNode Prelude.Text+createVirtualNode_virtualNodeName = Lens.lens (\CreateVirtualNode' {virtualNodeName} -> virtualNodeName) (\s@CreateVirtualNode' {} a -> s {virtualNodeName = a} :: CreateVirtualNode)++instance Core.AWSRequest CreateVirtualNode where+  type+    AWSResponse CreateVirtualNode =+      CreateVirtualNodeResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateVirtualNodeResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable CreateVirtualNode where+  hashWithSalt _salt CreateVirtualNode' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualNodeName++instance Prelude.NFData CreateVirtualNode where+  rnf CreateVirtualNode' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualNodeName++instance Data.ToHeaders CreateVirtualNode where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateVirtualNode where+  toJSON CreateVirtualNode' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("spec" Data..= spec),+            Prelude.Just+              ("virtualNodeName" Data..= virtualNodeName)+          ]+      )++instance Data.ToPath CreateVirtualNode where+  toPath CreateVirtualNode' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualNodes"+      ]++instance Data.ToQuery CreateVirtualNode where+  toQuery CreateVirtualNode' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newCreateVirtualNodeResponse' smart constructor.+data CreateVirtualNodeResponse = CreateVirtualNodeResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your virtual node following the create call.+    virtualNode :: VirtualNodeData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateVirtualNodeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'createVirtualNodeResponse_httpStatus' - The response's http status code.+--+-- 'virtualNode', 'createVirtualNodeResponse_virtualNode' - The full description of your virtual node following the create call.+newCreateVirtualNodeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualNode'+  VirtualNodeData ->+  CreateVirtualNodeResponse+newCreateVirtualNodeResponse+  pHttpStatus_+  pVirtualNode_ =+    CreateVirtualNodeResponse'+      { httpStatus =+          pHttpStatus_,+        virtualNode = pVirtualNode_+      }++-- | The response's http status code.+createVirtualNodeResponse_httpStatus :: Lens.Lens' CreateVirtualNodeResponse Prelude.Int+createVirtualNodeResponse_httpStatus = Lens.lens (\CreateVirtualNodeResponse' {httpStatus} -> httpStatus) (\s@CreateVirtualNodeResponse' {} a -> s {httpStatus = a} :: CreateVirtualNodeResponse)++-- | The full description of your virtual node following the create call.+createVirtualNodeResponse_virtualNode :: Lens.Lens' CreateVirtualNodeResponse VirtualNodeData+createVirtualNodeResponse_virtualNode = Lens.lens (\CreateVirtualNodeResponse' {virtualNode} -> virtualNode) (\s@CreateVirtualNodeResponse' {} a -> s {virtualNode = a} :: CreateVirtualNodeResponse)++instance Prelude.NFData CreateVirtualNodeResponse where+  rnf CreateVirtualNodeResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualNode
+ gen/Amazonka/AppMesh/CreateVirtualRouter.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.AppMesh.CreateVirtualRouter+-- 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 virtual router within a service mesh.+--+-- Specify a @listener@ for any inbound traffic that your virtual router+-- receives. Create a virtual router for each protocol and port that you+-- need to route. Virtual routers handle traffic for one or more virtual+-- services within your mesh. After you create your virtual router, create+-- and associate routes for your virtual router that direct incoming+-- requests to different virtual nodes.+--+-- For more information about virtual routers, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html Virtual routers>.+module Amazonka.AppMesh.CreateVirtualRouter+  ( -- * Creating a Request+    CreateVirtualRouter (..),+    newCreateVirtualRouter,++    -- * Request Lenses+    createVirtualRouter_clientToken,+    createVirtualRouter_meshOwner,+    createVirtualRouter_tags,+    createVirtualRouter_meshName,+    createVirtualRouter_spec,+    createVirtualRouter_virtualRouterName,++    -- * Destructuring the Response+    CreateVirtualRouterResponse (..),+    newCreateVirtualRouterResponse,++    -- * Response Lenses+    createVirtualRouterResponse_httpStatus,+    createVirtualRouterResponse_virtualRouter,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newCreateVirtualRouter' smart constructor.+data CreateVirtualRouter = CreateVirtualRouter'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then the account that you specify must share+    -- the mesh with your account before you can create the resource in the+    -- service mesh. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | Optional metadata that you can apply to the virtual router to assist+    -- with categorization and organization. Each tag consists of a key and an+    -- optional value, both of which you define. Tag keys can have a maximum+    -- character length of 128 characters, and tag values can have a maximum+    -- length of 256 characters.+    tags :: Prelude.Maybe [TagRef],+    -- | The name of the service mesh to create the virtual router in.+    meshName :: Prelude.Text,+    -- | The virtual router specification to apply.+    spec :: VirtualRouterSpec,+    -- | The name to use for the virtual router.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateVirtualRouter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createVirtualRouter_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'createVirtualRouter_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'tags', 'createVirtualRouter_tags' - Optional metadata that you can apply to the virtual router to assist+-- with categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+--+-- 'meshName', 'createVirtualRouter_meshName' - The name of the service mesh to create the virtual router in.+--+-- 'spec', 'createVirtualRouter_spec' - The virtual router specification to apply.+--+-- 'virtualRouterName', 'createVirtualRouter_virtualRouterName' - The name to use for the virtual router.+newCreateVirtualRouter ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'spec'+  VirtualRouterSpec ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  CreateVirtualRouter+newCreateVirtualRouter+  pMeshName_+  pSpec_+  pVirtualRouterName_ =+    CreateVirtualRouter'+      { clientToken = Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        tags = Prelude.Nothing,+        meshName = pMeshName_,+        spec = pSpec_,+        virtualRouterName = pVirtualRouterName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+createVirtualRouter_clientToken :: Lens.Lens' CreateVirtualRouter (Prelude.Maybe Prelude.Text)+createVirtualRouter_clientToken = Lens.lens (\CreateVirtualRouter' {clientToken} -> clientToken) (\s@CreateVirtualRouter' {} a -> s {clientToken = a} :: CreateVirtualRouter)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+createVirtualRouter_meshOwner :: Lens.Lens' CreateVirtualRouter (Prelude.Maybe Prelude.Text)+createVirtualRouter_meshOwner = Lens.lens (\CreateVirtualRouter' {meshOwner} -> meshOwner) (\s@CreateVirtualRouter' {} a -> s {meshOwner = a} :: CreateVirtualRouter)++-- | Optional metadata that you can apply to the virtual router to assist+-- with categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+createVirtualRouter_tags :: Lens.Lens' CreateVirtualRouter (Prelude.Maybe [TagRef])+createVirtualRouter_tags = Lens.lens (\CreateVirtualRouter' {tags} -> tags) (\s@CreateVirtualRouter' {} a -> s {tags = a} :: CreateVirtualRouter) Prelude.. Lens.mapping Lens.coerced++-- | The name of the service mesh to create the virtual router in.+createVirtualRouter_meshName :: Lens.Lens' CreateVirtualRouter Prelude.Text+createVirtualRouter_meshName = Lens.lens (\CreateVirtualRouter' {meshName} -> meshName) (\s@CreateVirtualRouter' {} a -> s {meshName = a} :: CreateVirtualRouter)++-- | The virtual router specification to apply.+createVirtualRouter_spec :: Lens.Lens' CreateVirtualRouter VirtualRouterSpec+createVirtualRouter_spec = Lens.lens (\CreateVirtualRouter' {spec} -> spec) (\s@CreateVirtualRouter' {} a -> s {spec = a} :: CreateVirtualRouter)++-- | The name to use for the virtual router.+createVirtualRouter_virtualRouterName :: Lens.Lens' CreateVirtualRouter Prelude.Text+createVirtualRouter_virtualRouterName = Lens.lens (\CreateVirtualRouter' {virtualRouterName} -> virtualRouterName) (\s@CreateVirtualRouter' {} a -> s {virtualRouterName = a} :: CreateVirtualRouter)++instance Core.AWSRequest CreateVirtualRouter where+  type+    AWSResponse CreateVirtualRouter =+      CreateVirtualRouterResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateVirtualRouterResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable CreateVirtualRouter where+  hashWithSalt _salt CreateVirtualRouter' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData CreateVirtualRouter where+  rnf CreateVirtualRouter' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualRouterName++instance Data.ToHeaders CreateVirtualRouter where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateVirtualRouter where+  toJSON CreateVirtualRouter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("spec" Data..= spec),+            Prelude.Just+              ("virtualRouterName" Data..= virtualRouterName)+          ]+      )++instance Data.ToPath CreateVirtualRouter where+  toPath CreateVirtualRouter' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualRouters"+      ]++instance Data.ToQuery CreateVirtualRouter where+  toQuery CreateVirtualRouter' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newCreateVirtualRouterResponse' smart constructor.+data CreateVirtualRouterResponse = CreateVirtualRouterResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your virtual router following the create call.+    virtualRouter :: VirtualRouterData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateVirtualRouterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'createVirtualRouterResponse_httpStatus' - The response's http status code.+--+-- 'virtualRouter', 'createVirtualRouterResponse_virtualRouter' - The full description of your virtual router following the create call.+newCreateVirtualRouterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualRouter'+  VirtualRouterData ->+  CreateVirtualRouterResponse+newCreateVirtualRouterResponse+  pHttpStatus_+  pVirtualRouter_ =+    CreateVirtualRouterResponse'+      { httpStatus =+          pHttpStatus_,+        virtualRouter = pVirtualRouter_+      }++-- | The response's http status code.+createVirtualRouterResponse_httpStatus :: Lens.Lens' CreateVirtualRouterResponse Prelude.Int+createVirtualRouterResponse_httpStatus = Lens.lens (\CreateVirtualRouterResponse' {httpStatus} -> httpStatus) (\s@CreateVirtualRouterResponse' {} a -> s {httpStatus = a} :: CreateVirtualRouterResponse)++-- | The full description of your virtual router following the create call.+createVirtualRouterResponse_virtualRouter :: Lens.Lens' CreateVirtualRouterResponse VirtualRouterData+createVirtualRouterResponse_virtualRouter = Lens.lens (\CreateVirtualRouterResponse' {virtualRouter} -> virtualRouter) (\s@CreateVirtualRouterResponse' {} a -> s {virtualRouter = a} :: CreateVirtualRouterResponse)++instance Prelude.NFData CreateVirtualRouterResponse where+  rnf CreateVirtualRouterResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualRouter
+ gen/Amazonka/AppMesh/CreateVirtualService.hs view
@@ -0,0 +1,295 @@+{-# 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.AppMesh.CreateVirtualService+-- 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 virtual service within a service mesh.+--+-- A virtual service is an abstraction of a real service that is provided+-- by a virtual node directly or indirectly by means of a virtual router.+-- Dependent services call your virtual service by its+-- @virtualServiceName@, and those requests are routed to the virtual node+-- or virtual router that is specified as the provider for the virtual+-- service.+--+-- For more information about virtual services, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_services.html Virtual services>.+module Amazonka.AppMesh.CreateVirtualService+  ( -- * Creating a Request+    CreateVirtualService (..),+    newCreateVirtualService,++    -- * Request Lenses+    createVirtualService_clientToken,+    createVirtualService_meshOwner,+    createVirtualService_tags,+    createVirtualService_meshName,+    createVirtualService_spec,+    createVirtualService_virtualServiceName,++    -- * Destructuring the Response+    CreateVirtualServiceResponse (..),+    newCreateVirtualServiceResponse,++    -- * Response Lenses+    createVirtualServiceResponse_httpStatus,+    createVirtualServiceResponse_virtualService,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newCreateVirtualService' smart constructor.+data CreateVirtualService = CreateVirtualService'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then the account that you specify must share+    -- the mesh with your account before you can create the resource in the+    -- service mesh. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | Optional metadata that you can apply to the virtual service to assist+    -- with categorization and organization. Each tag consists of a key and an+    -- optional value, both of which you define. Tag keys can have a maximum+    -- character length of 128 characters, and tag values can have a maximum+    -- length of 256 characters.+    tags :: Prelude.Maybe [TagRef],+    -- | The name of the service mesh to create the virtual service in.+    meshName :: Prelude.Text,+    -- | The virtual service specification to apply.+    spec :: VirtualServiceSpec,+    -- | The name to use for the virtual service.+    virtualServiceName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateVirtualService' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createVirtualService_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'createVirtualService_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'tags', 'createVirtualService_tags' - Optional metadata that you can apply to the virtual service to assist+-- with categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+--+-- 'meshName', 'createVirtualService_meshName' - The name of the service mesh to create the virtual service in.+--+-- 'spec', 'createVirtualService_spec' - The virtual service specification to apply.+--+-- 'virtualServiceName', 'createVirtualService_virtualServiceName' - The name to use for the virtual service.+newCreateVirtualService ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'spec'+  VirtualServiceSpec ->+  -- | 'virtualServiceName'+  Prelude.Text ->+  CreateVirtualService+newCreateVirtualService+  pMeshName_+  pSpec_+  pVirtualServiceName_ =+    CreateVirtualService'+      { clientToken =+          Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        tags = Prelude.Nothing,+        meshName = pMeshName_,+        spec = pSpec_,+        virtualServiceName = pVirtualServiceName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+createVirtualService_clientToken :: Lens.Lens' CreateVirtualService (Prelude.Maybe Prelude.Text)+createVirtualService_clientToken = Lens.lens (\CreateVirtualService' {clientToken} -> clientToken) (\s@CreateVirtualService' {} a -> s {clientToken = a} :: CreateVirtualService)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then the account that you specify must share+-- the mesh with your account before you can create the resource in the+-- service mesh. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+createVirtualService_meshOwner :: Lens.Lens' CreateVirtualService (Prelude.Maybe Prelude.Text)+createVirtualService_meshOwner = Lens.lens (\CreateVirtualService' {meshOwner} -> meshOwner) (\s@CreateVirtualService' {} a -> s {meshOwner = a} :: CreateVirtualService)++-- | Optional metadata that you can apply to the virtual service to assist+-- with categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+createVirtualService_tags :: Lens.Lens' CreateVirtualService (Prelude.Maybe [TagRef])+createVirtualService_tags = Lens.lens (\CreateVirtualService' {tags} -> tags) (\s@CreateVirtualService' {} a -> s {tags = a} :: CreateVirtualService) Prelude.. Lens.mapping Lens.coerced++-- | The name of the service mesh to create the virtual service in.+createVirtualService_meshName :: Lens.Lens' CreateVirtualService Prelude.Text+createVirtualService_meshName = Lens.lens (\CreateVirtualService' {meshName} -> meshName) (\s@CreateVirtualService' {} a -> s {meshName = a} :: CreateVirtualService)++-- | The virtual service specification to apply.+createVirtualService_spec :: Lens.Lens' CreateVirtualService VirtualServiceSpec+createVirtualService_spec = Lens.lens (\CreateVirtualService' {spec} -> spec) (\s@CreateVirtualService' {} a -> s {spec = a} :: CreateVirtualService)++-- | The name to use for the virtual service.+createVirtualService_virtualServiceName :: Lens.Lens' CreateVirtualService Prelude.Text+createVirtualService_virtualServiceName = Lens.lens (\CreateVirtualService' {virtualServiceName} -> virtualServiceName) (\s@CreateVirtualService' {} a -> s {virtualServiceName = a} :: CreateVirtualService)++instance Core.AWSRequest CreateVirtualService where+  type+    AWSResponse CreateVirtualService =+      CreateVirtualServiceResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateVirtualServiceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable CreateVirtualService where+  hashWithSalt _salt CreateVirtualService' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualServiceName++instance Prelude.NFData CreateVirtualService where+  rnf CreateVirtualService' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualServiceName++instance Data.ToHeaders CreateVirtualService where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateVirtualService where+  toJSON CreateVirtualService' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("spec" Data..= spec),+            Prelude.Just+              ("virtualServiceName" Data..= virtualServiceName)+          ]+      )++instance Data.ToPath CreateVirtualService where+  toPath CreateVirtualService' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualServices"+      ]++instance Data.ToQuery CreateVirtualService where+  toQuery CreateVirtualService' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newCreateVirtualServiceResponse' smart constructor.+data CreateVirtualServiceResponse = CreateVirtualServiceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your virtual service following the create call.+    virtualService :: VirtualServiceData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateVirtualServiceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'createVirtualServiceResponse_httpStatus' - The response's http status code.+--+-- 'virtualService', 'createVirtualServiceResponse_virtualService' - The full description of your virtual service following the create call.+newCreateVirtualServiceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualService'+  VirtualServiceData ->+  CreateVirtualServiceResponse+newCreateVirtualServiceResponse+  pHttpStatus_+  pVirtualService_ =+    CreateVirtualServiceResponse'+      { httpStatus =+          pHttpStatus_,+        virtualService = pVirtualService_+      }++-- | The response's http status code.+createVirtualServiceResponse_httpStatus :: Lens.Lens' CreateVirtualServiceResponse Prelude.Int+createVirtualServiceResponse_httpStatus = Lens.lens (\CreateVirtualServiceResponse' {httpStatus} -> httpStatus) (\s@CreateVirtualServiceResponse' {} a -> s {httpStatus = a} :: CreateVirtualServiceResponse)++-- | The full description of your virtual service following the create call.+createVirtualServiceResponse_virtualService :: Lens.Lens' CreateVirtualServiceResponse VirtualServiceData+createVirtualServiceResponse_virtualService = Lens.lens (\CreateVirtualServiceResponse' {virtualService} -> virtualService) (\s@CreateVirtualServiceResponse' {} a -> s {virtualService = a} :: CreateVirtualServiceResponse)++instance Prelude.NFData CreateVirtualServiceResponse where+  rnf CreateVirtualServiceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualService
+ gen/Amazonka/AppMesh/DeleteGatewayRoute.hs view
@@ -0,0 +1,226 @@+{-# 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.AppMesh.DeleteGatewayRoute+-- 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 gateway route.+module Amazonka.AppMesh.DeleteGatewayRoute+  ( -- * Creating a Request+    DeleteGatewayRoute (..),+    newDeleteGatewayRoute,++    -- * Request Lenses+    deleteGatewayRoute_meshOwner,+    deleteGatewayRoute_gatewayRouteName,+    deleteGatewayRoute_meshName,+    deleteGatewayRoute_virtualGatewayName,++    -- * Destructuring the Response+    DeleteGatewayRouteResponse (..),+    newDeleteGatewayRouteResponse,++    -- * Response Lenses+    deleteGatewayRouteResponse_httpStatus,+    deleteGatewayRouteResponse_gatewayRoute,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteGatewayRoute' smart constructor.+data DeleteGatewayRoute = DeleteGatewayRoute'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the gateway route to delete.+    gatewayRouteName :: Prelude.Text,+    -- | The name of the service mesh to delete the gateway route from.+    meshName :: Prelude.Text,+    -- | The name of the virtual gateway to delete the route from.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteGatewayRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'deleteGatewayRoute_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'gatewayRouteName', 'deleteGatewayRoute_gatewayRouteName' - The name of the gateway route to delete.+--+-- 'meshName', 'deleteGatewayRoute_meshName' - The name of the service mesh to delete the gateway route from.+--+-- 'virtualGatewayName', 'deleteGatewayRoute_virtualGatewayName' - The name of the virtual gateway to delete the route from.+newDeleteGatewayRoute ::+  -- | 'gatewayRouteName'+  Prelude.Text ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  DeleteGatewayRoute+newDeleteGatewayRoute+  pGatewayRouteName_+  pMeshName_+  pVirtualGatewayName_ =+    DeleteGatewayRoute'+      { meshOwner = Prelude.Nothing,+        gatewayRouteName = pGatewayRouteName_,+        meshName = pMeshName_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+deleteGatewayRoute_meshOwner :: Lens.Lens' DeleteGatewayRoute (Prelude.Maybe Prelude.Text)+deleteGatewayRoute_meshOwner = Lens.lens (\DeleteGatewayRoute' {meshOwner} -> meshOwner) (\s@DeleteGatewayRoute' {} a -> s {meshOwner = a} :: DeleteGatewayRoute)++-- | The name of the gateway route to delete.+deleteGatewayRoute_gatewayRouteName :: Lens.Lens' DeleteGatewayRoute Prelude.Text+deleteGatewayRoute_gatewayRouteName = Lens.lens (\DeleteGatewayRoute' {gatewayRouteName} -> gatewayRouteName) (\s@DeleteGatewayRoute' {} a -> s {gatewayRouteName = a} :: DeleteGatewayRoute)++-- | The name of the service mesh to delete the gateway route from.+deleteGatewayRoute_meshName :: Lens.Lens' DeleteGatewayRoute Prelude.Text+deleteGatewayRoute_meshName = Lens.lens (\DeleteGatewayRoute' {meshName} -> meshName) (\s@DeleteGatewayRoute' {} a -> s {meshName = a} :: DeleteGatewayRoute)++-- | The name of the virtual gateway to delete the route from.+deleteGatewayRoute_virtualGatewayName :: Lens.Lens' DeleteGatewayRoute Prelude.Text+deleteGatewayRoute_virtualGatewayName = Lens.lens (\DeleteGatewayRoute' {virtualGatewayName} -> virtualGatewayName) (\s@DeleteGatewayRoute' {} a -> s {virtualGatewayName = a} :: DeleteGatewayRoute)++instance Core.AWSRequest DeleteGatewayRoute where+  type+    AWSResponse DeleteGatewayRoute =+      DeleteGatewayRouteResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteGatewayRouteResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DeleteGatewayRoute where+  hashWithSalt _salt DeleteGatewayRoute' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` gatewayRouteName+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData DeleteGatewayRoute where+  rnf DeleteGatewayRoute' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf gatewayRouteName+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualGatewayName++instance Data.ToHeaders DeleteGatewayRoute where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteGatewayRoute where+  toPath DeleteGatewayRoute' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualGateway/",+        Data.toBS virtualGatewayName,+        "/gatewayRoutes/",+        Data.toBS gatewayRouteName+      ]++instance Data.ToQuery DeleteGatewayRoute where+  toQuery DeleteGatewayRoute' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- | /See:/ 'newDeleteGatewayRouteResponse' smart constructor.+data DeleteGatewayRouteResponse = DeleteGatewayRouteResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The gateway route that was deleted.+    gatewayRoute :: GatewayRouteData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteGatewayRouteResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteGatewayRouteResponse_httpStatus' - The response's http status code.+--+-- 'gatewayRoute', 'deleteGatewayRouteResponse_gatewayRoute' - The gateway route that was deleted.+newDeleteGatewayRouteResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'gatewayRoute'+  GatewayRouteData ->+  DeleteGatewayRouteResponse+newDeleteGatewayRouteResponse+  pHttpStatus_+  pGatewayRoute_ =+    DeleteGatewayRouteResponse'+      { httpStatus =+          pHttpStatus_,+        gatewayRoute = pGatewayRoute_+      }++-- | The response's http status code.+deleteGatewayRouteResponse_httpStatus :: Lens.Lens' DeleteGatewayRouteResponse Prelude.Int+deleteGatewayRouteResponse_httpStatus = Lens.lens (\DeleteGatewayRouteResponse' {httpStatus} -> httpStatus) (\s@DeleteGatewayRouteResponse' {} a -> s {httpStatus = a} :: DeleteGatewayRouteResponse)++-- | The gateway route that was deleted.+deleteGatewayRouteResponse_gatewayRoute :: Lens.Lens' DeleteGatewayRouteResponse GatewayRouteData+deleteGatewayRouteResponse_gatewayRoute = Lens.lens (\DeleteGatewayRouteResponse' {gatewayRoute} -> gatewayRoute) (\s@DeleteGatewayRouteResponse' {} a -> s {gatewayRoute = a} :: DeleteGatewayRouteResponse)++instance Prelude.NFData DeleteGatewayRouteResponse where+  rnf DeleteGatewayRouteResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf gatewayRoute
+ gen/Amazonka/AppMesh/DeleteMesh.hs view
@@ -0,0 +1,166 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.DeleteMesh+-- 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 service mesh.+--+-- You must delete all resources (virtual services, routes, virtual+-- routers, and virtual nodes) in the service mesh before you can delete+-- the mesh itself.+module Amazonka.AppMesh.DeleteMesh+  ( -- * Creating a Request+    DeleteMesh (..),+    newDeleteMesh,++    -- * Request Lenses+    deleteMesh_meshName,++    -- * Destructuring the Response+    DeleteMeshResponse (..),+    newDeleteMeshResponse,++    -- * Response Lenses+    deleteMeshResponse_httpStatus,+    deleteMeshResponse_mesh,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newDeleteMesh' smart constructor.+data DeleteMesh = DeleteMesh'+  { -- | The name of the service mesh to delete.+    meshName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteMesh' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshName', 'deleteMesh_meshName' - The name of the service mesh to delete.+newDeleteMesh ::+  -- | 'meshName'+  Prelude.Text ->+  DeleteMesh+newDeleteMesh pMeshName_ =+  DeleteMesh' {meshName = pMeshName_}++-- | The name of the service mesh to delete.+deleteMesh_meshName :: Lens.Lens' DeleteMesh Prelude.Text+deleteMesh_meshName = Lens.lens (\DeleteMesh' {meshName} -> meshName) (\s@DeleteMesh' {} a -> s {meshName = a} :: DeleteMesh)++instance Core.AWSRequest DeleteMesh where+  type AWSResponse DeleteMesh = DeleteMeshResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteMeshResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DeleteMesh where+  hashWithSalt _salt DeleteMesh' {..} =+    _salt `Prelude.hashWithSalt` meshName++instance Prelude.NFData DeleteMesh where+  rnf DeleteMesh' {..} = Prelude.rnf meshName++instance Data.ToHeaders DeleteMesh where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteMesh where+  toPath DeleteMesh' {..} =+    Prelude.mconcat+      ["/v20190125/meshes/", Data.toBS meshName]++instance Data.ToQuery DeleteMesh where+  toQuery = Prelude.const Prelude.mempty++-- |+--+-- /See:/ 'newDeleteMeshResponse' smart constructor.+data DeleteMeshResponse = DeleteMeshResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The service mesh that was deleted.+    mesh :: MeshData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteMeshResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteMeshResponse_httpStatus' - The response's http status code.+--+-- 'mesh', 'deleteMeshResponse_mesh' - The service mesh that was deleted.+newDeleteMeshResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'mesh'+  MeshData ->+  DeleteMeshResponse+newDeleteMeshResponse pHttpStatus_ pMesh_ =+  DeleteMeshResponse'+    { httpStatus = pHttpStatus_,+      mesh = pMesh_+    }++-- | The response's http status code.+deleteMeshResponse_httpStatus :: Lens.Lens' DeleteMeshResponse Prelude.Int+deleteMeshResponse_httpStatus = Lens.lens (\DeleteMeshResponse' {httpStatus} -> httpStatus) (\s@DeleteMeshResponse' {} a -> s {httpStatus = a} :: DeleteMeshResponse)++-- | The service mesh that was deleted.+deleteMeshResponse_mesh :: Lens.Lens' DeleteMeshResponse MeshData+deleteMeshResponse_mesh = Lens.lens (\DeleteMeshResponse' {mesh} -> mesh) (\s@DeleteMeshResponse' {} a -> s {mesh = a} :: DeleteMeshResponse)++instance Prelude.NFData DeleteMeshResponse where+  rnf DeleteMeshResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf mesh
+ gen/Amazonka/AppMesh/DeleteRoute.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.AppMesh.DeleteRoute+-- 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 route.+module Amazonka.AppMesh.DeleteRoute+  ( -- * Creating a Request+    DeleteRoute (..),+    newDeleteRoute,++    -- * Request Lenses+    deleteRoute_meshOwner,+    deleteRoute_meshName,+    deleteRoute_routeName,+    deleteRoute_virtualRouterName,++    -- * Destructuring the Response+    DeleteRouteResponse (..),+    newDeleteRouteResponse,++    -- * Response Lenses+    deleteRouteResponse_httpStatus,+    deleteRouteResponse_route,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newDeleteRoute' smart constructor.+data DeleteRoute = DeleteRoute'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to delete the route in.+    meshName :: Prelude.Text,+    -- | The name of the route to delete.+    routeName :: Prelude.Text,+    -- | The name of the virtual router to delete the route in.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'deleteRoute_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'deleteRoute_meshName' - The name of the service mesh to delete the route in.+--+-- 'routeName', 'deleteRoute_routeName' - The name of the route to delete.+--+-- 'virtualRouterName', 'deleteRoute_virtualRouterName' - The name of the virtual router to delete the route in.+newDeleteRoute ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'routeName'+  Prelude.Text ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  DeleteRoute+newDeleteRoute+  pMeshName_+  pRouteName_+  pVirtualRouterName_ =+    DeleteRoute'+      { meshOwner = Prelude.Nothing,+        meshName = pMeshName_,+        routeName = pRouteName_,+        virtualRouterName = pVirtualRouterName_+      }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+deleteRoute_meshOwner :: Lens.Lens' DeleteRoute (Prelude.Maybe Prelude.Text)+deleteRoute_meshOwner = Lens.lens (\DeleteRoute' {meshOwner} -> meshOwner) (\s@DeleteRoute' {} a -> s {meshOwner = a} :: DeleteRoute)++-- | The name of the service mesh to delete the route in.+deleteRoute_meshName :: Lens.Lens' DeleteRoute Prelude.Text+deleteRoute_meshName = Lens.lens (\DeleteRoute' {meshName} -> meshName) (\s@DeleteRoute' {} a -> s {meshName = a} :: DeleteRoute)++-- | The name of the route to delete.+deleteRoute_routeName :: Lens.Lens' DeleteRoute Prelude.Text+deleteRoute_routeName = Lens.lens (\DeleteRoute' {routeName} -> routeName) (\s@DeleteRoute' {} a -> s {routeName = a} :: DeleteRoute)++-- | The name of the virtual router to delete the route in.+deleteRoute_virtualRouterName :: Lens.Lens' DeleteRoute Prelude.Text+deleteRoute_virtualRouterName = Lens.lens (\DeleteRoute' {virtualRouterName} -> virtualRouterName) (\s@DeleteRoute' {} a -> s {virtualRouterName = a} :: DeleteRoute)++instance Core.AWSRequest DeleteRoute where+  type AWSResponse DeleteRoute = DeleteRouteResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteRouteResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DeleteRoute where+  hashWithSalt _salt DeleteRoute' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` routeName+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData DeleteRoute where+  rnf DeleteRoute' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf routeName+      `Prelude.seq` Prelude.rnf virtualRouterName++instance Data.ToHeaders DeleteRoute where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteRoute where+  toPath DeleteRoute' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualRouter/",+        Data.toBS virtualRouterName,+        "/routes/",+        Data.toBS routeName+      ]++instance Data.ToQuery DeleteRoute where+  toQuery DeleteRoute' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newDeleteRouteResponse' smart constructor.+data DeleteRouteResponse = DeleteRouteResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The route that was deleted.+    route :: RouteData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRouteResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteRouteResponse_httpStatus' - The response's http status code.+--+-- 'route', 'deleteRouteResponse_route' - The route that was deleted.+newDeleteRouteResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'route'+  RouteData ->+  DeleteRouteResponse+newDeleteRouteResponse pHttpStatus_ pRoute_ =+  DeleteRouteResponse'+    { httpStatus = pHttpStatus_,+      route = pRoute_+    }++-- | The response's http status code.+deleteRouteResponse_httpStatus :: Lens.Lens' DeleteRouteResponse Prelude.Int+deleteRouteResponse_httpStatus = Lens.lens (\DeleteRouteResponse' {httpStatus} -> httpStatus) (\s@DeleteRouteResponse' {} a -> s {httpStatus = a} :: DeleteRouteResponse)++-- | The route that was deleted.+deleteRouteResponse_route :: Lens.Lens' DeleteRouteResponse RouteData+deleteRouteResponse_route = Lens.lens (\DeleteRouteResponse' {route} -> route) (\s@DeleteRouteResponse' {} a -> s {route = a} :: DeleteRouteResponse)++instance Prelude.NFData DeleteRouteResponse where+  rnf DeleteRouteResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf route
+ gen/Amazonka/AppMesh/DeleteVirtualGateway.hs view
@@ -0,0 +1,210 @@+{-# 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.AppMesh.DeleteVirtualGateway+-- 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 virtual gateway. You cannot delete a virtual gateway+-- if any gateway routes are associated to it.+module Amazonka.AppMesh.DeleteVirtualGateway+  ( -- * Creating a Request+    DeleteVirtualGateway (..),+    newDeleteVirtualGateway,++    -- * Request Lenses+    deleteVirtualGateway_meshOwner,+    deleteVirtualGateway_meshName,+    deleteVirtualGateway_virtualGatewayName,++    -- * Destructuring the Response+    DeleteVirtualGatewayResponse (..),+    newDeleteVirtualGatewayResponse,++    -- * Response Lenses+    deleteVirtualGatewayResponse_httpStatus,+    deleteVirtualGatewayResponse_virtualGateway,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteVirtualGateway' smart constructor.+data DeleteVirtualGateway = DeleteVirtualGateway'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to delete the virtual gateway from.+    meshName :: Prelude.Text,+    -- | The name of the virtual gateway to delete.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteVirtualGateway' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'deleteVirtualGateway_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'deleteVirtualGateway_meshName' - The name of the service mesh to delete the virtual gateway from.+--+-- 'virtualGatewayName', 'deleteVirtualGateway_virtualGatewayName' - The name of the virtual gateway to delete.+newDeleteVirtualGateway ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  DeleteVirtualGateway+newDeleteVirtualGateway+  pMeshName_+  pVirtualGatewayName_ =+    DeleteVirtualGateway'+      { meshOwner = Prelude.Nothing,+        meshName = pMeshName_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+deleteVirtualGateway_meshOwner :: Lens.Lens' DeleteVirtualGateway (Prelude.Maybe Prelude.Text)+deleteVirtualGateway_meshOwner = Lens.lens (\DeleteVirtualGateway' {meshOwner} -> meshOwner) (\s@DeleteVirtualGateway' {} a -> s {meshOwner = a} :: DeleteVirtualGateway)++-- | The name of the service mesh to delete the virtual gateway from.+deleteVirtualGateway_meshName :: Lens.Lens' DeleteVirtualGateway Prelude.Text+deleteVirtualGateway_meshName = Lens.lens (\DeleteVirtualGateway' {meshName} -> meshName) (\s@DeleteVirtualGateway' {} a -> s {meshName = a} :: DeleteVirtualGateway)++-- | The name of the virtual gateway to delete.+deleteVirtualGateway_virtualGatewayName :: Lens.Lens' DeleteVirtualGateway Prelude.Text+deleteVirtualGateway_virtualGatewayName = Lens.lens (\DeleteVirtualGateway' {virtualGatewayName} -> virtualGatewayName) (\s@DeleteVirtualGateway' {} a -> s {virtualGatewayName = a} :: DeleteVirtualGateway)++instance Core.AWSRequest DeleteVirtualGateway where+  type+    AWSResponse DeleteVirtualGateway =+      DeleteVirtualGatewayResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteVirtualGatewayResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DeleteVirtualGateway where+  hashWithSalt _salt DeleteVirtualGateway' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData DeleteVirtualGateway where+  rnf DeleteVirtualGateway' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualGatewayName++instance Data.ToHeaders DeleteVirtualGateway where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteVirtualGateway where+  toPath DeleteVirtualGateway' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualGateways/",+        Data.toBS virtualGatewayName+      ]++instance Data.ToQuery DeleteVirtualGateway where+  toQuery DeleteVirtualGateway' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- | /See:/ 'newDeleteVirtualGatewayResponse' smart constructor.+data DeleteVirtualGatewayResponse = DeleteVirtualGatewayResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The virtual gateway that was deleted.+    virtualGateway :: VirtualGatewayData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteVirtualGatewayResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteVirtualGatewayResponse_httpStatus' - The response's http status code.+--+-- 'virtualGateway', 'deleteVirtualGatewayResponse_virtualGateway' - The virtual gateway that was deleted.+newDeleteVirtualGatewayResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualGateway'+  VirtualGatewayData ->+  DeleteVirtualGatewayResponse+newDeleteVirtualGatewayResponse+  pHttpStatus_+  pVirtualGateway_ =+    DeleteVirtualGatewayResponse'+      { httpStatus =+          pHttpStatus_,+        virtualGateway = pVirtualGateway_+      }++-- | The response's http status code.+deleteVirtualGatewayResponse_httpStatus :: Lens.Lens' DeleteVirtualGatewayResponse Prelude.Int+deleteVirtualGatewayResponse_httpStatus = Lens.lens (\DeleteVirtualGatewayResponse' {httpStatus} -> httpStatus) (\s@DeleteVirtualGatewayResponse' {} a -> s {httpStatus = a} :: DeleteVirtualGatewayResponse)++-- | The virtual gateway that was deleted.+deleteVirtualGatewayResponse_virtualGateway :: Lens.Lens' DeleteVirtualGatewayResponse VirtualGatewayData+deleteVirtualGatewayResponse_virtualGateway = Lens.lens (\DeleteVirtualGatewayResponse' {virtualGateway} -> virtualGateway) (\s@DeleteVirtualGatewayResponse' {} a -> s {virtualGateway = a} :: DeleteVirtualGatewayResponse)++instance Prelude.NFData DeleteVirtualGatewayResponse where+  rnf DeleteVirtualGatewayResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualGateway
+ gen/Amazonka/AppMesh/DeleteVirtualNode.hs view
@@ -0,0 +1,214 @@+{-# 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.AppMesh.DeleteVirtualNode+-- 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 virtual node.+--+-- You must delete any virtual services that list a virtual node as a+-- service provider before you can delete the virtual node itself.+module Amazonka.AppMesh.DeleteVirtualNode+  ( -- * Creating a Request+    DeleteVirtualNode (..),+    newDeleteVirtualNode,++    -- * Request Lenses+    deleteVirtualNode_meshOwner,+    deleteVirtualNode_meshName,+    deleteVirtualNode_virtualNodeName,++    -- * Destructuring the Response+    DeleteVirtualNodeResponse (..),+    newDeleteVirtualNodeResponse,++    -- * Response Lenses+    deleteVirtualNodeResponse_httpStatus,+    deleteVirtualNodeResponse_virtualNode,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | Deletes a virtual node input.+--+-- /See:/ 'newDeleteVirtualNode' smart constructor.+data DeleteVirtualNode = DeleteVirtualNode'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to delete the virtual node in.+    meshName :: Prelude.Text,+    -- | The name of the virtual node to delete.+    virtualNodeName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteVirtualNode' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'deleteVirtualNode_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'deleteVirtualNode_meshName' - The name of the service mesh to delete the virtual node in.+--+-- 'virtualNodeName', 'deleteVirtualNode_virtualNodeName' - The name of the virtual node to delete.+newDeleteVirtualNode ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualNodeName'+  Prelude.Text ->+  DeleteVirtualNode+newDeleteVirtualNode pMeshName_ pVirtualNodeName_ =+  DeleteVirtualNode'+    { meshOwner = Prelude.Nothing,+      meshName = pMeshName_,+      virtualNodeName = pVirtualNodeName_+    }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+deleteVirtualNode_meshOwner :: Lens.Lens' DeleteVirtualNode (Prelude.Maybe Prelude.Text)+deleteVirtualNode_meshOwner = Lens.lens (\DeleteVirtualNode' {meshOwner} -> meshOwner) (\s@DeleteVirtualNode' {} a -> s {meshOwner = a} :: DeleteVirtualNode)++-- | The name of the service mesh to delete the virtual node in.+deleteVirtualNode_meshName :: Lens.Lens' DeleteVirtualNode Prelude.Text+deleteVirtualNode_meshName = Lens.lens (\DeleteVirtualNode' {meshName} -> meshName) (\s@DeleteVirtualNode' {} a -> s {meshName = a} :: DeleteVirtualNode)++-- | The name of the virtual node to delete.+deleteVirtualNode_virtualNodeName :: Lens.Lens' DeleteVirtualNode Prelude.Text+deleteVirtualNode_virtualNodeName = Lens.lens (\DeleteVirtualNode' {virtualNodeName} -> virtualNodeName) (\s@DeleteVirtualNode' {} a -> s {virtualNodeName = a} :: DeleteVirtualNode)++instance Core.AWSRequest DeleteVirtualNode where+  type+    AWSResponse DeleteVirtualNode =+      DeleteVirtualNodeResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteVirtualNodeResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DeleteVirtualNode where+  hashWithSalt _salt DeleteVirtualNode' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualNodeName++instance Prelude.NFData DeleteVirtualNode where+  rnf DeleteVirtualNode' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualNodeName++instance Data.ToHeaders DeleteVirtualNode where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteVirtualNode where+  toPath DeleteVirtualNode' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualNodes/",+        Data.toBS virtualNodeName+      ]++instance Data.ToQuery DeleteVirtualNode where+  toQuery DeleteVirtualNode' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newDeleteVirtualNodeResponse' smart constructor.+data DeleteVirtualNodeResponse = DeleteVirtualNodeResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The virtual node that was deleted.+    virtualNode :: VirtualNodeData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteVirtualNodeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteVirtualNodeResponse_httpStatus' - The response's http status code.+--+-- 'virtualNode', 'deleteVirtualNodeResponse_virtualNode' - The virtual node that was deleted.+newDeleteVirtualNodeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualNode'+  VirtualNodeData ->+  DeleteVirtualNodeResponse+newDeleteVirtualNodeResponse+  pHttpStatus_+  pVirtualNode_ =+    DeleteVirtualNodeResponse'+      { httpStatus =+          pHttpStatus_,+        virtualNode = pVirtualNode_+      }++-- | The response's http status code.+deleteVirtualNodeResponse_httpStatus :: Lens.Lens' DeleteVirtualNodeResponse Prelude.Int+deleteVirtualNodeResponse_httpStatus = Lens.lens (\DeleteVirtualNodeResponse' {httpStatus} -> httpStatus) (\s@DeleteVirtualNodeResponse' {} a -> s {httpStatus = a} :: DeleteVirtualNodeResponse)++-- | The virtual node that was deleted.+deleteVirtualNodeResponse_virtualNode :: Lens.Lens' DeleteVirtualNodeResponse VirtualNodeData+deleteVirtualNodeResponse_virtualNode = Lens.lens (\DeleteVirtualNodeResponse' {virtualNode} -> virtualNode) (\s@DeleteVirtualNodeResponse' {} a -> s {virtualNode = a} :: DeleteVirtualNodeResponse)++instance Prelude.NFData DeleteVirtualNodeResponse where+  rnf DeleteVirtualNodeResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualNode
+ gen/Amazonka/AppMesh/DeleteVirtualRouter.hs view
@@ -0,0 +1,214 @@+{-# 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.AppMesh.DeleteVirtualRouter+-- 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 virtual router.+--+-- You must delete any routes associated with the virtual router before you+-- can delete the router itself.+module Amazonka.AppMesh.DeleteVirtualRouter+  ( -- * Creating a Request+    DeleteVirtualRouter (..),+    newDeleteVirtualRouter,++    -- * Request Lenses+    deleteVirtualRouter_meshOwner,+    deleteVirtualRouter_meshName,+    deleteVirtualRouter_virtualRouterName,++    -- * Destructuring the Response+    DeleteVirtualRouterResponse (..),+    newDeleteVirtualRouterResponse,++    -- * Response Lenses+    deleteVirtualRouterResponse_httpStatus,+    deleteVirtualRouterResponse_virtualRouter,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newDeleteVirtualRouter' smart constructor.+data DeleteVirtualRouter = DeleteVirtualRouter'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to delete the virtual router in.+    meshName :: Prelude.Text,+    -- | The name of the virtual router to delete.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteVirtualRouter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'deleteVirtualRouter_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'deleteVirtualRouter_meshName' - The name of the service mesh to delete the virtual router in.+--+-- 'virtualRouterName', 'deleteVirtualRouter_virtualRouterName' - The name of the virtual router to delete.+newDeleteVirtualRouter ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  DeleteVirtualRouter+newDeleteVirtualRouter pMeshName_ pVirtualRouterName_ =+  DeleteVirtualRouter'+    { meshOwner = Prelude.Nothing,+      meshName = pMeshName_,+      virtualRouterName = pVirtualRouterName_+    }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+deleteVirtualRouter_meshOwner :: Lens.Lens' DeleteVirtualRouter (Prelude.Maybe Prelude.Text)+deleteVirtualRouter_meshOwner = Lens.lens (\DeleteVirtualRouter' {meshOwner} -> meshOwner) (\s@DeleteVirtualRouter' {} a -> s {meshOwner = a} :: DeleteVirtualRouter)++-- | The name of the service mesh to delete the virtual router in.+deleteVirtualRouter_meshName :: Lens.Lens' DeleteVirtualRouter Prelude.Text+deleteVirtualRouter_meshName = Lens.lens (\DeleteVirtualRouter' {meshName} -> meshName) (\s@DeleteVirtualRouter' {} a -> s {meshName = a} :: DeleteVirtualRouter)++-- | The name of the virtual router to delete.+deleteVirtualRouter_virtualRouterName :: Lens.Lens' DeleteVirtualRouter Prelude.Text+deleteVirtualRouter_virtualRouterName = Lens.lens (\DeleteVirtualRouter' {virtualRouterName} -> virtualRouterName) (\s@DeleteVirtualRouter' {} a -> s {virtualRouterName = a} :: DeleteVirtualRouter)++instance Core.AWSRequest DeleteVirtualRouter where+  type+    AWSResponse DeleteVirtualRouter =+      DeleteVirtualRouterResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteVirtualRouterResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DeleteVirtualRouter where+  hashWithSalt _salt DeleteVirtualRouter' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData DeleteVirtualRouter where+  rnf DeleteVirtualRouter' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualRouterName++instance Data.ToHeaders DeleteVirtualRouter where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteVirtualRouter where+  toPath DeleteVirtualRouter' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualRouters/",+        Data.toBS virtualRouterName+      ]++instance Data.ToQuery DeleteVirtualRouter where+  toQuery DeleteVirtualRouter' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newDeleteVirtualRouterResponse' smart constructor.+data DeleteVirtualRouterResponse = DeleteVirtualRouterResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The virtual router that was deleted.+    virtualRouter :: VirtualRouterData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteVirtualRouterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteVirtualRouterResponse_httpStatus' - The response's http status code.+--+-- 'virtualRouter', 'deleteVirtualRouterResponse_virtualRouter' - The virtual router that was deleted.+newDeleteVirtualRouterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualRouter'+  VirtualRouterData ->+  DeleteVirtualRouterResponse+newDeleteVirtualRouterResponse+  pHttpStatus_+  pVirtualRouter_ =+    DeleteVirtualRouterResponse'+      { httpStatus =+          pHttpStatus_,+        virtualRouter = pVirtualRouter_+      }++-- | The response's http status code.+deleteVirtualRouterResponse_httpStatus :: Lens.Lens' DeleteVirtualRouterResponse Prelude.Int+deleteVirtualRouterResponse_httpStatus = Lens.lens (\DeleteVirtualRouterResponse' {httpStatus} -> httpStatus) (\s@DeleteVirtualRouterResponse' {} a -> s {httpStatus = a} :: DeleteVirtualRouterResponse)++-- | The virtual router that was deleted.+deleteVirtualRouterResponse_virtualRouter :: Lens.Lens' DeleteVirtualRouterResponse VirtualRouterData+deleteVirtualRouterResponse_virtualRouter = Lens.lens (\DeleteVirtualRouterResponse' {virtualRouter} -> virtualRouter) (\s@DeleteVirtualRouterResponse' {} a -> s {virtualRouter = a} :: DeleteVirtualRouterResponse)++instance Prelude.NFData DeleteVirtualRouterResponse where+  rnf DeleteVirtualRouterResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualRouter
+ gen/Amazonka/AppMesh/DeleteVirtualService.hs view
@@ -0,0 +1,213 @@+{-# 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.AppMesh.DeleteVirtualService+-- 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 virtual service.+module Amazonka.AppMesh.DeleteVirtualService+  ( -- * Creating a Request+    DeleteVirtualService (..),+    newDeleteVirtualService,++    -- * Request Lenses+    deleteVirtualService_meshOwner,+    deleteVirtualService_meshName,+    deleteVirtualService_virtualServiceName,++    -- * Destructuring the Response+    DeleteVirtualServiceResponse (..),+    newDeleteVirtualServiceResponse,++    -- * Response Lenses+    deleteVirtualServiceResponse_httpStatus,+    deleteVirtualServiceResponse_virtualService,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newDeleteVirtualService' smart constructor.+data DeleteVirtualService = DeleteVirtualService'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to delete the virtual service in.+    meshName :: Prelude.Text,+    -- | The name of the virtual service to delete.+    virtualServiceName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteVirtualService' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'deleteVirtualService_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'deleteVirtualService_meshName' - The name of the service mesh to delete the virtual service in.+--+-- 'virtualServiceName', 'deleteVirtualService_virtualServiceName' - The name of the virtual service to delete.+newDeleteVirtualService ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualServiceName'+  Prelude.Text ->+  DeleteVirtualService+newDeleteVirtualService+  pMeshName_+  pVirtualServiceName_ =+    DeleteVirtualService'+      { meshOwner = Prelude.Nothing,+        meshName = pMeshName_,+        virtualServiceName = pVirtualServiceName_+      }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+deleteVirtualService_meshOwner :: Lens.Lens' DeleteVirtualService (Prelude.Maybe Prelude.Text)+deleteVirtualService_meshOwner = Lens.lens (\DeleteVirtualService' {meshOwner} -> meshOwner) (\s@DeleteVirtualService' {} a -> s {meshOwner = a} :: DeleteVirtualService)++-- | The name of the service mesh to delete the virtual service in.+deleteVirtualService_meshName :: Lens.Lens' DeleteVirtualService Prelude.Text+deleteVirtualService_meshName = Lens.lens (\DeleteVirtualService' {meshName} -> meshName) (\s@DeleteVirtualService' {} a -> s {meshName = a} :: DeleteVirtualService)++-- | The name of the virtual service to delete.+deleteVirtualService_virtualServiceName :: Lens.Lens' DeleteVirtualService Prelude.Text+deleteVirtualService_virtualServiceName = Lens.lens (\DeleteVirtualService' {virtualServiceName} -> virtualServiceName) (\s@DeleteVirtualService' {} a -> s {virtualServiceName = a} :: DeleteVirtualService)++instance Core.AWSRequest DeleteVirtualService where+  type+    AWSResponse DeleteVirtualService =+      DeleteVirtualServiceResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteVirtualServiceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DeleteVirtualService where+  hashWithSalt _salt DeleteVirtualService' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualServiceName++instance Prelude.NFData DeleteVirtualService where+  rnf DeleteVirtualService' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualServiceName++instance Data.ToHeaders DeleteVirtualService where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteVirtualService where+  toPath DeleteVirtualService' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualServices/",+        Data.toBS virtualServiceName+      ]++instance Data.ToQuery DeleteVirtualService where+  toQuery DeleteVirtualService' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newDeleteVirtualServiceResponse' smart constructor.+data DeleteVirtualServiceResponse = DeleteVirtualServiceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The virtual service that was deleted.+    virtualService :: VirtualServiceData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteVirtualServiceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteVirtualServiceResponse_httpStatus' - The response's http status code.+--+-- 'virtualService', 'deleteVirtualServiceResponse_virtualService' - The virtual service that was deleted.+newDeleteVirtualServiceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualService'+  VirtualServiceData ->+  DeleteVirtualServiceResponse+newDeleteVirtualServiceResponse+  pHttpStatus_+  pVirtualService_ =+    DeleteVirtualServiceResponse'+      { httpStatus =+          pHttpStatus_,+        virtualService = pVirtualService_+      }++-- | The response's http status code.+deleteVirtualServiceResponse_httpStatus :: Lens.Lens' DeleteVirtualServiceResponse Prelude.Int+deleteVirtualServiceResponse_httpStatus = Lens.lens (\DeleteVirtualServiceResponse' {httpStatus} -> httpStatus) (\s@DeleteVirtualServiceResponse' {} a -> s {httpStatus = a} :: DeleteVirtualServiceResponse)++-- | The virtual service that was deleted.+deleteVirtualServiceResponse_virtualService :: Lens.Lens' DeleteVirtualServiceResponse VirtualServiceData+deleteVirtualServiceResponse_virtualService = Lens.lens (\DeleteVirtualServiceResponse' {virtualService} -> virtualService) (\s@DeleteVirtualServiceResponse' {} a -> s {virtualService = a} :: DeleteVirtualServiceResponse)++instance Prelude.NFData DeleteVirtualServiceResponse where+  rnf DeleteVirtualServiceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualService
+ gen/Amazonka/AppMesh/DescribeGatewayRoute.hs view
@@ -0,0 +1,229 @@+{-# 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.AppMesh.DescribeGatewayRoute+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes an existing gateway route.+module Amazonka.AppMesh.DescribeGatewayRoute+  ( -- * Creating a Request+    DescribeGatewayRoute (..),+    newDescribeGatewayRoute,++    -- * Request Lenses+    describeGatewayRoute_meshOwner,+    describeGatewayRoute_gatewayRouteName,+    describeGatewayRoute_meshName,+    describeGatewayRoute_virtualGatewayName,++    -- * Destructuring the Response+    DescribeGatewayRouteResponse (..),+    newDescribeGatewayRouteResponse,++    -- * Response Lenses+    describeGatewayRouteResponse_httpStatus,+    describeGatewayRouteResponse_gatewayRoute,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeGatewayRoute' smart constructor.+data DescribeGatewayRoute = DescribeGatewayRoute'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the gateway route to describe.+    gatewayRouteName :: Prelude.Text,+    -- | The name of the service mesh that the gateway route resides in.+    meshName :: Prelude.Text,+    -- | The name of the virtual gateway that the gateway route is associated+    -- with.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeGatewayRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'describeGatewayRoute_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'gatewayRouteName', 'describeGatewayRoute_gatewayRouteName' - The name of the gateway route to describe.+--+-- 'meshName', 'describeGatewayRoute_meshName' - The name of the service mesh that the gateway route resides in.+--+-- 'virtualGatewayName', 'describeGatewayRoute_virtualGatewayName' - The name of the virtual gateway that the gateway route is associated+-- with.+newDescribeGatewayRoute ::+  -- | 'gatewayRouteName'+  Prelude.Text ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  DescribeGatewayRoute+newDescribeGatewayRoute+  pGatewayRouteName_+  pMeshName_+  pVirtualGatewayName_ =+    DescribeGatewayRoute'+      { meshOwner = Prelude.Nothing,+        gatewayRouteName = pGatewayRouteName_,+        meshName = pMeshName_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+describeGatewayRoute_meshOwner :: Lens.Lens' DescribeGatewayRoute (Prelude.Maybe Prelude.Text)+describeGatewayRoute_meshOwner = Lens.lens (\DescribeGatewayRoute' {meshOwner} -> meshOwner) (\s@DescribeGatewayRoute' {} a -> s {meshOwner = a} :: DescribeGatewayRoute)++-- | The name of the gateway route to describe.+describeGatewayRoute_gatewayRouteName :: Lens.Lens' DescribeGatewayRoute Prelude.Text+describeGatewayRoute_gatewayRouteName = Lens.lens (\DescribeGatewayRoute' {gatewayRouteName} -> gatewayRouteName) (\s@DescribeGatewayRoute' {} a -> s {gatewayRouteName = a} :: DescribeGatewayRoute)++-- | The name of the service mesh that the gateway route resides in.+describeGatewayRoute_meshName :: Lens.Lens' DescribeGatewayRoute Prelude.Text+describeGatewayRoute_meshName = Lens.lens (\DescribeGatewayRoute' {meshName} -> meshName) (\s@DescribeGatewayRoute' {} a -> s {meshName = a} :: DescribeGatewayRoute)++-- | The name of the virtual gateway that the gateway route is associated+-- with.+describeGatewayRoute_virtualGatewayName :: Lens.Lens' DescribeGatewayRoute Prelude.Text+describeGatewayRoute_virtualGatewayName = Lens.lens (\DescribeGatewayRoute' {virtualGatewayName} -> virtualGatewayName) (\s@DescribeGatewayRoute' {} a -> s {virtualGatewayName = a} :: DescribeGatewayRoute)++instance Core.AWSRequest DescribeGatewayRoute where+  type+    AWSResponse DescribeGatewayRoute =+      DescribeGatewayRouteResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeGatewayRouteResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DescribeGatewayRoute where+  hashWithSalt _salt DescribeGatewayRoute' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` gatewayRouteName+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData DescribeGatewayRoute where+  rnf DescribeGatewayRoute' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf gatewayRouteName+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualGatewayName++instance Data.ToHeaders DescribeGatewayRoute where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeGatewayRoute where+  toPath DescribeGatewayRoute' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualGateway/",+        Data.toBS virtualGatewayName,+        "/gatewayRoutes/",+        Data.toBS gatewayRouteName+      ]++instance Data.ToQuery DescribeGatewayRoute where+  toQuery DescribeGatewayRoute' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- | /See:/ 'newDescribeGatewayRouteResponse' smart constructor.+data DescribeGatewayRouteResponse = DescribeGatewayRouteResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your gateway route.+    gatewayRoute :: GatewayRouteData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeGatewayRouteResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'describeGatewayRouteResponse_httpStatus' - The response's http status code.+--+-- 'gatewayRoute', 'describeGatewayRouteResponse_gatewayRoute' - The full description of your gateway route.+newDescribeGatewayRouteResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'gatewayRoute'+  GatewayRouteData ->+  DescribeGatewayRouteResponse+newDescribeGatewayRouteResponse+  pHttpStatus_+  pGatewayRoute_ =+    DescribeGatewayRouteResponse'+      { httpStatus =+          pHttpStatus_,+        gatewayRoute = pGatewayRoute_+      }++-- | The response's http status code.+describeGatewayRouteResponse_httpStatus :: Lens.Lens' DescribeGatewayRouteResponse Prelude.Int+describeGatewayRouteResponse_httpStatus = Lens.lens (\DescribeGatewayRouteResponse' {httpStatus} -> httpStatus) (\s@DescribeGatewayRouteResponse' {} a -> s {httpStatus = a} :: DescribeGatewayRouteResponse)++-- | The full description of your gateway route.+describeGatewayRouteResponse_gatewayRoute :: Lens.Lens' DescribeGatewayRouteResponse GatewayRouteData+describeGatewayRouteResponse_gatewayRoute = Lens.lens (\DescribeGatewayRouteResponse' {gatewayRoute} -> gatewayRoute) (\s@DescribeGatewayRouteResponse' {} a -> s {gatewayRoute = a} :: DescribeGatewayRouteResponse)++instance Prelude.NFData DescribeGatewayRouteResponse where+  rnf DescribeGatewayRouteResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf gatewayRoute
+ gen/Amazonka/AppMesh/DescribeMesh.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.AppMesh.DescribeMesh+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes an existing service mesh.+module Amazonka.AppMesh.DescribeMesh+  ( -- * Creating a Request+    DescribeMesh (..),+    newDescribeMesh,++    -- * Request Lenses+    describeMesh_meshOwner,+    describeMesh_meshName,++    -- * Destructuring the Response+    DescribeMeshResponse (..),+    newDescribeMeshResponse,++    -- * Response Lenses+    describeMeshResponse_httpStatus,+    describeMeshResponse_mesh,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newDescribeMesh' smart constructor.+data DescribeMesh = DescribeMesh'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to describe.+    meshName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeMesh' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'describeMesh_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'describeMesh_meshName' - The name of the service mesh to describe.+newDescribeMesh ::+  -- | 'meshName'+  Prelude.Text ->+  DescribeMesh+newDescribeMesh pMeshName_ =+  DescribeMesh'+    { meshOwner = Prelude.Nothing,+      meshName = pMeshName_+    }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+describeMesh_meshOwner :: Lens.Lens' DescribeMesh (Prelude.Maybe Prelude.Text)+describeMesh_meshOwner = Lens.lens (\DescribeMesh' {meshOwner} -> meshOwner) (\s@DescribeMesh' {} a -> s {meshOwner = a} :: DescribeMesh)++-- | The name of the service mesh to describe.+describeMesh_meshName :: Lens.Lens' DescribeMesh Prelude.Text+describeMesh_meshName = Lens.lens (\DescribeMesh' {meshName} -> meshName) (\s@DescribeMesh' {} a -> s {meshName = a} :: DescribeMesh)++instance Core.AWSRequest DescribeMesh where+  type AWSResponse DescribeMesh = DescribeMeshResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeMeshResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DescribeMesh where+  hashWithSalt _salt DescribeMesh' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName++instance Prelude.NFData DescribeMesh where+  rnf DescribeMesh' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName++instance Data.ToHeaders DescribeMesh where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeMesh where+  toPath DescribeMesh' {..} =+    Prelude.mconcat+      ["/v20190125/meshes/", Data.toBS meshName]++instance Data.ToQuery DescribeMesh where+  toQuery DescribeMesh' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newDescribeMeshResponse' smart constructor.+data DescribeMeshResponse = DescribeMeshResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your service mesh.+    mesh :: MeshData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeMeshResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'describeMeshResponse_httpStatus' - The response's http status code.+--+-- 'mesh', 'describeMeshResponse_mesh' - The full description of your service mesh.+newDescribeMeshResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'mesh'+  MeshData ->+  DescribeMeshResponse+newDescribeMeshResponse pHttpStatus_ pMesh_ =+  DescribeMeshResponse'+    { httpStatus = pHttpStatus_,+      mesh = pMesh_+    }++-- | The response's http status code.+describeMeshResponse_httpStatus :: Lens.Lens' DescribeMeshResponse Prelude.Int+describeMeshResponse_httpStatus = Lens.lens (\DescribeMeshResponse' {httpStatus} -> httpStatus) (\s@DescribeMeshResponse' {} a -> s {httpStatus = a} :: DescribeMeshResponse)++-- | The full description of your service mesh.+describeMeshResponse_mesh :: Lens.Lens' DescribeMeshResponse MeshData+describeMeshResponse_mesh = Lens.lens (\DescribeMeshResponse' {mesh} -> mesh) (\s@DescribeMeshResponse' {} a -> s {mesh = a} :: DescribeMeshResponse)++instance Prelude.NFData DescribeMeshResponse where+  rnf DescribeMeshResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf mesh
+ gen/Amazonka/AppMesh/DescribeRoute.hs view
@@ -0,0 +1,227 @@+{-# 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.AppMesh.DescribeRoute+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes an existing route.+module Amazonka.AppMesh.DescribeRoute+  ( -- * Creating a Request+    DescribeRoute (..),+    newDescribeRoute,++    -- * Request Lenses+    describeRoute_meshOwner,+    describeRoute_meshName,+    describeRoute_routeName,+    describeRoute_virtualRouterName,++    -- * Destructuring the Response+    DescribeRouteResponse (..),+    newDescribeRouteResponse,++    -- * Response Lenses+    describeRouteResponse_httpStatus,+    describeRouteResponse_route,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newDescribeRoute' smart constructor.+data DescribeRoute = DescribeRoute'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh that the route resides in.+    meshName :: Prelude.Text,+    -- | The name of the route to describe.+    routeName :: Prelude.Text,+    -- | The name of the virtual router that the route is associated with.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'describeRoute_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'describeRoute_meshName' - The name of the service mesh that the route resides in.+--+-- 'routeName', 'describeRoute_routeName' - The name of the route to describe.+--+-- 'virtualRouterName', 'describeRoute_virtualRouterName' - The name of the virtual router that the route is associated with.+newDescribeRoute ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'routeName'+  Prelude.Text ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  DescribeRoute+newDescribeRoute+  pMeshName_+  pRouteName_+  pVirtualRouterName_ =+    DescribeRoute'+      { meshOwner = Prelude.Nothing,+        meshName = pMeshName_,+        routeName = pRouteName_,+        virtualRouterName = pVirtualRouterName_+      }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+describeRoute_meshOwner :: Lens.Lens' DescribeRoute (Prelude.Maybe Prelude.Text)+describeRoute_meshOwner = Lens.lens (\DescribeRoute' {meshOwner} -> meshOwner) (\s@DescribeRoute' {} a -> s {meshOwner = a} :: DescribeRoute)++-- | The name of the service mesh that the route resides in.+describeRoute_meshName :: Lens.Lens' DescribeRoute Prelude.Text+describeRoute_meshName = Lens.lens (\DescribeRoute' {meshName} -> meshName) (\s@DescribeRoute' {} a -> s {meshName = a} :: DescribeRoute)++-- | The name of the route to describe.+describeRoute_routeName :: Lens.Lens' DescribeRoute Prelude.Text+describeRoute_routeName = Lens.lens (\DescribeRoute' {routeName} -> routeName) (\s@DescribeRoute' {} a -> s {routeName = a} :: DescribeRoute)++-- | The name of the virtual router that the route is associated with.+describeRoute_virtualRouterName :: Lens.Lens' DescribeRoute Prelude.Text+describeRoute_virtualRouterName = Lens.lens (\DescribeRoute' {virtualRouterName} -> virtualRouterName) (\s@DescribeRoute' {} a -> s {virtualRouterName = a} :: DescribeRoute)++instance Core.AWSRequest DescribeRoute where+  type+    AWSResponse DescribeRoute =+      DescribeRouteResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeRouteResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DescribeRoute where+  hashWithSalt _salt DescribeRoute' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` routeName+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData DescribeRoute where+  rnf DescribeRoute' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf routeName+      `Prelude.seq` Prelude.rnf virtualRouterName++instance Data.ToHeaders DescribeRoute where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeRoute where+  toPath DescribeRoute' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualRouter/",+        Data.toBS virtualRouterName,+        "/routes/",+        Data.toBS routeName+      ]++instance Data.ToQuery DescribeRoute where+  toQuery DescribeRoute' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newDescribeRouteResponse' smart constructor.+data DescribeRouteResponse = DescribeRouteResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your route.+    route :: RouteData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRouteResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'describeRouteResponse_httpStatus' - The response's http status code.+--+-- 'route', 'describeRouteResponse_route' - The full description of your route.+newDescribeRouteResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'route'+  RouteData ->+  DescribeRouteResponse+newDescribeRouteResponse pHttpStatus_ pRoute_ =+  DescribeRouteResponse'+    { httpStatus = pHttpStatus_,+      route = pRoute_+    }++-- | The response's http status code.+describeRouteResponse_httpStatus :: Lens.Lens' DescribeRouteResponse Prelude.Int+describeRouteResponse_httpStatus = Lens.lens (\DescribeRouteResponse' {httpStatus} -> httpStatus) (\s@DescribeRouteResponse' {} a -> s {httpStatus = a} :: DescribeRouteResponse)++-- | The full description of your route.+describeRouteResponse_route :: Lens.Lens' DescribeRouteResponse RouteData+describeRouteResponse_route = Lens.lens (\DescribeRouteResponse' {route} -> route) (\s@DescribeRouteResponse' {} a -> s {route = a} :: DescribeRouteResponse)++instance Prelude.NFData DescribeRouteResponse where+  rnf DescribeRouteResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf route
+ gen/Amazonka/AppMesh/DescribeVirtualGateway.hs view
@@ -0,0 +1,213 @@+{-# 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.AppMesh.DescribeVirtualGateway+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes an existing virtual gateway.+module Amazonka.AppMesh.DescribeVirtualGateway+  ( -- * Creating a Request+    DescribeVirtualGateway (..),+    newDescribeVirtualGateway,++    -- * Request Lenses+    describeVirtualGateway_meshOwner,+    describeVirtualGateway_meshName,+    describeVirtualGateway_virtualGatewayName,++    -- * Destructuring the Response+    DescribeVirtualGatewayResponse (..),+    newDescribeVirtualGatewayResponse,++    -- * Response Lenses+    describeVirtualGatewayResponse_httpStatus,+    describeVirtualGatewayResponse_virtualGateway,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeVirtualGateway' smart constructor.+data DescribeVirtualGateway = DescribeVirtualGateway'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh that the gateway route resides in.+    meshName :: Prelude.Text,+    -- | The name of the virtual gateway to describe.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeVirtualGateway' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'describeVirtualGateway_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'describeVirtualGateway_meshName' - The name of the service mesh that the gateway route resides in.+--+-- 'virtualGatewayName', 'describeVirtualGateway_virtualGatewayName' - The name of the virtual gateway to describe.+newDescribeVirtualGateway ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  DescribeVirtualGateway+newDescribeVirtualGateway+  pMeshName_+  pVirtualGatewayName_ =+    DescribeVirtualGateway'+      { meshOwner =+          Prelude.Nothing,+        meshName = pMeshName_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+describeVirtualGateway_meshOwner :: Lens.Lens' DescribeVirtualGateway (Prelude.Maybe Prelude.Text)+describeVirtualGateway_meshOwner = Lens.lens (\DescribeVirtualGateway' {meshOwner} -> meshOwner) (\s@DescribeVirtualGateway' {} a -> s {meshOwner = a} :: DescribeVirtualGateway)++-- | The name of the service mesh that the gateway route resides in.+describeVirtualGateway_meshName :: Lens.Lens' DescribeVirtualGateway Prelude.Text+describeVirtualGateway_meshName = Lens.lens (\DescribeVirtualGateway' {meshName} -> meshName) (\s@DescribeVirtualGateway' {} a -> s {meshName = a} :: DescribeVirtualGateway)++-- | The name of the virtual gateway to describe.+describeVirtualGateway_virtualGatewayName :: Lens.Lens' DescribeVirtualGateway Prelude.Text+describeVirtualGateway_virtualGatewayName = Lens.lens (\DescribeVirtualGateway' {virtualGatewayName} -> virtualGatewayName) (\s@DescribeVirtualGateway' {} a -> s {virtualGatewayName = a} :: DescribeVirtualGateway)++instance Core.AWSRequest DescribeVirtualGateway where+  type+    AWSResponse DescribeVirtualGateway =+      DescribeVirtualGatewayResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeVirtualGatewayResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DescribeVirtualGateway where+  hashWithSalt _salt DescribeVirtualGateway' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData DescribeVirtualGateway where+  rnf DescribeVirtualGateway' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualGatewayName++instance Data.ToHeaders DescribeVirtualGateway where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeVirtualGateway where+  toPath DescribeVirtualGateway' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualGateways/",+        Data.toBS virtualGatewayName+      ]++instance Data.ToQuery DescribeVirtualGateway where+  toQuery DescribeVirtualGateway' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- | /See:/ 'newDescribeVirtualGatewayResponse' smart constructor.+data DescribeVirtualGatewayResponse = DescribeVirtualGatewayResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your virtual gateway.+    virtualGateway :: VirtualGatewayData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeVirtualGatewayResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'describeVirtualGatewayResponse_httpStatus' - The response's http status code.+--+-- 'virtualGateway', 'describeVirtualGatewayResponse_virtualGateway' - The full description of your virtual gateway.+newDescribeVirtualGatewayResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualGateway'+  VirtualGatewayData ->+  DescribeVirtualGatewayResponse+newDescribeVirtualGatewayResponse+  pHttpStatus_+  pVirtualGateway_ =+    DescribeVirtualGatewayResponse'+      { httpStatus =+          pHttpStatus_,+        virtualGateway = pVirtualGateway_+      }++-- | The response's http status code.+describeVirtualGatewayResponse_httpStatus :: Lens.Lens' DescribeVirtualGatewayResponse Prelude.Int+describeVirtualGatewayResponse_httpStatus = Lens.lens (\DescribeVirtualGatewayResponse' {httpStatus} -> httpStatus) (\s@DescribeVirtualGatewayResponse' {} a -> s {httpStatus = a} :: DescribeVirtualGatewayResponse)++-- | The full description of your virtual gateway.+describeVirtualGatewayResponse_virtualGateway :: Lens.Lens' DescribeVirtualGatewayResponse VirtualGatewayData+describeVirtualGatewayResponse_virtualGateway = Lens.lens (\DescribeVirtualGatewayResponse' {virtualGateway} -> virtualGateway) (\s@DescribeVirtualGatewayResponse' {} a -> s {virtualGateway = a} :: DescribeVirtualGatewayResponse)++instance+  Prelude.NFData+    DescribeVirtualGatewayResponse+  where+  rnf DescribeVirtualGatewayResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualGateway
+ gen/Amazonka/AppMesh/DescribeVirtualNode.hs view
@@ -0,0 +1,211 @@+{-# 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.AppMesh.DescribeVirtualNode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes an existing virtual node.+module Amazonka.AppMesh.DescribeVirtualNode+  ( -- * Creating a Request+    DescribeVirtualNode (..),+    newDescribeVirtualNode,++    -- * Request Lenses+    describeVirtualNode_meshOwner,+    describeVirtualNode_meshName,+    describeVirtualNode_virtualNodeName,++    -- * Destructuring the Response+    DescribeVirtualNodeResponse (..),+    newDescribeVirtualNodeResponse,++    -- * Response Lenses+    describeVirtualNodeResponse_httpStatus,+    describeVirtualNodeResponse_virtualNode,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newDescribeVirtualNode' smart constructor.+data DescribeVirtualNode = DescribeVirtualNode'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh that the virtual node resides in.+    meshName :: Prelude.Text,+    -- | The name of the virtual node to describe.+    virtualNodeName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeVirtualNode' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'describeVirtualNode_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'describeVirtualNode_meshName' - The name of the service mesh that the virtual node resides in.+--+-- 'virtualNodeName', 'describeVirtualNode_virtualNodeName' - The name of the virtual node to describe.+newDescribeVirtualNode ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualNodeName'+  Prelude.Text ->+  DescribeVirtualNode+newDescribeVirtualNode pMeshName_ pVirtualNodeName_ =+  DescribeVirtualNode'+    { meshOwner = Prelude.Nothing,+      meshName = pMeshName_,+      virtualNodeName = pVirtualNodeName_+    }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+describeVirtualNode_meshOwner :: Lens.Lens' DescribeVirtualNode (Prelude.Maybe Prelude.Text)+describeVirtualNode_meshOwner = Lens.lens (\DescribeVirtualNode' {meshOwner} -> meshOwner) (\s@DescribeVirtualNode' {} a -> s {meshOwner = a} :: DescribeVirtualNode)++-- | The name of the service mesh that the virtual node resides in.+describeVirtualNode_meshName :: Lens.Lens' DescribeVirtualNode Prelude.Text+describeVirtualNode_meshName = Lens.lens (\DescribeVirtualNode' {meshName} -> meshName) (\s@DescribeVirtualNode' {} a -> s {meshName = a} :: DescribeVirtualNode)++-- | The name of the virtual node to describe.+describeVirtualNode_virtualNodeName :: Lens.Lens' DescribeVirtualNode Prelude.Text+describeVirtualNode_virtualNodeName = Lens.lens (\DescribeVirtualNode' {virtualNodeName} -> virtualNodeName) (\s@DescribeVirtualNode' {} a -> s {virtualNodeName = a} :: DescribeVirtualNode)++instance Core.AWSRequest DescribeVirtualNode where+  type+    AWSResponse DescribeVirtualNode =+      DescribeVirtualNodeResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeVirtualNodeResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DescribeVirtualNode where+  hashWithSalt _salt DescribeVirtualNode' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualNodeName++instance Prelude.NFData DescribeVirtualNode where+  rnf DescribeVirtualNode' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualNodeName++instance Data.ToHeaders DescribeVirtualNode where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeVirtualNode where+  toPath DescribeVirtualNode' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualNodes/",+        Data.toBS virtualNodeName+      ]++instance Data.ToQuery DescribeVirtualNode where+  toQuery DescribeVirtualNode' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newDescribeVirtualNodeResponse' smart constructor.+data DescribeVirtualNodeResponse = DescribeVirtualNodeResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your virtual node.+    virtualNode :: VirtualNodeData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeVirtualNodeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'describeVirtualNodeResponse_httpStatus' - The response's http status code.+--+-- 'virtualNode', 'describeVirtualNodeResponse_virtualNode' - The full description of your virtual node.+newDescribeVirtualNodeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualNode'+  VirtualNodeData ->+  DescribeVirtualNodeResponse+newDescribeVirtualNodeResponse+  pHttpStatus_+  pVirtualNode_ =+    DescribeVirtualNodeResponse'+      { httpStatus =+          pHttpStatus_,+        virtualNode = pVirtualNode_+      }++-- | The response's http status code.+describeVirtualNodeResponse_httpStatus :: Lens.Lens' DescribeVirtualNodeResponse Prelude.Int+describeVirtualNodeResponse_httpStatus = Lens.lens (\DescribeVirtualNodeResponse' {httpStatus} -> httpStatus) (\s@DescribeVirtualNodeResponse' {} a -> s {httpStatus = a} :: DescribeVirtualNodeResponse)++-- | The full description of your virtual node.+describeVirtualNodeResponse_virtualNode :: Lens.Lens' DescribeVirtualNodeResponse VirtualNodeData+describeVirtualNodeResponse_virtualNode = Lens.lens (\DescribeVirtualNodeResponse' {virtualNode} -> virtualNode) (\s@DescribeVirtualNodeResponse' {} a -> s {virtualNode = a} :: DescribeVirtualNodeResponse)++instance Prelude.NFData DescribeVirtualNodeResponse where+  rnf DescribeVirtualNodeResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualNode
+ gen/Amazonka/AppMesh/DescribeVirtualRouter.hs view
@@ -0,0 +1,213 @@+{-# 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.AppMesh.DescribeVirtualRouter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes an existing virtual router.+module Amazonka.AppMesh.DescribeVirtualRouter+  ( -- * Creating a Request+    DescribeVirtualRouter (..),+    newDescribeVirtualRouter,++    -- * Request Lenses+    describeVirtualRouter_meshOwner,+    describeVirtualRouter_meshName,+    describeVirtualRouter_virtualRouterName,++    -- * Destructuring the Response+    DescribeVirtualRouterResponse (..),+    newDescribeVirtualRouterResponse,++    -- * Response Lenses+    describeVirtualRouterResponse_httpStatus,+    describeVirtualRouterResponse_virtualRouter,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newDescribeVirtualRouter' smart constructor.+data DescribeVirtualRouter = DescribeVirtualRouter'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh that the virtual router resides in.+    meshName :: Prelude.Text,+    -- | The name of the virtual router to describe.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeVirtualRouter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'describeVirtualRouter_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'describeVirtualRouter_meshName' - The name of the service mesh that the virtual router resides in.+--+-- 'virtualRouterName', 'describeVirtualRouter_virtualRouterName' - The name of the virtual router to describe.+newDescribeVirtualRouter ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  DescribeVirtualRouter+newDescribeVirtualRouter+  pMeshName_+  pVirtualRouterName_ =+    DescribeVirtualRouter'+      { meshOwner = Prelude.Nothing,+        meshName = pMeshName_,+        virtualRouterName = pVirtualRouterName_+      }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+describeVirtualRouter_meshOwner :: Lens.Lens' DescribeVirtualRouter (Prelude.Maybe Prelude.Text)+describeVirtualRouter_meshOwner = Lens.lens (\DescribeVirtualRouter' {meshOwner} -> meshOwner) (\s@DescribeVirtualRouter' {} a -> s {meshOwner = a} :: DescribeVirtualRouter)++-- | The name of the service mesh that the virtual router resides in.+describeVirtualRouter_meshName :: Lens.Lens' DescribeVirtualRouter Prelude.Text+describeVirtualRouter_meshName = Lens.lens (\DescribeVirtualRouter' {meshName} -> meshName) (\s@DescribeVirtualRouter' {} a -> s {meshName = a} :: DescribeVirtualRouter)++-- | The name of the virtual router to describe.+describeVirtualRouter_virtualRouterName :: Lens.Lens' DescribeVirtualRouter Prelude.Text+describeVirtualRouter_virtualRouterName = Lens.lens (\DescribeVirtualRouter' {virtualRouterName} -> virtualRouterName) (\s@DescribeVirtualRouter' {} a -> s {virtualRouterName = a} :: DescribeVirtualRouter)++instance Core.AWSRequest DescribeVirtualRouter where+  type+    AWSResponse DescribeVirtualRouter =+      DescribeVirtualRouterResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeVirtualRouterResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DescribeVirtualRouter where+  hashWithSalt _salt DescribeVirtualRouter' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData DescribeVirtualRouter where+  rnf DescribeVirtualRouter' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualRouterName++instance Data.ToHeaders DescribeVirtualRouter where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeVirtualRouter where+  toPath DescribeVirtualRouter' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualRouters/",+        Data.toBS virtualRouterName+      ]++instance Data.ToQuery DescribeVirtualRouter where+  toQuery DescribeVirtualRouter' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newDescribeVirtualRouterResponse' smart constructor.+data DescribeVirtualRouterResponse = DescribeVirtualRouterResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your virtual router.+    virtualRouter :: VirtualRouterData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeVirtualRouterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'describeVirtualRouterResponse_httpStatus' - The response's http status code.+--+-- 'virtualRouter', 'describeVirtualRouterResponse_virtualRouter' - The full description of your virtual router.+newDescribeVirtualRouterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualRouter'+  VirtualRouterData ->+  DescribeVirtualRouterResponse+newDescribeVirtualRouterResponse+  pHttpStatus_+  pVirtualRouter_ =+    DescribeVirtualRouterResponse'+      { httpStatus =+          pHttpStatus_,+        virtualRouter = pVirtualRouter_+      }++-- | The response's http status code.+describeVirtualRouterResponse_httpStatus :: Lens.Lens' DescribeVirtualRouterResponse Prelude.Int+describeVirtualRouterResponse_httpStatus = Lens.lens (\DescribeVirtualRouterResponse' {httpStatus} -> httpStatus) (\s@DescribeVirtualRouterResponse' {} a -> s {httpStatus = a} :: DescribeVirtualRouterResponse)++-- | The full description of your virtual router.+describeVirtualRouterResponse_virtualRouter :: Lens.Lens' DescribeVirtualRouterResponse VirtualRouterData+describeVirtualRouterResponse_virtualRouter = Lens.lens (\DescribeVirtualRouterResponse' {virtualRouter} -> virtualRouter) (\s@DescribeVirtualRouterResponse' {} a -> s {virtualRouter = a} :: DescribeVirtualRouterResponse)++instance Prelude.NFData DescribeVirtualRouterResponse where+  rnf DescribeVirtualRouterResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualRouter
+ gen/Amazonka/AppMesh/DescribeVirtualService.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.AppMesh.DescribeVirtualService+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes an existing virtual service.+module Amazonka.AppMesh.DescribeVirtualService+  ( -- * Creating a Request+    DescribeVirtualService (..),+    newDescribeVirtualService,++    -- * Request Lenses+    describeVirtualService_meshOwner,+    describeVirtualService_meshName,+    describeVirtualService_virtualServiceName,++    -- * Destructuring the Response+    DescribeVirtualServiceResponse (..),+    newDescribeVirtualServiceResponse,++    -- * Response Lenses+    describeVirtualServiceResponse_httpStatus,+    describeVirtualServiceResponse_virtualService,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newDescribeVirtualService' smart constructor.+data DescribeVirtualService = DescribeVirtualService'+  { -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh that the virtual service resides in.+    meshName :: Prelude.Text,+    -- | The name of the virtual service to describe.+    virtualServiceName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeVirtualService' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshOwner', 'describeVirtualService_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'describeVirtualService_meshName' - The name of the service mesh that the virtual service resides in.+--+-- 'virtualServiceName', 'describeVirtualService_virtualServiceName' - The name of the virtual service to describe.+newDescribeVirtualService ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualServiceName'+  Prelude.Text ->+  DescribeVirtualService+newDescribeVirtualService+  pMeshName_+  pVirtualServiceName_ =+    DescribeVirtualService'+      { meshOwner =+          Prelude.Nothing,+        meshName = pMeshName_,+        virtualServiceName = pVirtualServiceName_+      }++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+describeVirtualService_meshOwner :: Lens.Lens' DescribeVirtualService (Prelude.Maybe Prelude.Text)+describeVirtualService_meshOwner = Lens.lens (\DescribeVirtualService' {meshOwner} -> meshOwner) (\s@DescribeVirtualService' {} a -> s {meshOwner = a} :: DescribeVirtualService)++-- | The name of the service mesh that the virtual service resides in.+describeVirtualService_meshName :: Lens.Lens' DescribeVirtualService Prelude.Text+describeVirtualService_meshName = Lens.lens (\DescribeVirtualService' {meshName} -> meshName) (\s@DescribeVirtualService' {} a -> s {meshName = a} :: DescribeVirtualService)++-- | The name of the virtual service to describe.+describeVirtualService_virtualServiceName :: Lens.Lens' DescribeVirtualService Prelude.Text+describeVirtualService_virtualServiceName = Lens.lens (\DescribeVirtualService' {virtualServiceName} -> virtualServiceName) (\s@DescribeVirtualService' {} a -> s {virtualServiceName = a} :: DescribeVirtualService)++instance Core.AWSRequest DescribeVirtualService where+  type+    AWSResponse DescribeVirtualService =+      DescribeVirtualServiceResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeVirtualServiceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable DescribeVirtualService where+  hashWithSalt _salt DescribeVirtualService' {..} =+    _salt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualServiceName++instance Prelude.NFData DescribeVirtualService where+  rnf DescribeVirtualService' {..} =+    Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualServiceName++instance Data.ToHeaders DescribeVirtualService where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeVirtualService where+  toPath DescribeVirtualService' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualServices/",+        Data.toBS virtualServiceName+      ]++instance Data.ToQuery DescribeVirtualService where+  toQuery DescribeVirtualService' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newDescribeVirtualServiceResponse' smart constructor.+data DescribeVirtualServiceResponse = DescribeVirtualServiceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The full description of your virtual service.+    virtualService :: VirtualServiceData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeVirtualServiceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'describeVirtualServiceResponse_httpStatus' - The response's http status code.+--+-- 'virtualService', 'describeVirtualServiceResponse_virtualService' - The full description of your virtual service.+newDescribeVirtualServiceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualService'+  VirtualServiceData ->+  DescribeVirtualServiceResponse+newDescribeVirtualServiceResponse+  pHttpStatus_+  pVirtualService_ =+    DescribeVirtualServiceResponse'+      { httpStatus =+          pHttpStatus_,+        virtualService = pVirtualService_+      }++-- | The response's http status code.+describeVirtualServiceResponse_httpStatus :: Lens.Lens' DescribeVirtualServiceResponse Prelude.Int+describeVirtualServiceResponse_httpStatus = Lens.lens (\DescribeVirtualServiceResponse' {httpStatus} -> httpStatus) (\s@DescribeVirtualServiceResponse' {} a -> s {httpStatus = a} :: DescribeVirtualServiceResponse)++-- | The full description of your virtual service.+describeVirtualServiceResponse_virtualService :: Lens.Lens' DescribeVirtualServiceResponse VirtualServiceData+describeVirtualServiceResponse_virtualService = Lens.lens (\DescribeVirtualServiceResponse' {virtualService} -> virtualService) (\s@DescribeVirtualServiceResponse' {} a -> s {virtualService = a} :: DescribeVirtualServiceResponse)++instance+  Prelude.NFData+    DescribeVirtualServiceResponse+  where+  rnf DescribeVirtualServiceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualService
+ gen/Amazonka/AppMesh/Lens.hs view
@@ -0,0 +1,1185 @@+{-# 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.AppMesh.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.AppMesh.Lens+  ( -- * Operations++    -- ** CreateGatewayRoute+    createGatewayRoute_clientToken,+    createGatewayRoute_meshOwner,+    createGatewayRoute_tags,+    createGatewayRoute_gatewayRouteName,+    createGatewayRoute_meshName,+    createGatewayRoute_spec,+    createGatewayRoute_virtualGatewayName,+    createGatewayRouteResponse_httpStatus,+    createGatewayRouteResponse_gatewayRoute,++    -- ** CreateMesh+    createMesh_clientToken,+    createMesh_spec,+    createMesh_tags,+    createMesh_meshName,+    createMeshResponse_httpStatus,+    createMeshResponse_mesh,++    -- ** CreateRoute+    createRoute_clientToken,+    createRoute_meshOwner,+    createRoute_tags,+    createRoute_meshName,+    createRoute_routeName,+    createRoute_spec,+    createRoute_virtualRouterName,+    createRouteResponse_httpStatus,+    createRouteResponse_route,++    -- ** CreateVirtualGateway+    createVirtualGateway_clientToken,+    createVirtualGateway_meshOwner,+    createVirtualGateway_tags,+    createVirtualGateway_meshName,+    createVirtualGateway_spec,+    createVirtualGateway_virtualGatewayName,+    createVirtualGatewayResponse_httpStatus,+    createVirtualGatewayResponse_virtualGateway,++    -- ** CreateVirtualNode+    createVirtualNode_clientToken,+    createVirtualNode_meshOwner,+    createVirtualNode_tags,+    createVirtualNode_meshName,+    createVirtualNode_spec,+    createVirtualNode_virtualNodeName,+    createVirtualNodeResponse_httpStatus,+    createVirtualNodeResponse_virtualNode,++    -- ** CreateVirtualRouter+    createVirtualRouter_clientToken,+    createVirtualRouter_meshOwner,+    createVirtualRouter_tags,+    createVirtualRouter_meshName,+    createVirtualRouter_spec,+    createVirtualRouter_virtualRouterName,+    createVirtualRouterResponse_httpStatus,+    createVirtualRouterResponse_virtualRouter,++    -- ** CreateVirtualService+    createVirtualService_clientToken,+    createVirtualService_meshOwner,+    createVirtualService_tags,+    createVirtualService_meshName,+    createVirtualService_spec,+    createVirtualService_virtualServiceName,+    createVirtualServiceResponse_httpStatus,+    createVirtualServiceResponse_virtualService,++    -- ** DeleteGatewayRoute+    deleteGatewayRoute_meshOwner,+    deleteGatewayRoute_gatewayRouteName,+    deleteGatewayRoute_meshName,+    deleteGatewayRoute_virtualGatewayName,+    deleteGatewayRouteResponse_httpStatus,+    deleteGatewayRouteResponse_gatewayRoute,++    -- ** DeleteMesh+    deleteMesh_meshName,+    deleteMeshResponse_httpStatus,+    deleteMeshResponse_mesh,++    -- ** DeleteRoute+    deleteRoute_meshOwner,+    deleteRoute_meshName,+    deleteRoute_routeName,+    deleteRoute_virtualRouterName,+    deleteRouteResponse_httpStatus,+    deleteRouteResponse_route,++    -- ** DeleteVirtualGateway+    deleteVirtualGateway_meshOwner,+    deleteVirtualGateway_meshName,+    deleteVirtualGateway_virtualGatewayName,+    deleteVirtualGatewayResponse_httpStatus,+    deleteVirtualGatewayResponse_virtualGateway,++    -- ** DeleteVirtualNode+    deleteVirtualNode_meshOwner,+    deleteVirtualNode_meshName,+    deleteVirtualNode_virtualNodeName,+    deleteVirtualNodeResponse_httpStatus,+    deleteVirtualNodeResponse_virtualNode,++    -- ** DeleteVirtualRouter+    deleteVirtualRouter_meshOwner,+    deleteVirtualRouter_meshName,+    deleteVirtualRouter_virtualRouterName,+    deleteVirtualRouterResponse_httpStatus,+    deleteVirtualRouterResponse_virtualRouter,++    -- ** DeleteVirtualService+    deleteVirtualService_meshOwner,+    deleteVirtualService_meshName,+    deleteVirtualService_virtualServiceName,+    deleteVirtualServiceResponse_httpStatus,+    deleteVirtualServiceResponse_virtualService,++    -- ** DescribeGatewayRoute+    describeGatewayRoute_meshOwner,+    describeGatewayRoute_gatewayRouteName,+    describeGatewayRoute_meshName,+    describeGatewayRoute_virtualGatewayName,+    describeGatewayRouteResponse_httpStatus,+    describeGatewayRouteResponse_gatewayRoute,++    -- ** DescribeMesh+    describeMesh_meshOwner,+    describeMesh_meshName,+    describeMeshResponse_httpStatus,+    describeMeshResponse_mesh,++    -- ** DescribeRoute+    describeRoute_meshOwner,+    describeRoute_meshName,+    describeRoute_routeName,+    describeRoute_virtualRouterName,+    describeRouteResponse_httpStatus,+    describeRouteResponse_route,++    -- ** DescribeVirtualGateway+    describeVirtualGateway_meshOwner,+    describeVirtualGateway_meshName,+    describeVirtualGateway_virtualGatewayName,+    describeVirtualGatewayResponse_httpStatus,+    describeVirtualGatewayResponse_virtualGateway,++    -- ** DescribeVirtualNode+    describeVirtualNode_meshOwner,+    describeVirtualNode_meshName,+    describeVirtualNode_virtualNodeName,+    describeVirtualNodeResponse_httpStatus,+    describeVirtualNodeResponse_virtualNode,++    -- ** DescribeVirtualRouter+    describeVirtualRouter_meshOwner,+    describeVirtualRouter_meshName,+    describeVirtualRouter_virtualRouterName,+    describeVirtualRouterResponse_httpStatus,+    describeVirtualRouterResponse_virtualRouter,++    -- ** DescribeVirtualService+    describeVirtualService_meshOwner,+    describeVirtualService_meshName,+    describeVirtualService_virtualServiceName,+    describeVirtualServiceResponse_httpStatus,+    describeVirtualServiceResponse_virtualService,++    -- ** ListGatewayRoutes+    listGatewayRoutes_limit,+    listGatewayRoutes_meshOwner,+    listGatewayRoutes_nextToken,+    listGatewayRoutes_meshName,+    listGatewayRoutes_virtualGatewayName,+    listGatewayRoutesResponse_nextToken,+    listGatewayRoutesResponse_httpStatus,+    listGatewayRoutesResponse_gatewayRoutes,++    -- ** ListMeshes+    listMeshes_limit,+    listMeshes_nextToken,+    listMeshesResponse_nextToken,+    listMeshesResponse_httpStatus,+    listMeshesResponse_meshes,++    -- ** ListRoutes+    listRoutes_limit,+    listRoutes_meshOwner,+    listRoutes_nextToken,+    listRoutes_meshName,+    listRoutes_virtualRouterName,+    listRoutesResponse_nextToken,+    listRoutesResponse_httpStatus,+    listRoutesResponse_routes,++    -- ** ListTagsForResource+    listTagsForResource_limit,+    listTagsForResource_nextToken,+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_nextToken,+    listTagsForResourceResponse_httpStatus,+    listTagsForResourceResponse_tags,++    -- ** ListVirtualGateways+    listVirtualGateways_limit,+    listVirtualGateways_meshOwner,+    listVirtualGateways_nextToken,+    listVirtualGateways_meshName,+    listVirtualGatewaysResponse_nextToken,+    listVirtualGatewaysResponse_httpStatus,+    listVirtualGatewaysResponse_virtualGateways,++    -- ** ListVirtualNodes+    listVirtualNodes_limit,+    listVirtualNodes_meshOwner,+    listVirtualNodes_nextToken,+    listVirtualNodes_meshName,+    listVirtualNodesResponse_nextToken,+    listVirtualNodesResponse_httpStatus,+    listVirtualNodesResponse_virtualNodes,++    -- ** ListVirtualRouters+    listVirtualRouters_limit,+    listVirtualRouters_meshOwner,+    listVirtualRouters_nextToken,+    listVirtualRouters_meshName,+    listVirtualRoutersResponse_nextToken,+    listVirtualRoutersResponse_httpStatus,+    listVirtualRoutersResponse_virtualRouters,++    -- ** ListVirtualServices+    listVirtualServices_limit,+    listVirtualServices_meshOwner,+    listVirtualServices_nextToken,+    listVirtualServices_meshName,+    listVirtualServicesResponse_nextToken,+    listVirtualServicesResponse_httpStatus,+    listVirtualServicesResponse_virtualServices,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateGatewayRoute+    updateGatewayRoute_clientToken,+    updateGatewayRoute_meshOwner,+    updateGatewayRoute_gatewayRouteName,+    updateGatewayRoute_meshName,+    updateGatewayRoute_spec,+    updateGatewayRoute_virtualGatewayName,+    updateGatewayRouteResponse_httpStatus,+    updateGatewayRouteResponse_gatewayRoute,++    -- ** UpdateMesh+    updateMesh_clientToken,+    updateMesh_spec,+    updateMesh_meshName,+    updateMeshResponse_httpStatus,+    updateMeshResponse_mesh,++    -- ** UpdateRoute+    updateRoute_clientToken,+    updateRoute_meshOwner,+    updateRoute_meshName,+    updateRoute_routeName,+    updateRoute_spec,+    updateRoute_virtualRouterName,+    updateRouteResponse_httpStatus,+    updateRouteResponse_route,++    -- ** UpdateVirtualGateway+    updateVirtualGateway_clientToken,+    updateVirtualGateway_meshOwner,+    updateVirtualGateway_meshName,+    updateVirtualGateway_spec,+    updateVirtualGateway_virtualGatewayName,+    updateVirtualGatewayResponse_httpStatus,+    updateVirtualGatewayResponse_virtualGateway,++    -- ** UpdateVirtualNode+    updateVirtualNode_clientToken,+    updateVirtualNode_meshOwner,+    updateVirtualNode_meshName,+    updateVirtualNode_spec,+    updateVirtualNode_virtualNodeName,+    updateVirtualNodeResponse_httpStatus,+    updateVirtualNodeResponse_virtualNode,++    -- ** UpdateVirtualRouter+    updateVirtualRouter_clientToken,+    updateVirtualRouter_meshOwner,+    updateVirtualRouter_meshName,+    updateVirtualRouter_spec,+    updateVirtualRouter_virtualRouterName,+    updateVirtualRouterResponse_httpStatus,+    updateVirtualRouterResponse_virtualRouter,++    -- ** UpdateVirtualService+    updateVirtualService_clientToken,+    updateVirtualService_meshOwner,+    updateVirtualService_meshName,+    updateVirtualService_spec,+    updateVirtualService_virtualServiceName,+    updateVirtualServiceResponse_httpStatus,+    updateVirtualServiceResponse_virtualService,++    -- * Types++    -- ** AccessLog+    accessLog_file,++    -- ** AwsCloudMapInstanceAttribute+    awsCloudMapInstanceAttribute_key,+    awsCloudMapInstanceAttribute_value,++    -- ** AwsCloudMapServiceDiscovery+    awsCloudMapServiceDiscovery_attributes,+    awsCloudMapServiceDiscovery_ipPreference,+    awsCloudMapServiceDiscovery_namespaceName,+    awsCloudMapServiceDiscovery_serviceName,++    -- ** Backend+    backend_virtualService,++    -- ** BackendDefaults+    backendDefaults_clientPolicy,++    -- ** ClientPolicy+    clientPolicy_tls,++    -- ** ClientPolicyTls+    clientPolicyTls_certificate,+    clientPolicyTls_enforce,+    clientPolicyTls_ports,+    clientPolicyTls_validation,++    -- ** ClientTlsCertificate+    clientTlsCertificate_file,+    clientTlsCertificate_sds,++    -- ** DnsServiceDiscovery+    dnsServiceDiscovery_ipPreference,+    dnsServiceDiscovery_responseType,+    dnsServiceDiscovery_hostname,++    -- ** Duration+    duration_unit,+    duration_value,++    -- ** EgressFilter+    egressFilter_type,++    -- ** FileAccessLog+    fileAccessLog_format,+    fileAccessLog_path,++    -- ** GatewayRouteData+    gatewayRouteData_gatewayRouteName,+    gatewayRouteData_meshName,+    gatewayRouteData_metadata,+    gatewayRouteData_spec,+    gatewayRouteData_status,+    gatewayRouteData_virtualGatewayName,++    -- ** GatewayRouteHostnameMatch+    gatewayRouteHostnameMatch_exact,+    gatewayRouteHostnameMatch_suffix,++    -- ** GatewayRouteHostnameRewrite+    gatewayRouteHostnameRewrite_defaultTargetHostname,++    -- ** GatewayRouteRef+    gatewayRouteRef_arn,+    gatewayRouteRef_createdAt,+    gatewayRouteRef_gatewayRouteName,+    gatewayRouteRef_lastUpdatedAt,+    gatewayRouteRef_meshName,+    gatewayRouteRef_meshOwner,+    gatewayRouteRef_resourceOwner,+    gatewayRouteRef_version,+    gatewayRouteRef_virtualGatewayName,++    -- ** GatewayRouteSpec+    gatewayRouteSpec_grpcRoute,+    gatewayRouteSpec_http2Route,+    gatewayRouteSpec_httpRoute,+    gatewayRouteSpec_priority,++    -- ** GatewayRouteStatus+    gatewayRouteStatus_status,++    -- ** GatewayRouteTarget+    gatewayRouteTarget_port,+    gatewayRouteTarget_virtualService,++    -- ** GatewayRouteVirtualService+    gatewayRouteVirtualService_virtualServiceName,++    -- ** GrpcGatewayRoute+    grpcGatewayRoute_action,+    grpcGatewayRoute_match,++    -- ** GrpcGatewayRouteAction+    grpcGatewayRouteAction_rewrite,+    grpcGatewayRouteAction_target,++    -- ** GrpcGatewayRouteMatch+    grpcGatewayRouteMatch_hostname,+    grpcGatewayRouteMatch_metadata,+    grpcGatewayRouteMatch_port,+    grpcGatewayRouteMatch_serviceName,++    -- ** GrpcGatewayRouteMetadata+    grpcGatewayRouteMetadata_invert,+    grpcGatewayRouteMetadata_match,+    grpcGatewayRouteMetadata_name,++    -- ** GrpcGatewayRouteRewrite+    grpcGatewayRouteRewrite_hostname,++    -- ** GrpcMetadataMatchMethod+    grpcMetadataMatchMethod_exact,+    grpcMetadataMatchMethod_prefix,+    grpcMetadataMatchMethod_range,+    grpcMetadataMatchMethod_regex,+    grpcMetadataMatchMethod_suffix,++    -- ** GrpcRetryPolicy+    grpcRetryPolicy_grpcRetryEvents,+    grpcRetryPolicy_httpRetryEvents,+    grpcRetryPolicy_tcpRetryEvents,+    grpcRetryPolicy_maxRetries,+    grpcRetryPolicy_perRetryTimeout,++    -- ** GrpcRoute+    grpcRoute_retryPolicy,+    grpcRoute_timeout,+    grpcRoute_action,+    grpcRoute_match,++    -- ** GrpcRouteAction+    grpcRouteAction_weightedTargets,++    -- ** GrpcRouteMatch+    grpcRouteMatch_metadata,+    grpcRouteMatch_methodName,+    grpcRouteMatch_port,+    grpcRouteMatch_serviceName,++    -- ** GrpcRouteMetadata+    grpcRouteMetadata_invert,+    grpcRouteMetadata_match,+    grpcRouteMetadata_name,++    -- ** GrpcRouteMetadataMatchMethod+    grpcRouteMetadataMatchMethod_exact,+    grpcRouteMetadataMatchMethod_prefix,+    grpcRouteMetadataMatchMethod_range,+    grpcRouteMetadataMatchMethod_regex,+    grpcRouteMetadataMatchMethod_suffix,++    -- ** GrpcTimeout+    grpcTimeout_idle,+    grpcTimeout_perRequest,++    -- ** HeaderMatchMethod+    headerMatchMethod_exact,+    headerMatchMethod_prefix,+    headerMatchMethod_range,+    headerMatchMethod_regex,+    headerMatchMethod_suffix,++    -- ** HealthCheckPolicy+    healthCheckPolicy_path,+    healthCheckPolicy_port,+    healthCheckPolicy_healthyThreshold,+    healthCheckPolicy_intervalMillis,+    healthCheckPolicy_protocol,+    healthCheckPolicy_timeoutMillis,+    healthCheckPolicy_unhealthyThreshold,++    -- ** HttpGatewayRoute+    httpGatewayRoute_action,+    httpGatewayRoute_match,++    -- ** HttpGatewayRouteAction+    httpGatewayRouteAction_rewrite,+    httpGatewayRouteAction_target,++    -- ** HttpGatewayRouteHeader+    httpGatewayRouteHeader_invert,+    httpGatewayRouteHeader_match,+    httpGatewayRouteHeader_name,++    -- ** HttpGatewayRouteMatch+    httpGatewayRouteMatch_headers,+    httpGatewayRouteMatch_hostname,+    httpGatewayRouteMatch_method,+    httpGatewayRouteMatch_path,+    httpGatewayRouteMatch_port,+    httpGatewayRouteMatch_prefix,+    httpGatewayRouteMatch_queryParameters,++    -- ** HttpGatewayRoutePathRewrite+    httpGatewayRoutePathRewrite_exact,++    -- ** HttpGatewayRoutePrefixRewrite+    httpGatewayRoutePrefixRewrite_defaultPrefix,+    httpGatewayRoutePrefixRewrite_value,++    -- ** HttpGatewayRouteRewrite+    httpGatewayRouteRewrite_hostname,+    httpGatewayRouteRewrite_path,+    httpGatewayRouteRewrite_prefix,++    -- ** HttpPathMatch+    httpPathMatch_exact,+    httpPathMatch_regex,++    -- ** HttpQueryParameter+    httpQueryParameter_match,+    httpQueryParameter_name,++    -- ** HttpRetryPolicy+    httpRetryPolicy_httpRetryEvents,+    httpRetryPolicy_tcpRetryEvents,+    httpRetryPolicy_maxRetries,+    httpRetryPolicy_perRetryTimeout,++    -- ** HttpRoute+    httpRoute_retryPolicy,+    httpRoute_timeout,+    httpRoute_action,+    httpRoute_match,++    -- ** HttpRouteAction+    httpRouteAction_weightedTargets,++    -- ** HttpRouteHeader+    httpRouteHeader_invert,+    httpRouteHeader_match,+    httpRouteHeader_name,++    -- ** HttpRouteMatch+    httpRouteMatch_headers,+    httpRouteMatch_method,+    httpRouteMatch_path,+    httpRouteMatch_port,+    httpRouteMatch_prefix,+    httpRouteMatch_queryParameters,+    httpRouteMatch_scheme,++    -- ** HttpTimeout+    httpTimeout_idle,+    httpTimeout_perRequest,++    -- ** JsonFormatRef+    jsonFormatRef_key,+    jsonFormatRef_value,++    -- ** Listener+    listener_connectionPool,+    listener_healthCheck,+    listener_outlierDetection,+    listener_timeout,+    listener_tls,+    listener_portMapping,++    -- ** ListenerTimeout+    listenerTimeout_grpc,+    listenerTimeout_http,+    listenerTimeout_http2,+    listenerTimeout_tcp,++    -- ** ListenerTls+    listenerTls_validation,+    listenerTls_certificate,+    listenerTls_mode,++    -- ** ListenerTlsAcmCertificate+    listenerTlsAcmCertificate_certificateArn,++    -- ** ListenerTlsCertificate+    listenerTlsCertificate_acm,+    listenerTlsCertificate_file,+    listenerTlsCertificate_sds,++    -- ** ListenerTlsFileCertificate+    listenerTlsFileCertificate_certificateChain,+    listenerTlsFileCertificate_privateKey,++    -- ** ListenerTlsSdsCertificate+    listenerTlsSdsCertificate_secretName,++    -- ** ListenerTlsValidationContext+    listenerTlsValidationContext_subjectAlternativeNames,+    listenerTlsValidationContext_trust,++    -- ** ListenerTlsValidationContextTrust+    listenerTlsValidationContextTrust_file,+    listenerTlsValidationContextTrust_sds,++    -- ** Logging+    logging_accessLog,++    -- ** LoggingFormat+    loggingFormat_json,+    loggingFormat_text,++    -- ** MatchRange+    matchRange_end,+    matchRange_start,++    -- ** MeshData+    meshData_meshName,+    meshData_metadata,+    meshData_spec,+    meshData_status,++    -- ** MeshRef+    meshRef_arn,+    meshRef_createdAt,+    meshRef_lastUpdatedAt,+    meshRef_meshName,+    meshRef_meshOwner,+    meshRef_resourceOwner,+    meshRef_version,++    -- ** MeshServiceDiscovery+    meshServiceDiscovery_ipPreference,++    -- ** MeshSpec+    meshSpec_egressFilter,+    meshSpec_serviceDiscovery,++    -- ** MeshStatus+    meshStatus_status,++    -- ** OutlierDetection+    outlierDetection_baseEjectionDuration,+    outlierDetection_interval,+    outlierDetection_maxEjectionPercent,+    outlierDetection_maxServerErrors,++    -- ** PortMapping+    portMapping_port,+    portMapping_protocol,++    -- ** QueryParameterMatch+    queryParameterMatch_exact,++    -- ** ResourceMetadata+    resourceMetadata_arn,+    resourceMetadata_createdAt,+    resourceMetadata_lastUpdatedAt,+    resourceMetadata_meshOwner,+    resourceMetadata_resourceOwner,+    resourceMetadata_uid,+    resourceMetadata_version,++    -- ** RouteData+    routeData_meshName,+    routeData_metadata,+    routeData_routeName,+    routeData_spec,+    routeData_status,+    routeData_virtualRouterName,++    -- ** RouteRef+    routeRef_arn,+    routeRef_createdAt,+    routeRef_lastUpdatedAt,+    routeRef_meshName,+    routeRef_meshOwner,+    routeRef_resourceOwner,+    routeRef_routeName,+    routeRef_version,+    routeRef_virtualRouterName,++    -- ** RouteSpec+    routeSpec_grpcRoute,+    routeSpec_http2Route,+    routeSpec_httpRoute,+    routeSpec_priority,+    routeSpec_tcpRoute,++    -- ** RouteStatus+    routeStatus_status,++    -- ** ServiceDiscovery+    serviceDiscovery_awsCloudMap,+    serviceDiscovery_dns,++    -- ** SubjectAlternativeNameMatchers+    subjectAlternativeNameMatchers_exact,++    -- ** SubjectAlternativeNames+    subjectAlternativeNames_match,++    -- ** TagRef+    tagRef_key,+    tagRef_value,++    -- ** TcpRoute+    tcpRoute_match,+    tcpRoute_timeout,+    tcpRoute_action,++    -- ** TcpRouteAction+    tcpRouteAction_weightedTargets,++    -- ** TcpRouteMatch+    tcpRouteMatch_port,++    -- ** TcpTimeout+    tcpTimeout_idle,++    -- ** TlsValidationContext+    tlsValidationContext_subjectAlternativeNames,+    tlsValidationContext_trust,++    -- ** TlsValidationContextAcmTrust+    tlsValidationContextAcmTrust_certificateAuthorityArns,++    -- ** TlsValidationContextFileTrust+    tlsValidationContextFileTrust_certificateChain,++    -- ** TlsValidationContextSdsTrust+    tlsValidationContextSdsTrust_secretName,++    -- ** TlsValidationContextTrust+    tlsValidationContextTrust_acm,+    tlsValidationContextTrust_file,+    tlsValidationContextTrust_sds,++    -- ** VirtualGatewayAccessLog+    virtualGatewayAccessLog_file,++    -- ** VirtualGatewayBackendDefaults+    virtualGatewayBackendDefaults_clientPolicy,++    -- ** VirtualGatewayClientPolicy+    virtualGatewayClientPolicy_tls,++    -- ** VirtualGatewayClientPolicyTls+    virtualGatewayClientPolicyTls_certificate,+    virtualGatewayClientPolicyTls_enforce,+    virtualGatewayClientPolicyTls_ports,+    virtualGatewayClientPolicyTls_validation,++    -- ** VirtualGatewayClientTlsCertificate+    virtualGatewayClientTlsCertificate_file,+    virtualGatewayClientTlsCertificate_sds,++    -- ** VirtualGatewayConnectionPool+    virtualGatewayConnectionPool_grpc,+    virtualGatewayConnectionPool_http,+    virtualGatewayConnectionPool_http2,++    -- ** VirtualGatewayData+    virtualGatewayData_meshName,+    virtualGatewayData_metadata,+    virtualGatewayData_spec,+    virtualGatewayData_status,+    virtualGatewayData_virtualGatewayName,++    -- ** VirtualGatewayFileAccessLog+    virtualGatewayFileAccessLog_format,+    virtualGatewayFileAccessLog_path,++    -- ** VirtualGatewayGrpcConnectionPool+    virtualGatewayGrpcConnectionPool_maxRequests,++    -- ** VirtualGatewayHealthCheckPolicy+    virtualGatewayHealthCheckPolicy_path,+    virtualGatewayHealthCheckPolicy_port,+    virtualGatewayHealthCheckPolicy_healthyThreshold,+    virtualGatewayHealthCheckPolicy_intervalMillis,+    virtualGatewayHealthCheckPolicy_protocol,+    virtualGatewayHealthCheckPolicy_timeoutMillis,+    virtualGatewayHealthCheckPolicy_unhealthyThreshold,++    -- ** VirtualGatewayHttp2ConnectionPool+    virtualGatewayHttp2ConnectionPool_maxRequests,++    -- ** VirtualGatewayHttpConnectionPool+    virtualGatewayHttpConnectionPool_maxPendingRequests,+    virtualGatewayHttpConnectionPool_maxConnections,++    -- ** VirtualGatewayListener+    virtualGatewayListener_connectionPool,+    virtualGatewayListener_healthCheck,+    virtualGatewayListener_tls,+    virtualGatewayListener_portMapping,++    -- ** VirtualGatewayListenerTls+    virtualGatewayListenerTls_validation,+    virtualGatewayListenerTls_certificate,+    virtualGatewayListenerTls_mode,++    -- ** VirtualGatewayListenerTlsAcmCertificate+    virtualGatewayListenerTlsAcmCertificate_certificateArn,++    -- ** VirtualGatewayListenerTlsCertificate+    virtualGatewayListenerTlsCertificate_acm,+    virtualGatewayListenerTlsCertificate_file,+    virtualGatewayListenerTlsCertificate_sds,++    -- ** VirtualGatewayListenerTlsFileCertificate+    virtualGatewayListenerTlsFileCertificate_certificateChain,+    virtualGatewayListenerTlsFileCertificate_privateKey,++    -- ** VirtualGatewayListenerTlsSdsCertificate+    virtualGatewayListenerTlsSdsCertificate_secretName,++    -- ** VirtualGatewayListenerTlsValidationContext+    virtualGatewayListenerTlsValidationContext_subjectAlternativeNames,+    virtualGatewayListenerTlsValidationContext_trust,++    -- ** VirtualGatewayListenerTlsValidationContextTrust+    virtualGatewayListenerTlsValidationContextTrust_file,+    virtualGatewayListenerTlsValidationContextTrust_sds,++    -- ** VirtualGatewayLogging+    virtualGatewayLogging_accessLog,++    -- ** VirtualGatewayPortMapping+    virtualGatewayPortMapping_port,+    virtualGatewayPortMapping_protocol,++    -- ** VirtualGatewayRef+    virtualGatewayRef_arn,+    virtualGatewayRef_createdAt,+    virtualGatewayRef_lastUpdatedAt,+    virtualGatewayRef_meshName,+    virtualGatewayRef_meshOwner,+    virtualGatewayRef_resourceOwner,+    virtualGatewayRef_version,+    virtualGatewayRef_virtualGatewayName,++    -- ** VirtualGatewaySpec+    virtualGatewaySpec_backendDefaults,+    virtualGatewaySpec_logging,+    virtualGatewaySpec_listeners,++    -- ** VirtualGatewayStatus+    virtualGatewayStatus_status,++    -- ** VirtualGatewayTlsValidationContext+    virtualGatewayTlsValidationContext_subjectAlternativeNames,+    virtualGatewayTlsValidationContext_trust,++    -- ** VirtualGatewayTlsValidationContextAcmTrust+    virtualGatewayTlsValidationContextAcmTrust_certificateAuthorityArns,++    -- ** VirtualGatewayTlsValidationContextFileTrust+    virtualGatewayTlsValidationContextFileTrust_certificateChain,++    -- ** VirtualGatewayTlsValidationContextSdsTrust+    virtualGatewayTlsValidationContextSdsTrust_secretName,++    -- ** VirtualGatewayTlsValidationContextTrust+    virtualGatewayTlsValidationContextTrust_acm,+    virtualGatewayTlsValidationContextTrust_file,+    virtualGatewayTlsValidationContextTrust_sds,++    -- ** VirtualNodeConnectionPool+    virtualNodeConnectionPool_grpc,+    virtualNodeConnectionPool_http,+    virtualNodeConnectionPool_http2,+    virtualNodeConnectionPool_tcp,++    -- ** VirtualNodeData+    virtualNodeData_meshName,+    virtualNodeData_metadata,+    virtualNodeData_spec,+    virtualNodeData_status,+    virtualNodeData_virtualNodeName,++    -- ** VirtualNodeGrpcConnectionPool+    virtualNodeGrpcConnectionPool_maxRequests,++    -- ** VirtualNodeHttp2ConnectionPool+    virtualNodeHttp2ConnectionPool_maxRequests,++    -- ** VirtualNodeHttpConnectionPool+    virtualNodeHttpConnectionPool_maxPendingRequests,+    virtualNodeHttpConnectionPool_maxConnections,++    -- ** VirtualNodeRef+    virtualNodeRef_arn,+    virtualNodeRef_createdAt,+    virtualNodeRef_lastUpdatedAt,+    virtualNodeRef_meshName,+    virtualNodeRef_meshOwner,+    virtualNodeRef_resourceOwner,+    virtualNodeRef_version,+    virtualNodeRef_virtualNodeName,++    -- ** VirtualNodeServiceProvider+    virtualNodeServiceProvider_virtualNodeName,++    -- ** VirtualNodeSpec+    virtualNodeSpec_backendDefaults,+    virtualNodeSpec_backends,+    virtualNodeSpec_listeners,+    virtualNodeSpec_logging,+    virtualNodeSpec_serviceDiscovery,++    -- ** VirtualNodeStatus+    virtualNodeStatus_status,++    -- ** VirtualNodeTcpConnectionPool+    virtualNodeTcpConnectionPool_maxConnections,++    -- ** VirtualRouterData+    virtualRouterData_meshName,+    virtualRouterData_metadata,+    virtualRouterData_spec,+    virtualRouterData_status,+    virtualRouterData_virtualRouterName,++    -- ** VirtualRouterListener+    virtualRouterListener_portMapping,++    -- ** VirtualRouterRef+    virtualRouterRef_arn,+    virtualRouterRef_createdAt,+    virtualRouterRef_lastUpdatedAt,+    virtualRouterRef_meshName,+    virtualRouterRef_meshOwner,+    virtualRouterRef_resourceOwner,+    virtualRouterRef_version,+    virtualRouterRef_virtualRouterName,++    -- ** VirtualRouterServiceProvider+    virtualRouterServiceProvider_virtualRouterName,++    -- ** VirtualRouterSpec+    virtualRouterSpec_listeners,++    -- ** VirtualRouterStatus+    virtualRouterStatus_status,++    -- ** VirtualServiceBackend+    virtualServiceBackend_clientPolicy,+    virtualServiceBackend_virtualServiceName,++    -- ** VirtualServiceData+    virtualServiceData_meshName,+    virtualServiceData_metadata,+    virtualServiceData_spec,+    virtualServiceData_status,+    virtualServiceData_virtualServiceName,++    -- ** VirtualServiceProvider+    virtualServiceProvider_virtualNode,+    virtualServiceProvider_virtualRouter,++    -- ** VirtualServiceRef+    virtualServiceRef_arn,+    virtualServiceRef_createdAt,+    virtualServiceRef_lastUpdatedAt,+    virtualServiceRef_meshName,+    virtualServiceRef_meshOwner,+    virtualServiceRef_resourceOwner,+    virtualServiceRef_version,+    virtualServiceRef_virtualServiceName,++    -- ** VirtualServiceSpec+    virtualServiceSpec_provider,++    -- ** VirtualServiceStatus+    virtualServiceStatus_status,++    -- ** WeightedTarget+    weightedTarget_port,+    weightedTarget_virtualNode,+    weightedTarget_weight,+  )+where++import Amazonka.AppMesh.CreateGatewayRoute+import Amazonka.AppMesh.CreateMesh+import Amazonka.AppMesh.CreateRoute+import Amazonka.AppMesh.CreateVirtualGateway+import Amazonka.AppMesh.CreateVirtualNode+import Amazonka.AppMesh.CreateVirtualRouter+import Amazonka.AppMesh.CreateVirtualService+import Amazonka.AppMesh.DeleteGatewayRoute+import Amazonka.AppMesh.DeleteMesh+import Amazonka.AppMesh.DeleteRoute+import Amazonka.AppMesh.DeleteVirtualGateway+import Amazonka.AppMesh.DeleteVirtualNode+import Amazonka.AppMesh.DeleteVirtualRouter+import Amazonka.AppMesh.DeleteVirtualService+import Amazonka.AppMesh.DescribeGatewayRoute+import Amazonka.AppMesh.DescribeMesh+import Amazonka.AppMesh.DescribeRoute+import Amazonka.AppMesh.DescribeVirtualGateway+import Amazonka.AppMesh.DescribeVirtualNode+import Amazonka.AppMesh.DescribeVirtualRouter+import Amazonka.AppMesh.DescribeVirtualService+import Amazonka.AppMesh.ListGatewayRoutes+import Amazonka.AppMesh.ListMeshes+import Amazonka.AppMesh.ListRoutes+import Amazonka.AppMesh.ListTagsForResource+import Amazonka.AppMesh.ListVirtualGateways+import Amazonka.AppMesh.ListVirtualNodes+import Amazonka.AppMesh.ListVirtualRouters+import Amazonka.AppMesh.ListVirtualServices+import Amazonka.AppMesh.TagResource+import Amazonka.AppMesh.Types.AccessLog+import Amazonka.AppMesh.Types.AwsCloudMapInstanceAttribute+import Amazonka.AppMesh.Types.AwsCloudMapServiceDiscovery+import Amazonka.AppMesh.Types.Backend+import Amazonka.AppMesh.Types.BackendDefaults+import Amazonka.AppMesh.Types.ClientPolicy+import Amazonka.AppMesh.Types.ClientPolicyTls+import Amazonka.AppMesh.Types.ClientTlsCertificate+import Amazonka.AppMesh.Types.DnsServiceDiscovery+import Amazonka.AppMesh.Types.Duration+import Amazonka.AppMesh.Types.EgressFilter+import Amazonka.AppMesh.Types.FileAccessLog+import Amazonka.AppMesh.Types.GatewayRouteData+import Amazonka.AppMesh.Types.GatewayRouteHostnameMatch+import Amazonka.AppMesh.Types.GatewayRouteHostnameRewrite+import Amazonka.AppMesh.Types.GatewayRouteRef+import Amazonka.AppMesh.Types.GatewayRouteSpec+import Amazonka.AppMesh.Types.GatewayRouteStatus+import Amazonka.AppMesh.Types.GatewayRouteTarget+import Amazonka.AppMesh.Types.GatewayRouteVirtualService+import Amazonka.AppMesh.Types.GrpcGatewayRoute+import Amazonka.AppMesh.Types.GrpcGatewayRouteAction+import Amazonka.AppMesh.Types.GrpcGatewayRouteMatch+import Amazonka.AppMesh.Types.GrpcGatewayRouteMetadata+import Amazonka.AppMesh.Types.GrpcGatewayRouteRewrite+import Amazonka.AppMesh.Types.GrpcMetadataMatchMethod+import Amazonka.AppMesh.Types.GrpcRetryPolicy+import Amazonka.AppMesh.Types.GrpcRoute+import Amazonka.AppMesh.Types.GrpcRouteAction+import Amazonka.AppMesh.Types.GrpcRouteMatch+import Amazonka.AppMesh.Types.GrpcRouteMetadata+import Amazonka.AppMesh.Types.GrpcRouteMetadataMatchMethod+import Amazonka.AppMesh.Types.GrpcTimeout+import Amazonka.AppMesh.Types.HeaderMatchMethod+import Amazonka.AppMesh.Types.HealthCheckPolicy+import Amazonka.AppMesh.Types.HttpGatewayRoute+import Amazonka.AppMesh.Types.HttpGatewayRouteAction+import Amazonka.AppMesh.Types.HttpGatewayRouteHeader+import Amazonka.AppMesh.Types.HttpGatewayRouteMatch+import Amazonka.AppMesh.Types.HttpGatewayRoutePathRewrite+import Amazonka.AppMesh.Types.HttpGatewayRoutePrefixRewrite+import Amazonka.AppMesh.Types.HttpGatewayRouteRewrite+import Amazonka.AppMesh.Types.HttpPathMatch+import Amazonka.AppMesh.Types.HttpQueryParameter+import Amazonka.AppMesh.Types.HttpRetryPolicy+import Amazonka.AppMesh.Types.HttpRoute+import Amazonka.AppMesh.Types.HttpRouteAction+import Amazonka.AppMesh.Types.HttpRouteHeader+import Amazonka.AppMesh.Types.HttpRouteMatch+import Amazonka.AppMesh.Types.HttpTimeout+import Amazonka.AppMesh.Types.JsonFormatRef+import Amazonka.AppMesh.Types.Listener+import Amazonka.AppMesh.Types.ListenerTimeout+import Amazonka.AppMesh.Types.ListenerTls+import Amazonka.AppMesh.Types.ListenerTlsAcmCertificate+import Amazonka.AppMesh.Types.ListenerTlsCertificate+import Amazonka.AppMesh.Types.ListenerTlsFileCertificate+import Amazonka.AppMesh.Types.ListenerTlsSdsCertificate+import Amazonka.AppMesh.Types.ListenerTlsValidationContext+import Amazonka.AppMesh.Types.ListenerTlsValidationContextTrust+import Amazonka.AppMesh.Types.Logging+import Amazonka.AppMesh.Types.LoggingFormat+import Amazonka.AppMesh.Types.MatchRange+import Amazonka.AppMesh.Types.MeshData+import Amazonka.AppMesh.Types.MeshRef+import Amazonka.AppMesh.Types.MeshServiceDiscovery+import Amazonka.AppMesh.Types.MeshSpec+import Amazonka.AppMesh.Types.MeshStatus+import Amazonka.AppMesh.Types.OutlierDetection+import Amazonka.AppMesh.Types.PortMapping+import Amazonka.AppMesh.Types.QueryParameterMatch+import Amazonka.AppMesh.Types.ResourceMetadata+import Amazonka.AppMesh.Types.RouteData+import Amazonka.AppMesh.Types.RouteRef+import Amazonka.AppMesh.Types.RouteSpec+import Amazonka.AppMesh.Types.RouteStatus+import Amazonka.AppMesh.Types.ServiceDiscovery+import Amazonka.AppMesh.Types.SubjectAlternativeNameMatchers+import Amazonka.AppMesh.Types.SubjectAlternativeNames+import Amazonka.AppMesh.Types.TagRef+import Amazonka.AppMesh.Types.TcpRoute+import Amazonka.AppMesh.Types.TcpRouteAction+import Amazonka.AppMesh.Types.TcpRouteMatch+import Amazonka.AppMesh.Types.TcpTimeout+import Amazonka.AppMesh.Types.TlsValidationContext+import Amazonka.AppMesh.Types.TlsValidationContextAcmTrust+import Amazonka.AppMesh.Types.TlsValidationContextFileTrust+import Amazonka.AppMesh.Types.TlsValidationContextSdsTrust+import Amazonka.AppMesh.Types.TlsValidationContextTrust+import Amazonka.AppMesh.Types.VirtualGatewayAccessLog+import Amazonka.AppMesh.Types.VirtualGatewayBackendDefaults+import Amazonka.AppMesh.Types.VirtualGatewayClientPolicy+import Amazonka.AppMesh.Types.VirtualGatewayClientPolicyTls+import Amazonka.AppMesh.Types.VirtualGatewayClientTlsCertificate+import Amazonka.AppMesh.Types.VirtualGatewayConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayData+import Amazonka.AppMesh.Types.VirtualGatewayFileAccessLog+import Amazonka.AppMesh.Types.VirtualGatewayGrpcConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayHealthCheckPolicy+import Amazonka.AppMesh.Types.VirtualGatewayHttp2ConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayHttpConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayListener+import Amazonka.AppMesh.Types.VirtualGatewayListenerTls+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsAcmCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsFileCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsSdsCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContext+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContextTrust+import Amazonka.AppMesh.Types.VirtualGatewayLogging+import Amazonka.AppMesh.Types.VirtualGatewayPortMapping+import Amazonka.AppMesh.Types.VirtualGatewayRef+import Amazonka.AppMesh.Types.VirtualGatewaySpec+import Amazonka.AppMesh.Types.VirtualGatewayStatus+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContext+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextAcmTrust+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextFileTrust+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextSdsTrust+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextTrust+import Amazonka.AppMesh.Types.VirtualNodeConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeData+import Amazonka.AppMesh.Types.VirtualNodeGrpcConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeHttp2ConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeHttpConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeRef+import Amazonka.AppMesh.Types.VirtualNodeServiceProvider+import Amazonka.AppMesh.Types.VirtualNodeSpec+import Amazonka.AppMesh.Types.VirtualNodeStatus+import Amazonka.AppMesh.Types.VirtualNodeTcpConnectionPool+import Amazonka.AppMesh.Types.VirtualRouterData+import Amazonka.AppMesh.Types.VirtualRouterListener+import Amazonka.AppMesh.Types.VirtualRouterRef+import Amazonka.AppMesh.Types.VirtualRouterServiceProvider+import Amazonka.AppMesh.Types.VirtualRouterSpec+import Amazonka.AppMesh.Types.VirtualRouterStatus+import Amazonka.AppMesh.Types.VirtualServiceBackend+import Amazonka.AppMesh.Types.VirtualServiceData+import Amazonka.AppMesh.Types.VirtualServiceProvider+import Amazonka.AppMesh.Types.VirtualServiceRef+import Amazonka.AppMesh.Types.VirtualServiceSpec+import Amazonka.AppMesh.Types.VirtualServiceStatus+import Amazonka.AppMesh.Types.WeightedTarget+import Amazonka.AppMesh.UntagResource+import Amazonka.AppMesh.UpdateGatewayRoute+import Amazonka.AppMesh.UpdateMesh+import Amazonka.AppMesh.UpdateRoute+import Amazonka.AppMesh.UpdateVirtualGateway+import Amazonka.AppMesh.UpdateVirtualNode+import Amazonka.AppMesh.UpdateVirtualRouter+import Amazonka.AppMesh.UpdateVirtualService
+ gen/Amazonka/AppMesh/ListGatewayRoutes.hs view
@@ -0,0 +1,308 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.ListGatewayRoutes+-- 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 existing gateway routes that are associated to a+-- virtual gateway.+--+-- This operation returns paginated results.+module Amazonka.AppMesh.ListGatewayRoutes+  ( -- * Creating a Request+    ListGatewayRoutes (..),+    newListGatewayRoutes,++    -- * Request Lenses+    listGatewayRoutes_limit,+    listGatewayRoutes_meshOwner,+    listGatewayRoutes_nextToken,+    listGatewayRoutes_meshName,+    listGatewayRoutes_virtualGatewayName,++    -- * Destructuring the Response+    ListGatewayRoutesResponse (..),+    newListGatewayRoutesResponse,++    -- * Response Lenses+    listGatewayRoutesResponse_nextToken,+    listGatewayRoutesResponse_httpStatus,+    listGatewayRoutesResponse_gatewayRoutes,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListGatewayRoutes' smart constructor.+data ListGatewayRoutes = ListGatewayRoutes'+  { -- | The maximum number of results returned by @ListGatewayRoutes@ in+    -- paginated output. When you use this parameter, @ListGatewayRoutes@+    -- returns only @limit@ results in a single page along with a @nextToken@+    -- response element. You can see the remaining results of the initial+    -- request by sending another @ListGatewayRoutes@ request with the returned+    -- @nextToken@ value. This value can be between 1 and 100. If you don\'t+    -- use this parameter, @ListGatewayRoutes@ returns up to 100 results and a+    -- @nextToken@ value if applicable.+    limit :: Prelude.Maybe Prelude.Natural,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListGatewayRoutes@ request where @limit@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to list gateway routes in.+    meshName :: Prelude.Text,+    -- | The name of the virtual gateway to list gateway routes in.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListGatewayRoutes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'limit', 'listGatewayRoutes_limit' - The maximum number of results returned by @ListGatewayRoutes@ in+-- paginated output. When you use this parameter, @ListGatewayRoutes@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListGatewayRoutes@ request with the returned+-- @nextToken@ value. This value can be between 1 and 100. If you don\'t+-- use this parameter, @ListGatewayRoutes@ returns up to 100 results and a+-- @nextToken@ value if applicable.+--+-- 'meshOwner', 'listGatewayRoutes_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'nextToken', 'listGatewayRoutes_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListGatewayRoutes@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- 'meshName', 'listGatewayRoutes_meshName' - The name of the service mesh to list gateway routes in.+--+-- 'virtualGatewayName', 'listGatewayRoutes_virtualGatewayName' - The name of the virtual gateway to list gateway routes in.+newListGatewayRoutes ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  ListGatewayRoutes+newListGatewayRoutes pMeshName_ pVirtualGatewayName_ =+  ListGatewayRoutes'+    { limit = Prelude.Nothing,+      meshOwner = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      meshName = pMeshName_,+      virtualGatewayName = pVirtualGatewayName_+    }++-- | The maximum number of results returned by @ListGatewayRoutes@ in+-- paginated output. When you use this parameter, @ListGatewayRoutes@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListGatewayRoutes@ request with the returned+-- @nextToken@ value. This value can be between 1 and 100. If you don\'t+-- use this parameter, @ListGatewayRoutes@ returns up to 100 results and a+-- @nextToken@ value if applicable.+listGatewayRoutes_limit :: Lens.Lens' ListGatewayRoutes (Prelude.Maybe Prelude.Natural)+listGatewayRoutes_limit = Lens.lens (\ListGatewayRoutes' {limit} -> limit) (\s@ListGatewayRoutes' {} a -> s {limit = a} :: ListGatewayRoutes)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+listGatewayRoutes_meshOwner :: Lens.Lens' ListGatewayRoutes (Prelude.Maybe Prelude.Text)+listGatewayRoutes_meshOwner = Lens.lens (\ListGatewayRoutes' {meshOwner} -> meshOwner) (\s@ListGatewayRoutes' {} a -> s {meshOwner = a} :: ListGatewayRoutes)++-- | The @nextToken@ value returned from a previous paginated+-- @ListGatewayRoutes@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+listGatewayRoutes_nextToken :: Lens.Lens' ListGatewayRoutes (Prelude.Maybe Prelude.Text)+listGatewayRoutes_nextToken = Lens.lens (\ListGatewayRoutes' {nextToken} -> nextToken) (\s@ListGatewayRoutes' {} a -> s {nextToken = a} :: ListGatewayRoutes)++-- | The name of the service mesh to list gateway routes in.+listGatewayRoutes_meshName :: Lens.Lens' ListGatewayRoutes Prelude.Text+listGatewayRoutes_meshName = Lens.lens (\ListGatewayRoutes' {meshName} -> meshName) (\s@ListGatewayRoutes' {} a -> s {meshName = a} :: ListGatewayRoutes)++-- | The name of the virtual gateway to list gateway routes in.+listGatewayRoutes_virtualGatewayName :: Lens.Lens' ListGatewayRoutes Prelude.Text+listGatewayRoutes_virtualGatewayName = Lens.lens (\ListGatewayRoutes' {virtualGatewayName} -> virtualGatewayName) (\s@ListGatewayRoutes' {} a -> s {virtualGatewayName = a} :: ListGatewayRoutes)++instance Core.AWSPager ListGatewayRoutes where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listGatewayRoutesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listGatewayRoutesResponse_gatewayRoutes) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listGatewayRoutes_nextToken+          Lens..~ rs+          Lens.^? listGatewayRoutesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListGatewayRoutes where+  type+    AWSResponse ListGatewayRoutes =+      ListGatewayRoutesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListGatewayRoutesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "gatewayRoutes" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListGatewayRoutes where+  hashWithSalt _salt ListGatewayRoutes' {..} =+    _salt+      `Prelude.hashWithSalt` limit+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData ListGatewayRoutes where+  rnf ListGatewayRoutes' {..} =+    Prelude.rnf limit+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualGatewayName++instance Data.ToHeaders ListGatewayRoutes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListGatewayRoutes where+  toPath ListGatewayRoutes' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualGateway/",+        Data.toBS virtualGatewayName,+        "/gatewayRoutes"+      ]++instance Data.ToQuery ListGatewayRoutes where+  toQuery ListGatewayRoutes' {..} =+    Prelude.mconcat+      [ "limit" Data.=: limit,+        "meshOwner" Data.=: meshOwner,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListGatewayRoutesResponse' smart constructor.+data ListGatewayRoutesResponse = ListGatewayRoutesResponse'+  { -- | The @nextToken@ value to include in a future @ListGatewayRoutes@+    -- request. When the results of a @ListGatewayRoutes@ request exceed+    -- @limit@, you can use this value to retrieve the next page of results.+    -- This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The list of existing gateway routes for the specified service mesh and+    -- virtual gateway.+    gatewayRoutes :: [GatewayRouteRef]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListGatewayRoutesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listGatewayRoutesResponse_nextToken' - The @nextToken@ value to include in a future @ListGatewayRoutes@+-- request. When the results of a @ListGatewayRoutes@ request exceed+-- @limit@, you can use this value to retrieve the next page of results.+-- This value is @null@ when there are no more results to return.+--+-- 'httpStatus', 'listGatewayRoutesResponse_httpStatus' - The response's http status code.+--+-- 'gatewayRoutes', 'listGatewayRoutesResponse_gatewayRoutes' - The list of existing gateway routes for the specified service mesh and+-- virtual gateway.+newListGatewayRoutesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListGatewayRoutesResponse+newListGatewayRoutesResponse pHttpStatus_ =+  ListGatewayRoutesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      gatewayRoutes = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListGatewayRoutes@+-- request. When the results of a @ListGatewayRoutes@ request exceed+-- @limit@, you can use this value to retrieve the next page of results.+-- This value is @null@ when there are no more results to return.+listGatewayRoutesResponse_nextToken :: Lens.Lens' ListGatewayRoutesResponse (Prelude.Maybe Prelude.Text)+listGatewayRoutesResponse_nextToken = Lens.lens (\ListGatewayRoutesResponse' {nextToken} -> nextToken) (\s@ListGatewayRoutesResponse' {} a -> s {nextToken = a} :: ListGatewayRoutesResponse)++-- | The response's http status code.+listGatewayRoutesResponse_httpStatus :: Lens.Lens' ListGatewayRoutesResponse Prelude.Int+listGatewayRoutesResponse_httpStatus = Lens.lens (\ListGatewayRoutesResponse' {httpStatus} -> httpStatus) (\s@ListGatewayRoutesResponse' {} a -> s {httpStatus = a} :: ListGatewayRoutesResponse)++-- | The list of existing gateway routes for the specified service mesh and+-- virtual gateway.+listGatewayRoutesResponse_gatewayRoutes :: Lens.Lens' ListGatewayRoutesResponse [GatewayRouteRef]+listGatewayRoutesResponse_gatewayRoutes = Lens.lens (\ListGatewayRoutesResponse' {gatewayRoutes} -> gatewayRoutes) (\s@ListGatewayRoutesResponse' {} a -> s {gatewayRoutes = a} :: ListGatewayRoutesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListGatewayRoutesResponse where+  rnf ListGatewayRoutesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf gatewayRoutes
+ gen/Amazonka/AppMesh/ListMeshes.hs view
@@ -0,0 +1,256 @@+{-# 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.AppMesh.ListMeshes+-- 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 existing service meshes.+--+-- This operation returns paginated results.+module Amazonka.AppMesh.ListMeshes+  ( -- * Creating a Request+    ListMeshes (..),+    newListMeshes,++    -- * Request Lenses+    listMeshes_limit,+    listMeshes_nextToken,++    -- * Destructuring the Response+    ListMeshesResponse (..),+    newListMeshesResponse,++    -- * Response Lenses+    listMeshesResponse_nextToken,+    listMeshesResponse_httpStatus,+    listMeshesResponse_meshes,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newListMeshes' smart constructor.+data ListMeshes = ListMeshes'+  { -- | The maximum number of results returned by @ListMeshes@ in paginated+    -- output. When you use this parameter, @ListMeshes@ returns only @limit@+    -- results in a single page along with a @nextToken@ response element. You+    -- can see the remaining results of the initial request by sending another+    -- @ListMeshes@ request with the returned @nextToken@ value. This value can+    -- be between 1 and 100. If you don\'t use this parameter, @ListMeshes@+    -- returns up to 100 results and a @nextToken@ value if applicable.+    limit :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated @ListMeshes@+    -- request where @limit@ was used and the results exceeded the value of+    -- that parameter. Pagination continues from the end of the previous+    -- results that returned the @nextToken@ value.+    --+    -- This token should be treated as an opaque identifier that is used only+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListMeshes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'limit', 'listMeshes_limit' - The maximum number of results returned by @ListMeshes@ in paginated+-- output. When you use this parameter, @ListMeshes@ returns only @limit@+-- results in a single page along with a @nextToken@ response element. You+-- can see the remaining results of the initial request by sending another+-- @ListMeshes@ request with the returned @nextToken@ value. This value can+-- be between 1 and 100. If you don\'t use this parameter, @ListMeshes@+-- returns up to 100 results and a @nextToken@ value if applicable.+--+-- 'nextToken', 'listMeshes_nextToken' - The @nextToken@ value returned from a previous paginated @ListMeshes@+-- request where @limit@ was used and the results exceeded the value of+-- that parameter. Pagination continues from the end of the previous+-- results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+newListMeshes ::+  ListMeshes+newListMeshes =+  ListMeshes'+    { limit = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results returned by @ListMeshes@ in paginated+-- output. When you use this parameter, @ListMeshes@ returns only @limit@+-- results in a single page along with a @nextToken@ response element. You+-- can see the remaining results of the initial request by sending another+-- @ListMeshes@ request with the returned @nextToken@ value. This value can+-- be between 1 and 100. If you don\'t use this parameter, @ListMeshes@+-- returns up to 100 results and a @nextToken@ value if applicable.+listMeshes_limit :: Lens.Lens' ListMeshes (Prelude.Maybe Prelude.Natural)+listMeshes_limit = Lens.lens (\ListMeshes' {limit} -> limit) (\s@ListMeshes' {} a -> s {limit = a} :: ListMeshes)++-- | The @nextToken@ value returned from a previous paginated @ListMeshes@+-- request where @limit@ was used and the results exceeded the value of+-- that parameter. Pagination continues from the end of the previous+-- results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+listMeshes_nextToken :: Lens.Lens' ListMeshes (Prelude.Maybe Prelude.Text)+listMeshes_nextToken = Lens.lens (\ListMeshes' {nextToken} -> nextToken) (\s@ListMeshes' {} a -> s {nextToken = a} :: ListMeshes)++instance Core.AWSPager ListMeshes where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listMeshesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop (rs Lens.^. listMeshesResponse_meshes) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listMeshes_nextToken+          Lens..~ rs+          Lens.^? listMeshesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListMeshes where+  type AWSResponse ListMeshes = ListMeshesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListMeshesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "meshes" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListMeshes where+  hashWithSalt _salt ListMeshes' {..} =+    _salt+      `Prelude.hashWithSalt` limit+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListMeshes where+  rnf ListMeshes' {..} =+    Prelude.rnf limit+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListMeshes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListMeshes where+  toPath = Prelude.const "/v20190125/meshes"++instance Data.ToQuery ListMeshes where+  toQuery ListMeshes' {..} =+    Prelude.mconcat+      [ "limit" Data.=: limit,+        "nextToken" Data.=: nextToken+      ]++-- |+--+-- /See:/ 'newListMeshesResponse' smart constructor.+data ListMeshesResponse = ListMeshesResponse'+  { -- | The @nextToken@ value to include in a future @ListMeshes@ request. When+    -- the results of a @ListMeshes@ request exceed @limit@, you can use this+    -- value to retrieve the next page of results. This value is @null@ when+    -- there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The list of existing service meshes.+    meshes :: [MeshRef]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListMeshesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listMeshesResponse_nextToken' - The @nextToken@ value to include in a future @ListMeshes@ request. When+-- the results of a @ListMeshes@ request exceed @limit@, you can use this+-- value to retrieve the next page of results. This value is @null@ when+-- there are no more results to return.+--+-- 'httpStatus', 'listMeshesResponse_httpStatus' - The response's http status code.+--+-- 'meshes', 'listMeshesResponse_meshes' - The list of existing service meshes.+newListMeshesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListMeshesResponse+newListMeshesResponse pHttpStatus_ =+  ListMeshesResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      meshes = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListMeshes@ request. When+-- the results of a @ListMeshes@ request exceed @limit@, you can use this+-- value to retrieve the next page of results. This value is @null@ when+-- there are no more results to return.+listMeshesResponse_nextToken :: Lens.Lens' ListMeshesResponse (Prelude.Maybe Prelude.Text)+listMeshesResponse_nextToken = Lens.lens (\ListMeshesResponse' {nextToken} -> nextToken) (\s@ListMeshesResponse' {} a -> s {nextToken = a} :: ListMeshesResponse)++-- | The response's http status code.+listMeshesResponse_httpStatus :: Lens.Lens' ListMeshesResponse Prelude.Int+listMeshesResponse_httpStatus = Lens.lens (\ListMeshesResponse' {httpStatus} -> httpStatus) (\s@ListMeshesResponse' {} a -> s {httpStatus = a} :: ListMeshesResponse)++-- | The list of existing service meshes.+listMeshesResponse_meshes :: Lens.Lens' ListMeshesResponse [MeshRef]+listMeshesResponse_meshes = Lens.lens (\ListMeshesResponse' {meshes} -> meshes) (\s@ListMeshesResponse' {} a -> s {meshes = a} :: ListMeshesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListMeshesResponse where+  rnf ListMeshesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf meshes
+ gen/Amazonka/AppMesh/ListRoutes.hs view
@@ -0,0 +1,304 @@+{-# 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.AppMesh.ListRoutes+-- 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 existing routes in a service mesh.+--+-- This operation returns paginated results.+module Amazonka.AppMesh.ListRoutes+  ( -- * Creating a Request+    ListRoutes (..),+    newListRoutes,++    -- * Request Lenses+    listRoutes_limit,+    listRoutes_meshOwner,+    listRoutes_nextToken,+    listRoutes_meshName,+    listRoutes_virtualRouterName,++    -- * Destructuring the Response+    ListRoutesResponse (..),+    newListRoutesResponse,++    -- * Response Lenses+    listRoutesResponse_nextToken,+    listRoutesResponse_httpStatus,+    listRoutesResponse_routes,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newListRoutes' smart constructor.+data ListRoutes = ListRoutes'+  { -- | The maximum number of results returned by @ListRoutes@ in paginated+    -- output. When you use this parameter, @ListRoutes@ returns only @limit@+    -- results in a single page along with a @nextToken@ response element. You+    -- can see the remaining results of the initial request by sending another+    -- @ListRoutes@ request with the returned @nextToken@ value. This value can+    -- be between 1 and 100. If you don\'t use this parameter, @ListRoutes@+    -- returns up to 100 results and a @nextToken@ value if applicable.+    limit :: Prelude.Maybe Prelude.Natural,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The @nextToken@ value returned from a previous paginated @ListRoutes@+    -- request where @limit@ was used and the results exceeded the value of+    -- that parameter. Pagination continues from the end of the previous+    -- results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to list routes in.+    meshName :: Prelude.Text,+    -- | The name of the virtual router to list routes in.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRoutes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'limit', 'listRoutes_limit' - The maximum number of results returned by @ListRoutes@ in paginated+-- output. When you use this parameter, @ListRoutes@ returns only @limit@+-- results in a single page along with a @nextToken@ response element. You+-- can see the remaining results of the initial request by sending another+-- @ListRoutes@ request with the returned @nextToken@ value. This value can+-- be between 1 and 100. If you don\'t use this parameter, @ListRoutes@+-- returns up to 100 results and a @nextToken@ value if applicable.+--+-- 'meshOwner', 'listRoutes_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'nextToken', 'listRoutes_nextToken' - The @nextToken@ value returned from a previous paginated @ListRoutes@+-- request where @limit@ was used and the results exceeded the value of+-- that parameter. Pagination continues from the end of the previous+-- results that returned the @nextToken@ value.+--+-- 'meshName', 'listRoutes_meshName' - The name of the service mesh to list routes in.+--+-- 'virtualRouterName', 'listRoutes_virtualRouterName' - The name of the virtual router to list routes in.+newListRoutes ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  ListRoutes+newListRoutes pMeshName_ pVirtualRouterName_ =+  ListRoutes'+    { limit = Prelude.Nothing,+      meshOwner = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      meshName = pMeshName_,+      virtualRouterName = pVirtualRouterName_+    }++-- | The maximum number of results returned by @ListRoutes@ in paginated+-- output. When you use this parameter, @ListRoutes@ returns only @limit@+-- results in a single page along with a @nextToken@ response element. You+-- can see the remaining results of the initial request by sending another+-- @ListRoutes@ request with the returned @nextToken@ value. This value can+-- be between 1 and 100. If you don\'t use this parameter, @ListRoutes@+-- returns up to 100 results and a @nextToken@ value if applicable.+listRoutes_limit :: Lens.Lens' ListRoutes (Prelude.Maybe Prelude.Natural)+listRoutes_limit = Lens.lens (\ListRoutes' {limit} -> limit) (\s@ListRoutes' {} a -> s {limit = a} :: ListRoutes)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+listRoutes_meshOwner :: Lens.Lens' ListRoutes (Prelude.Maybe Prelude.Text)+listRoutes_meshOwner = Lens.lens (\ListRoutes' {meshOwner} -> meshOwner) (\s@ListRoutes' {} a -> s {meshOwner = a} :: ListRoutes)++-- | The @nextToken@ value returned from a previous paginated @ListRoutes@+-- request where @limit@ was used and the results exceeded the value of+-- that parameter. Pagination continues from the end of the previous+-- results that returned the @nextToken@ value.+listRoutes_nextToken :: Lens.Lens' ListRoutes (Prelude.Maybe Prelude.Text)+listRoutes_nextToken = Lens.lens (\ListRoutes' {nextToken} -> nextToken) (\s@ListRoutes' {} a -> s {nextToken = a} :: ListRoutes)++-- | The name of the service mesh to list routes in.+listRoutes_meshName :: Lens.Lens' ListRoutes Prelude.Text+listRoutes_meshName = Lens.lens (\ListRoutes' {meshName} -> meshName) (\s@ListRoutes' {} a -> s {meshName = a} :: ListRoutes)++-- | The name of the virtual router to list routes in.+listRoutes_virtualRouterName :: Lens.Lens' ListRoutes Prelude.Text+listRoutes_virtualRouterName = Lens.lens (\ListRoutes' {virtualRouterName} -> virtualRouterName) (\s@ListRoutes' {} a -> s {virtualRouterName = a} :: ListRoutes)++instance Core.AWSPager ListRoutes where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listRoutesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop (rs Lens.^. listRoutesResponse_routes) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listRoutes_nextToken+          Lens..~ rs+          Lens.^? listRoutesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListRoutes where+  type AWSResponse ListRoutes = ListRoutesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListRoutesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "routes" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListRoutes where+  hashWithSalt _salt ListRoutes' {..} =+    _salt+      `Prelude.hashWithSalt` limit+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData ListRoutes where+  rnf ListRoutes' {..} =+    Prelude.rnf limit+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf virtualRouterName++instance Data.ToHeaders ListRoutes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListRoutes where+  toPath ListRoutes' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualRouter/",+        Data.toBS virtualRouterName,+        "/routes"+      ]++instance Data.ToQuery ListRoutes where+  toQuery ListRoutes' {..} =+    Prelude.mconcat+      [ "limit" Data.=: limit,+        "meshOwner" Data.=: meshOwner,+        "nextToken" Data.=: nextToken+      ]++-- |+--+-- /See:/ 'newListRoutesResponse' smart constructor.+data ListRoutesResponse = ListRoutesResponse'+  { -- | The @nextToken@ value to include in a future @ListRoutes@ request. When+    -- the results of a @ListRoutes@ request exceed @limit@, you can use this+    -- value to retrieve the next page of results. This value is @null@ when+    -- there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The list of existing routes for the specified service mesh and virtual+    -- router.+    routes :: [RouteRef]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRoutesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRoutesResponse_nextToken' - The @nextToken@ value to include in a future @ListRoutes@ request. When+-- the results of a @ListRoutes@ request exceed @limit@, you can use this+-- value to retrieve the next page of results. This value is @null@ when+-- there are no more results to return.+--+-- 'httpStatus', 'listRoutesResponse_httpStatus' - The response's http status code.+--+-- 'routes', 'listRoutesResponse_routes' - The list of existing routes for the specified service mesh and virtual+-- router.+newListRoutesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListRoutesResponse+newListRoutesResponse pHttpStatus_ =+  ListRoutesResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      routes = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListRoutes@ request. When+-- the results of a @ListRoutes@ request exceed @limit@, you can use this+-- value to retrieve the next page of results. This value is @null@ when+-- there are no more results to return.+listRoutesResponse_nextToken :: Lens.Lens' ListRoutesResponse (Prelude.Maybe Prelude.Text)+listRoutesResponse_nextToken = Lens.lens (\ListRoutesResponse' {nextToken} -> nextToken) (\s@ListRoutesResponse' {} a -> s {nextToken = a} :: ListRoutesResponse)++-- | The response's http status code.+listRoutesResponse_httpStatus :: Lens.Lens' ListRoutesResponse Prelude.Int+listRoutesResponse_httpStatus = Lens.lens (\ListRoutesResponse' {httpStatus} -> httpStatus) (\s@ListRoutesResponse' {} a -> s {httpStatus = a} :: ListRoutesResponse)++-- | The list of existing routes for the specified service mesh and virtual+-- router.+listRoutesResponse_routes :: Lens.Lens' ListRoutesResponse [RouteRef]+listRoutesResponse_routes = Lens.lens (\ListRoutesResponse' {routes} -> routes) (\s@ListRoutesResponse' {} a -> s {routes = a} :: ListRoutesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListRoutesResponse where+  rnf ListRoutesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf routes
+ gen/Amazonka/AppMesh/ListTagsForResource.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.AppMesh.ListTagsForResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- List the tags for an App Mesh resource.+--+-- This operation returns paginated results.+module Amazonka.AppMesh.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_limit,+    listTagsForResource_nextToken,+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_nextToken,+    listTagsForResourceResponse_httpStatus,+    listTagsForResourceResponse_tags,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newListTagsForResource' smart constructor.+data ListTagsForResource = ListTagsForResource'+  { -- | The maximum number of tag results returned by @ListTagsForResource@ in+    -- paginated output. When this parameter is used, @ListTagsForResource@+    -- returns only @limit@ results in a single page along with a @nextToken@+    -- response element. You can see the remaining results of the initial+    -- request by sending another @ListTagsForResource@ request with the+    -- returned @nextToken@ value. This value can be between 1 and 100. If you+    -- don\'t use this parameter, @ListTagsForResource@ returns up to 100+    -- results and a @nextToken@ value if applicable.+    limit :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListTagsForResource@ request where @limit@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) that identifies the resource to list the+    -- tags for.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'limit', 'listTagsForResource_limit' - The maximum number of tag results returned by @ListTagsForResource@ in+-- paginated output. When this parameter is used, @ListTagsForResource@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListTagsForResource@ request with the+-- returned @nextToken@ value. This value can be between 1 and 100. If you+-- don\'t use this parameter, @ListTagsForResource@ returns up to 100+-- results and a @nextToken@ value if applicable.+--+-- 'nextToken', 'listTagsForResource_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListTagsForResource@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) that identifies the resource to list the+-- tags for.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource'+    { limit = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      resourceArn = pResourceArn_+    }++-- | The maximum number of tag results returned by @ListTagsForResource@ in+-- paginated output. When this parameter is used, @ListTagsForResource@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListTagsForResource@ request with the+-- returned @nextToken@ value. This value can be between 1 and 100. If you+-- don\'t use this parameter, @ListTagsForResource@ returns up to 100+-- results and a @nextToken@ value if applicable.+listTagsForResource_limit :: Lens.Lens' ListTagsForResource (Prelude.Maybe Prelude.Natural)+listTagsForResource_limit = Lens.lens (\ListTagsForResource' {limit} -> limit) (\s@ListTagsForResource' {} a -> s {limit = a} :: ListTagsForResource)++-- | The @nextToken@ value returned from a previous paginated+-- @ListTagsForResource@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+listTagsForResource_nextToken :: Lens.Lens' ListTagsForResource (Prelude.Maybe Prelude.Text)+listTagsForResource_nextToken = Lens.lens (\ListTagsForResource' {nextToken} -> nextToken) (\s@ListTagsForResource' {} a -> s {nextToken = a} :: ListTagsForResource)++-- | The Amazon Resource Name (ARN) that identifies the resource to list the+-- tags for.+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)++instance Core.AWSPager ListTagsForResource where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listTagsForResourceResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listTagsForResourceResponse_tags) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listTagsForResource_nextToken+          Lens..~ rs+          Lens.^? listTagsForResourceResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListTagsForResource where+  type+    AWSResponse ListTagsForResource =+      ListTagsForResourceResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTagsForResourceResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListTagsForResource where+  hashWithSalt _salt ListTagsForResource' {..} =+    _salt+      `Prelude.hashWithSalt` limit+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTagsForResource where+  rnf ListTagsForResource' {..} =+    Prelude.rnf limit+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf resourceArn++instance Data.ToHeaders ListTagsForResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListTagsForResource where+  toPath = Prelude.const "/v20190125/tags"++instance Data.ToQuery ListTagsForResource where+  toQuery ListTagsForResource' {..} =+    Prelude.mconcat+      [ "limit" Data.=: limit,+        "nextToken" Data.=: nextToken,+        "resourceArn" Data.=: resourceArn+      ]++-- |+--+-- /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | The @nextToken@ value to include in a future @ListTagsForResource@+    -- request. When the results of a @ListTagsForResource@ request exceed+    -- @limit@, you can use this value to retrieve the next page of results.+    -- This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The tags for the resource.+    tags :: [TagRef]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listTagsForResourceResponse_nextToken' - The @nextToken@ value to include in a future @ListTagsForResource@+-- request. When the results of a @ListTagsForResource@ request exceed+-- @limit@, you can use this value to retrieve the next page of results.+-- This value is @null@ when there are no more results to return.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+--+-- 'tags', 'listTagsForResourceResponse_tags' - The tags for the resource.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      tags = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListTagsForResource@+-- request. When the results of a @ListTagsForResource@ request exceed+-- @limit@, you can use this value to retrieve the next page of results.+-- This value is @null@ when there are no more results to return.+listTagsForResourceResponse_nextToken :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe Prelude.Text)+listTagsForResourceResponse_nextToken = Lens.lens (\ListTagsForResourceResponse' {nextToken} -> nextToken) (\s@ListTagsForResourceResponse' {} a -> s {nextToken = a} :: ListTagsForResourceResponse)++-- | The response's http status code.+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)++-- | The tags for the resource.+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse [TagRef]+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/AppMesh/ListVirtualGateways.hs view
@@ -0,0 +1,293 @@+{-# 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.AppMesh.ListVirtualGateways+-- 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 existing virtual gateways in a service mesh.+--+-- This operation returns paginated results.+module Amazonka.AppMesh.ListVirtualGateways+  ( -- * Creating a Request+    ListVirtualGateways (..),+    newListVirtualGateways,++    -- * Request Lenses+    listVirtualGateways_limit,+    listVirtualGateways_meshOwner,+    listVirtualGateways_nextToken,+    listVirtualGateways_meshName,++    -- * Destructuring the Response+    ListVirtualGatewaysResponse (..),+    newListVirtualGatewaysResponse,++    -- * Response Lenses+    listVirtualGatewaysResponse_nextToken,+    listVirtualGatewaysResponse_httpStatus,+    listVirtualGatewaysResponse_virtualGateways,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListVirtualGateways' smart constructor.+data ListVirtualGateways = ListVirtualGateways'+  { -- | The maximum number of results returned by @ListVirtualGateways@ in+    -- paginated output. When you use this parameter, @ListVirtualGateways@+    -- returns only @limit@ results in a single page along with a @nextToken@+    -- response element. You can see the remaining results of the initial+    -- request by sending another @ListVirtualGateways@ request with the+    -- returned @nextToken@ value. This value can be between 1 and 100. If you+    -- don\'t use this parameter, @ListVirtualGateways@ returns up to 100+    -- results and a @nextToken@ value if applicable.+    limit :: Prelude.Maybe Prelude.Natural,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListVirtualGateways@ request where @limit@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to list virtual gateways in.+    meshName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListVirtualGateways' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'limit', 'listVirtualGateways_limit' - The maximum number of results returned by @ListVirtualGateways@ in+-- paginated output. When you use this parameter, @ListVirtualGateways@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListVirtualGateways@ request with the+-- returned @nextToken@ value. This value can be between 1 and 100. If you+-- don\'t use this parameter, @ListVirtualGateways@ returns up to 100+-- results and a @nextToken@ value if applicable.+--+-- 'meshOwner', 'listVirtualGateways_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'nextToken', 'listVirtualGateways_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListVirtualGateways@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- 'meshName', 'listVirtualGateways_meshName' - The name of the service mesh to list virtual gateways in.+newListVirtualGateways ::+  -- | 'meshName'+  Prelude.Text ->+  ListVirtualGateways+newListVirtualGateways pMeshName_ =+  ListVirtualGateways'+    { limit = Prelude.Nothing,+      meshOwner = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      meshName = pMeshName_+    }++-- | The maximum number of results returned by @ListVirtualGateways@ in+-- paginated output. When you use this parameter, @ListVirtualGateways@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListVirtualGateways@ request with the+-- returned @nextToken@ value. This value can be between 1 and 100. If you+-- don\'t use this parameter, @ListVirtualGateways@ returns up to 100+-- results and a @nextToken@ value if applicable.+listVirtualGateways_limit :: Lens.Lens' ListVirtualGateways (Prelude.Maybe Prelude.Natural)+listVirtualGateways_limit = Lens.lens (\ListVirtualGateways' {limit} -> limit) (\s@ListVirtualGateways' {} a -> s {limit = a} :: ListVirtualGateways)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+listVirtualGateways_meshOwner :: Lens.Lens' ListVirtualGateways (Prelude.Maybe Prelude.Text)+listVirtualGateways_meshOwner = Lens.lens (\ListVirtualGateways' {meshOwner} -> meshOwner) (\s@ListVirtualGateways' {} a -> s {meshOwner = a} :: ListVirtualGateways)++-- | The @nextToken@ value returned from a previous paginated+-- @ListVirtualGateways@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+listVirtualGateways_nextToken :: Lens.Lens' ListVirtualGateways (Prelude.Maybe Prelude.Text)+listVirtualGateways_nextToken = Lens.lens (\ListVirtualGateways' {nextToken} -> nextToken) (\s@ListVirtualGateways' {} a -> s {nextToken = a} :: ListVirtualGateways)++-- | The name of the service mesh to list virtual gateways in.+listVirtualGateways_meshName :: Lens.Lens' ListVirtualGateways Prelude.Text+listVirtualGateways_meshName = Lens.lens (\ListVirtualGateways' {meshName} -> meshName) (\s@ListVirtualGateways' {} a -> s {meshName = a} :: ListVirtualGateways)++instance Core.AWSPager ListVirtualGateways where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listVirtualGatewaysResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listVirtualGatewaysResponse_virtualGateways+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listVirtualGateways_nextToken+          Lens..~ rs+          Lens.^? listVirtualGatewaysResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListVirtualGateways where+  type+    AWSResponse ListVirtualGateways =+      ListVirtualGatewaysResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListVirtualGatewaysResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "virtualGateways"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListVirtualGateways where+  hashWithSalt _salt ListVirtualGateways' {..} =+    _salt+      `Prelude.hashWithSalt` limit+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` meshName++instance Prelude.NFData ListVirtualGateways where+  rnf ListVirtualGateways' {..} =+    Prelude.rnf limit+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf meshName++instance Data.ToHeaders ListVirtualGateways where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListVirtualGateways where+  toPath ListVirtualGateways' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualGateways"+      ]++instance Data.ToQuery ListVirtualGateways where+  toQuery ListVirtualGateways' {..} =+    Prelude.mconcat+      [ "limit" Data.=: limit,+        "meshOwner" Data.=: meshOwner,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListVirtualGatewaysResponse' smart constructor.+data ListVirtualGatewaysResponse = ListVirtualGatewaysResponse'+  { -- | The @nextToken@ value to include in a future @ListVirtualGateways@+    -- request. When the results of a @ListVirtualGateways@ request exceed+    -- @limit@, you can use this value to retrieve the next page of results.+    -- This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The list of existing virtual gateways for the specified service mesh.+    virtualGateways :: [VirtualGatewayRef]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListVirtualGatewaysResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listVirtualGatewaysResponse_nextToken' - The @nextToken@ value to include in a future @ListVirtualGateways@+-- request. When the results of a @ListVirtualGateways@ request exceed+-- @limit@, you can use this value to retrieve the next page of results.+-- This value is @null@ when there are no more results to return.+--+-- 'httpStatus', 'listVirtualGatewaysResponse_httpStatus' - The response's http status code.+--+-- 'virtualGateways', 'listVirtualGatewaysResponse_virtualGateways' - The list of existing virtual gateways for the specified service mesh.+newListVirtualGatewaysResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListVirtualGatewaysResponse+newListVirtualGatewaysResponse pHttpStatus_ =+  ListVirtualGatewaysResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      virtualGateways = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListVirtualGateways@+-- request. When the results of a @ListVirtualGateways@ request exceed+-- @limit@, you can use this value to retrieve the next page of results.+-- This value is @null@ when there are no more results to return.+listVirtualGatewaysResponse_nextToken :: Lens.Lens' ListVirtualGatewaysResponse (Prelude.Maybe Prelude.Text)+listVirtualGatewaysResponse_nextToken = Lens.lens (\ListVirtualGatewaysResponse' {nextToken} -> nextToken) (\s@ListVirtualGatewaysResponse' {} a -> s {nextToken = a} :: ListVirtualGatewaysResponse)++-- | The response's http status code.+listVirtualGatewaysResponse_httpStatus :: Lens.Lens' ListVirtualGatewaysResponse Prelude.Int+listVirtualGatewaysResponse_httpStatus = Lens.lens (\ListVirtualGatewaysResponse' {httpStatus} -> httpStatus) (\s@ListVirtualGatewaysResponse' {} a -> s {httpStatus = a} :: ListVirtualGatewaysResponse)++-- | The list of existing virtual gateways for the specified service mesh.+listVirtualGatewaysResponse_virtualGateways :: Lens.Lens' ListVirtualGatewaysResponse [VirtualGatewayRef]+listVirtualGatewaysResponse_virtualGateways = Lens.lens (\ListVirtualGatewaysResponse' {virtualGateways} -> virtualGateways) (\s@ListVirtualGatewaysResponse' {} a -> s {virtualGateways = a} :: ListVirtualGatewaysResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListVirtualGatewaysResponse where+  rnf ListVirtualGatewaysResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualGateways
+ gen/Amazonka/AppMesh/ListVirtualNodes.hs view
@@ -0,0 +1,292 @@+{-# 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.AppMesh.ListVirtualNodes+-- 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 existing virtual nodes.+--+-- This operation returns paginated results.+module Amazonka.AppMesh.ListVirtualNodes+  ( -- * Creating a Request+    ListVirtualNodes (..),+    newListVirtualNodes,++    -- * Request Lenses+    listVirtualNodes_limit,+    listVirtualNodes_meshOwner,+    listVirtualNodes_nextToken,+    listVirtualNodes_meshName,++    -- * Destructuring the Response+    ListVirtualNodesResponse (..),+    newListVirtualNodesResponse,++    -- * Response Lenses+    listVirtualNodesResponse_nextToken,+    listVirtualNodesResponse_httpStatus,+    listVirtualNodesResponse_virtualNodes,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newListVirtualNodes' smart constructor.+data ListVirtualNodes = ListVirtualNodes'+  { -- | The maximum number of results returned by @ListVirtualNodes@ in+    -- paginated output. When you use this parameter, @ListVirtualNodes@+    -- returns only @limit@ results in a single page along with a @nextToken@+    -- response element. You can see the remaining results of the initial+    -- request by sending another @ListVirtualNodes@ request with the returned+    -- @nextToken@ value. This value can be between 1 and 100. If you don\'t+    -- use this parameter, @ListVirtualNodes@ returns up to 100 results and a+    -- @nextToken@ value if applicable.+    limit :: Prelude.Maybe Prelude.Natural,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListVirtualNodes@ request where @limit@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to list virtual nodes in.+    meshName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListVirtualNodes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'limit', 'listVirtualNodes_limit' - The maximum number of results returned by @ListVirtualNodes@ in+-- paginated output. When you use this parameter, @ListVirtualNodes@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListVirtualNodes@ request with the returned+-- @nextToken@ value. This value can be between 1 and 100. If you don\'t+-- use this parameter, @ListVirtualNodes@ returns up to 100 results and a+-- @nextToken@ value if applicable.+--+-- 'meshOwner', 'listVirtualNodes_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'nextToken', 'listVirtualNodes_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListVirtualNodes@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- 'meshName', 'listVirtualNodes_meshName' - The name of the service mesh to list virtual nodes in.+newListVirtualNodes ::+  -- | 'meshName'+  Prelude.Text ->+  ListVirtualNodes+newListVirtualNodes pMeshName_ =+  ListVirtualNodes'+    { limit = Prelude.Nothing,+      meshOwner = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      meshName = pMeshName_+    }++-- | The maximum number of results returned by @ListVirtualNodes@ in+-- paginated output. When you use this parameter, @ListVirtualNodes@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListVirtualNodes@ request with the returned+-- @nextToken@ value. This value can be between 1 and 100. If you don\'t+-- use this parameter, @ListVirtualNodes@ returns up to 100 results and a+-- @nextToken@ value if applicable.+listVirtualNodes_limit :: Lens.Lens' ListVirtualNodes (Prelude.Maybe Prelude.Natural)+listVirtualNodes_limit = Lens.lens (\ListVirtualNodes' {limit} -> limit) (\s@ListVirtualNodes' {} a -> s {limit = a} :: ListVirtualNodes)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+listVirtualNodes_meshOwner :: Lens.Lens' ListVirtualNodes (Prelude.Maybe Prelude.Text)+listVirtualNodes_meshOwner = Lens.lens (\ListVirtualNodes' {meshOwner} -> meshOwner) (\s@ListVirtualNodes' {} a -> s {meshOwner = a} :: ListVirtualNodes)++-- | The @nextToken@ value returned from a previous paginated+-- @ListVirtualNodes@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+listVirtualNodes_nextToken :: Lens.Lens' ListVirtualNodes (Prelude.Maybe Prelude.Text)+listVirtualNodes_nextToken = Lens.lens (\ListVirtualNodes' {nextToken} -> nextToken) (\s@ListVirtualNodes' {} a -> s {nextToken = a} :: ListVirtualNodes)++-- | The name of the service mesh to list virtual nodes in.+listVirtualNodes_meshName :: Lens.Lens' ListVirtualNodes Prelude.Text+listVirtualNodes_meshName = Lens.lens (\ListVirtualNodes' {meshName} -> meshName) (\s@ListVirtualNodes' {} a -> s {meshName = a} :: ListVirtualNodes)++instance Core.AWSPager ListVirtualNodes where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listVirtualNodesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listVirtualNodesResponse_virtualNodes) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listVirtualNodes_nextToken+          Lens..~ rs+          Lens.^? listVirtualNodesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListVirtualNodes where+  type+    AWSResponse ListVirtualNodes =+      ListVirtualNodesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListVirtualNodesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "virtualNodes" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListVirtualNodes where+  hashWithSalt _salt ListVirtualNodes' {..} =+    _salt+      `Prelude.hashWithSalt` limit+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` meshName++instance Prelude.NFData ListVirtualNodes where+  rnf ListVirtualNodes' {..} =+    Prelude.rnf limit+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf meshName++instance Data.ToHeaders ListVirtualNodes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListVirtualNodes where+  toPath ListVirtualNodes' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualNodes"+      ]++instance Data.ToQuery ListVirtualNodes where+  toQuery ListVirtualNodes' {..} =+    Prelude.mconcat+      [ "limit" Data.=: limit,+        "meshOwner" Data.=: meshOwner,+        "nextToken" Data.=: nextToken+      ]++-- |+--+-- /See:/ 'newListVirtualNodesResponse' smart constructor.+data ListVirtualNodesResponse = ListVirtualNodesResponse'+  { -- | The @nextToken@ value to include in a future @ListVirtualNodes@ request.+    -- When the results of a @ListVirtualNodes@ request exceed @limit@, you can+    -- use this value to retrieve the next page of results. This value is+    -- @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The list of existing virtual nodes for the specified service mesh.+    virtualNodes :: [VirtualNodeRef]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListVirtualNodesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listVirtualNodesResponse_nextToken' - The @nextToken@ value to include in a future @ListVirtualNodes@ request.+-- When the results of a @ListVirtualNodes@ request exceed @limit@, you can+-- use this value to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+--+-- 'httpStatus', 'listVirtualNodesResponse_httpStatus' - The response's http status code.+--+-- 'virtualNodes', 'listVirtualNodesResponse_virtualNodes' - The list of existing virtual nodes for the specified service mesh.+newListVirtualNodesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListVirtualNodesResponse+newListVirtualNodesResponse pHttpStatus_ =+  ListVirtualNodesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      virtualNodes = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListVirtualNodes@ request.+-- When the results of a @ListVirtualNodes@ request exceed @limit@, you can+-- use this value to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+listVirtualNodesResponse_nextToken :: Lens.Lens' ListVirtualNodesResponse (Prelude.Maybe Prelude.Text)+listVirtualNodesResponse_nextToken = Lens.lens (\ListVirtualNodesResponse' {nextToken} -> nextToken) (\s@ListVirtualNodesResponse' {} a -> s {nextToken = a} :: ListVirtualNodesResponse)++-- | The response's http status code.+listVirtualNodesResponse_httpStatus :: Lens.Lens' ListVirtualNodesResponse Prelude.Int+listVirtualNodesResponse_httpStatus = Lens.lens (\ListVirtualNodesResponse' {httpStatus} -> httpStatus) (\s@ListVirtualNodesResponse' {} a -> s {httpStatus = a} :: ListVirtualNodesResponse)++-- | The list of existing virtual nodes for the specified service mesh.+listVirtualNodesResponse_virtualNodes :: Lens.Lens' ListVirtualNodesResponse [VirtualNodeRef]+listVirtualNodesResponse_virtualNodes = Lens.lens (\ListVirtualNodesResponse' {virtualNodes} -> virtualNodes) (\s@ListVirtualNodesResponse' {} a -> s {virtualNodes = a} :: ListVirtualNodesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListVirtualNodesResponse where+  rnf ListVirtualNodesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualNodes
+ gen/Amazonka/AppMesh/ListVirtualRouters.hs view
@@ -0,0 +1,297 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.ListVirtualRouters+-- 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 existing virtual routers in a service mesh.+--+-- This operation returns paginated results.+module Amazonka.AppMesh.ListVirtualRouters+  ( -- * Creating a Request+    ListVirtualRouters (..),+    newListVirtualRouters,++    -- * Request Lenses+    listVirtualRouters_limit,+    listVirtualRouters_meshOwner,+    listVirtualRouters_nextToken,+    listVirtualRouters_meshName,++    -- * Destructuring the Response+    ListVirtualRoutersResponse (..),+    newListVirtualRoutersResponse,++    -- * Response Lenses+    listVirtualRoutersResponse_nextToken,+    listVirtualRoutersResponse_httpStatus,+    listVirtualRoutersResponse_virtualRouters,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newListVirtualRouters' smart constructor.+data ListVirtualRouters = ListVirtualRouters'+  { -- | The maximum number of results returned by @ListVirtualRouters@ in+    -- paginated output. When you use this parameter, @ListVirtualRouters@+    -- returns only @limit@ results in a single page along with a @nextToken@+    -- response element. You can see the remaining results of the initial+    -- request by sending another @ListVirtualRouters@ request with the+    -- returned @nextToken@ value. This value can be between 1 and 100. If you+    -- don\'t use this parameter, @ListVirtualRouters@ returns up to 100+    -- results and a @nextToken@ value if applicable.+    limit :: Prelude.Maybe Prelude.Natural,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListVirtualRouters@ request where @limit@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to list virtual routers in.+    meshName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListVirtualRouters' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'limit', 'listVirtualRouters_limit' - The maximum number of results returned by @ListVirtualRouters@ in+-- paginated output. When you use this parameter, @ListVirtualRouters@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListVirtualRouters@ request with the+-- returned @nextToken@ value. This value can be between 1 and 100. If you+-- don\'t use this parameter, @ListVirtualRouters@ returns up to 100+-- results and a @nextToken@ value if applicable.+--+-- 'meshOwner', 'listVirtualRouters_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'nextToken', 'listVirtualRouters_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListVirtualRouters@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- 'meshName', 'listVirtualRouters_meshName' - The name of the service mesh to list virtual routers in.+newListVirtualRouters ::+  -- | 'meshName'+  Prelude.Text ->+  ListVirtualRouters+newListVirtualRouters pMeshName_ =+  ListVirtualRouters'+    { limit = Prelude.Nothing,+      meshOwner = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      meshName = pMeshName_+    }++-- | The maximum number of results returned by @ListVirtualRouters@ in+-- paginated output. When you use this parameter, @ListVirtualRouters@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListVirtualRouters@ request with the+-- returned @nextToken@ value. This value can be between 1 and 100. If you+-- don\'t use this parameter, @ListVirtualRouters@ returns up to 100+-- results and a @nextToken@ value if applicable.+listVirtualRouters_limit :: Lens.Lens' ListVirtualRouters (Prelude.Maybe Prelude.Natural)+listVirtualRouters_limit = Lens.lens (\ListVirtualRouters' {limit} -> limit) (\s@ListVirtualRouters' {} a -> s {limit = a} :: ListVirtualRouters)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+listVirtualRouters_meshOwner :: Lens.Lens' ListVirtualRouters (Prelude.Maybe Prelude.Text)+listVirtualRouters_meshOwner = Lens.lens (\ListVirtualRouters' {meshOwner} -> meshOwner) (\s@ListVirtualRouters' {} a -> s {meshOwner = a} :: ListVirtualRouters)++-- | The @nextToken@ value returned from a previous paginated+-- @ListVirtualRouters@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+listVirtualRouters_nextToken :: Lens.Lens' ListVirtualRouters (Prelude.Maybe Prelude.Text)+listVirtualRouters_nextToken = Lens.lens (\ListVirtualRouters' {nextToken} -> nextToken) (\s@ListVirtualRouters' {} a -> s {nextToken = a} :: ListVirtualRouters)++-- | The name of the service mesh to list virtual routers in.+listVirtualRouters_meshName :: Lens.Lens' ListVirtualRouters Prelude.Text+listVirtualRouters_meshName = Lens.lens (\ListVirtualRouters' {meshName} -> meshName) (\s@ListVirtualRouters' {} a -> s {meshName = a} :: ListVirtualRouters)++instance Core.AWSPager ListVirtualRouters where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listVirtualRoutersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listVirtualRoutersResponse_virtualRouters+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listVirtualRouters_nextToken+          Lens..~ rs+          Lens.^? listVirtualRoutersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListVirtualRouters where+  type+    AWSResponse ListVirtualRouters =+      ListVirtualRoutersResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListVirtualRoutersResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "virtualRouters"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListVirtualRouters where+  hashWithSalt _salt ListVirtualRouters' {..} =+    _salt+      `Prelude.hashWithSalt` limit+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` meshName++instance Prelude.NFData ListVirtualRouters where+  rnf ListVirtualRouters' {..} =+    Prelude.rnf limit+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf meshName++instance Data.ToHeaders ListVirtualRouters where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListVirtualRouters where+  toPath ListVirtualRouters' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualRouters"+      ]++instance Data.ToQuery ListVirtualRouters where+  toQuery ListVirtualRouters' {..} =+    Prelude.mconcat+      [ "limit" Data.=: limit,+        "meshOwner" Data.=: meshOwner,+        "nextToken" Data.=: nextToken+      ]++-- |+--+-- /See:/ 'newListVirtualRoutersResponse' smart constructor.+data ListVirtualRoutersResponse = ListVirtualRoutersResponse'+  { -- | The @nextToken@ value to include in a future @ListVirtualRouters@+    -- request. When the results of a @ListVirtualRouters@ request exceed+    -- @limit@, you can use this value to retrieve the next page of results.+    -- This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The list of existing virtual routers for the specified service mesh.+    virtualRouters :: [VirtualRouterRef]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListVirtualRoutersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listVirtualRoutersResponse_nextToken' - The @nextToken@ value to include in a future @ListVirtualRouters@+-- request. When the results of a @ListVirtualRouters@ request exceed+-- @limit@, you can use this value to retrieve the next page of results.+-- This value is @null@ when there are no more results to return.+--+-- 'httpStatus', 'listVirtualRoutersResponse_httpStatus' - The response's http status code.+--+-- 'virtualRouters', 'listVirtualRoutersResponse_virtualRouters' - The list of existing virtual routers for the specified service mesh.+newListVirtualRoutersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListVirtualRoutersResponse+newListVirtualRoutersResponse pHttpStatus_ =+  ListVirtualRoutersResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      virtualRouters = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListVirtualRouters@+-- request. When the results of a @ListVirtualRouters@ request exceed+-- @limit@, you can use this value to retrieve the next page of results.+-- This value is @null@ when there are no more results to return.+listVirtualRoutersResponse_nextToken :: Lens.Lens' ListVirtualRoutersResponse (Prelude.Maybe Prelude.Text)+listVirtualRoutersResponse_nextToken = Lens.lens (\ListVirtualRoutersResponse' {nextToken} -> nextToken) (\s@ListVirtualRoutersResponse' {} a -> s {nextToken = a} :: ListVirtualRoutersResponse)++-- | The response's http status code.+listVirtualRoutersResponse_httpStatus :: Lens.Lens' ListVirtualRoutersResponse Prelude.Int+listVirtualRoutersResponse_httpStatus = Lens.lens (\ListVirtualRoutersResponse' {httpStatus} -> httpStatus) (\s@ListVirtualRoutersResponse' {} a -> s {httpStatus = a} :: ListVirtualRoutersResponse)++-- | The list of existing virtual routers for the specified service mesh.+listVirtualRoutersResponse_virtualRouters :: Lens.Lens' ListVirtualRoutersResponse [VirtualRouterRef]+listVirtualRoutersResponse_virtualRouters = Lens.lens (\ListVirtualRoutersResponse' {virtualRouters} -> virtualRouters) (\s@ListVirtualRoutersResponse' {} a -> s {virtualRouters = a} :: ListVirtualRoutersResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListVirtualRoutersResponse where+  rnf ListVirtualRoutersResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualRouters
+ gen/Amazonka/AppMesh/ListVirtualServices.hs view
@@ -0,0 +1,297 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.ListVirtualServices+-- 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 existing virtual services in a service mesh.+--+-- This operation returns paginated results.+module Amazonka.AppMesh.ListVirtualServices+  ( -- * Creating a Request+    ListVirtualServices (..),+    newListVirtualServices,++    -- * Request Lenses+    listVirtualServices_limit,+    listVirtualServices_meshOwner,+    listVirtualServices_nextToken,+    listVirtualServices_meshName,++    -- * Destructuring the Response+    ListVirtualServicesResponse (..),+    newListVirtualServicesResponse,++    -- * Response Lenses+    listVirtualServicesResponse_nextToken,+    listVirtualServicesResponse_httpStatus,+    listVirtualServicesResponse_virtualServices,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newListVirtualServices' smart constructor.+data ListVirtualServices = ListVirtualServices'+  { -- | The maximum number of results returned by @ListVirtualServices@ in+    -- paginated output. When you use this parameter, @ListVirtualServices@+    -- returns only @limit@ results in a single page along with a @nextToken@+    -- response element. You can see the remaining results of the initial+    -- request by sending another @ListVirtualServices@ request with the+    -- returned @nextToken@ value. This value can be between 1 and 100. If you+    -- don\'t use this parameter, @ListVirtualServices@ returns up to 100+    -- results and a @nextToken@ value if applicable.+    limit :: Prelude.Maybe Prelude.Natural,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListVirtualServices@ request where @limit@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh to list virtual services in.+    meshName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListVirtualServices' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'limit', 'listVirtualServices_limit' - The maximum number of results returned by @ListVirtualServices@ in+-- paginated output. When you use this parameter, @ListVirtualServices@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListVirtualServices@ request with the+-- returned @nextToken@ value. This value can be between 1 and 100. If you+-- don\'t use this parameter, @ListVirtualServices@ returns up to 100+-- results and a @nextToken@ value if applicable.+--+-- 'meshOwner', 'listVirtualServices_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'nextToken', 'listVirtualServices_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListVirtualServices@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- 'meshName', 'listVirtualServices_meshName' - The name of the service mesh to list virtual services in.+newListVirtualServices ::+  -- | 'meshName'+  Prelude.Text ->+  ListVirtualServices+newListVirtualServices pMeshName_ =+  ListVirtualServices'+    { limit = Prelude.Nothing,+      meshOwner = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      meshName = pMeshName_+    }++-- | The maximum number of results returned by @ListVirtualServices@ in+-- paginated output. When you use this parameter, @ListVirtualServices@+-- returns only @limit@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListVirtualServices@ request with the+-- returned @nextToken@ value. This value can be between 1 and 100. If you+-- don\'t use this parameter, @ListVirtualServices@ returns up to 100+-- results and a @nextToken@ value if applicable.+listVirtualServices_limit :: Lens.Lens' ListVirtualServices (Prelude.Maybe Prelude.Natural)+listVirtualServices_limit = Lens.lens (\ListVirtualServices' {limit} -> limit) (\s@ListVirtualServices' {} a -> s {limit = a} :: ListVirtualServices)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+listVirtualServices_meshOwner :: Lens.Lens' ListVirtualServices (Prelude.Maybe Prelude.Text)+listVirtualServices_meshOwner = Lens.lens (\ListVirtualServices' {meshOwner} -> meshOwner) (\s@ListVirtualServices' {} a -> s {meshOwner = a} :: ListVirtualServices)++-- | The @nextToken@ value returned from a previous paginated+-- @ListVirtualServices@ request where @limit@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+listVirtualServices_nextToken :: Lens.Lens' ListVirtualServices (Prelude.Maybe Prelude.Text)+listVirtualServices_nextToken = Lens.lens (\ListVirtualServices' {nextToken} -> nextToken) (\s@ListVirtualServices' {} a -> s {nextToken = a} :: ListVirtualServices)++-- | The name of the service mesh to list virtual services in.+listVirtualServices_meshName :: Lens.Lens' ListVirtualServices Prelude.Text+listVirtualServices_meshName = Lens.lens (\ListVirtualServices' {meshName} -> meshName) (\s@ListVirtualServices' {} a -> s {meshName = a} :: ListVirtualServices)++instance Core.AWSPager ListVirtualServices where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listVirtualServicesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listVirtualServicesResponse_virtualServices+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listVirtualServices_nextToken+          Lens..~ rs+          Lens.^? listVirtualServicesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListVirtualServices where+  type+    AWSResponse ListVirtualServices =+      ListVirtualServicesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListVirtualServicesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "virtualServices"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListVirtualServices where+  hashWithSalt _salt ListVirtualServices' {..} =+    _salt+      `Prelude.hashWithSalt` limit+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` meshName++instance Prelude.NFData ListVirtualServices where+  rnf ListVirtualServices' {..} =+    Prelude.rnf limit+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf meshName++instance Data.ToHeaders ListVirtualServices where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListVirtualServices where+  toPath ListVirtualServices' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualServices"+      ]++instance Data.ToQuery ListVirtualServices where+  toQuery ListVirtualServices' {..} =+    Prelude.mconcat+      [ "limit" Data.=: limit,+        "meshOwner" Data.=: meshOwner,+        "nextToken" Data.=: nextToken+      ]++-- |+--+-- /See:/ 'newListVirtualServicesResponse' smart constructor.+data ListVirtualServicesResponse = ListVirtualServicesResponse'+  { -- | The @nextToken@ value to include in a future @ListVirtualServices@+    -- request. When the results of a @ListVirtualServices@ request exceed+    -- @limit@, you can use this value to retrieve the next page of results.+    -- This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The list of existing virtual services for the specified service mesh.+    virtualServices :: [VirtualServiceRef]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListVirtualServicesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listVirtualServicesResponse_nextToken' - The @nextToken@ value to include in a future @ListVirtualServices@+-- request. When the results of a @ListVirtualServices@ request exceed+-- @limit@, you can use this value to retrieve the next page of results.+-- This value is @null@ when there are no more results to return.+--+-- 'httpStatus', 'listVirtualServicesResponse_httpStatus' - The response's http status code.+--+-- 'virtualServices', 'listVirtualServicesResponse_virtualServices' - The list of existing virtual services for the specified service mesh.+newListVirtualServicesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListVirtualServicesResponse+newListVirtualServicesResponse pHttpStatus_ =+  ListVirtualServicesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      virtualServices = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @ListVirtualServices@+-- request. When the results of a @ListVirtualServices@ request exceed+-- @limit@, you can use this value to retrieve the next page of results.+-- This value is @null@ when there are no more results to return.+listVirtualServicesResponse_nextToken :: Lens.Lens' ListVirtualServicesResponse (Prelude.Maybe Prelude.Text)+listVirtualServicesResponse_nextToken = Lens.lens (\ListVirtualServicesResponse' {nextToken} -> nextToken) (\s@ListVirtualServicesResponse' {} a -> s {nextToken = a} :: ListVirtualServicesResponse)++-- | The response's http status code.+listVirtualServicesResponse_httpStatus :: Lens.Lens' ListVirtualServicesResponse Prelude.Int+listVirtualServicesResponse_httpStatus = Lens.lens (\ListVirtualServicesResponse' {httpStatus} -> httpStatus) (\s@ListVirtualServicesResponse' {} a -> s {httpStatus = a} :: ListVirtualServicesResponse)++-- | The list of existing virtual services for the specified service mesh.+listVirtualServicesResponse_virtualServices :: Lens.Lens' ListVirtualServicesResponse [VirtualServiceRef]+listVirtualServicesResponse_virtualServices = Lens.lens (\ListVirtualServicesResponse' {virtualServices} -> virtualServices) (\s@ListVirtualServicesResponse' {} a -> s {virtualServices = a} :: ListVirtualServicesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListVirtualServicesResponse where+  rnf ListVirtualServicesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualServices
+ gen/Amazonka/AppMesh/TagResource.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.AppMesh.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)+--+-- Associates the specified tags to a resource with the specified+-- @resourceArn@. If existing tags on a resource aren\'t specified in the+-- request parameters, they aren\'t changed. When a resource is deleted,+-- the tags associated with that resource are also deleted.+module Amazonka.AppMesh.TagResource+  ( -- * Creating a Request+    TagResource (..),+    newTagResource,++    -- * Request Lenses+    tagResource_resourceArn,+    tagResource_tags,++    -- * Destructuring the Response+    TagResourceResponse (..),+    newTagResourceResponse,++    -- * Response Lenses+    tagResourceResponse_httpStatus,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the resource to add tags to.+    resourceArn :: Prelude.Text,+    -- | The tags to add to the resource. A tag is an array of key-value pairs.+    -- Tag keys can have a maximum character length of 128 characters, and tag+    -- values can have a maximum length of 256 characters.+    tags :: [TagRef]+  }+  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 add tags to.+--+-- 'tags', 'tagResource_tags' - The tags to add to the resource. A tag is an array of key-value pairs.+-- Tag keys can have a maximum character length of 128 characters, and tag+-- values can have a maximum length of 256 characters.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource to add tags to.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | The tags to add to the resource. A tag is an array of key-value pairs.+-- Tag keys can have a maximum character length of 128 characters, and tag+-- values can have a maximum length of 256 characters.+tagResource_tags :: Lens.Lens' TagResource [TagRef]+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.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          TagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TagResource where+  hashWithSalt _salt TagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData TagResource where+  rnf TagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders TagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("tags" Data..= tags)]+      )++instance Data.ToPath TagResource where+  toPath = Prelude.const "/v20190125/tag"++instance Data.ToQuery TagResource where+  toQuery TagResource' {..} =+    Prelude.mconcat ["resourceArn" Data.=: resourceArn]++-- |+--+-- /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/AppMesh/Types.hs view
@@ -0,0 +1,1379 @@+{-# 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.AppMesh.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.AppMesh.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _BadRequestException,+    _ConflictException,+    _ForbiddenException,+    _InternalServerErrorException,+    _LimitExceededException,+    _NotFoundException,+    _ResourceInUseException,+    _ServiceUnavailableException,+    _TooManyRequestsException,+    _TooManyTagsException,++    -- * DefaultGatewayRouteRewrite+    DefaultGatewayRouteRewrite (..),++    -- * DnsResponseType+    DnsResponseType (..),++    -- * DurationUnit+    DurationUnit (..),++    -- * EgressFilterType+    EgressFilterType (..),++    -- * GatewayRouteStatusCode+    GatewayRouteStatusCode (..),++    -- * GrpcRetryPolicyEvent+    GrpcRetryPolicyEvent (..),++    -- * HttpMethod+    HttpMethod (..),++    -- * HttpScheme+    HttpScheme (..),++    -- * IpPreference+    IpPreference (..),++    -- * ListenerTlsMode+    ListenerTlsMode (..),++    -- * MeshStatusCode+    MeshStatusCode (..),++    -- * PortProtocol+    PortProtocol (..),++    -- * RouteStatusCode+    RouteStatusCode (..),++    -- * TcpRetryPolicyEvent+    TcpRetryPolicyEvent (..),++    -- * VirtualGatewayListenerTlsMode+    VirtualGatewayListenerTlsMode (..),++    -- * VirtualGatewayPortProtocol+    VirtualGatewayPortProtocol (..),++    -- * VirtualGatewayStatusCode+    VirtualGatewayStatusCode (..),++    -- * VirtualNodeStatusCode+    VirtualNodeStatusCode (..),++    -- * VirtualRouterStatusCode+    VirtualRouterStatusCode (..),++    -- * VirtualServiceStatusCode+    VirtualServiceStatusCode (..),++    -- * AccessLog+    AccessLog (..),+    newAccessLog,+    accessLog_file,++    -- * AwsCloudMapInstanceAttribute+    AwsCloudMapInstanceAttribute (..),+    newAwsCloudMapInstanceAttribute,+    awsCloudMapInstanceAttribute_key,+    awsCloudMapInstanceAttribute_value,++    -- * AwsCloudMapServiceDiscovery+    AwsCloudMapServiceDiscovery (..),+    newAwsCloudMapServiceDiscovery,+    awsCloudMapServiceDiscovery_attributes,+    awsCloudMapServiceDiscovery_ipPreference,+    awsCloudMapServiceDiscovery_namespaceName,+    awsCloudMapServiceDiscovery_serviceName,++    -- * Backend+    Backend (..),+    newBackend,+    backend_virtualService,++    -- * BackendDefaults+    BackendDefaults (..),+    newBackendDefaults,+    backendDefaults_clientPolicy,++    -- * ClientPolicy+    ClientPolicy (..),+    newClientPolicy,+    clientPolicy_tls,++    -- * ClientPolicyTls+    ClientPolicyTls (..),+    newClientPolicyTls,+    clientPolicyTls_certificate,+    clientPolicyTls_enforce,+    clientPolicyTls_ports,+    clientPolicyTls_validation,++    -- * ClientTlsCertificate+    ClientTlsCertificate (..),+    newClientTlsCertificate,+    clientTlsCertificate_file,+    clientTlsCertificate_sds,++    -- * DnsServiceDiscovery+    DnsServiceDiscovery (..),+    newDnsServiceDiscovery,+    dnsServiceDiscovery_ipPreference,+    dnsServiceDiscovery_responseType,+    dnsServiceDiscovery_hostname,++    -- * Duration+    Duration (..),+    newDuration,+    duration_unit,+    duration_value,++    -- * EgressFilter+    EgressFilter (..),+    newEgressFilter,+    egressFilter_type,++    -- * FileAccessLog+    FileAccessLog (..),+    newFileAccessLog,+    fileAccessLog_format,+    fileAccessLog_path,++    -- * GatewayRouteData+    GatewayRouteData (..),+    newGatewayRouteData,+    gatewayRouteData_gatewayRouteName,+    gatewayRouteData_meshName,+    gatewayRouteData_metadata,+    gatewayRouteData_spec,+    gatewayRouteData_status,+    gatewayRouteData_virtualGatewayName,++    -- * GatewayRouteHostnameMatch+    GatewayRouteHostnameMatch (..),+    newGatewayRouteHostnameMatch,+    gatewayRouteHostnameMatch_exact,+    gatewayRouteHostnameMatch_suffix,++    -- * GatewayRouteHostnameRewrite+    GatewayRouteHostnameRewrite (..),+    newGatewayRouteHostnameRewrite,+    gatewayRouteHostnameRewrite_defaultTargetHostname,++    -- * GatewayRouteRef+    GatewayRouteRef (..),+    newGatewayRouteRef,+    gatewayRouteRef_arn,+    gatewayRouteRef_createdAt,+    gatewayRouteRef_gatewayRouteName,+    gatewayRouteRef_lastUpdatedAt,+    gatewayRouteRef_meshName,+    gatewayRouteRef_meshOwner,+    gatewayRouteRef_resourceOwner,+    gatewayRouteRef_version,+    gatewayRouteRef_virtualGatewayName,++    -- * GatewayRouteSpec+    GatewayRouteSpec (..),+    newGatewayRouteSpec,+    gatewayRouteSpec_grpcRoute,+    gatewayRouteSpec_http2Route,+    gatewayRouteSpec_httpRoute,+    gatewayRouteSpec_priority,++    -- * GatewayRouteStatus+    GatewayRouteStatus (..),+    newGatewayRouteStatus,+    gatewayRouteStatus_status,++    -- * GatewayRouteTarget+    GatewayRouteTarget (..),+    newGatewayRouteTarget,+    gatewayRouteTarget_port,+    gatewayRouteTarget_virtualService,++    -- * GatewayRouteVirtualService+    GatewayRouteVirtualService (..),+    newGatewayRouteVirtualService,+    gatewayRouteVirtualService_virtualServiceName,++    -- * GrpcGatewayRoute+    GrpcGatewayRoute (..),+    newGrpcGatewayRoute,+    grpcGatewayRoute_action,+    grpcGatewayRoute_match,++    -- * GrpcGatewayRouteAction+    GrpcGatewayRouteAction (..),+    newGrpcGatewayRouteAction,+    grpcGatewayRouteAction_rewrite,+    grpcGatewayRouteAction_target,++    -- * GrpcGatewayRouteMatch+    GrpcGatewayRouteMatch (..),+    newGrpcGatewayRouteMatch,+    grpcGatewayRouteMatch_hostname,+    grpcGatewayRouteMatch_metadata,+    grpcGatewayRouteMatch_port,+    grpcGatewayRouteMatch_serviceName,++    -- * GrpcGatewayRouteMetadata+    GrpcGatewayRouteMetadata (..),+    newGrpcGatewayRouteMetadata,+    grpcGatewayRouteMetadata_invert,+    grpcGatewayRouteMetadata_match,+    grpcGatewayRouteMetadata_name,++    -- * GrpcGatewayRouteRewrite+    GrpcGatewayRouteRewrite (..),+    newGrpcGatewayRouteRewrite,+    grpcGatewayRouteRewrite_hostname,++    -- * GrpcMetadataMatchMethod+    GrpcMetadataMatchMethod (..),+    newGrpcMetadataMatchMethod,+    grpcMetadataMatchMethod_exact,+    grpcMetadataMatchMethod_prefix,+    grpcMetadataMatchMethod_range,+    grpcMetadataMatchMethod_regex,+    grpcMetadataMatchMethod_suffix,++    -- * GrpcRetryPolicy+    GrpcRetryPolicy (..),+    newGrpcRetryPolicy,+    grpcRetryPolicy_grpcRetryEvents,+    grpcRetryPolicy_httpRetryEvents,+    grpcRetryPolicy_tcpRetryEvents,+    grpcRetryPolicy_maxRetries,+    grpcRetryPolicy_perRetryTimeout,++    -- * GrpcRoute+    GrpcRoute (..),+    newGrpcRoute,+    grpcRoute_retryPolicy,+    grpcRoute_timeout,+    grpcRoute_action,+    grpcRoute_match,++    -- * GrpcRouteAction+    GrpcRouteAction (..),+    newGrpcRouteAction,+    grpcRouteAction_weightedTargets,++    -- * GrpcRouteMatch+    GrpcRouteMatch (..),+    newGrpcRouteMatch,+    grpcRouteMatch_metadata,+    grpcRouteMatch_methodName,+    grpcRouteMatch_port,+    grpcRouteMatch_serviceName,++    -- * GrpcRouteMetadata+    GrpcRouteMetadata (..),+    newGrpcRouteMetadata,+    grpcRouteMetadata_invert,+    grpcRouteMetadata_match,+    grpcRouteMetadata_name,++    -- * GrpcRouteMetadataMatchMethod+    GrpcRouteMetadataMatchMethod (..),+    newGrpcRouteMetadataMatchMethod,+    grpcRouteMetadataMatchMethod_exact,+    grpcRouteMetadataMatchMethod_prefix,+    grpcRouteMetadataMatchMethod_range,+    grpcRouteMetadataMatchMethod_regex,+    grpcRouteMetadataMatchMethod_suffix,++    -- * GrpcTimeout+    GrpcTimeout (..),+    newGrpcTimeout,+    grpcTimeout_idle,+    grpcTimeout_perRequest,++    -- * HeaderMatchMethod+    HeaderMatchMethod (..),+    newHeaderMatchMethod,+    headerMatchMethod_exact,+    headerMatchMethod_prefix,+    headerMatchMethod_range,+    headerMatchMethod_regex,+    headerMatchMethod_suffix,++    -- * HealthCheckPolicy+    HealthCheckPolicy (..),+    newHealthCheckPolicy,+    healthCheckPolicy_path,+    healthCheckPolicy_port,+    healthCheckPolicy_healthyThreshold,+    healthCheckPolicy_intervalMillis,+    healthCheckPolicy_protocol,+    healthCheckPolicy_timeoutMillis,+    healthCheckPolicy_unhealthyThreshold,++    -- * HttpGatewayRoute+    HttpGatewayRoute (..),+    newHttpGatewayRoute,+    httpGatewayRoute_action,+    httpGatewayRoute_match,++    -- * HttpGatewayRouteAction+    HttpGatewayRouteAction (..),+    newHttpGatewayRouteAction,+    httpGatewayRouteAction_rewrite,+    httpGatewayRouteAction_target,++    -- * HttpGatewayRouteHeader+    HttpGatewayRouteHeader (..),+    newHttpGatewayRouteHeader,+    httpGatewayRouteHeader_invert,+    httpGatewayRouteHeader_match,+    httpGatewayRouteHeader_name,++    -- * HttpGatewayRouteMatch+    HttpGatewayRouteMatch (..),+    newHttpGatewayRouteMatch,+    httpGatewayRouteMatch_headers,+    httpGatewayRouteMatch_hostname,+    httpGatewayRouteMatch_method,+    httpGatewayRouteMatch_path,+    httpGatewayRouteMatch_port,+    httpGatewayRouteMatch_prefix,+    httpGatewayRouteMatch_queryParameters,++    -- * HttpGatewayRoutePathRewrite+    HttpGatewayRoutePathRewrite (..),+    newHttpGatewayRoutePathRewrite,+    httpGatewayRoutePathRewrite_exact,++    -- * HttpGatewayRoutePrefixRewrite+    HttpGatewayRoutePrefixRewrite (..),+    newHttpGatewayRoutePrefixRewrite,+    httpGatewayRoutePrefixRewrite_defaultPrefix,+    httpGatewayRoutePrefixRewrite_value,++    -- * HttpGatewayRouteRewrite+    HttpGatewayRouteRewrite (..),+    newHttpGatewayRouteRewrite,+    httpGatewayRouteRewrite_hostname,+    httpGatewayRouteRewrite_path,+    httpGatewayRouteRewrite_prefix,++    -- * HttpPathMatch+    HttpPathMatch (..),+    newHttpPathMatch,+    httpPathMatch_exact,+    httpPathMatch_regex,++    -- * HttpQueryParameter+    HttpQueryParameter (..),+    newHttpQueryParameter,+    httpQueryParameter_match,+    httpQueryParameter_name,++    -- * HttpRetryPolicy+    HttpRetryPolicy (..),+    newHttpRetryPolicy,+    httpRetryPolicy_httpRetryEvents,+    httpRetryPolicy_tcpRetryEvents,+    httpRetryPolicy_maxRetries,+    httpRetryPolicy_perRetryTimeout,++    -- * HttpRoute+    HttpRoute (..),+    newHttpRoute,+    httpRoute_retryPolicy,+    httpRoute_timeout,+    httpRoute_action,+    httpRoute_match,++    -- * HttpRouteAction+    HttpRouteAction (..),+    newHttpRouteAction,+    httpRouteAction_weightedTargets,++    -- * HttpRouteHeader+    HttpRouteHeader (..),+    newHttpRouteHeader,+    httpRouteHeader_invert,+    httpRouteHeader_match,+    httpRouteHeader_name,++    -- * HttpRouteMatch+    HttpRouteMatch (..),+    newHttpRouteMatch,+    httpRouteMatch_headers,+    httpRouteMatch_method,+    httpRouteMatch_path,+    httpRouteMatch_port,+    httpRouteMatch_prefix,+    httpRouteMatch_queryParameters,+    httpRouteMatch_scheme,++    -- * HttpTimeout+    HttpTimeout (..),+    newHttpTimeout,+    httpTimeout_idle,+    httpTimeout_perRequest,++    -- * JsonFormatRef+    JsonFormatRef (..),+    newJsonFormatRef,+    jsonFormatRef_key,+    jsonFormatRef_value,++    -- * Listener+    Listener (..),+    newListener,+    listener_connectionPool,+    listener_healthCheck,+    listener_outlierDetection,+    listener_timeout,+    listener_tls,+    listener_portMapping,++    -- * ListenerTimeout+    ListenerTimeout (..),+    newListenerTimeout,+    listenerTimeout_grpc,+    listenerTimeout_http,+    listenerTimeout_http2,+    listenerTimeout_tcp,++    -- * ListenerTls+    ListenerTls (..),+    newListenerTls,+    listenerTls_validation,+    listenerTls_certificate,+    listenerTls_mode,++    -- * ListenerTlsAcmCertificate+    ListenerTlsAcmCertificate (..),+    newListenerTlsAcmCertificate,+    listenerTlsAcmCertificate_certificateArn,++    -- * ListenerTlsCertificate+    ListenerTlsCertificate (..),+    newListenerTlsCertificate,+    listenerTlsCertificate_acm,+    listenerTlsCertificate_file,+    listenerTlsCertificate_sds,++    -- * ListenerTlsFileCertificate+    ListenerTlsFileCertificate (..),+    newListenerTlsFileCertificate,+    listenerTlsFileCertificate_certificateChain,+    listenerTlsFileCertificate_privateKey,++    -- * ListenerTlsSdsCertificate+    ListenerTlsSdsCertificate (..),+    newListenerTlsSdsCertificate,+    listenerTlsSdsCertificate_secretName,++    -- * ListenerTlsValidationContext+    ListenerTlsValidationContext (..),+    newListenerTlsValidationContext,+    listenerTlsValidationContext_subjectAlternativeNames,+    listenerTlsValidationContext_trust,++    -- * ListenerTlsValidationContextTrust+    ListenerTlsValidationContextTrust (..),+    newListenerTlsValidationContextTrust,+    listenerTlsValidationContextTrust_file,+    listenerTlsValidationContextTrust_sds,++    -- * Logging+    Logging (..),+    newLogging,+    logging_accessLog,++    -- * LoggingFormat+    LoggingFormat (..),+    newLoggingFormat,+    loggingFormat_json,+    loggingFormat_text,++    -- * MatchRange+    MatchRange (..),+    newMatchRange,+    matchRange_end,+    matchRange_start,++    -- * MeshData+    MeshData (..),+    newMeshData,+    meshData_meshName,+    meshData_metadata,+    meshData_spec,+    meshData_status,++    -- * MeshRef+    MeshRef (..),+    newMeshRef,+    meshRef_arn,+    meshRef_createdAt,+    meshRef_lastUpdatedAt,+    meshRef_meshName,+    meshRef_meshOwner,+    meshRef_resourceOwner,+    meshRef_version,++    -- * MeshServiceDiscovery+    MeshServiceDiscovery (..),+    newMeshServiceDiscovery,+    meshServiceDiscovery_ipPreference,++    -- * MeshSpec+    MeshSpec (..),+    newMeshSpec,+    meshSpec_egressFilter,+    meshSpec_serviceDiscovery,++    -- * MeshStatus+    MeshStatus (..),+    newMeshStatus,+    meshStatus_status,++    -- * OutlierDetection+    OutlierDetection (..),+    newOutlierDetection,+    outlierDetection_baseEjectionDuration,+    outlierDetection_interval,+    outlierDetection_maxEjectionPercent,+    outlierDetection_maxServerErrors,++    -- * PortMapping+    PortMapping (..),+    newPortMapping,+    portMapping_port,+    portMapping_protocol,++    -- * QueryParameterMatch+    QueryParameterMatch (..),+    newQueryParameterMatch,+    queryParameterMatch_exact,++    -- * ResourceMetadata+    ResourceMetadata (..),+    newResourceMetadata,+    resourceMetadata_arn,+    resourceMetadata_createdAt,+    resourceMetadata_lastUpdatedAt,+    resourceMetadata_meshOwner,+    resourceMetadata_resourceOwner,+    resourceMetadata_uid,+    resourceMetadata_version,++    -- * RouteData+    RouteData (..),+    newRouteData,+    routeData_meshName,+    routeData_metadata,+    routeData_routeName,+    routeData_spec,+    routeData_status,+    routeData_virtualRouterName,++    -- * RouteRef+    RouteRef (..),+    newRouteRef,+    routeRef_arn,+    routeRef_createdAt,+    routeRef_lastUpdatedAt,+    routeRef_meshName,+    routeRef_meshOwner,+    routeRef_resourceOwner,+    routeRef_routeName,+    routeRef_version,+    routeRef_virtualRouterName,++    -- * RouteSpec+    RouteSpec (..),+    newRouteSpec,+    routeSpec_grpcRoute,+    routeSpec_http2Route,+    routeSpec_httpRoute,+    routeSpec_priority,+    routeSpec_tcpRoute,++    -- * RouteStatus+    RouteStatus (..),+    newRouteStatus,+    routeStatus_status,++    -- * ServiceDiscovery+    ServiceDiscovery (..),+    newServiceDiscovery,+    serviceDiscovery_awsCloudMap,+    serviceDiscovery_dns,++    -- * SubjectAlternativeNameMatchers+    SubjectAlternativeNameMatchers (..),+    newSubjectAlternativeNameMatchers,+    subjectAlternativeNameMatchers_exact,++    -- * SubjectAlternativeNames+    SubjectAlternativeNames (..),+    newSubjectAlternativeNames,+    subjectAlternativeNames_match,++    -- * TagRef+    TagRef (..),+    newTagRef,+    tagRef_key,+    tagRef_value,++    -- * TcpRoute+    TcpRoute (..),+    newTcpRoute,+    tcpRoute_match,+    tcpRoute_timeout,+    tcpRoute_action,++    -- * TcpRouteAction+    TcpRouteAction (..),+    newTcpRouteAction,+    tcpRouteAction_weightedTargets,++    -- * TcpRouteMatch+    TcpRouteMatch (..),+    newTcpRouteMatch,+    tcpRouteMatch_port,++    -- * TcpTimeout+    TcpTimeout (..),+    newTcpTimeout,+    tcpTimeout_idle,++    -- * TlsValidationContext+    TlsValidationContext (..),+    newTlsValidationContext,+    tlsValidationContext_subjectAlternativeNames,+    tlsValidationContext_trust,++    -- * TlsValidationContextAcmTrust+    TlsValidationContextAcmTrust (..),+    newTlsValidationContextAcmTrust,+    tlsValidationContextAcmTrust_certificateAuthorityArns,++    -- * TlsValidationContextFileTrust+    TlsValidationContextFileTrust (..),+    newTlsValidationContextFileTrust,+    tlsValidationContextFileTrust_certificateChain,++    -- * TlsValidationContextSdsTrust+    TlsValidationContextSdsTrust (..),+    newTlsValidationContextSdsTrust,+    tlsValidationContextSdsTrust_secretName,++    -- * TlsValidationContextTrust+    TlsValidationContextTrust (..),+    newTlsValidationContextTrust,+    tlsValidationContextTrust_acm,+    tlsValidationContextTrust_file,+    tlsValidationContextTrust_sds,++    -- * VirtualGatewayAccessLog+    VirtualGatewayAccessLog (..),+    newVirtualGatewayAccessLog,+    virtualGatewayAccessLog_file,++    -- * VirtualGatewayBackendDefaults+    VirtualGatewayBackendDefaults (..),+    newVirtualGatewayBackendDefaults,+    virtualGatewayBackendDefaults_clientPolicy,++    -- * VirtualGatewayClientPolicy+    VirtualGatewayClientPolicy (..),+    newVirtualGatewayClientPolicy,+    virtualGatewayClientPolicy_tls,++    -- * VirtualGatewayClientPolicyTls+    VirtualGatewayClientPolicyTls (..),+    newVirtualGatewayClientPolicyTls,+    virtualGatewayClientPolicyTls_certificate,+    virtualGatewayClientPolicyTls_enforce,+    virtualGatewayClientPolicyTls_ports,+    virtualGatewayClientPolicyTls_validation,++    -- * VirtualGatewayClientTlsCertificate+    VirtualGatewayClientTlsCertificate (..),+    newVirtualGatewayClientTlsCertificate,+    virtualGatewayClientTlsCertificate_file,+    virtualGatewayClientTlsCertificate_sds,++    -- * VirtualGatewayConnectionPool+    VirtualGatewayConnectionPool (..),+    newVirtualGatewayConnectionPool,+    virtualGatewayConnectionPool_grpc,+    virtualGatewayConnectionPool_http,+    virtualGatewayConnectionPool_http2,++    -- * VirtualGatewayData+    VirtualGatewayData (..),+    newVirtualGatewayData,+    virtualGatewayData_meshName,+    virtualGatewayData_metadata,+    virtualGatewayData_spec,+    virtualGatewayData_status,+    virtualGatewayData_virtualGatewayName,++    -- * VirtualGatewayFileAccessLog+    VirtualGatewayFileAccessLog (..),+    newVirtualGatewayFileAccessLog,+    virtualGatewayFileAccessLog_format,+    virtualGatewayFileAccessLog_path,++    -- * VirtualGatewayGrpcConnectionPool+    VirtualGatewayGrpcConnectionPool (..),+    newVirtualGatewayGrpcConnectionPool,+    virtualGatewayGrpcConnectionPool_maxRequests,++    -- * VirtualGatewayHealthCheckPolicy+    VirtualGatewayHealthCheckPolicy (..),+    newVirtualGatewayHealthCheckPolicy,+    virtualGatewayHealthCheckPolicy_path,+    virtualGatewayHealthCheckPolicy_port,+    virtualGatewayHealthCheckPolicy_healthyThreshold,+    virtualGatewayHealthCheckPolicy_intervalMillis,+    virtualGatewayHealthCheckPolicy_protocol,+    virtualGatewayHealthCheckPolicy_timeoutMillis,+    virtualGatewayHealthCheckPolicy_unhealthyThreshold,++    -- * VirtualGatewayHttp2ConnectionPool+    VirtualGatewayHttp2ConnectionPool (..),+    newVirtualGatewayHttp2ConnectionPool,+    virtualGatewayHttp2ConnectionPool_maxRequests,++    -- * VirtualGatewayHttpConnectionPool+    VirtualGatewayHttpConnectionPool (..),+    newVirtualGatewayHttpConnectionPool,+    virtualGatewayHttpConnectionPool_maxPendingRequests,+    virtualGatewayHttpConnectionPool_maxConnections,++    -- * VirtualGatewayListener+    VirtualGatewayListener (..),+    newVirtualGatewayListener,+    virtualGatewayListener_connectionPool,+    virtualGatewayListener_healthCheck,+    virtualGatewayListener_tls,+    virtualGatewayListener_portMapping,++    -- * VirtualGatewayListenerTls+    VirtualGatewayListenerTls (..),+    newVirtualGatewayListenerTls,+    virtualGatewayListenerTls_validation,+    virtualGatewayListenerTls_certificate,+    virtualGatewayListenerTls_mode,++    -- * VirtualGatewayListenerTlsAcmCertificate+    VirtualGatewayListenerTlsAcmCertificate (..),+    newVirtualGatewayListenerTlsAcmCertificate,+    virtualGatewayListenerTlsAcmCertificate_certificateArn,++    -- * VirtualGatewayListenerTlsCertificate+    VirtualGatewayListenerTlsCertificate (..),+    newVirtualGatewayListenerTlsCertificate,+    virtualGatewayListenerTlsCertificate_acm,+    virtualGatewayListenerTlsCertificate_file,+    virtualGatewayListenerTlsCertificate_sds,++    -- * VirtualGatewayListenerTlsFileCertificate+    VirtualGatewayListenerTlsFileCertificate (..),+    newVirtualGatewayListenerTlsFileCertificate,+    virtualGatewayListenerTlsFileCertificate_certificateChain,+    virtualGatewayListenerTlsFileCertificate_privateKey,++    -- * VirtualGatewayListenerTlsSdsCertificate+    VirtualGatewayListenerTlsSdsCertificate (..),+    newVirtualGatewayListenerTlsSdsCertificate,+    virtualGatewayListenerTlsSdsCertificate_secretName,++    -- * VirtualGatewayListenerTlsValidationContext+    VirtualGatewayListenerTlsValidationContext (..),+    newVirtualGatewayListenerTlsValidationContext,+    virtualGatewayListenerTlsValidationContext_subjectAlternativeNames,+    virtualGatewayListenerTlsValidationContext_trust,++    -- * VirtualGatewayListenerTlsValidationContextTrust+    VirtualGatewayListenerTlsValidationContextTrust (..),+    newVirtualGatewayListenerTlsValidationContextTrust,+    virtualGatewayListenerTlsValidationContextTrust_file,+    virtualGatewayListenerTlsValidationContextTrust_sds,++    -- * VirtualGatewayLogging+    VirtualGatewayLogging (..),+    newVirtualGatewayLogging,+    virtualGatewayLogging_accessLog,++    -- * VirtualGatewayPortMapping+    VirtualGatewayPortMapping (..),+    newVirtualGatewayPortMapping,+    virtualGatewayPortMapping_port,+    virtualGatewayPortMapping_protocol,++    -- * VirtualGatewayRef+    VirtualGatewayRef (..),+    newVirtualGatewayRef,+    virtualGatewayRef_arn,+    virtualGatewayRef_createdAt,+    virtualGatewayRef_lastUpdatedAt,+    virtualGatewayRef_meshName,+    virtualGatewayRef_meshOwner,+    virtualGatewayRef_resourceOwner,+    virtualGatewayRef_version,+    virtualGatewayRef_virtualGatewayName,++    -- * VirtualGatewaySpec+    VirtualGatewaySpec (..),+    newVirtualGatewaySpec,+    virtualGatewaySpec_backendDefaults,+    virtualGatewaySpec_logging,+    virtualGatewaySpec_listeners,++    -- * VirtualGatewayStatus+    VirtualGatewayStatus (..),+    newVirtualGatewayStatus,+    virtualGatewayStatus_status,++    -- * VirtualGatewayTlsValidationContext+    VirtualGatewayTlsValidationContext (..),+    newVirtualGatewayTlsValidationContext,+    virtualGatewayTlsValidationContext_subjectAlternativeNames,+    virtualGatewayTlsValidationContext_trust,++    -- * VirtualGatewayTlsValidationContextAcmTrust+    VirtualGatewayTlsValidationContextAcmTrust (..),+    newVirtualGatewayTlsValidationContextAcmTrust,+    virtualGatewayTlsValidationContextAcmTrust_certificateAuthorityArns,++    -- * VirtualGatewayTlsValidationContextFileTrust+    VirtualGatewayTlsValidationContextFileTrust (..),+    newVirtualGatewayTlsValidationContextFileTrust,+    virtualGatewayTlsValidationContextFileTrust_certificateChain,++    -- * VirtualGatewayTlsValidationContextSdsTrust+    VirtualGatewayTlsValidationContextSdsTrust (..),+    newVirtualGatewayTlsValidationContextSdsTrust,+    virtualGatewayTlsValidationContextSdsTrust_secretName,++    -- * VirtualGatewayTlsValidationContextTrust+    VirtualGatewayTlsValidationContextTrust (..),+    newVirtualGatewayTlsValidationContextTrust,+    virtualGatewayTlsValidationContextTrust_acm,+    virtualGatewayTlsValidationContextTrust_file,+    virtualGatewayTlsValidationContextTrust_sds,++    -- * VirtualNodeConnectionPool+    VirtualNodeConnectionPool (..),+    newVirtualNodeConnectionPool,+    virtualNodeConnectionPool_grpc,+    virtualNodeConnectionPool_http,+    virtualNodeConnectionPool_http2,+    virtualNodeConnectionPool_tcp,++    -- * VirtualNodeData+    VirtualNodeData (..),+    newVirtualNodeData,+    virtualNodeData_meshName,+    virtualNodeData_metadata,+    virtualNodeData_spec,+    virtualNodeData_status,+    virtualNodeData_virtualNodeName,++    -- * VirtualNodeGrpcConnectionPool+    VirtualNodeGrpcConnectionPool (..),+    newVirtualNodeGrpcConnectionPool,+    virtualNodeGrpcConnectionPool_maxRequests,++    -- * VirtualNodeHttp2ConnectionPool+    VirtualNodeHttp2ConnectionPool (..),+    newVirtualNodeHttp2ConnectionPool,+    virtualNodeHttp2ConnectionPool_maxRequests,++    -- * VirtualNodeHttpConnectionPool+    VirtualNodeHttpConnectionPool (..),+    newVirtualNodeHttpConnectionPool,+    virtualNodeHttpConnectionPool_maxPendingRequests,+    virtualNodeHttpConnectionPool_maxConnections,++    -- * VirtualNodeRef+    VirtualNodeRef (..),+    newVirtualNodeRef,+    virtualNodeRef_arn,+    virtualNodeRef_createdAt,+    virtualNodeRef_lastUpdatedAt,+    virtualNodeRef_meshName,+    virtualNodeRef_meshOwner,+    virtualNodeRef_resourceOwner,+    virtualNodeRef_version,+    virtualNodeRef_virtualNodeName,++    -- * VirtualNodeServiceProvider+    VirtualNodeServiceProvider (..),+    newVirtualNodeServiceProvider,+    virtualNodeServiceProvider_virtualNodeName,++    -- * VirtualNodeSpec+    VirtualNodeSpec (..),+    newVirtualNodeSpec,+    virtualNodeSpec_backendDefaults,+    virtualNodeSpec_backends,+    virtualNodeSpec_listeners,+    virtualNodeSpec_logging,+    virtualNodeSpec_serviceDiscovery,++    -- * VirtualNodeStatus+    VirtualNodeStatus (..),+    newVirtualNodeStatus,+    virtualNodeStatus_status,++    -- * VirtualNodeTcpConnectionPool+    VirtualNodeTcpConnectionPool (..),+    newVirtualNodeTcpConnectionPool,+    virtualNodeTcpConnectionPool_maxConnections,++    -- * VirtualRouterData+    VirtualRouterData (..),+    newVirtualRouterData,+    virtualRouterData_meshName,+    virtualRouterData_metadata,+    virtualRouterData_spec,+    virtualRouterData_status,+    virtualRouterData_virtualRouterName,++    -- * VirtualRouterListener+    VirtualRouterListener (..),+    newVirtualRouterListener,+    virtualRouterListener_portMapping,++    -- * VirtualRouterRef+    VirtualRouterRef (..),+    newVirtualRouterRef,+    virtualRouterRef_arn,+    virtualRouterRef_createdAt,+    virtualRouterRef_lastUpdatedAt,+    virtualRouterRef_meshName,+    virtualRouterRef_meshOwner,+    virtualRouterRef_resourceOwner,+    virtualRouterRef_version,+    virtualRouterRef_virtualRouterName,++    -- * VirtualRouterServiceProvider+    VirtualRouterServiceProvider (..),+    newVirtualRouterServiceProvider,+    virtualRouterServiceProvider_virtualRouterName,++    -- * VirtualRouterSpec+    VirtualRouterSpec (..),+    newVirtualRouterSpec,+    virtualRouterSpec_listeners,++    -- * VirtualRouterStatus+    VirtualRouterStatus (..),+    newVirtualRouterStatus,+    virtualRouterStatus_status,++    -- * VirtualServiceBackend+    VirtualServiceBackend (..),+    newVirtualServiceBackend,+    virtualServiceBackend_clientPolicy,+    virtualServiceBackend_virtualServiceName,++    -- * VirtualServiceData+    VirtualServiceData (..),+    newVirtualServiceData,+    virtualServiceData_meshName,+    virtualServiceData_metadata,+    virtualServiceData_spec,+    virtualServiceData_status,+    virtualServiceData_virtualServiceName,++    -- * VirtualServiceProvider+    VirtualServiceProvider (..),+    newVirtualServiceProvider,+    virtualServiceProvider_virtualNode,+    virtualServiceProvider_virtualRouter,++    -- * VirtualServiceRef+    VirtualServiceRef (..),+    newVirtualServiceRef,+    virtualServiceRef_arn,+    virtualServiceRef_createdAt,+    virtualServiceRef_lastUpdatedAt,+    virtualServiceRef_meshName,+    virtualServiceRef_meshOwner,+    virtualServiceRef_resourceOwner,+    virtualServiceRef_version,+    virtualServiceRef_virtualServiceName,++    -- * VirtualServiceSpec+    VirtualServiceSpec (..),+    newVirtualServiceSpec,+    virtualServiceSpec_provider,++    -- * VirtualServiceStatus+    VirtualServiceStatus (..),+    newVirtualServiceStatus,+    virtualServiceStatus_status,++    -- * WeightedTarget+    WeightedTarget (..),+    newWeightedTarget,+    weightedTarget_port,+    weightedTarget_virtualNode,+    weightedTarget_weight,+  )+where++import Amazonka.AppMesh.Types.AccessLog+import Amazonka.AppMesh.Types.AwsCloudMapInstanceAttribute+import Amazonka.AppMesh.Types.AwsCloudMapServiceDiscovery+import Amazonka.AppMesh.Types.Backend+import Amazonka.AppMesh.Types.BackendDefaults+import Amazonka.AppMesh.Types.ClientPolicy+import Amazonka.AppMesh.Types.ClientPolicyTls+import Amazonka.AppMesh.Types.ClientTlsCertificate+import Amazonka.AppMesh.Types.DefaultGatewayRouteRewrite+import Amazonka.AppMesh.Types.DnsResponseType+import Amazonka.AppMesh.Types.DnsServiceDiscovery+import Amazonka.AppMesh.Types.Duration+import Amazonka.AppMesh.Types.DurationUnit+import Amazonka.AppMesh.Types.EgressFilter+import Amazonka.AppMesh.Types.EgressFilterType+import Amazonka.AppMesh.Types.FileAccessLog+import Amazonka.AppMesh.Types.GatewayRouteData+import Amazonka.AppMesh.Types.GatewayRouteHostnameMatch+import Amazonka.AppMesh.Types.GatewayRouteHostnameRewrite+import Amazonka.AppMesh.Types.GatewayRouteRef+import Amazonka.AppMesh.Types.GatewayRouteSpec+import Amazonka.AppMesh.Types.GatewayRouteStatus+import Amazonka.AppMesh.Types.GatewayRouteStatusCode+import Amazonka.AppMesh.Types.GatewayRouteTarget+import Amazonka.AppMesh.Types.GatewayRouteVirtualService+import Amazonka.AppMesh.Types.GrpcGatewayRoute+import Amazonka.AppMesh.Types.GrpcGatewayRouteAction+import Amazonka.AppMesh.Types.GrpcGatewayRouteMatch+import Amazonka.AppMesh.Types.GrpcGatewayRouteMetadata+import Amazonka.AppMesh.Types.GrpcGatewayRouteRewrite+import Amazonka.AppMesh.Types.GrpcMetadataMatchMethod+import Amazonka.AppMesh.Types.GrpcRetryPolicy+import Amazonka.AppMesh.Types.GrpcRetryPolicyEvent+import Amazonka.AppMesh.Types.GrpcRoute+import Amazonka.AppMesh.Types.GrpcRouteAction+import Amazonka.AppMesh.Types.GrpcRouteMatch+import Amazonka.AppMesh.Types.GrpcRouteMetadata+import Amazonka.AppMesh.Types.GrpcRouteMetadataMatchMethod+import Amazonka.AppMesh.Types.GrpcTimeout+import Amazonka.AppMesh.Types.HeaderMatchMethod+import Amazonka.AppMesh.Types.HealthCheckPolicy+import Amazonka.AppMesh.Types.HttpGatewayRoute+import Amazonka.AppMesh.Types.HttpGatewayRouteAction+import Amazonka.AppMesh.Types.HttpGatewayRouteHeader+import Amazonka.AppMesh.Types.HttpGatewayRouteMatch+import Amazonka.AppMesh.Types.HttpGatewayRoutePathRewrite+import Amazonka.AppMesh.Types.HttpGatewayRoutePrefixRewrite+import Amazonka.AppMesh.Types.HttpGatewayRouteRewrite+import Amazonka.AppMesh.Types.HttpMethod+import Amazonka.AppMesh.Types.HttpPathMatch+import Amazonka.AppMesh.Types.HttpQueryParameter+import Amazonka.AppMesh.Types.HttpRetryPolicy+import Amazonka.AppMesh.Types.HttpRoute+import Amazonka.AppMesh.Types.HttpRouteAction+import Amazonka.AppMesh.Types.HttpRouteHeader+import Amazonka.AppMesh.Types.HttpRouteMatch+import Amazonka.AppMesh.Types.HttpScheme+import Amazonka.AppMesh.Types.HttpTimeout+import Amazonka.AppMesh.Types.IpPreference+import Amazonka.AppMesh.Types.JsonFormatRef+import Amazonka.AppMesh.Types.Listener+import Amazonka.AppMesh.Types.ListenerTimeout+import Amazonka.AppMesh.Types.ListenerTls+import Amazonka.AppMesh.Types.ListenerTlsAcmCertificate+import Amazonka.AppMesh.Types.ListenerTlsCertificate+import Amazonka.AppMesh.Types.ListenerTlsFileCertificate+import Amazonka.AppMesh.Types.ListenerTlsMode+import Amazonka.AppMesh.Types.ListenerTlsSdsCertificate+import Amazonka.AppMesh.Types.ListenerTlsValidationContext+import Amazonka.AppMesh.Types.ListenerTlsValidationContextTrust+import Amazonka.AppMesh.Types.Logging+import Amazonka.AppMesh.Types.LoggingFormat+import Amazonka.AppMesh.Types.MatchRange+import Amazonka.AppMesh.Types.MeshData+import Amazonka.AppMesh.Types.MeshRef+import Amazonka.AppMesh.Types.MeshServiceDiscovery+import Amazonka.AppMesh.Types.MeshSpec+import Amazonka.AppMesh.Types.MeshStatus+import Amazonka.AppMesh.Types.MeshStatusCode+import Amazonka.AppMesh.Types.OutlierDetection+import Amazonka.AppMesh.Types.PortMapping+import Amazonka.AppMesh.Types.PortProtocol+import Amazonka.AppMesh.Types.QueryParameterMatch+import Amazonka.AppMesh.Types.ResourceMetadata+import Amazonka.AppMesh.Types.RouteData+import Amazonka.AppMesh.Types.RouteRef+import Amazonka.AppMesh.Types.RouteSpec+import Amazonka.AppMesh.Types.RouteStatus+import Amazonka.AppMesh.Types.RouteStatusCode+import Amazonka.AppMesh.Types.ServiceDiscovery+import Amazonka.AppMesh.Types.SubjectAlternativeNameMatchers+import Amazonka.AppMesh.Types.SubjectAlternativeNames+import Amazonka.AppMesh.Types.TagRef+import Amazonka.AppMesh.Types.TcpRetryPolicyEvent+import Amazonka.AppMesh.Types.TcpRoute+import Amazonka.AppMesh.Types.TcpRouteAction+import Amazonka.AppMesh.Types.TcpRouteMatch+import Amazonka.AppMesh.Types.TcpTimeout+import Amazonka.AppMesh.Types.TlsValidationContext+import Amazonka.AppMesh.Types.TlsValidationContextAcmTrust+import Amazonka.AppMesh.Types.TlsValidationContextFileTrust+import Amazonka.AppMesh.Types.TlsValidationContextSdsTrust+import Amazonka.AppMesh.Types.TlsValidationContextTrust+import Amazonka.AppMesh.Types.VirtualGatewayAccessLog+import Amazonka.AppMesh.Types.VirtualGatewayBackendDefaults+import Amazonka.AppMesh.Types.VirtualGatewayClientPolicy+import Amazonka.AppMesh.Types.VirtualGatewayClientPolicyTls+import Amazonka.AppMesh.Types.VirtualGatewayClientTlsCertificate+import Amazonka.AppMesh.Types.VirtualGatewayConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayData+import Amazonka.AppMesh.Types.VirtualGatewayFileAccessLog+import Amazonka.AppMesh.Types.VirtualGatewayGrpcConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayHealthCheckPolicy+import Amazonka.AppMesh.Types.VirtualGatewayHttp2ConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayHttpConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayListener+import Amazonka.AppMesh.Types.VirtualGatewayListenerTls+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsAcmCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsFileCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsMode+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsSdsCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContext+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContextTrust+import Amazonka.AppMesh.Types.VirtualGatewayLogging+import Amazonka.AppMesh.Types.VirtualGatewayPortMapping+import Amazonka.AppMesh.Types.VirtualGatewayPortProtocol+import Amazonka.AppMesh.Types.VirtualGatewayRef+import Amazonka.AppMesh.Types.VirtualGatewaySpec+import Amazonka.AppMesh.Types.VirtualGatewayStatus+import Amazonka.AppMesh.Types.VirtualGatewayStatusCode+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContext+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextAcmTrust+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextFileTrust+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextSdsTrust+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextTrust+import Amazonka.AppMesh.Types.VirtualNodeConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeData+import Amazonka.AppMesh.Types.VirtualNodeGrpcConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeHttp2ConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeHttpConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeRef+import Amazonka.AppMesh.Types.VirtualNodeServiceProvider+import Amazonka.AppMesh.Types.VirtualNodeSpec+import Amazonka.AppMesh.Types.VirtualNodeStatus+import Amazonka.AppMesh.Types.VirtualNodeStatusCode+import Amazonka.AppMesh.Types.VirtualNodeTcpConnectionPool+import Amazonka.AppMesh.Types.VirtualRouterData+import Amazonka.AppMesh.Types.VirtualRouterListener+import Amazonka.AppMesh.Types.VirtualRouterRef+import Amazonka.AppMesh.Types.VirtualRouterServiceProvider+import Amazonka.AppMesh.Types.VirtualRouterSpec+import Amazonka.AppMesh.Types.VirtualRouterStatus+import Amazonka.AppMesh.Types.VirtualRouterStatusCode+import Amazonka.AppMesh.Types.VirtualServiceBackend+import Amazonka.AppMesh.Types.VirtualServiceData+import Amazonka.AppMesh.Types.VirtualServiceProvider+import Amazonka.AppMesh.Types.VirtualServiceRef+import Amazonka.AppMesh.Types.VirtualServiceSpec+import Amazonka.AppMesh.Types.VirtualServiceStatus+import Amazonka.AppMesh.Types.VirtualServiceStatusCode+import Amazonka.AppMesh.Types.WeightedTarget+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2019-01-25@ of the Amazon App Mesh SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "AppMesh",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "appmesh",+      Core.signingName = "appmesh",+      Core.version = "2019-01-25",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "AppMesh",+      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++-- | The request syntax was malformed. Check your request syntax and try+-- again.+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_BadRequestException =+  Core._MatchServiceError+    defaultService+    "BadRequestException"+    Prelude.. Core.hasStatus 400++-- | The request contains a client token that was used for a previous update+-- resource call with different specifications. Try the request again with+-- a new client token.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"+    Prelude.. Core.hasStatus 409++-- | You don\'t have permissions to perform this action.+_ForbiddenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ForbiddenException =+  Core._MatchServiceError+    defaultService+    "ForbiddenException"+    Prelude.. Core.hasStatus 403++-- | The request processing has failed because of an unknown error,+-- exception, or failure.+_InternalServerErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerErrorException =+  Core._MatchServiceError+    defaultService+    "InternalServerErrorException"+    Prelude.. Core.hasStatus 500++-- | You have exceeded a service limit for your account. For more+-- information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html Service Limits>+-- in the /App Mesh User Guide/.+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_LimitExceededException =+  Core._MatchServiceError+    defaultService+    "LimitExceededException"+    Prelude.. Core.hasStatus 400++-- | The specified resource doesn\'t exist. Check your request syntax and try+-- again.+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_NotFoundException =+  Core._MatchServiceError+    defaultService+    "NotFoundException"+    Prelude.. Core.hasStatus 404++-- | You can\'t delete the specified resource because it\'s in use or+-- required by another resource.+_ResourceInUseException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceInUseException =+  Core._MatchServiceError+    defaultService+    "ResourceInUseException"+    Prelude.. Core.hasStatus 409++-- | The request has failed due to a temporary failure of the service.+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceUnavailableException =+  Core._MatchServiceError+    defaultService+    "ServiceUnavailableException"+    Prelude.. Core.hasStatus 503++-- | The maximum request rate permitted by the App Mesh APIs has been+-- exceeded for your account. For best results, use an increasing or+-- variable sleep interval between requests.+_TooManyRequestsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TooManyRequestsException =+  Core._MatchServiceError+    defaultService+    "TooManyRequestsException"+    Prelude.. Core.hasStatus 429++-- | The request exceeds the maximum allowed number of tags allowed per+-- resource. The current limit is 50 user tags per resource. You must+-- reduce the number of tags in the request. None of the tags in this+-- request were applied.+_TooManyTagsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TooManyTagsException =+  Core._MatchServiceError+    defaultService+    "TooManyTagsException"+    Prelude.. Core.hasStatus 400
+ gen/Amazonka/AppMesh/Types/AccessLog.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.AppMesh.Types.AccessLog+-- 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.AppMesh.Types.AccessLog where++import Amazonka.AppMesh.Types.FileAccessLog+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the access logging information for a virtual+-- node.+--+-- /See:/ 'newAccessLog' smart constructor.+data AccessLog = AccessLog'+  { -- | The file object to send virtual node access logs to.+    file :: Prelude.Maybe FileAccessLog+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AccessLog' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'file', 'accessLog_file' - The file object to send virtual node access logs to.+newAccessLog ::+  AccessLog+newAccessLog = AccessLog' {file = Prelude.Nothing}++-- | The file object to send virtual node access logs to.+accessLog_file :: Lens.Lens' AccessLog (Prelude.Maybe FileAccessLog)+accessLog_file = Lens.lens (\AccessLog' {file} -> file) (\s@AccessLog' {} a -> s {file = a} :: AccessLog)++instance Data.FromJSON AccessLog where+  parseJSON =+    Data.withObject+      "AccessLog"+      (\x -> AccessLog' Prelude.<$> (x Data..:? "file"))++instance Prelude.Hashable AccessLog where+  hashWithSalt _salt AccessLog' {..} =+    _salt `Prelude.hashWithSalt` file++instance Prelude.NFData AccessLog where+  rnf AccessLog' {..} = Prelude.rnf file++instance Data.ToJSON AccessLog where+  toJSON AccessLog' {..} =+    Data.object+      ( Prelude.catMaybes+          [("file" Data..=) Prelude.<$> file]+      )
+ gen/Amazonka/AppMesh/Types/AwsCloudMapInstanceAttribute.hs view
@@ -0,0 +1,108 @@+{-# 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.AppMesh.Types.AwsCloudMapInstanceAttribute+-- 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.AppMesh.Types.AwsCloudMapInstanceAttribute where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the Cloud Map attribute information for your+-- virtual node.+--+-- Cloud Map is not available in the eu-south-1 Region.+--+-- /See:/ 'newAwsCloudMapInstanceAttribute' smart constructor.+data AwsCloudMapInstanceAttribute = AwsCloudMapInstanceAttribute'+  { -- | The name of an Cloud Map service instance attribute key. Any Cloud Map+    -- service instance that contains the specified key and value is returned.+    key :: Prelude.Text,+    -- | The value of an Cloud Map service instance attribute key. Any Cloud Map+    -- service instance that contains the specified key and value is returned.+    value :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AwsCloudMapInstanceAttribute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'awsCloudMapInstanceAttribute_key' - The name of an Cloud Map service instance attribute key. Any Cloud Map+-- service instance that contains the specified key and value is returned.+--+-- 'value', 'awsCloudMapInstanceAttribute_value' - The value of an Cloud Map service instance attribute key. Any Cloud Map+-- service instance that contains the specified key and value is returned.+newAwsCloudMapInstanceAttribute ::+  -- | 'key'+  Prelude.Text ->+  -- | 'value'+  Prelude.Text ->+  AwsCloudMapInstanceAttribute+newAwsCloudMapInstanceAttribute pKey_ pValue_ =+  AwsCloudMapInstanceAttribute'+    { key = pKey_,+      value = pValue_+    }++-- | The name of an Cloud Map service instance attribute key. Any Cloud Map+-- service instance that contains the specified key and value is returned.+awsCloudMapInstanceAttribute_key :: Lens.Lens' AwsCloudMapInstanceAttribute Prelude.Text+awsCloudMapInstanceAttribute_key = Lens.lens (\AwsCloudMapInstanceAttribute' {key} -> key) (\s@AwsCloudMapInstanceAttribute' {} a -> s {key = a} :: AwsCloudMapInstanceAttribute)++-- | The value of an Cloud Map service instance attribute key. Any Cloud Map+-- service instance that contains the specified key and value is returned.+awsCloudMapInstanceAttribute_value :: Lens.Lens' AwsCloudMapInstanceAttribute Prelude.Text+awsCloudMapInstanceAttribute_value = Lens.lens (\AwsCloudMapInstanceAttribute' {value} -> value) (\s@AwsCloudMapInstanceAttribute' {} a -> s {value = a} :: AwsCloudMapInstanceAttribute)++instance Data.FromJSON AwsCloudMapInstanceAttribute where+  parseJSON =+    Data.withObject+      "AwsCloudMapInstanceAttribute"+      ( \x ->+          AwsCloudMapInstanceAttribute'+            Prelude.<$> (x Data..: "key")+            Prelude.<*> (x Data..: "value")+      )++instance+  Prelude.Hashable+    AwsCloudMapInstanceAttribute+  where+  hashWithSalt _salt AwsCloudMapInstanceAttribute' {..} =+    _salt+      `Prelude.hashWithSalt` key+      `Prelude.hashWithSalt` value++instance Prelude.NFData AwsCloudMapInstanceAttribute where+  rnf AwsCloudMapInstanceAttribute' {..} =+    Prelude.rnf key `Prelude.seq` Prelude.rnf value++instance Data.ToJSON AwsCloudMapInstanceAttribute where+  toJSON AwsCloudMapInstanceAttribute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("key" Data..= key),+            Prelude.Just ("value" Data..= value)+          ]+      )
+ gen/Amazonka/AppMesh/Types/AwsCloudMapServiceDiscovery.hs view
@@ -0,0 +1,146 @@+{-# 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.AppMesh.Types.AwsCloudMapServiceDiscovery+-- 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.AppMesh.Types.AwsCloudMapServiceDiscovery where++import Amazonka.AppMesh.Types.AwsCloudMapInstanceAttribute+import Amazonka.AppMesh.Types.IpPreference+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the Cloud Map service discovery information+-- for your virtual node.+--+-- Cloud Map is not available in the eu-south-1 Region.+--+-- /See:/ 'newAwsCloudMapServiceDiscovery' smart constructor.+data AwsCloudMapServiceDiscovery = AwsCloudMapServiceDiscovery'+  { -- | A string map that contains attributes with values that you can use to+    -- filter instances by any custom attribute that you specified when you+    -- registered the instance. Only instances that match all of the specified+    -- key\/value pairs will be returned.+    attributes :: Prelude.Maybe [AwsCloudMapInstanceAttribute],+    -- | The preferred IP version that this virtual node uses. Setting the IP+    -- preference on the virtual node only overrides the IP preference set for+    -- the mesh on this specific node.+    ipPreference :: Prelude.Maybe IpPreference,+    -- | The name of the Cloud Map namespace to use.+    namespaceName :: Prelude.Text,+    -- | The name of the Cloud Map service to use.+    serviceName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AwsCloudMapServiceDiscovery' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'attributes', 'awsCloudMapServiceDiscovery_attributes' - A string map that contains attributes with values that you can use to+-- filter instances by any custom attribute that you specified when you+-- registered the instance. Only instances that match all of the specified+-- key\/value pairs will be returned.+--+-- 'ipPreference', 'awsCloudMapServiceDiscovery_ipPreference' - The preferred IP version that this virtual node uses. Setting the IP+-- preference on the virtual node only overrides the IP preference set for+-- the mesh on this specific node.+--+-- 'namespaceName', 'awsCloudMapServiceDiscovery_namespaceName' - The name of the Cloud Map namespace to use.+--+-- 'serviceName', 'awsCloudMapServiceDiscovery_serviceName' - The name of the Cloud Map service to use.+newAwsCloudMapServiceDiscovery ::+  -- | 'namespaceName'+  Prelude.Text ->+  -- | 'serviceName'+  Prelude.Text ->+  AwsCloudMapServiceDiscovery+newAwsCloudMapServiceDiscovery+  pNamespaceName_+  pServiceName_ =+    AwsCloudMapServiceDiscovery'+      { attributes =+          Prelude.Nothing,+        ipPreference = Prelude.Nothing,+        namespaceName = pNamespaceName_,+        serviceName = pServiceName_+      }++-- | A string map that contains attributes with values that you can use to+-- filter instances by any custom attribute that you specified when you+-- registered the instance. Only instances that match all of the specified+-- key\/value pairs will be returned.+awsCloudMapServiceDiscovery_attributes :: Lens.Lens' AwsCloudMapServiceDiscovery (Prelude.Maybe [AwsCloudMapInstanceAttribute])+awsCloudMapServiceDiscovery_attributes = Lens.lens (\AwsCloudMapServiceDiscovery' {attributes} -> attributes) (\s@AwsCloudMapServiceDiscovery' {} a -> s {attributes = a} :: AwsCloudMapServiceDiscovery) Prelude.. Lens.mapping Lens.coerced++-- | The preferred IP version that this virtual node uses. Setting the IP+-- preference on the virtual node only overrides the IP preference set for+-- the mesh on this specific node.+awsCloudMapServiceDiscovery_ipPreference :: Lens.Lens' AwsCloudMapServiceDiscovery (Prelude.Maybe IpPreference)+awsCloudMapServiceDiscovery_ipPreference = Lens.lens (\AwsCloudMapServiceDiscovery' {ipPreference} -> ipPreference) (\s@AwsCloudMapServiceDiscovery' {} a -> s {ipPreference = a} :: AwsCloudMapServiceDiscovery)++-- | The name of the Cloud Map namespace to use.+awsCloudMapServiceDiscovery_namespaceName :: Lens.Lens' AwsCloudMapServiceDiscovery Prelude.Text+awsCloudMapServiceDiscovery_namespaceName = Lens.lens (\AwsCloudMapServiceDiscovery' {namespaceName} -> namespaceName) (\s@AwsCloudMapServiceDiscovery' {} a -> s {namespaceName = a} :: AwsCloudMapServiceDiscovery)++-- | The name of the Cloud Map service to use.+awsCloudMapServiceDiscovery_serviceName :: Lens.Lens' AwsCloudMapServiceDiscovery Prelude.Text+awsCloudMapServiceDiscovery_serviceName = Lens.lens (\AwsCloudMapServiceDiscovery' {serviceName} -> serviceName) (\s@AwsCloudMapServiceDiscovery' {} a -> s {serviceName = a} :: AwsCloudMapServiceDiscovery)++instance Data.FromJSON AwsCloudMapServiceDiscovery where+  parseJSON =+    Data.withObject+      "AwsCloudMapServiceDiscovery"+      ( \x ->+          AwsCloudMapServiceDiscovery'+            Prelude.<$> (x Data..:? "attributes" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "ipPreference")+            Prelude.<*> (x Data..: "namespaceName")+            Prelude.<*> (x Data..: "serviceName")+      )++instance Prelude.Hashable AwsCloudMapServiceDiscovery where+  hashWithSalt _salt AwsCloudMapServiceDiscovery' {..} =+    _salt+      `Prelude.hashWithSalt` attributes+      `Prelude.hashWithSalt` ipPreference+      `Prelude.hashWithSalt` namespaceName+      `Prelude.hashWithSalt` serviceName++instance Prelude.NFData AwsCloudMapServiceDiscovery where+  rnf AwsCloudMapServiceDiscovery' {..} =+    Prelude.rnf attributes+      `Prelude.seq` Prelude.rnf ipPreference+      `Prelude.seq` Prelude.rnf namespaceName+      `Prelude.seq` Prelude.rnf serviceName++instance Data.ToJSON AwsCloudMapServiceDiscovery where+  toJSON AwsCloudMapServiceDiscovery' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("attributes" Data..=) Prelude.<$> attributes,+            ("ipPreference" Data..=) Prelude.<$> ipPreference,+            Prelude.Just ("namespaceName" Data..= namespaceName),+            Prelude.Just ("serviceName" Data..= serviceName)+          ]+      )
+ gen/Amazonka/AppMesh/Types/Backend.hs view
@@ -0,0 +1,78 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.Backend+-- 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.AppMesh.Types.Backend where++import Amazonka.AppMesh.Types.VirtualServiceBackend+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the backends that a virtual node is expected+-- to send outbound traffic to.+--+-- /See:/ 'newBackend' smart constructor.+data Backend = Backend'+  { -- | Specifies a virtual service to use as a backend.+    virtualService :: Prelude.Maybe VirtualServiceBackend+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Backend' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'virtualService', 'backend_virtualService' - Specifies a virtual service to use as a backend.+newBackend ::+  Backend+newBackend =+  Backend' {virtualService = Prelude.Nothing}++-- | Specifies a virtual service to use as a backend.+backend_virtualService :: Lens.Lens' Backend (Prelude.Maybe VirtualServiceBackend)+backend_virtualService = Lens.lens (\Backend' {virtualService} -> virtualService) (\s@Backend' {} a -> s {virtualService = a} :: Backend)++instance Data.FromJSON Backend where+  parseJSON =+    Data.withObject+      "Backend"+      ( \x ->+          Backend' Prelude.<$> (x Data..:? "virtualService")+      )++instance Prelude.Hashable Backend where+  hashWithSalt _salt Backend' {..} =+    _salt `Prelude.hashWithSalt` virtualService++instance Prelude.NFData Backend where+  rnf Backend' {..} = Prelude.rnf virtualService++instance Data.ToJSON Backend where+  toJSON Backend' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("virtualService" Data..=)+              Prelude.<$> virtualService+          ]+      )
+ gen/Amazonka/AppMesh/Types/BackendDefaults.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.BackendDefaults+-- 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.AppMesh.Types.BackendDefaults where++import Amazonka.AppMesh.Types.ClientPolicy+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the default properties for a backend.+--+-- /See:/ 'newBackendDefaults' smart constructor.+data BackendDefaults = BackendDefaults'+  { -- | A reference to an object that represents a client policy.+    clientPolicy :: Prelude.Maybe ClientPolicy+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BackendDefaults' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientPolicy', 'backendDefaults_clientPolicy' - A reference to an object that represents a client policy.+newBackendDefaults ::+  BackendDefaults+newBackendDefaults =+  BackendDefaults' {clientPolicy = Prelude.Nothing}++-- | A reference to an object that represents a client policy.+backendDefaults_clientPolicy :: Lens.Lens' BackendDefaults (Prelude.Maybe ClientPolicy)+backendDefaults_clientPolicy = Lens.lens (\BackendDefaults' {clientPolicy} -> clientPolicy) (\s@BackendDefaults' {} a -> s {clientPolicy = a} :: BackendDefaults)++instance Data.FromJSON BackendDefaults where+  parseJSON =+    Data.withObject+      "BackendDefaults"+      ( \x ->+          BackendDefaults'+            Prelude.<$> (x Data..:? "clientPolicy")+      )++instance Prelude.Hashable BackendDefaults where+  hashWithSalt _salt BackendDefaults' {..} =+    _salt `Prelude.hashWithSalt` clientPolicy++instance Prelude.NFData BackendDefaults where+  rnf BackendDefaults' {..} = Prelude.rnf clientPolicy++instance Data.ToJSON BackendDefaults where+  toJSON BackendDefaults' {..} =+    Data.object+      ( Prelude.catMaybes+          [("clientPolicy" Data..=) Prelude.<$> clientPolicy]+      )
+ gen/Amazonka/AppMesh/Types/ClientPolicy.hs view
@@ -0,0 +1,74 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.ClientPolicy+-- 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.AppMesh.Types.ClientPolicy where++import Amazonka.AppMesh.Types.ClientPolicyTls+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a client policy.+--+-- /See:/ 'newClientPolicy' smart constructor.+data ClientPolicy = ClientPolicy'+  { -- | A reference to an object that represents a Transport Layer Security+    -- (TLS) client policy.+    tls :: Prelude.Maybe ClientPolicyTls+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ClientPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tls', 'clientPolicy_tls' - A reference to an object that represents a Transport Layer Security+-- (TLS) client policy.+newClientPolicy ::+  ClientPolicy+newClientPolicy =+  ClientPolicy' {tls = Prelude.Nothing}++-- | A reference to an object that represents a Transport Layer Security+-- (TLS) client policy.+clientPolicy_tls :: Lens.Lens' ClientPolicy (Prelude.Maybe ClientPolicyTls)+clientPolicy_tls = Lens.lens (\ClientPolicy' {tls} -> tls) (\s@ClientPolicy' {} a -> s {tls = a} :: ClientPolicy)++instance Data.FromJSON ClientPolicy where+  parseJSON =+    Data.withObject+      "ClientPolicy"+      (\x -> ClientPolicy' Prelude.<$> (x Data..:? "tls"))++instance Prelude.Hashable ClientPolicy where+  hashWithSalt _salt ClientPolicy' {..} =+    _salt `Prelude.hashWithSalt` tls++instance Prelude.NFData ClientPolicy where+  rnf ClientPolicy' {..} = Prelude.rnf tls++instance Data.ToJSON ClientPolicy where+  toJSON ClientPolicy' {..} =+    Data.object+      (Prelude.catMaybes [("tls" Data..=) Prelude.<$> tls])
+ gen/Amazonka/AppMesh/Types/ClientPolicyTls.hs view
@@ -0,0 +1,127 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.ClientPolicyTls+-- 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.AppMesh.Types.ClientPolicyTls where++import Amazonka.AppMesh.Types.ClientTlsCertificate+import Amazonka.AppMesh.Types.TlsValidationContext+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 reference to an object that represents a Transport Layer Security+-- (TLS) client policy.+--+-- /See:/ 'newClientPolicyTls' smart constructor.+data ClientPolicyTls = ClientPolicyTls'+  { -- | A reference to an object that represents a client\'s TLS certificate.+    certificate :: Prelude.Maybe ClientTlsCertificate,+    -- | Whether the policy is enforced. The default is @True@, if a value isn\'t+    -- specified.+    enforce :: Prelude.Maybe Prelude.Bool,+    -- | One or more ports that the policy is enforced for.+    ports :: Prelude.Maybe [Prelude.Natural],+    -- | A reference to an object that represents a TLS validation context.+    validation :: TlsValidationContext+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ClientPolicyTls' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'certificate', 'clientPolicyTls_certificate' - A reference to an object that represents a client\'s TLS certificate.+--+-- 'enforce', 'clientPolicyTls_enforce' - Whether the policy is enforced. The default is @True@, if a value isn\'t+-- specified.+--+-- 'ports', 'clientPolicyTls_ports' - One or more ports that the policy is enforced for.+--+-- 'validation', 'clientPolicyTls_validation' - A reference to an object that represents a TLS validation context.+newClientPolicyTls ::+  -- | 'validation'+  TlsValidationContext ->+  ClientPolicyTls+newClientPolicyTls pValidation_ =+  ClientPolicyTls'+    { certificate = Prelude.Nothing,+      enforce = Prelude.Nothing,+      ports = Prelude.Nothing,+      validation = pValidation_+    }++-- | A reference to an object that represents a client\'s TLS certificate.+clientPolicyTls_certificate :: Lens.Lens' ClientPolicyTls (Prelude.Maybe ClientTlsCertificate)+clientPolicyTls_certificate = Lens.lens (\ClientPolicyTls' {certificate} -> certificate) (\s@ClientPolicyTls' {} a -> s {certificate = a} :: ClientPolicyTls)++-- | Whether the policy is enforced. The default is @True@, if a value isn\'t+-- specified.+clientPolicyTls_enforce :: Lens.Lens' ClientPolicyTls (Prelude.Maybe Prelude.Bool)+clientPolicyTls_enforce = Lens.lens (\ClientPolicyTls' {enforce} -> enforce) (\s@ClientPolicyTls' {} a -> s {enforce = a} :: ClientPolicyTls)++-- | One or more ports that the policy is enforced for.+clientPolicyTls_ports :: Lens.Lens' ClientPolicyTls (Prelude.Maybe [Prelude.Natural])+clientPolicyTls_ports = Lens.lens (\ClientPolicyTls' {ports} -> ports) (\s@ClientPolicyTls' {} a -> s {ports = a} :: ClientPolicyTls) Prelude.. Lens.mapping Lens.coerced++-- | A reference to an object that represents a TLS validation context.+clientPolicyTls_validation :: Lens.Lens' ClientPolicyTls TlsValidationContext+clientPolicyTls_validation = Lens.lens (\ClientPolicyTls' {validation} -> validation) (\s@ClientPolicyTls' {} a -> s {validation = a} :: ClientPolicyTls)++instance Data.FromJSON ClientPolicyTls where+  parseJSON =+    Data.withObject+      "ClientPolicyTls"+      ( \x ->+          ClientPolicyTls'+            Prelude.<$> (x Data..:? "certificate")+            Prelude.<*> (x Data..:? "enforce")+            Prelude.<*> (x Data..:? "ports" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "validation")+      )++instance Prelude.Hashable ClientPolicyTls where+  hashWithSalt _salt ClientPolicyTls' {..} =+    _salt+      `Prelude.hashWithSalt` certificate+      `Prelude.hashWithSalt` enforce+      `Prelude.hashWithSalt` ports+      `Prelude.hashWithSalt` validation++instance Prelude.NFData ClientPolicyTls where+  rnf ClientPolicyTls' {..} =+    Prelude.rnf certificate+      `Prelude.seq` Prelude.rnf enforce+      `Prelude.seq` Prelude.rnf ports+      `Prelude.seq` Prelude.rnf validation++instance Data.ToJSON ClientPolicyTls where+  toJSON ClientPolicyTls' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("certificate" Data..=) Prelude.<$> certificate,+            ("enforce" Data..=) Prelude.<$> enforce,+            ("ports" Data..=) Prelude.<$> ports,+            Prelude.Just ("validation" Data..= validation)+          ]+      )
+ gen/Amazonka/AppMesh/Types/ClientTlsCertificate.hs view
@@ -0,0 +1,106 @@+{-# 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.AppMesh.Types.ClientTlsCertificate+-- 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.AppMesh.Types.ClientTlsCertificate where++import Amazonka.AppMesh.Types.ListenerTlsFileCertificate+import Amazonka.AppMesh.Types.ListenerTlsSdsCertificate+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the client\'s certificate.+--+-- /See:/ 'newClientTlsCertificate' smart constructor.+data ClientTlsCertificate = ClientTlsCertificate'+  { -- | An object that represents a local file certificate. The certificate must+    -- meet specific requirements and you must have proxy authorization+    -- enabled. For more information, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html Transport Layer Security (TLS)>.+    file :: Prelude.Maybe ListenerTlsFileCertificate,+    -- | A reference to an object that represents a client\'s TLS Secret+    -- Discovery Service certificate.+    sds :: Prelude.Maybe ListenerTlsSdsCertificate+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ClientTlsCertificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'file', 'clientTlsCertificate_file' - An object that represents a local file certificate. The certificate must+-- meet specific requirements and you must have proxy authorization+-- enabled. For more information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html Transport Layer Security (TLS)>.+--+-- 'sds', 'clientTlsCertificate_sds' - A reference to an object that represents a client\'s TLS Secret+-- Discovery Service certificate.+newClientTlsCertificate ::+  ClientTlsCertificate+newClientTlsCertificate =+  ClientTlsCertificate'+    { file = Prelude.Nothing,+      sds = Prelude.Nothing+    }++-- | An object that represents a local file certificate. The certificate must+-- meet specific requirements and you must have proxy authorization+-- enabled. For more information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html Transport Layer Security (TLS)>.+clientTlsCertificate_file :: Lens.Lens' ClientTlsCertificate (Prelude.Maybe ListenerTlsFileCertificate)+clientTlsCertificate_file = Lens.lens (\ClientTlsCertificate' {file} -> file) (\s@ClientTlsCertificate' {} a -> s {file = a} :: ClientTlsCertificate)++-- | A reference to an object that represents a client\'s TLS Secret+-- Discovery Service certificate.+clientTlsCertificate_sds :: Lens.Lens' ClientTlsCertificate (Prelude.Maybe ListenerTlsSdsCertificate)+clientTlsCertificate_sds = Lens.lens (\ClientTlsCertificate' {sds} -> sds) (\s@ClientTlsCertificate' {} a -> s {sds = a} :: ClientTlsCertificate)++instance Data.FromJSON ClientTlsCertificate where+  parseJSON =+    Data.withObject+      "ClientTlsCertificate"+      ( \x ->+          ClientTlsCertificate'+            Prelude.<$> (x Data..:? "file")+            Prelude.<*> (x Data..:? "sds")+      )++instance Prelude.Hashable ClientTlsCertificate where+  hashWithSalt _salt ClientTlsCertificate' {..} =+    _salt+      `Prelude.hashWithSalt` file+      `Prelude.hashWithSalt` sds++instance Prelude.NFData ClientTlsCertificate where+  rnf ClientTlsCertificate' {..} =+    Prelude.rnf file `Prelude.seq` Prelude.rnf sds++instance Data.ToJSON ClientTlsCertificate where+  toJSON ClientTlsCertificate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("file" Data..=) Prelude.<$> file,+            ("sds" Data..=) Prelude.<$> sds+          ]+      )
+ gen/Amazonka/AppMesh/Types/DefaultGatewayRouteRewrite.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.AppMesh.Types.DefaultGatewayRouteRewrite+-- 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.AppMesh.Types.DefaultGatewayRouteRewrite+  ( DefaultGatewayRouteRewrite+      ( ..,+        DefaultGatewayRouteRewrite_DISABLED,+        DefaultGatewayRouteRewrite_ENABLED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DefaultGatewayRouteRewrite = DefaultGatewayRouteRewrite'+  { fromDefaultGatewayRouteRewrite ::+      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 DefaultGatewayRouteRewrite_DISABLED :: DefaultGatewayRouteRewrite+pattern DefaultGatewayRouteRewrite_DISABLED = DefaultGatewayRouteRewrite' "DISABLED"++pattern DefaultGatewayRouteRewrite_ENABLED :: DefaultGatewayRouteRewrite+pattern DefaultGatewayRouteRewrite_ENABLED = DefaultGatewayRouteRewrite' "ENABLED"++{-# COMPLETE+  DefaultGatewayRouteRewrite_DISABLED,+  DefaultGatewayRouteRewrite_ENABLED,+  DefaultGatewayRouteRewrite'+  #-}
+ gen/Amazonka/AppMesh/Types/DnsResponseType.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.AppMesh.Types.DnsResponseType+-- 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.AppMesh.Types.DnsResponseType+  ( DnsResponseType+      ( ..,+        DnsResponseType_ENDPOINTS,+        DnsResponseType_LOADBALANCER+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DnsResponseType = DnsResponseType'+  { fromDnsResponseType ::+      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 DnsResponseType_ENDPOINTS :: DnsResponseType+pattern DnsResponseType_ENDPOINTS = DnsResponseType' "ENDPOINTS"++pattern DnsResponseType_LOADBALANCER :: DnsResponseType+pattern DnsResponseType_LOADBALANCER = DnsResponseType' "LOADBALANCER"++{-# COMPLETE+  DnsResponseType_ENDPOINTS,+  DnsResponseType_LOADBALANCER,+  DnsResponseType'+  #-}
+ gen/Amazonka/AppMesh/Types/DnsServiceDiscovery.hs view
@@ -0,0 +1,118 @@+{-# 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.AppMesh.Types.DnsServiceDiscovery+-- 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.AppMesh.Types.DnsServiceDiscovery where++import Amazonka.AppMesh.Types.DnsResponseType+import Amazonka.AppMesh.Types.IpPreference+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the DNS service discovery information for your+-- virtual node.+--+-- /See:/ 'newDnsServiceDiscovery' smart constructor.+data DnsServiceDiscovery = DnsServiceDiscovery'+  { -- | The preferred IP version that this virtual node uses. Setting the IP+    -- preference on the virtual node only overrides the IP preference set for+    -- the mesh on this specific node.+    ipPreference :: Prelude.Maybe IpPreference,+    -- | Specifies the DNS response type for the virtual node.+    responseType :: Prelude.Maybe DnsResponseType,+    -- | Specifies the DNS service discovery hostname for the virtual node.+    hostname :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DnsServiceDiscovery' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'ipPreference', 'dnsServiceDiscovery_ipPreference' - The preferred IP version that this virtual node uses. Setting the IP+-- preference on the virtual node only overrides the IP preference set for+-- the mesh on this specific node.+--+-- 'responseType', 'dnsServiceDiscovery_responseType' - Specifies the DNS response type for the virtual node.+--+-- 'hostname', 'dnsServiceDiscovery_hostname' - Specifies the DNS service discovery hostname for the virtual node.+newDnsServiceDiscovery ::+  -- | 'hostname'+  Prelude.Text ->+  DnsServiceDiscovery+newDnsServiceDiscovery pHostname_ =+  DnsServiceDiscovery'+    { ipPreference =+        Prelude.Nothing,+      responseType = Prelude.Nothing,+      hostname = pHostname_+    }++-- | The preferred IP version that this virtual node uses. Setting the IP+-- preference on the virtual node only overrides the IP preference set for+-- the mesh on this specific node.+dnsServiceDiscovery_ipPreference :: Lens.Lens' DnsServiceDiscovery (Prelude.Maybe IpPreference)+dnsServiceDiscovery_ipPreference = Lens.lens (\DnsServiceDiscovery' {ipPreference} -> ipPreference) (\s@DnsServiceDiscovery' {} a -> s {ipPreference = a} :: DnsServiceDiscovery)++-- | Specifies the DNS response type for the virtual node.+dnsServiceDiscovery_responseType :: Lens.Lens' DnsServiceDiscovery (Prelude.Maybe DnsResponseType)+dnsServiceDiscovery_responseType = Lens.lens (\DnsServiceDiscovery' {responseType} -> responseType) (\s@DnsServiceDiscovery' {} a -> s {responseType = a} :: DnsServiceDiscovery)++-- | Specifies the DNS service discovery hostname for the virtual node.+dnsServiceDiscovery_hostname :: Lens.Lens' DnsServiceDiscovery Prelude.Text+dnsServiceDiscovery_hostname = Lens.lens (\DnsServiceDiscovery' {hostname} -> hostname) (\s@DnsServiceDiscovery' {} a -> s {hostname = a} :: DnsServiceDiscovery)++instance Data.FromJSON DnsServiceDiscovery where+  parseJSON =+    Data.withObject+      "DnsServiceDiscovery"+      ( \x ->+          DnsServiceDiscovery'+            Prelude.<$> (x Data..:? "ipPreference")+            Prelude.<*> (x Data..:? "responseType")+            Prelude.<*> (x Data..: "hostname")+      )++instance Prelude.Hashable DnsServiceDiscovery where+  hashWithSalt _salt DnsServiceDiscovery' {..} =+    _salt+      `Prelude.hashWithSalt` ipPreference+      `Prelude.hashWithSalt` responseType+      `Prelude.hashWithSalt` hostname++instance Prelude.NFData DnsServiceDiscovery where+  rnf DnsServiceDiscovery' {..} =+    Prelude.rnf ipPreference+      `Prelude.seq` Prelude.rnf responseType+      `Prelude.seq` Prelude.rnf hostname++instance Data.ToJSON DnsServiceDiscovery where+  toJSON DnsServiceDiscovery' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ipPreference" Data..=) Prelude.<$> ipPreference,+            ("responseType" Data..=) Prelude.<$> responseType,+            Prelude.Just ("hostname" Data..= hostname)+          ]+      )
+ gen/Amazonka/AppMesh/Types/Duration.hs view
@@ -0,0 +1,93 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.Duration+-- 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.AppMesh.Types.Duration where++import Amazonka.AppMesh.Types.DurationUnit+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a duration of time.+--+-- /See:/ 'newDuration' smart constructor.+data Duration = Duration'+  { -- | A unit of time.+    unit :: Prelude.Maybe DurationUnit,+    -- | A number of time units.+    value :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Duration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'unit', 'duration_unit' - A unit of time.+--+-- 'value', 'duration_value' - A number of time units.+newDuration ::+  Duration+newDuration =+  Duration'+    { unit = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | A unit of time.+duration_unit :: Lens.Lens' Duration (Prelude.Maybe DurationUnit)+duration_unit = Lens.lens (\Duration' {unit} -> unit) (\s@Duration' {} a -> s {unit = a} :: Duration)++-- | A number of time units.+duration_value :: Lens.Lens' Duration (Prelude.Maybe Prelude.Natural)+duration_value = Lens.lens (\Duration' {value} -> value) (\s@Duration' {} a -> s {value = a} :: Duration)++instance Data.FromJSON Duration where+  parseJSON =+    Data.withObject+      "Duration"+      ( \x ->+          Duration'+            Prelude.<$> (x Data..:? "unit")+            Prelude.<*> (x Data..:? "value")+      )++instance Prelude.Hashable Duration where+  hashWithSalt _salt Duration' {..} =+    _salt+      `Prelude.hashWithSalt` unit+      `Prelude.hashWithSalt` value++instance Prelude.NFData Duration where+  rnf Duration' {..} =+    Prelude.rnf unit `Prelude.seq` Prelude.rnf value++instance Data.ToJSON Duration where+  toJSON Duration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("unit" Data..=) Prelude.<$> unit,+            ("value" Data..=) Prelude.<$> value+          ]+      )
+ gen/Amazonka/AppMesh/Types/DurationUnit.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.AppMesh.Types.DurationUnit+-- 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.AppMesh.Types.DurationUnit+  ( DurationUnit+      ( ..,+        DurationUnit_Ms,+        DurationUnit_S+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DurationUnit = DurationUnit'+  { fromDurationUnit ::+      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 DurationUnit_Ms :: DurationUnit+pattern DurationUnit_Ms = DurationUnit' "ms"++pattern DurationUnit_S :: DurationUnit+pattern DurationUnit_S = DurationUnit' "s"++{-# COMPLETE+  DurationUnit_Ms,+  DurationUnit_S,+  DurationUnit'+  #-}
+ gen/Amazonka/AppMesh/Types/EgressFilter.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.AppMesh.Types.EgressFilter+-- 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.AppMesh.Types.EgressFilter where++import Amazonka.AppMesh.Types.EgressFilterType+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the egress filter rules for a service mesh.+--+-- /See:/ 'newEgressFilter' smart constructor.+data EgressFilter = EgressFilter'+  { -- | The egress filter type. By default, the type is @DROP_ALL@, which allows+    -- egress only from virtual nodes to other defined resources in the service+    -- mesh (and any traffic to @*.amazonaws.com@ for Amazon Web Services API+    -- calls). You can set the egress filter type to @ALLOW_ALL@ to allow+    -- egress to any endpoint inside or outside of the service mesh.+    type' :: EgressFilterType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EgressFilter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'type'', 'egressFilter_type' - The egress filter type. By default, the type is @DROP_ALL@, which allows+-- egress only from virtual nodes to other defined resources in the service+-- mesh (and any traffic to @*.amazonaws.com@ for Amazon Web Services API+-- calls). You can set the egress filter type to @ALLOW_ALL@ to allow+-- egress to any endpoint inside or outside of the service mesh.+newEgressFilter ::+  -- | 'type''+  EgressFilterType ->+  EgressFilter+newEgressFilter pType_ =+  EgressFilter' {type' = pType_}++-- | The egress filter type. By default, the type is @DROP_ALL@, which allows+-- egress only from virtual nodes to other defined resources in the service+-- mesh (and any traffic to @*.amazonaws.com@ for Amazon Web Services API+-- calls). You can set the egress filter type to @ALLOW_ALL@ to allow+-- egress to any endpoint inside or outside of the service mesh.+egressFilter_type :: Lens.Lens' EgressFilter EgressFilterType+egressFilter_type = Lens.lens (\EgressFilter' {type'} -> type') (\s@EgressFilter' {} a -> s {type' = a} :: EgressFilter)++instance Data.FromJSON EgressFilter where+  parseJSON =+    Data.withObject+      "EgressFilter"+      (\x -> EgressFilter' Prelude.<$> (x Data..: "type"))++instance Prelude.Hashable EgressFilter where+  hashWithSalt _salt EgressFilter' {..} =+    _salt `Prelude.hashWithSalt` type'++instance Prelude.NFData EgressFilter where+  rnf EgressFilter' {..} = Prelude.rnf type'++instance Data.ToJSON EgressFilter where+  toJSON EgressFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("type" Data..= type')]+      )
+ gen/Amazonka/AppMesh/Types/EgressFilterType.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.AppMesh.Types.EgressFilterType+-- 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.AppMesh.Types.EgressFilterType+  ( EgressFilterType+      ( ..,+        EgressFilterType_ALLOW_ALL,+        EgressFilterType_DROP_ALL+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EgressFilterType = EgressFilterType'+  { fromEgressFilterType ::+      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 EgressFilterType_ALLOW_ALL :: EgressFilterType+pattern EgressFilterType_ALLOW_ALL = EgressFilterType' "ALLOW_ALL"++pattern EgressFilterType_DROP_ALL :: EgressFilterType+pattern EgressFilterType_DROP_ALL = EgressFilterType' "DROP_ALL"++{-# COMPLETE+  EgressFilterType_ALLOW_ALL,+  EgressFilterType_DROP_ALL,+  EgressFilterType'+  #-}
+ gen/Amazonka/AppMesh/Types/FileAccessLog.hs view
@@ -0,0 +1,116 @@+{-# 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.AppMesh.Types.FileAccessLog+-- 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.AppMesh.Types.FileAccessLog where++import Amazonka.AppMesh.Types.LoggingFormat+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents an access log file.+--+-- /See:/ 'newFileAccessLog' smart constructor.+data FileAccessLog = FileAccessLog'+  { -- | The specified format for the logs. The format is either @json_format@ or+    -- @text_format@.+    format :: Prelude.Maybe LoggingFormat,+    -- | The file path to write access logs to. You can use @\/dev\/stdout@ to+    -- send access logs to standard out and configure your Envoy container to+    -- use a log driver, such as @awslogs@, to export the access logs to a log+    -- storage service such as Amazon CloudWatch Logs. You can also specify a+    -- path in the Envoy container\'s file system to write the files to disk.+    --+    -- >  <note> <p>The Envoy process must have write permissions to the path that you specify here. Otherwise, Envoy fails to bootstrap properly.</p> </note>+    path :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FileAccessLog' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'format', 'fileAccessLog_format' - The specified format for the logs. The format is either @json_format@ or+-- @text_format@.+--+-- 'path', 'fileAccessLog_path' - The file path to write access logs to. You can use @\/dev\/stdout@ to+-- send access logs to standard out and configure your Envoy container to+-- use a log driver, such as @awslogs@, to export the access logs to a log+-- storage service such as Amazon CloudWatch Logs. You can also specify a+-- path in the Envoy container\'s file system to write the files to disk.+--+-- >  <note> <p>The Envoy process must have write permissions to the path that you specify here. Otherwise, Envoy fails to bootstrap properly.</p> </note>+newFileAccessLog ::+  -- | 'path'+  Prelude.Text ->+  FileAccessLog+newFileAccessLog pPath_ =+  FileAccessLog'+    { format = Prelude.Nothing,+      path = pPath_+    }++-- | The specified format for the logs. The format is either @json_format@ or+-- @text_format@.+fileAccessLog_format :: Lens.Lens' FileAccessLog (Prelude.Maybe LoggingFormat)+fileAccessLog_format = Lens.lens (\FileAccessLog' {format} -> format) (\s@FileAccessLog' {} a -> s {format = a} :: FileAccessLog)++-- | The file path to write access logs to. You can use @\/dev\/stdout@ to+-- send access logs to standard out and configure your Envoy container to+-- use a log driver, such as @awslogs@, to export the access logs to a log+-- storage service such as Amazon CloudWatch Logs. You can also specify a+-- path in the Envoy container\'s file system to write the files to disk.+--+-- >  <note> <p>The Envoy process must have write permissions to the path that you specify here. Otherwise, Envoy fails to bootstrap properly.</p> </note>+fileAccessLog_path :: Lens.Lens' FileAccessLog Prelude.Text+fileAccessLog_path = Lens.lens (\FileAccessLog' {path} -> path) (\s@FileAccessLog' {} a -> s {path = a} :: FileAccessLog)++instance Data.FromJSON FileAccessLog where+  parseJSON =+    Data.withObject+      "FileAccessLog"+      ( \x ->+          FileAccessLog'+            Prelude.<$> (x Data..:? "format")+            Prelude.<*> (x Data..: "path")+      )++instance Prelude.Hashable FileAccessLog where+  hashWithSalt _salt FileAccessLog' {..} =+    _salt+      `Prelude.hashWithSalt` format+      `Prelude.hashWithSalt` path++instance Prelude.NFData FileAccessLog where+  rnf FileAccessLog' {..} =+    Prelude.rnf format `Prelude.seq` Prelude.rnf path++instance Data.ToJSON FileAccessLog where+  toJSON FileAccessLog' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("format" Data..=) Prelude.<$> format,+            Prelude.Just ("path" Data..= path)+          ]+      )
+ gen/Amazonka/AppMesh/Types/GatewayRouteData.hs view
@@ -0,0 +1,154 @@+{-# 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.AppMesh.Types.GatewayRouteData+-- 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.AppMesh.Types.GatewayRouteData where++import Amazonka.AppMesh.Types.GatewayRouteSpec+import Amazonka.AppMesh.Types.GatewayRouteStatus+import Amazonka.AppMesh.Types.ResourceMetadata+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a gateway route returned by a describe+-- operation.+--+-- /See:/ 'newGatewayRouteData' smart constructor.+data GatewayRouteData = GatewayRouteData'+  { -- | The name of the gateway route.+    gatewayRouteName :: Prelude.Text,+    -- | The name of the service mesh that the resource resides in.+    meshName :: Prelude.Text,+    metadata :: ResourceMetadata,+    -- | The specifications of the gateway route.+    spec :: GatewayRouteSpec,+    -- | The status of the gateway route.+    status :: GatewayRouteStatus,+    -- | The virtual gateway that the gateway route is associated with.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewayRouteData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'gatewayRouteName', 'gatewayRouteData_gatewayRouteName' - The name of the gateway route.+--+-- 'meshName', 'gatewayRouteData_meshName' - The name of the service mesh that the resource resides in.+--+-- 'metadata', 'gatewayRouteData_metadata' - Undocumented member.+--+-- 'spec', 'gatewayRouteData_spec' - The specifications of the gateway route.+--+-- 'status', 'gatewayRouteData_status' - The status of the gateway route.+--+-- 'virtualGatewayName', 'gatewayRouteData_virtualGatewayName' - The virtual gateway that the gateway route is associated with.+newGatewayRouteData ::+  -- | 'gatewayRouteName'+  Prelude.Text ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'metadata'+  ResourceMetadata ->+  -- | 'spec'+  GatewayRouteSpec ->+  -- | 'status'+  GatewayRouteStatus ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  GatewayRouteData+newGatewayRouteData+  pGatewayRouteName_+  pMeshName_+  pMetadata_+  pSpec_+  pStatus_+  pVirtualGatewayName_ =+    GatewayRouteData'+      { gatewayRouteName =+          pGatewayRouteName_,+        meshName = pMeshName_,+        metadata = pMetadata_,+        spec = pSpec_,+        status = pStatus_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | The name of the gateway route.+gatewayRouteData_gatewayRouteName :: Lens.Lens' GatewayRouteData Prelude.Text+gatewayRouteData_gatewayRouteName = Lens.lens (\GatewayRouteData' {gatewayRouteName} -> gatewayRouteName) (\s@GatewayRouteData' {} a -> s {gatewayRouteName = a} :: GatewayRouteData)++-- | The name of the service mesh that the resource resides in.+gatewayRouteData_meshName :: Lens.Lens' GatewayRouteData Prelude.Text+gatewayRouteData_meshName = Lens.lens (\GatewayRouteData' {meshName} -> meshName) (\s@GatewayRouteData' {} a -> s {meshName = a} :: GatewayRouteData)++-- | Undocumented member.+gatewayRouteData_metadata :: Lens.Lens' GatewayRouteData ResourceMetadata+gatewayRouteData_metadata = Lens.lens (\GatewayRouteData' {metadata} -> metadata) (\s@GatewayRouteData' {} a -> s {metadata = a} :: GatewayRouteData)++-- | The specifications of the gateway route.+gatewayRouteData_spec :: Lens.Lens' GatewayRouteData GatewayRouteSpec+gatewayRouteData_spec = Lens.lens (\GatewayRouteData' {spec} -> spec) (\s@GatewayRouteData' {} a -> s {spec = a} :: GatewayRouteData)++-- | The status of the gateway route.+gatewayRouteData_status :: Lens.Lens' GatewayRouteData GatewayRouteStatus+gatewayRouteData_status = Lens.lens (\GatewayRouteData' {status} -> status) (\s@GatewayRouteData' {} a -> s {status = a} :: GatewayRouteData)++-- | The virtual gateway that the gateway route is associated with.+gatewayRouteData_virtualGatewayName :: Lens.Lens' GatewayRouteData Prelude.Text+gatewayRouteData_virtualGatewayName = Lens.lens (\GatewayRouteData' {virtualGatewayName} -> virtualGatewayName) (\s@GatewayRouteData' {} a -> s {virtualGatewayName = a} :: GatewayRouteData)++instance Data.FromJSON GatewayRouteData where+  parseJSON =+    Data.withObject+      "GatewayRouteData"+      ( \x ->+          GatewayRouteData'+            Prelude.<$> (x Data..: "gatewayRouteName")+            Prelude.<*> (x Data..: "meshName")+            Prelude.<*> (x Data..: "metadata")+            Prelude.<*> (x Data..: "spec")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..: "virtualGatewayName")+      )++instance Prelude.Hashable GatewayRouteData where+  hashWithSalt _salt GatewayRouteData' {..} =+    _salt+      `Prelude.hashWithSalt` gatewayRouteName+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData GatewayRouteData where+  rnf GatewayRouteData' {..} =+    Prelude.rnf gatewayRouteName+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf virtualGatewayName
+ gen/Amazonka/AppMesh/Types/GatewayRouteHostnameMatch.hs view
@@ -0,0 +1,92 @@+{-# 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.AppMesh.Types.GatewayRouteHostnameMatch+-- 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.AppMesh.Types.GatewayRouteHostnameMatch where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the gateway route host name to match.+--+-- /See:/ 'newGatewayRouteHostnameMatch' smart constructor.+data GatewayRouteHostnameMatch = GatewayRouteHostnameMatch'+  { -- | The exact host name to match on.+    exact :: Prelude.Maybe Prelude.Text,+    -- | The specified ending characters of the host name to match on.+    suffix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewayRouteHostnameMatch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'exact', 'gatewayRouteHostnameMatch_exact' - The exact host name to match on.+--+-- 'suffix', 'gatewayRouteHostnameMatch_suffix' - The specified ending characters of the host name to match on.+newGatewayRouteHostnameMatch ::+  GatewayRouteHostnameMatch+newGatewayRouteHostnameMatch =+  GatewayRouteHostnameMatch'+    { exact = Prelude.Nothing,+      suffix = Prelude.Nothing+    }++-- | The exact host name to match on.+gatewayRouteHostnameMatch_exact :: Lens.Lens' GatewayRouteHostnameMatch (Prelude.Maybe Prelude.Text)+gatewayRouteHostnameMatch_exact = Lens.lens (\GatewayRouteHostnameMatch' {exact} -> exact) (\s@GatewayRouteHostnameMatch' {} a -> s {exact = a} :: GatewayRouteHostnameMatch)++-- | The specified ending characters of the host name to match on.+gatewayRouteHostnameMatch_suffix :: Lens.Lens' GatewayRouteHostnameMatch (Prelude.Maybe Prelude.Text)+gatewayRouteHostnameMatch_suffix = Lens.lens (\GatewayRouteHostnameMatch' {suffix} -> suffix) (\s@GatewayRouteHostnameMatch' {} a -> s {suffix = a} :: GatewayRouteHostnameMatch)++instance Data.FromJSON GatewayRouteHostnameMatch where+  parseJSON =+    Data.withObject+      "GatewayRouteHostnameMatch"+      ( \x ->+          GatewayRouteHostnameMatch'+            Prelude.<$> (x Data..:? "exact")+            Prelude.<*> (x Data..:? "suffix")+      )++instance Prelude.Hashable GatewayRouteHostnameMatch where+  hashWithSalt _salt GatewayRouteHostnameMatch' {..} =+    _salt+      `Prelude.hashWithSalt` exact+      `Prelude.hashWithSalt` suffix++instance Prelude.NFData GatewayRouteHostnameMatch where+  rnf GatewayRouteHostnameMatch' {..} =+    Prelude.rnf exact `Prelude.seq` Prelude.rnf suffix++instance Data.ToJSON GatewayRouteHostnameMatch where+  toJSON GatewayRouteHostnameMatch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("exact" Data..=) Prelude.<$> exact,+            ("suffix" Data..=) Prelude.<$> suffix+          ]+      )
+ gen/Amazonka/AppMesh/Types/GatewayRouteHostnameRewrite.hs view
@@ -0,0 +1,82 @@+{-# 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.AppMesh.Types.GatewayRouteHostnameRewrite+-- 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.AppMesh.Types.GatewayRouteHostnameRewrite where++import Amazonka.AppMesh.Types.DefaultGatewayRouteRewrite+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the gateway route host name to rewrite.+--+-- /See:/ 'newGatewayRouteHostnameRewrite' smart constructor.+data GatewayRouteHostnameRewrite = GatewayRouteHostnameRewrite'+  { -- | The default target host name to write to.+    defaultTargetHostname :: Prelude.Maybe DefaultGatewayRouteRewrite+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewayRouteHostnameRewrite' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'defaultTargetHostname', 'gatewayRouteHostnameRewrite_defaultTargetHostname' - The default target host name to write to.+newGatewayRouteHostnameRewrite ::+  GatewayRouteHostnameRewrite+newGatewayRouteHostnameRewrite =+  GatewayRouteHostnameRewrite'+    { defaultTargetHostname =+        Prelude.Nothing+    }++-- | The default target host name to write to.+gatewayRouteHostnameRewrite_defaultTargetHostname :: Lens.Lens' GatewayRouteHostnameRewrite (Prelude.Maybe DefaultGatewayRouteRewrite)+gatewayRouteHostnameRewrite_defaultTargetHostname = Lens.lens (\GatewayRouteHostnameRewrite' {defaultTargetHostname} -> defaultTargetHostname) (\s@GatewayRouteHostnameRewrite' {} a -> s {defaultTargetHostname = a} :: GatewayRouteHostnameRewrite)++instance Data.FromJSON GatewayRouteHostnameRewrite where+  parseJSON =+    Data.withObject+      "GatewayRouteHostnameRewrite"+      ( \x ->+          GatewayRouteHostnameRewrite'+            Prelude.<$> (x Data..:? "defaultTargetHostname")+      )++instance Prelude.Hashable GatewayRouteHostnameRewrite where+  hashWithSalt _salt GatewayRouteHostnameRewrite' {..} =+    _salt `Prelude.hashWithSalt` defaultTargetHostname++instance Prelude.NFData GatewayRouteHostnameRewrite where+  rnf GatewayRouteHostnameRewrite' {..} =+    Prelude.rnf defaultTargetHostname++instance Data.ToJSON GatewayRouteHostnameRewrite where+  toJSON GatewayRouteHostnameRewrite' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("defaultTargetHostname" Data..=)+              Prelude.<$> defaultTargetHostname+          ]+      )
+ gen/Amazonka/AppMesh/Types/GatewayRouteRef.hs view
@@ -0,0 +1,222 @@+{-# 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.AppMesh.Types.GatewayRouteRef+-- 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.AppMesh.Types.GatewayRouteRef where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a gateway route returned by a list operation.+--+-- /See:/ 'newGatewayRouteRef' smart constructor.+data GatewayRouteRef = GatewayRouteRef'+  { -- | The full Amazon Resource Name (ARN) for the gateway route.+    arn :: Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the resource was created.+    createdAt :: Data.POSIX,+    -- | The name of the gateway route.+    gatewayRouteName :: Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the resource was last+    -- updated.+    lastUpdatedAt :: Data.POSIX,+    -- | The name of the service mesh that the resource resides in.+    meshName :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the resource owner. If the+    -- account ID is not your own, then it\'s the ID of the mesh owner or of+    -- another account that the mesh is shared with. For more information about+    -- mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    resourceOwner :: Prelude.Text,+    -- | The version of the resource. Resources are created at version 1, and+    -- this version is incremented each time that they\'re updated.+    version :: Prelude.Integer,+    -- | The virtual gateway that the gateway route is associated with.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewayRouteRef' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'gatewayRouteRef_arn' - The full Amazon Resource Name (ARN) for the gateway route.+--+-- 'createdAt', 'gatewayRouteRef_createdAt' - The Unix epoch timestamp in seconds for when the resource was created.+--+-- 'gatewayRouteName', 'gatewayRouteRef_gatewayRouteName' - The name of the gateway route.+--+-- 'lastUpdatedAt', 'gatewayRouteRef_lastUpdatedAt' - The Unix epoch timestamp in seconds for when the resource was last+-- updated.+--+-- 'meshName', 'gatewayRouteRef_meshName' - The name of the service mesh that the resource resides in.+--+-- 'meshOwner', 'gatewayRouteRef_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'resourceOwner', 'gatewayRouteRef_resourceOwner' - The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'version', 'gatewayRouteRef_version' - The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+--+-- 'virtualGatewayName', 'gatewayRouteRef_virtualGatewayName' - The virtual gateway that the gateway route is associated with.+newGatewayRouteRef ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'gatewayRouteName'+  Prelude.Text ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'meshOwner'+  Prelude.Text ->+  -- | 'resourceOwner'+  Prelude.Text ->+  -- | 'version'+  Prelude.Integer ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  GatewayRouteRef+newGatewayRouteRef+  pArn_+  pCreatedAt_+  pGatewayRouteName_+  pLastUpdatedAt_+  pMeshName_+  pMeshOwner_+  pResourceOwner_+  pVersion_+  pVirtualGatewayName_ =+    GatewayRouteRef'+      { arn = pArn_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        gatewayRouteName = pGatewayRouteName_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_,+        meshName = pMeshName_,+        meshOwner = pMeshOwner_,+        resourceOwner = pResourceOwner_,+        version = pVersion_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | The full Amazon Resource Name (ARN) for the gateway route.+gatewayRouteRef_arn :: Lens.Lens' GatewayRouteRef Prelude.Text+gatewayRouteRef_arn = Lens.lens (\GatewayRouteRef' {arn} -> arn) (\s@GatewayRouteRef' {} a -> s {arn = a} :: GatewayRouteRef)++-- | The Unix epoch timestamp in seconds for when the resource was created.+gatewayRouteRef_createdAt :: Lens.Lens' GatewayRouteRef Prelude.UTCTime+gatewayRouteRef_createdAt = Lens.lens (\GatewayRouteRef' {createdAt} -> createdAt) (\s@GatewayRouteRef' {} a -> s {createdAt = a} :: GatewayRouteRef) Prelude.. Data._Time++-- | The name of the gateway route.+gatewayRouteRef_gatewayRouteName :: Lens.Lens' GatewayRouteRef Prelude.Text+gatewayRouteRef_gatewayRouteName = Lens.lens (\GatewayRouteRef' {gatewayRouteName} -> gatewayRouteName) (\s@GatewayRouteRef' {} a -> s {gatewayRouteName = a} :: GatewayRouteRef)++-- | The Unix epoch timestamp in seconds for when the resource was last+-- updated.+gatewayRouteRef_lastUpdatedAt :: Lens.Lens' GatewayRouteRef Prelude.UTCTime+gatewayRouteRef_lastUpdatedAt = Lens.lens (\GatewayRouteRef' {lastUpdatedAt} -> lastUpdatedAt) (\s@GatewayRouteRef' {} a -> s {lastUpdatedAt = a} :: GatewayRouteRef) Prelude.. Data._Time++-- | The name of the service mesh that the resource resides in.+gatewayRouteRef_meshName :: Lens.Lens' GatewayRouteRef Prelude.Text+gatewayRouteRef_meshName = Lens.lens (\GatewayRouteRef' {meshName} -> meshName) (\s@GatewayRouteRef' {} a -> s {meshName = a} :: GatewayRouteRef)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+gatewayRouteRef_meshOwner :: Lens.Lens' GatewayRouteRef Prelude.Text+gatewayRouteRef_meshOwner = Lens.lens (\GatewayRouteRef' {meshOwner} -> meshOwner) (\s@GatewayRouteRef' {} a -> s {meshOwner = a} :: GatewayRouteRef)++-- | The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+gatewayRouteRef_resourceOwner :: Lens.Lens' GatewayRouteRef Prelude.Text+gatewayRouteRef_resourceOwner = Lens.lens (\GatewayRouteRef' {resourceOwner} -> resourceOwner) (\s@GatewayRouteRef' {} a -> s {resourceOwner = a} :: GatewayRouteRef)++-- | The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+gatewayRouteRef_version :: Lens.Lens' GatewayRouteRef Prelude.Integer+gatewayRouteRef_version = Lens.lens (\GatewayRouteRef' {version} -> version) (\s@GatewayRouteRef' {} a -> s {version = a} :: GatewayRouteRef)++-- | The virtual gateway that the gateway route is associated with.+gatewayRouteRef_virtualGatewayName :: Lens.Lens' GatewayRouteRef Prelude.Text+gatewayRouteRef_virtualGatewayName = Lens.lens (\GatewayRouteRef' {virtualGatewayName} -> virtualGatewayName) (\s@GatewayRouteRef' {} a -> s {virtualGatewayName = a} :: GatewayRouteRef)++instance Data.FromJSON GatewayRouteRef where+  parseJSON =+    Data.withObject+      "GatewayRouteRef"+      ( \x ->+          GatewayRouteRef'+            Prelude.<$> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdAt")+            Prelude.<*> (x Data..: "gatewayRouteName")+            Prelude.<*> (x Data..: "lastUpdatedAt")+            Prelude.<*> (x Data..: "meshName")+            Prelude.<*> (x Data..: "meshOwner")+            Prelude.<*> (x Data..: "resourceOwner")+            Prelude.<*> (x Data..: "version")+            Prelude.<*> (x Data..: "virtualGatewayName")+      )++instance Prelude.Hashable GatewayRouteRef where+  hashWithSalt _salt GatewayRouteRef' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` gatewayRouteName+      `Prelude.hashWithSalt` lastUpdatedAt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` resourceOwner+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData GatewayRouteRef where+  rnf GatewayRouteRef' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf gatewayRouteName+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf resourceOwner+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf virtualGatewayName
+ gen/Amazonka/AppMesh/Types/GatewayRouteSpec.hs view
@@ -0,0 +1,122 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GatewayRouteSpec+-- 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.AppMesh.Types.GatewayRouteSpec where++import Amazonka.AppMesh.Types.GrpcGatewayRoute+import Amazonka.AppMesh.Types.HttpGatewayRoute+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a gateway route specification. Specify one+-- gateway route type.+--+-- /See:/ 'newGatewayRouteSpec' smart constructor.+data GatewayRouteSpec = GatewayRouteSpec'+  { -- | An object that represents the specification of a gRPC gateway route.+    grpcRoute :: Prelude.Maybe GrpcGatewayRoute,+    -- | An object that represents the specification of an HTTP\/2 gateway route.+    http2Route :: Prelude.Maybe HttpGatewayRoute,+    -- | An object that represents the specification of an HTTP gateway route.+    httpRoute :: Prelude.Maybe HttpGatewayRoute,+    -- | The ordering of the gateway routes spec.+    priority :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewayRouteSpec' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'grpcRoute', 'gatewayRouteSpec_grpcRoute' - An object that represents the specification of a gRPC gateway route.+--+-- 'http2Route', 'gatewayRouteSpec_http2Route' - An object that represents the specification of an HTTP\/2 gateway route.+--+-- 'httpRoute', 'gatewayRouteSpec_httpRoute' - An object that represents the specification of an HTTP gateway route.+--+-- 'priority', 'gatewayRouteSpec_priority' - The ordering of the gateway routes spec.+newGatewayRouteSpec ::+  GatewayRouteSpec+newGatewayRouteSpec =+  GatewayRouteSpec'+    { grpcRoute = Prelude.Nothing,+      http2Route = Prelude.Nothing,+      httpRoute = Prelude.Nothing,+      priority = Prelude.Nothing+    }++-- | An object that represents the specification of a gRPC gateway route.+gatewayRouteSpec_grpcRoute :: Lens.Lens' GatewayRouteSpec (Prelude.Maybe GrpcGatewayRoute)+gatewayRouteSpec_grpcRoute = Lens.lens (\GatewayRouteSpec' {grpcRoute} -> grpcRoute) (\s@GatewayRouteSpec' {} a -> s {grpcRoute = a} :: GatewayRouteSpec)++-- | An object that represents the specification of an HTTP\/2 gateway route.+gatewayRouteSpec_http2Route :: Lens.Lens' GatewayRouteSpec (Prelude.Maybe HttpGatewayRoute)+gatewayRouteSpec_http2Route = Lens.lens (\GatewayRouteSpec' {http2Route} -> http2Route) (\s@GatewayRouteSpec' {} a -> s {http2Route = a} :: GatewayRouteSpec)++-- | An object that represents the specification of an HTTP gateway route.+gatewayRouteSpec_httpRoute :: Lens.Lens' GatewayRouteSpec (Prelude.Maybe HttpGatewayRoute)+gatewayRouteSpec_httpRoute = Lens.lens (\GatewayRouteSpec' {httpRoute} -> httpRoute) (\s@GatewayRouteSpec' {} a -> s {httpRoute = a} :: GatewayRouteSpec)++-- | The ordering of the gateway routes spec.+gatewayRouteSpec_priority :: Lens.Lens' GatewayRouteSpec (Prelude.Maybe Prelude.Natural)+gatewayRouteSpec_priority = Lens.lens (\GatewayRouteSpec' {priority} -> priority) (\s@GatewayRouteSpec' {} a -> s {priority = a} :: GatewayRouteSpec)++instance Data.FromJSON GatewayRouteSpec where+  parseJSON =+    Data.withObject+      "GatewayRouteSpec"+      ( \x ->+          GatewayRouteSpec'+            Prelude.<$> (x Data..:? "grpcRoute")+            Prelude.<*> (x Data..:? "http2Route")+            Prelude.<*> (x Data..:? "httpRoute")+            Prelude.<*> (x Data..:? "priority")+      )++instance Prelude.Hashable GatewayRouteSpec where+  hashWithSalt _salt GatewayRouteSpec' {..} =+    _salt+      `Prelude.hashWithSalt` grpcRoute+      `Prelude.hashWithSalt` http2Route+      `Prelude.hashWithSalt` httpRoute+      `Prelude.hashWithSalt` priority++instance Prelude.NFData GatewayRouteSpec where+  rnf GatewayRouteSpec' {..} =+    Prelude.rnf grpcRoute+      `Prelude.seq` Prelude.rnf http2Route+      `Prelude.seq` Prelude.rnf httpRoute+      `Prelude.seq` Prelude.rnf priority++instance Data.ToJSON GatewayRouteSpec where+  toJSON GatewayRouteSpec' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("grpcRoute" Data..=) Prelude.<$> grpcRoute,+            ("http2Route" Data..=) Prelude.<$> http2Route,+            ("httpRoute" Data..=) Prelude.<$> httpRoute,+            ("priority" Data..=) Prelude.<$> priority+          ]+      )
+ gen/Amazonka/AppMesh/Types/GatewayRouteStatus.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.AppMesh.Types.GatewayRouteStatus+-- 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.AppMesh.Types.GatewayRouteStatus where++import Amazonka.AppMesh.Types.GatewayRouteStatusCode+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the current status of a gateway route.+--+-- /See:/ 'newGatewayRouteStatus' smart constructor.+data GatewayRouteStatus = GatewayRouteStatus'+  { -- | The current status for the gateway route.+    status :: GatewayRouteStatusCode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewayRouteStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'status', 'gatewayRouteStatus_status' - The current status for the gateway route.+newGatewayRouteStatus ::+  -- | 'status'+  GatewayRouteStatusCode ->+  GatewayRouteStatus+newGatewayRouteStatus pStatus_ =+  GatewayRouteStatus' {status = pStatus_}++-- | The current status for the gateway route.+gatewayRouteStatus_status :: Lens.Lens' GatewayRouteStatus GatewayRouteStatusCode+gatewayRouteStatus_status = Lens.lens (\GatewayRouteStatus' {status} -> status) (\s@GatewayRouteStatus' {} a -> s {status = a} :: GatewayRouteStatus)++instance Data.FromJSON GatewayRouteStatus where+  parseJSON =+    Data.withObject+      "GatewayRouteStatus"+      ( \x ->+          GatewayRouteStatus' Prelude.<$> (x Data..: "status")+      )++instance Prelude.Hashable GatewayRouteStatus where+  hashWithSalt _salt GatewayRouteStatus' {..} =+    _salt `Prelude.hashWithSalt` status++instance Prelude.NFData GatewayRouteStatus where+  rnf GatewayRouteStatus' {..} = Prelude.rnf status
+ gen/Amazonka/AppMesh/Types/GatewayRouteStatusCode.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GatewayRouteStatusCode+-- 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.AppMesh.Types.GatewayRouteStatusCode+  ( GatewayRouteStatusCode+      ( ..,+        GatewayRouteStatusCode_ACTIVE,+        GatewayRouteStatusCode_DELETED,+        GatewayRouteStatusCode_INACTIVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype GatewayRouteStatusCode = GatewayRouteStatusCode'+  { fromGatewayRouteStatusCode ::+      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 GatewayRouteStatusCode_ACTIVE :: GatewayRouteStatusCode+pattern GatewayRouteStatusCode_ACTIVE = GatewayRouteStatusCode' "ACTIVE"++pattern GatewayRouteStatusCode_DELETED :: GatewayRouteStatusCode+pattern GatewayRouteStatusCode_DELETED = GatewayRouteStatusCode' "DELETED"++pattern GatewayRouteStatusCode_INACTIVE :: GatewayRouteStatusCode+pattern GatewayRouteStatusCode_INACTIVE = GatewayRouteStatusCode' "INACTIVE"++{-# COMPLETE+  GatewayRouteStatusCode_ACTIVE,+  GatewayRouteStatusCode_DELETED,+  GatewayRouteStatusCode_INACTIVE,+  GatewayRouteStatusCode'+  #-}
+ gen/Amazonka/AppMesh/Types/GatewayRouteTarget.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.AppMesh.Types.GatewayRouteTarget+-- 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.AppMesh.Types.GatewayRouteTarget where++import Amazonka.AppMesh.Types.GatewayRouteVirtualService+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a gateway route target.+--+-- /See:/ 'newGatewayRouteTarget' smart constructor.+data GatewayRouteTarget = GatewayRouteTarget'+  { -- | The port number of the gateway route target.+    port :: Prelude.Maybe Prelude.Natural,+    -- | An object that represents a virtual service gateway route target.+    virtualService :: GatewayRouteVirtualService+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewayRouteTarget' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'port', 'gatewayRouteTarget_port' - The port number of the gateway route target.+--+-- 'virtualService', 'gatewayRouteTarget_virtualService' - An object that represents a virtual service gateway route target.+newGatewayRouteTarget ::+  -- | 'virtualService'+  GatewayRouteVirtualService ->+  GatewayRouteTarget+newGatewayRouteTarget pVirtualService_ =+  GatewayRouteTarget'+    { port = Prelude.Nothing,+      virtualService = pVirtualService_+    }++-- | The port number of the gateway route target.+gatewayRouteTarget_port :: Lens.Lens' GatewayRouteTarget (Prelude.Maybe Prelude.Natural)+gatewayRouteTarget_port = Lens.lens (\GatewayRouteTarget' {port} -> port) (\s@GatewayRouteTarget' {} a -> s {port = a} :: GatewayRouteTarget)++-- | An object that represents a virtual service gateway route target.+gatewayRouteTarget_virtualService :: Lens.Lens' GatewayRouteTarget GatewayRouteVirtualService+gatewayRouteTarget_virtualService = Lens.lens (\GatewayRouteTarget' {virtualService} -> virtualService) (\s@GatewayRouteTarget' {} a -> s {virtualService = a} :: GatewayRouteTarget)++instance Data.FromJSON GatewayRouteTarget where+  parseJSON =+    Data.withObject+      "GatewayRouteTarget"+      ( \x ->+          GatewayRouteTarget'+            Prelude.<$> (x Data..:? "port")+            Prelude.<*> (x Data..: "virtualService")+      )++instance Prelude.Hashable GatewayRouteTarget where+  hashWithSalt _salt GatewayRouteTarget' {..} =+    _salt+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` virtualService++instance Prelude.NFData GatewayRouteTarget where+  rnf GatewayRouteTarget' {..} =+    Prelude.rnf port+      `Prelude.seq` Prelude.rnf virtualService++instance Data.ToJSON GatewayRouteTarget where+  toJSON GatewayRouteTarget' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("port" Data..=) Prelude.<$> port,+            Prelude.Just+              ("virtualService" Data..= virtualService)+          ]+      )
+ gen/Amazonka/AppMesh/Types/GatewayRouteVirtualService.hs view
@@ -0,0 +1,83 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GatewayRouteVirtualService+-- 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.AppMesh.Types.GatewayRouteVirtualService where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the virtual service that traffic is routed to.+--+-- /See:/ 'newGatewayRouteVirtualService' smart constructor.+data GatewayRouteVirtualService = GatewayRouteVirtualService'+  { -- | The name of the virtual service that traffic is routed to.+    virtualServiceName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewayRouteVirtualService' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'virtualServiceName', 'gatewayRouteVirtualService_virtualServiceName' - The name of the virtual service that traffic is routed to.+newGatewayRouteVirtualService ::+  -- | 'virtualServiceName'+  Prelude.Text ->+  GatewayRouteVirtualService+newGatewayRouteVirtualService pVirtualServiceName_ =+  GatewayRouteVirtualService'+    { virtualServiceName =+        pVirtualServiceName_+    }++-- | The name of the virtual service that traffic is routed to.+gatewayRouteVirtualService_virtualServiceName :: Lens.Lens' GatewayRouteVirtualService Prelude.Text+gatewayRouteVirtualService_virtualServiceName = Lens.lens (\GatewayRouteVirtualService' {virtualServiceName} -> virtualServiceName) (\s@GatewayRouteVirtualService' {} a -> s {virtualServiceName = a} :: GatewayRouteVirtualService)++instance Data.FromJSON GatewayRouteVirtualService where+  parseJSON =+    Data.withObject+      "GatewayRouteVirtualService"+      ( \x ->+          GatewayRouteVirtualService'+            Prelude.<$> (x Data..: "virtualServiceName")+      )++instance Prelude.Hashable GatewayRouteVirtualService where+  hashWithSalt _salt GatewayRouteVirtualService' {..} =+    _salt `Prelude.hashWithSalt` virtualServiceName++instance Prelude.NFData GatewayRouteVirtualService where+  rnf GatewayRouteVirtualService' {..} =+    Prelude.rnf virtualServiceName++instance Data.ToJSON GatewayRouteVirtualService where+  toJSON GatewayRouteVirtualService' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("virtualServiceName" Data..= virtualServiceName)+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcGatewayRoute.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GrpcGatewayRoute+-- 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.AppMesh.Types.GrpcGatewayRoute where++import Amazonka.AppMesh.Types.GrpcGatewayRouteAction+import Amazonka.AppMesh.Types.GrpcGatewayRouteMatch+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a gRPC gateway route.+--+-- /See:/ 'newGrpcGatewayRoute' smart constructor.+data GrpcGatewayRoute = GrpcGatewayRoute'+  { -- | An object that represents the action to take if a match is determined.+    action :: GrpcGatewayRouteAction,+    -- | An object that represents the criteria for determining a request match.+    match :: GrpcGatewayRouteMatch+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcGatewayRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'action', 'grpcGatewayRoute_action' - An object that represents the action to take if a match is determined.+--+-- 'match', 'grpcGatewayRoute_match' - An object that represents the criteria for determining a request match.+newGrpcGatewayRoute ::+  -- | 'action'+  GrpcGatewayRouteAction ->+  -- | 'match'+  GrpcGatewayRouteMatch ->+  GrpcGatewayRoute+newGrpcGatewayRoute pAction_ pMatch_ =+  GrpcGatewayRoute'+    { action = pAction_,+      match = pMatch_+    }++-- | An object that represents the action to take if a match is determined.+grpcGatewayRoute_action :: Lens.Lens' GrpcGatewayRoute GrpcGatewayRouteAction+grpcGatewayRoute_action = Lens.lens (\GrpcGatewayRoute' {action} -> action) (\s@GrpcGatewayRoute' {} a -> s {action = a} :: GrpcGatewayRoute)++-- | An object that represents the criteria for determining a request match.+grpcGatewayRoute_match :: Lens.Lens' GrpcGatewayRoute GrpcGatewayRouteMatch+grpcGatewayRoute_match = Lens.lens (\GrpcGatewayRoute' {match} -> match) (\s@GrpcGatewayRoute' {} a -> s {match = a} :: GrpcGatewayRoute)++instance Data.FromJSON GrpcGatewayRoute where+  parseJSON =+    Data.withObject+      "GrpcGatewayRoute"+      ( \x ->+          GrpcGatewayRoute'+            Prelude.<$> (x Data..: "action")+            Prelude.<*> (x Data..: "match")+      )++instance Prelude.Hashable GrpcGatewayRoute where+  hashWithSalt _salt GrpcGatewayRoute' {..} =+    _salt+      `Prelude.hashWithSalt` action+      `Prelude.hashWithSalt` match++instance Prelude.NFData GrpcGatewayRoute where+  rnf GrpcGatewayRoute' {..} =+    Prelude.rnf action `Prelude.seq` Prelude.rnf match++instance Data.ToJSON GrpcGatewayRoute where+  toJSON GrpcGatewayRoute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("action" Data..= action),+            Prelude.Just ("match" Data..= match)+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcGatewayRouteAction.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.AppMesh.Types.GrpcGatewayRouteAction+-- 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.AppMesh.Types.GrpcGatewayRouteAction where++import Amazonka.AppMesh.Types.GatewayRouteTarget+import Amazonka.AppMesh.Types.GrpcGatewayRouteRewrite+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the action to take if a match is determined.+--+-- /See:/ 'newGrpcGatewayRouteAction' smart constructor.+data GrpcGatewayRouteAction = GrpcGatewayRouteAction'+  { -- | The gateway route action to rewrite.+    rewrite :: Prelude.Maybe GrpcGatewayRouteRewrite,+    -- | An object that represents the target that traffic is routed to when a+    -- request matches the gateway route.+    target :: GatewayRouteTarget+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcGatewayRouteAction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'rewrite', 'grpcGatewayRouteAction_rewrite' - The gateway route action to rewrite.+--+-- 'target', 'grpcGatewayRouteAction_target' - An object that represents the target that traffic is routed to when a+-- request matches the gateway route.+newGrpcGatewayRouteAction ::+  -- | 'target'+  GatewayRouteTarget ->+  GrpcGatewayRouteAction+newGrpcGatewayRouteAction pTarget_ =+  GrpcGatewayRouteAction'+    { rewrite = Prelude.Nothing,+      target = pTarget_+    }++-- | The gateway route action to rewrite.+grpcGatewayRouteAction_rewrite :: Lens.Lens' GrpcGatewayRouteAction (Prelude.Maybe GrpcGatewayRouteRewrite)+grpcGatewayRouteAction_rewrite = Lens.lens (\GrpcGatewayRouteAction' {rewrite} -> rewrite) (\s@GrpcGatewayRouteAction' {} a -> s {rewrite = a} :: GrpcGatewayRouteAction)++-- | An object that represents the target that traffic is routed to when a+-- request matches the gateway route.+grpcGatewayRouteAction_target :: Lens.Lens' GrpcGatewayRouteAction GatewayRouteTarget+grpcGatewayRouteAction_target = Lens.lens (\GrpcGatewayRouteAction' {target} -> target) (\s@GrpcGatewayRouteAction' {} a -> s {target = a} :: GrpcGatewayRouteAction)++instance Data.FromJSON GrpcGatewayRouteAction where+  parseJSON =+    Data.withObject+      "GrpcGatewayRouteAction"+      ( \x ->+          GrpcGatewayRouteAction'+            Prelude.<$> (x Data..:? "rewrite")+            Prelude.<*> (x Data..: "target")+      )++instance Prelude.Hashable GrpcGatewayRouteAction where+  hashWithSalt _salt GrpcGatewayRouteAction' {..} =+    _salt+      `Prelude.hashWithSalt` rewrite+      `Prelude.hashWithSalt` target++instance Prelude.NFData GrpcGatewayRouteAction where+  rnf GrpcGatewayRouteAction' {..} =+    Prelude.rnf rewrite+      `Prelude.seq` Prelude.rnf target++instance Data.ToJSON GrpcGatewayRouteAction where+  toJSON GrpcGatewayRouteAction' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("rewrite" Data..=) Prelude.<$> rewrite,+            Prelude.Just ("target" Data..= target)+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcGatewayRouteMatch.hs view
@@ -0,0 +1,124 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GrpcGatewayRouteMatch+-- 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.AppMesh.Types.GrpcGatewayRouteMatch where++import Amazonka.AppMesh.Types.GatewayRouteHostnameMatch+import Amazonka.AppMesh.Types.GrpcGatewayRouteMetadata+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the criteria for determining a request match.+--+-- /See:/ 'newGrpcGatewayRouteMatch' smart constructor.+data GrpcGatewayRouteMatch = GrpcGatewayRouteMatch'+  { -- | The gateway route host name to be matched on.+    hostname :: Prelude.Maybe GatewayRouteHostnameMatch,+    -- | The gateway route metadata to be matched on.+    metadata :: Prelude.Maybe (Prelude.NonEmpty GrpcGatewayRouteMetadata),+    -- | The port number to match from the request.+    port :: Prelude.Maybe Prelude.Natural,+    -- | The fully qualified domain name for the service to match from the+    -- request.+    serviceName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcGatewayRouteMatch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'hostname', 'grpcGatewayRouteMatch_hostname' - The gateway route host name to be matched on.+--+-- 'metadata', 'grpcGatewayRouteMatch_metadata' - The gateway route metadata to be matched on.+--+-- 'port', 'grpcGatewayRouteMatch_port' - The port number to match from the request.+--+-- 'serviceName', 'grpcGatewayRouteMatch_serviceName' - The fully qualified domain name for the service to match from the+-- request.+newGrpcGatewayRouteMatch ::+  GrpcGatewayRouteMatch+newGrpcGatewayRouteMatch =+  GrpcGatewayRouteMatch'+    { hostname = Prelude.Nothing,+      metadata = Prelude.Nothing,+      port = Prelude.Nothing,+      serviceName = Prelude.Nothing+    }++-- | The gateway route host name to be matched on.+grpcGatewayRouteMatch_hostname :: Lens.Lens' GrpcGatewayRouteMatch (Prelude.Maybe GatewayRouteHostnameMatch)+grpcGatewayRouteMatch_hostname = Lens.lens (\GrpcGatewayRouteMatch' {hostname} -> hostname) (\s@GrpcGatewayRouteMatch' {} a -> s {hostname = a} :: GrpcGatewayRouteMatch)++-- | The gateway route metadata to be matched on.+grpcGatewayRouteMatch_metadata :: Lens.Lens' GrpcGatewayRouteMatch (Prelude.Maybe (Prelude.NonEmpty GrpcGatewayRouteMetadata))+grpcGatewayRouteMatch_metadata = Lens.lens (\GrpcGatewayRouteMatch' {metadata} -> metadata) (\s@GrpcGatewayRouteMatch' {} a -> s {metadata = a} :: GrpcGatewayRouteMatch) Prelude.. Lens.mapping Lens.coerced++-- | The port number to match from the request.+grpcGatewayRouteMatch_port :: Lens.Lens' GrpcGatewayRouteMatch (Prelude.Maybe Prelude.Natural)+grpcGatewayRouteMatch_port = Lens.lens (\GrpcGatewayRouteMatch' {port} -> port) (\s@GrpcGatewayRouteMatch' {} a -> s {port = a} :: GrpcGatewayRouteMatch)++-- | The fully qualified domain name for the service to match from the+-- request.+grpcGatewayRouteMatch_serviceName :: Lens.Lens' GrpcGatewayRouteMatch (Prelude.Maybe Prelude.Text)+grpcGatewayRouteMatch_serviceName = Lens.lens (\GrpcGatewayRouteMatch' {serviceName} -> serviceName) (\s@GrpcGatewayRouteMatch' {} a -> s {serviceName = a} :: GrpcGatewayRouteMatch)++instance Data.FromJSON GrpcGatewayRouteMatch where+  parseJSON =+    Data.withObject+      "GrpcGatewayRouteMatch"+      ( \x ->+          GrpcGatewayRouteMatch'+            Prelude.<$> (x Data..:? "hostname")+            Prelude.<*> (x Data..:? "metadata")+            Prelude.<*> (x Data..:? "port")+            Prelude.<*> (x Data..:? "serviceName")+      )++instance Prelude.Hashable GrpcGatewayRouteMatch where+  hashWithSalt _salt GrpcGatewayRouteMatch' {..} =+    _salt+      `Prelude.hashWithSalt` hostname+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` serviceName++instance Prelude.NFData GrpcGatewayRouteMatch where+  rnf GrpcGatewayRouteMatch' {..} =+    Prelude.rnf hostname+      `Prelude.seq` Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf port+      `Prelude.seq` Prelude.rnf serviceName++instance Data.ToJSON GrpcGatewayRouteMatch where+  toJSON GrpcGatewayRouteMatch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("hostname" Data..=) Prelude.<$> hostname,+            ("metadata" Data..=) Prelude.<$> metadata,+            ("port" Data..=) Prelude.<$> port,+            ("serviceName" Data..=) Prelude.<$> serviceName+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcGatewayRouteMetadata.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GrpcGatewayRouteMetadata+-- 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.AppMesh.Types.GrpcGatewayRouteMetadata where++import Amazonka.AppMesh.Types.GrpcMetadataMatchMethod+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the metadata of the gateway route.+--+-- /See:/ 'newGrpcGatewayRouteMetadata' smart constructor.+data GrpcGatewayRouteMetadata = GrpcGatewayRouteMetadata'+  { -- | Specify @True@ to match anything except the match criteria. The default+    -- value is @False@.+    invert :: Prelude.Maybe Prelude.Bool,+    -- | The criteria for determining a metadata match.+    match :: Prelude.Maybe GrpcMetadataMatchMethod,+    -- | A name for the gateway route metadata.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcGatewayRouteMetadata' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'invert', 'grpcGatewayRouteMetadata_invert' - Specify @True@ to match anything except the match criteria. The default+-- value is @False@.+--+-- 'match', 'grpcGatewayRouteMetadata_match' - The criteria for determining a metadata match.+--+-- 'name', 'grpcGatewayRouteMetadata_name' - A name for the gateway route metadata.+newGrpcGatewayRouteMetadata ::+  -- | 'name'+  Prelude.Text ->+  GrpcGatewayRouteMetadata+newGrpcGatewayRouteMetadata pName_ =+  GrpcGatewayRouteMetadata'+    { invert = Prelude.Nothing,+      match = Prelude.Nothing,+      name = pName_+    }++-- | Specify @True@ to match anything except the match criteria. The default+-- value is @False@.+grpcGatewayRouteMetadata_invert :: Lens.Lens' GrpcGatewayRouteMetadata (Prelude.Maybe Prelude.Bool)+grpcGatewayRouteMetadata_invert = Lens.lens (\GrpcGatewayRouteMetadata' {invert} -> invert) (\s@GrpcGatewayRouteMetadata' {} a -> s {invert = a} :: GrpcGatewayRouteMetadata)++-- | The criteria for determining a metadata match.+grpcGatewayRouteMetadata_match :: Lens.Lens' GrpcGatewayRouteMetadata (Prelude.Maybe GrpcMetadataMatchMethod)+grpcGatewayRouteMetadata_match = Lens.lens (\GrpcGatewayRouteMetadata' {match} -> match) (\s@GrpcGatewayRouteMetadata' {} a -> s {match = a} :: GrpcGatewayRouteMetadata)++-- | A name for the gateway route metadata.+grpcGatewayRouteMetadata_name :: Lens.Lens' GrpcGatewayRouteMetadata Prelude.Text+grpcGatewayRouteMetadata_name = Lens.lens (\GrpcGatewayRouteMetadata' {name} -> name) (\s@GrpcGatewayRouteMetadata' {} a -> s {name = a} :: GrpcGatewayRouteMetadata)++instance Data.FromJSON GrpcGatewayRouteMetadata where+  parseJSON =+    Data.withObject+      "GrpcGatewayRouteMetadata"+      ( \x ->+          GrpcGatewayRouteMetadata'+            Prelude.<$> (x Data..:? "invert")+            Prelude.<*> (x Data..:? "match")+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable GrpcGatewayRouteMetadata where+  hashWithSalt _salt GrpcGatewayRouteMetadata' {..} =+    _salt+      `Prelude.hashWithSalt` invert+      `Prelude.hashWithSalt` match+      `Prelude.hashWithSalt` name++instance Prelude.NFData GrpcGatewayRouteMetadata where+  rnf GrpcGatewayRouteMetadata' {..} =+    Prelude.rnf invert+      `Prelude.seq` Prelude.rnf match+      `Prelude.seq` Prelude.rnf name++instance Data.ToJSON GrpcGatewayRouteMetadata where+  toJSON GrpcGatewayRouteMetadata' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("invert" Data..=) Prelude.<$> invert,+            ("match" Data..=) Prelude.<$> match,+            Prelude.Just ("name" Data..= name)+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcGatewayRouteRewrite.hs view
@@ -0,0 +1,80 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GrpcGatewayRouteRewrite+-- 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.AppMesh.Types.GrpcGatewayRouteRewrite where++import Amazonka.AppMesh.Types.GatewayRouteHostnameRewrite+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the gateway route to rewrite.+--+-- /See:/ 'newGrpcGatewayRouteRewrite' smart constructor.+data GrpcGatewayRouteRewrite = GrpcGatewayRouteRewrite'+  { -- | The host name of the gateway route to rewrite.+    hostname :: Prelude.Maybe GatewayRouteHostnameRewrite+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcGatewayRouteRewrite' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'hostname', 'grpcGatewayRouteRewrite_hostname' - The host name of the gateway route to rewrite.+newGrpcGatewayRouteRewrite ::+  GrpcGatewayRouteRewrite+newGrpcGatewayRouteRewrite =+  GrpcGatewayRouteRewrite'+    { hostname =+        Prelude.Nothing+    }++-- | The host name of the gateway route to rewrite.+grpcGatewayRouteRewrite_hostname :: Lens.Lens' GrpcGatewayRouteRewrite (Prelude.Maybe GatewayRouteHostnameRewrite)+grpcGatewayRouteRewrite_hostname = Lens.lens (\GrpcGatewayRouteRewrite' {hostname} -> hostname) (\s@GrpcGatewayRouteRewrite' {} a -> s {hostname = a} :: GrpcGatewayRouteRewrite)++instance Data.FromJSON GrpcGatewayRouteRewrite where+  parseJSON =+    Data.withObject+      "GrpcGatewayRouteRewrite"+      ( \x ->+          GrpcGatewayRouteRewrite'+            Prelude.<$> (x Data..:? "hostname")+      )++instance Prelude.Hashable GrpcGatewayRouteRewrite where+  hashWithSalt _salt GrpcGatewayRouteRewrite' {..} =+    _salt `Prelude.hashWithSalt` hostname++instance Prelude.NFData GrpcGatewayRouteRewrite where+  rnf GrpcGatewayRouteRewrite' {..} =+    Prelude.rnf hostname++instance Data.ToJSON GrpcGatewayRouteRewrite where+  toJSON GrpcGatewayRouteRewrite' {..} =+    Data.object+      ( Prelude.catMaybes+          [("hostname" Data..=) Prelude.<$> hostname]+      )
+ gen/Amazonka/AppMesh/Types/GrpcMetadataMatchMethod.hs view
@@ -0,0 +1,135 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GrpcMetadataMatchMethod+-- 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.AppMesh.Types.GrpcMetadataMatchMethod where++import Amazonka.AppMesh.Types.MatchRange+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the method header to be matched.+--+-- /See:/ 'newGrpcMetadataMatchMethod' smart constructor.+data GrpcMetadataMatchMethod = GrpcMetadataMatchMethod'+  { -- | The exact method header to be matched on.+    exact :: Prelude.Maybe Prelude.Text,+    -- | The specified beginning characters of the method header to be matched+    -- on.+    prefix :: Prelude.Maybe Prelude.Text,+    range :: Prelude.Maybe MatchRange,+    -- | The regex used to match the method header.+    regex :: Prelude.Maybe Prelude.Text,+    -- | The specified ending characters of the method header to match on.+    suffix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcMetadataMatchMethod' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'exact', 'grpcMetadataMatchMethod_exact' - The exact method header to be matched on.+--+-- 'prefix', 'grpcMetadataMatchMethod_prefix' - The specified beginning characters of the method header to be matched+-- on.+--+-- 'range', 'grpcMetadataMatchMethod_range' - Undocumented member.+--+-- 'regex', 'grpcMetadataMatchMethod_regex' - The regex used to match the method header.+--+-- 'suffix', 'grpcMetadataMatchMethod_suffix' - The specified ending characters of the method header to match on.+newGrpcMetadataMatchMethod ::+  GrpcMetadataMatchMethod+newGrpcMetadataMatchMethod =+  GrpcMetadataMatchMethod'+    { exact = Prelude.Nothing,+      prefix = Prelude.Nothing,+      range = Prelude.Nothing,+      regex = Prelude.Nothing,+      suffix = Prelude.Nothing+    }++-- | The exact method header to be matched on.+grpcMetadataMatchMethod_exact :: Lens.Lens' GrpcMetadataMatchMethod (Prelude.Maybe Prelude.Text)+grpcMetadataMatchMethod_exact = Lens.lens (\GrpcMetadataMatchMethod' {exact} -> exact) (\s@GrpcMetadataMatchMethod' {} a -> s {exact = a} :: GrpcMetadataMatchMethod)++-- | The specified beginning characters of the method header to be matched+-- on.+grpcMetadataMatchMethod_prefix :: Lens.Lens' GrpcMetadataMatchMethod (Prelude.Maybe Prelude.Text)+grpcMetadataMatchMethod_prefix = Lens.lens (\GrpcMetadataMatchMethod' {prefix} -> prefix) (\s@GrpcMetadataMatchMethod' {} a -> s {prefix = a} :: GrpcMetadataMatchMethod)++-- | Undocumented member.+grpcMetadataMatchMethod_range :: Lens.Lens' GrpcMetadataMatchMethod (Prelude.Maybe MatchRange)+grpcMetadataMatchMethod_range = Lens.lens (\GrpcMetadataMatchMethod' {range} -> range) (\s@GrpcMetadataMatchMethod' {} a -> s {range = a} :: GrpcMetadataMatchMethod)++-- | The regex used to match the method header.+grpcMetadataMatchMethod_regex :: Lens.Lens' GrpcMetadataMatchMethod (Prelude.Maybe Prelude.Text)+grpcMetadataMatchMethod_regex = Lens.lens (\GrpcMetadataMatchMethod' {regex} -> regex) (\s@GrpcMetadataMatchMethod' {} a -> s {regex = a} :: GrpcMetadataMatchMethod)++-- | The specified ending characters of the method header to match on.+grpcMetadataMatchMethod_suffix :: Lens.Lens' GrpcMetadataMatchMethod (Prelude.Maybe Prelude.Text)+grpcMetadataMatchMethod_suffix = Lens.lens (\GrpcMetadataMatchMethod' {suffix} -> suffix) (\s@GrpcMetadataMatchMethod' {} a -> s {suffix = a} :: GrpcMetadataMatchMethod)++instance Data.FromJSON GrpcMetadataMatchMethod where+  parseJSON =+    Data.withObject+      "GrpcMetadataMatchMethod"+      ( \x ->+          GrpcMetadataMatchMethod'+            Prelude.<$> (x Data..:? "exact")+            Prelude.<*> (x Data..:? "prefix")+            Prelude.<*> (x Data..:? "range")+            Prelude.<*> (x Data..:? "regex")+            Prelude.<*> (x Data..:? "suffix")+      )++instance Prelude.Hashable GrpcMetadataMatchMethod where+  hashWithSalt _salt GrpcMetadataMatchMethod' {..} =+    _salt+      `Prelude.hashWithSalt` exact+      `Prelude.hashWithSalt` prefix+      `Prelude.hashWithSalt` range+      `Prelude.hashWithSalt` regex+      `Prelude.hashWithSalt` suffix++instance Prelude.NFData GrpcMetadataMatchMethod where+  rnf GrpcMetadataMatchMethod' {..} =+    Prelude.rnf exact+      `Prelude.seq` Prelude.rnf prefix+      `Prelude.seq` Prelude.rnf range+      `Prelude.seq` Prelude.rnf regex+      `Prelude.seq` Prelude.rnf suffix++instance Data.ToJSON GrpcMetadataMatchMethod where+  toJSON GrpcMetadataMatchMethod' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("exact" Data..=) Prelude.<$> exact,+            ("prefix" Data..=) Prelude.<$> prefix,+            ("range" Data..=) Prelude.<$> range,+            ("regex" Data..=) Prelude.<$> regex,+            ("suffix" Data..=) Prelude.<$> suffix+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcRetryPolicy.hs view
@@ -0,0 +1,181 @@+{-# 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.AppMesh.Types.GrpcRetryPolicy+-- 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.AppMesh.Types.GrpcRetryPolicy where++import Amazonka.AppMesh.Types.Duration+import Amazonka.AppMesh.Types.GrpcRetryPolicyEvent+import Amazonka.AppMesh.Types.TcpRetryPolicyEvent+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a retry policy. Specify at least one value for+-- at least one of the types of @RetryEvents@, a value for @maxRetries@,+-- and a value for @perRetryTimeout@. Both @server-error@ and+-- @gateway-error@ under @httpRetryEvents@ include the Envoy @reset@+-- policy. For more information on the @reset@ policy, see the+-- <https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on Envoy documentation>.+--+-- /See:/ 'newGrpcRetryPolicy' smart constructor.+data GrpcRetryPolicy = GrpcRetryPolicy'+  { -- | Specify at least one of the valid values.+    grpcRetryEvents :: Prelude.Maybe (Prelude.NonEmpty GrpcRetryPolicyEvent),+    -- | Specify at least one of the following values.+    --+    -- -   __server-error__ – HTTP status codes 500, 501, 502, 503, 504, 505,+    --     506, 507, 508, 510, and 511+    --+    -- -   __gateway-error__ – HTTP status codes 502, 503, and 504+    --+    -- -   __client-error__ – HTTP status code 409+    --+    -- -   __stream-error__ – Retry on refused stream+    httpRetryEvents :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | Specify a valid value. The event occurs before any processing of a+    -- request has started and is encountered when the upstream is temporarily+    -- or permanently unavailable.+    tcpRetryEvents :: Prelude.Maybe (Prelude.NonEmpty TcpRetryPolicyEvent),+    -- | The maximum number of retry attempts.+    maxRetries :: Prelude.Natural,+    -- | The timeout for each retry attempt.+    perRetryTimeout :: Duration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcRetryPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'grpcRetryEvents', 'grpcRetryPolicy_grpcRetryEvents' - Specify at least one of the valid values.+--+-- 'httpRetryEvents', 'grpcRetryPolicy_httpRetryEvents' - Specify at least one of the following values.+--+-- -   __server-error__ – HTTP status codes 500, 501, 502, 503, 504, 505,+--     506, 507, 508, 510, and 511+--+-- -   __gateway-error__ – HTTP status codes 502, 503, and 504+--+-- -   __client-error__ – HTTP status code 409+--+-- -   __stream-error__ – Retry on refused stream+--+-- 'tcpRetryEvents', 'grpcRetryPolicy_tcpRetryEvents' - Specify a valid value. The event occurs before any processing of a+-- request has started and is encountered when the upstream is temporarily+-- or permanently unavailable.+--+-- 'maxRetries', 'grpcRetryPolicy_maxRetries' - The maximum number of retry attempts.+--+-- 'perRetryTimeout', 'grpcRetryPolicy_perRetryTimeout' - The timeout for each retry attempt.+newGrpcRetryPolicy ::+  -- | 'maxRetries'+  Prelude.Natural ->+  -- | 'perRetryTimeout'+  Duration ->+  GrpcRetryPolicy+newGrpcRetryPolicy pMaxRetries_ pPerRetryTimeout_ =+  GrpcRetryPolicy'+    { grpcRetryEvents = Prelude.Nothing,+      httpRetryEvents = Prelude.Nothing,+      tcpRetryEvents = Prelude.Nothing,+      maxRetries = pMaxRetries_,+      perRetryTimeout = pPerRetryTimeout_+    }++-- | Specify at least one of the valid values.+grpcRetryPolicy_grpcRetryEvents :: Lens.Lens' GrpcRetryPolicy (Prelude.Maybe (Prelude.NonEmpty GrpcRetryPolicyEvent))+grpcRetryPolicy_grpcRetryEvents = Lens.lens (\GrpcRetryPolicy' {grpcRetryEvents} -> grpcRetryEvents) (\s@GrpcRetryPolicy' {} a -> s {grpcRetryEvents = a} :: GrpcRetryPolicy) Prelude.. Lens.mapping Lens.coerced++-- | Specify at least one of the following values.+--+-- -   __server-error__ – HTTP status codes 500, 501, 502, 503, 504, 505,+--     506, 507, 508, 510, and 511+--+-- -   __gateway-error__ – HTTP status codes 502, 503, and 504+--+-- -   __client-error__ – HTTP status code 409+--+-- -   __stream-error__ – Retry on refused stream+grpcRetryPolicy_httpRetryEvents :: Lens.Lens' GrpcRetryPolicy (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+grpcRetryPolicy_httpRetryEvents = Lens.lens (\GrpcRetryPolicy' {httpRetryEvents} -> httpRetryEvents) (\s@GrpcRetryPolicy' {} a -> s {httpRetryEvents = a} :: GrpcRetryPolicy) Prelude.. Lens.mapping Lens.coerced++-- | Specify a valid value. The event occurs before any processing of a+-- request has started and is encountered when the upstream is temporarily+-- or permanently unavailable.+grpcRetryPolicy_tcpRetryEvents :: Lens.Lens' GrpcRetryPolicy (Prelude.Maybe (Prelude.NonEmpty TcpRetryPolicyEvent))+grpcRetryPolicy_tcpRetryEvents = Lens.lens (\GrpcRetryPolicy' {tcpRetryEvents} -> tcpRetryEvents) (\s@GrpcRetryPolicy' {} a -> s {tcpRetryEvents = a} :: GrpcRetryPolicy) Prelude.. Lens.mapping Lens.coerced++-- | The maximum number of retry attempts.+grpcRetryPolicy_maxRetries :: Lens.Lens' GrpcRetryPolicy Prelude.Natural+grpcRetryPolicy_maxRetries = Lens.lens (\GrpcRetryPolicy' {maxRetries} -> maxRetries) (\s@GrpcRetryPolicy' {} a -> s {maxRetries = a} :: GrpcRetryPolicy)++-- | The timeout for each retry attempt.+grpcRetryPolicy_perRetryTimeout :: Lens.Lens' GrpcRetryPolicy Duration+grpcRetryPolicy_perRetryTimeout = Lens.lens (\GrpcRetryPolicy' {perRetryTimeout} -> perRetryTimeout) (\s@GrpcRetryPolicy' {} a -> s {perRetryTimeout = a} :: GrpcRetryPolicy)++instance Data.FromJSON GrpcRetryPolicy where+  parseJSON =+    Data.withObject+      "GrpcRetryPolicy"+      ( \x ->+          GrpcRetryPolicy'+            Prelude.<$> (x Data..:? "grpcRetryEvents")+            Prelude.<*> (x Data..:? "httpRetryEvents")+            Prelude.<*> (x Data..:? "tcpRetryEvents")+            Prelude.<*> (x Data..: "maxRetries")+            Prelude.<*> (x Data..: "perRetryTimeout")+      )++instance Prelude.Hashable GrpcRetryPolicy where+  hashWithSalt _salt GrpcRetryPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` grpcRetryEvents+      `Prelude.hashWithSalt` httpRetryEvents+      `Prelude.hashWithSalt` tcpRetryEvents+      `Prelude.hashWithSalt` maxRetries+      `Prelude.hashWithSalt` perRetryTimeout++instance Prelude.NFData GrpcRetryPolicy where+  rnf GrpcRetryPolicy' {..} =+    Prelude.rnf grpcRetryEvents+      `Prelude.seq` Prelude.rnf httpRetryEvents+      `Prelude.seq` Prelude.rnf tcpRetryEvents+      `Prelude.seq` Prelude.rnf maxRetries+      `Prelude.seq` Prelude.rnf perRetryTimeout++instance Data.ToJSON GrpcRetryPolicy where+  toJSON GrpcRetryPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("grpcRetryEvents" Data..=)+              Prelude.<$> grpcRetryEvents,+            ("httpRetryEvents" Data..=)+              Prelude.<$> httpRetryEvents,+            ("tcpRetryEvents" Data..=)+              Prelude.<$> tcpRetryEvents,+            Prelude.Just ("maxRetries" Data..= maxRetries),+            Prelude.Just+              ("perRetryTimeout" Data..= perRetryTimeout)+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcRetryPolicyEvent.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GrpcRetryPolicyEvent+-- 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.AppMesh.Types.GrpcRetryPolicyEvent+  ( GrpcRetryPolicyEvent+      ( ..,+        GrpcRetryPolicyEvent_Cancelled,+        GrpcRetryPolicyEvent_Deadline_exceeded,+        GrpcRetryPolicyEvent_Internal,+        GrpcRetryPolicyEvent_Resource_exhausted,+        GrpcRetryPolicyEvent_Unavailable+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype GrpcRetryPolicyEvent = GrpcRetryPolicyEvent'+  { fromGrpcRetryPolicyEvent ::+      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 GrpcRetryPolicyEvent_Cancelled :: GrpcRetryPolicyEvent+pattern GrpcRetryPolicyEvent_Cancelled = GrpcRetryPolicyEvent' "cancelled"++pattern GrpcRetryPolicyEvent_Deadline_exceeded :: GrpcRetryPolicyEvent+pattern GrpcRetryPolicyEvent_Deadline_exceeded = GrpcRetryPolicyEvent' "deadline-exceeded"++pattern GrpcRetryPolicyEvent_Internal :: GrpcRetryPolicyEvent+pattern GrpcRetryPolicyEvent_Internal = GrpcRetryPolicyEvent' "internal"++pattern GrpcRetryPolicyEvent_Resource_exhausted :: GrpcRetryPolicyEvent+pattern GrpcRetryPolicyEvent_Resource_exhausted = GrpcRetryPolicyEvent' "resource-exhausted"++pattern GrpcRetryPolicyEvent_Unavailable :: GrpcRetryPolicyEvent+pattern GrpcRetryPolicyEvent_Unavailable = GrpcRetryPolicyEvent' "unavailable"++{-# COMPLETE+  GrpcRetryPolicyEvent_Cancelled,+  GrpcRetryPolicyEvent_Deadline_exceeded,+  GrpcRetryPolicyEvent_Internal,+  GrpcRetryPolicyEvent_Resource_exhausted,+  GrpcRetryPolicyEvent_Unavailable,+  GrpcRetryPolicyEvent'+  #-}
+ gen/Amazonka/AppMesh/Types/GrpcRoute.hs view
@@ -0,0 +1,127 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GrpcRoute+-- 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.AppMesh.Types.GrpcRoute where++import Amazonka.AppMesh.Types.GrpcRetryPolicy+import Amazonka.AppMesh.Types.GrpcRouteAction+import Amazonka.AppMesh.Types.GrpcRouteMatch+import Amazonka.AppMesh.Types.GrpcTimeout+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a gRPC route type.+--+-- /See:/ 'newGrpcRoute' smart constructor.+data GrpcRoute = GrpcRoute'+  { -- | An object that represents a retry policy.+    retryPolicy :: Prelude.Maybe GrpcRetryPolicy,+    -- | An object that represents types of timeouts.+    timeout :: Prelude.Maybe GrpcTimeout,+    -- | An object that represents the action to take if a match is determined.+    action :: GrpcRouteAction,+    -- | An object that represents the criteria for determining a request match.+    match :: GrpcRouteMatch+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'retryPolicy', 'grpcRoute_retryPolicy' - An object that represents a retry policy.+--+-- 'timeout', 'grpcRoute_timeout' - An object that represents types of timeouts.+--+-- 'action', 'grpcRoute_action' - An object that represents the action to take if a match is determined.+--+-- 'match', 'grpcRoute_match' - An object that represents the criteria for determining a request match.+newGrpcRoute ::+  -- | 'action'+  GrpcRouteAction ->+  -- | 'match'+  GrpcRouteMatch ->+  GrpcRoute+newGrpcRoute pAction_ pMatch_ =+  GrpcRoute'+    { retryPolicy = Prelude.Nothing,+      timeout = Prelude.Nothing,+      action = pAction_,+      match = pMatch_+    }++-- | An object that represents a retry policy.+grpcRoute_retryPolicy :: Lens.Lens' GrpcRoute (Prelude.Maybe GrpcRetryPolicy)+grpcRoute_retryPolicy = Lens.lens (\GrpcRoute' {retryPolicy} -> retryPolicy) (\s@GrpcRoute' {} a -> s {retryPolicy = a} :: GrpcRoute)++-- | An object that represents types of timeouts.+grpcRoute_timeout :: Lens.Lens' GrpcRoute (Prelude.Maybe GrpcTimeout)+grpcRoute_timeout = Lens.lens (\GrpcRoute' {timeout} -> timeout) (\s@GrpcRoute' {} a -> s {timeout = a} :: GrpcRoute)++-- | An object that represents the action to take if a match is determined.+grpcRoute_action :: Lens.Lens' GrpcRoute GrpcRouteAction+grpcRoute_action = Lens.lens (\GrpcRoute' {action} -> action) (\s@GrpcRoute' {} a -> s {action = a} :: GrpcRoute)++-- | An object that represents the criteria for determining a request match.+grpcRoute_match :: Lens.Lens' GrpcRoute GrpcRouteMatch+grpcRoute_match = Lens.lens (\GrpcRoute' {match} -> match) (\s@GrpcRoute' {} a -> s {match = a} :: GrpcRoute)++instance Data.FromJSON GrpcRoute where+  parseJSON =+    Data.withObject+      "GrpcRoute"+      ( \x ->+          GrpcRoute'+            Prelude.<$> (x Data..:? "retryPolicy")+            Prelude.<*> (x Data..:? "timeout")+            Prelude.<*> (x Data..: "action")+            Prelude.<*> (x Data..: "match")+      )++instance Prelude.Hashable GrpcRoute where+  hashWithSalt _salt GrpcRoute' {..} =+    _salt+      `Prelude.hashWithSalt` retryPolicy+      `Prelude.hashWithSalt` timeout+      `Prelude.hashWithSalt` action+      `Prelude.hashWithSalt` match++instance Prelude.NFData GrpcRoute where+  rnf GrpcRoute' {..} =+    Prelude.rnf retryPolicy+      `Prelude.seq` Prelude.rnf timeout+      `Prelude.seq` Prelude.rnf action+      `Prelude.seq` Prelude.rnf match++instance Data.ToJSON GrpcRoute where+  toJSON GrpcRoute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("retryPolicy" Data..=) Prelude.<$> retryPolicy,+            ("timeout" Data..=) Prelude.<$> timeout,+            Prelude.Just ("action" Data..= action),+            Prelude.Just ("match" Data..= match)+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcRouteAction.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.AppMesh.Types.GrpcRouteAction+-- 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.AppMesh.Types.GrpcRouteAction where++import Amazonka.AppMesh.Types.WeightedTarget+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the action to take if a match is determined.+--+-- /See:/ 'newGrpcRouteAction' smart constructor.+data GrpcRouteAction = GrpcRouteAction'+  { -- | An object that represents the targets that traffic is routed to when a+    -- request matches the route.+    weightedTargets :: Prelude.NonEmpty WeightedTarget+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcRouteAction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'weightedTargets', 'grpcRouteAction_weightedTargets' - An object that represents the targets that traffic is routed to when a+-- request matches the route.+newGrpcRouteAction ::+  -- | 'weightedTargets'+  Prelude.NonEmpty WeightedTarget ->+  GrpcRouteAction+newGrpcRouteAction pWeightedTargets_ =+  GrpcRouteAction'+    { weightedTargets =+        Lens.coerced Lens.# pWeightedTargets_+    }++-- | An object that represents the targets that traffic is routed to when a+-- request matches the route.+grpcRouteAction_weightedTargets :: Lens.Lens' GrpcRouteAction (Prelude.NonEmpty WeightedTarget)+grpcRouteAction_weightedTargets = Lens.lens (\GrpcRouteAction' {weightedTargets} -> weightedTargets) (\s@GrpcRouteAction' {} a -> s {weightedTargets = a} :: GrpcRouteAction) Prelude.. Lens.coerced++instance Data.FromJSON GrpcRouteAction where+  parseJSON =+    Data.withObject+      "GrpcRouteAction"+      ( \x ->+          GrpcRouteAction'+            Prelude.<$> (x Data..: "weightedTargets")+      )++instance Prelude.Hashable GrpcRouteAction where+  hashWithSalt _salt GrpcRouteAction' {..} =+    _salt `Prelude.hashWithSalt` weightedTargets++instance Prelude.NFData GrpcRouteAction where+  rnf GrpcRouteAction' {..} =+    Prelude.rnf weightedTargets++instance Data.ToJSON GrpcRouteAction where+  toJSON GrpcRouteAction' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("weightedTargets" Data..= weightedTargets)+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcRouteMatch.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.AppMesh.Types.GrpcRouteMatch+-- 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.AppMesh.Types.GrpcRouteMatch where++import Amazonka.AppMesh.Types.GrpcRouteMetadata+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the criteria for determining a request match.+--+-- /See:/ 'newGrpcRouteMatch' smart constructor.+data GrpcRouteMatch = GrpcRouteMatch'+  { -- | An object that represents the data to match from the request.+    metadata :: Prelude.Maybe (Prelude.NonEmpty GrpcRouteMetadata),+    -- | The method name to match from the request. If you specify a name, you+    -- must also specify a @serviceName@.+    methodName :: Prelude.Maybe Prelude.Text,+    -- | The port number to match on.+    port :: Prelude.Maybe Prelude.Natural,+    -- | The fully qualified domain name for the service to match from the+    -- request.+    serviceName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcRouteMatch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'metadata', 'grpcRouteMatch_metadata' - An object that represents the data to match from the request.+--+-- 'methodName', 'grpcRouteMatch_methodName' - The method name to match from the request. If you specify a name, you+-- must also specify a @serviceName@.+--+-- 'port', 'grpcRouteMatch_port' - The port number to match on.+--+-- 'serviceName', 'grpcRouteMatch_serviceName' - The fully qualified domain name for the service to match from the+-- request.+newGrpcRouteMatch ::+  GrpcRouteMatch+newGrpcRouteMatch =+  GrpcRouteMatch'+    { metadata = Prelude.Nothing,+      methodName = Prelude.Nothing,+      port = Prelude.Nothing,+      serviceName = Prelude.Nothing+    }++-- | An object that represents the data to match from the request.+grpcRouteMatch_metadata :: Lens.Lens' GrpcRouteMatch (Prelude.Maybe (Prelude.NonEmpty GrpcRouteMetadata))+grpcRouteMatch_metadata = Lens.lens (\GrpcRouteMatch' {metadata} -> metadata) (\s@GrpcRouteMatch' {} a -> s {metadata = a} :: GrpcRouteMatch) Prelude.. Lens.mapping Lens.coerced++-- | The method name to match from the request. If you specify a name, you+-- must also specify a @serviceName@.+grpcRouteMatch_methodName :: Lens.Lens' GrpcRouteMatch (Prelude.Maybe Prelude.Text)+grpcRouteMatch_methodName = Lens.lens (\GrpcRouteMatch' {methodName} -> methodName) (\s@GrpcRouteMatch' {} a -> s {methodName = a} :: GrpcRouteMatch)++-- | The port number to match on.+grpcRouteMatch_port :: Lens.Lens' GrpcRouteMatch (Prelude.Maybe Prelude.Natural)+grpcRouteMatch_port = Lens.lens (\GrpcRouteMatch' {port} -> port) (\s@GrpcRouteMatch' {} a -> s {port = a} :: GrpcRouteMatch)++-- | The fully qualified domain name for the service to match from the+-- request.+grpcRouteMatch_serviceName :: Lens.Lens' GrpcRouteMatch (Prelude.Maybe Prelude.Text)+grpcRouteMatch_serviceName = Lens.lens (\GrpcRouteMatch' {serviceName} -> serviceName) (\s@GrpcRouteMatch' {} a -> s {serviceName = a} :: GrpcRouteMatch)++instance Data.FromJSON GrpcRouteMatch where+  parseJSON =+    Data.withObject+      "GrpcRouteMatch"+      ( \x ->+          GrpcRouteMatch'+            Prelude.<$> (x Data..:? "metadata")+            Prelude.<*> (x Data..:? "methodName")+            Prelude.<*> (x Data..:? "port")+            Prelude.<*> (x Data..:? "serviceName")+      )++instance Prelude.Hashable GrpcRouteMatch where+  hashWithSalt _salt GrpcRouteMatch' {..} =+    _salt+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` methodName+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` serviceName++instance Prelude.NFData GrpcRouteMatch where+  rnf GrpcRouteMatch' {..} =+    Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf methodName+      `Prelude.seq` Prelude.rnf port+      `Prelude.seq` Prelude.rnf serviceName++instance Data.ToJSON GrpcRouteMatch where+  toJSON GrpcRouteMatch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("metadata" Data..=) Prelude.<$> metadata,+            ("methodName" Data..=) Prelude.<$> methodName,+            ("port" Data..=) Prelude.<$> port,+            ("serviceName" Data..=) Prelude.<$> serviceName+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcRouteMetadata.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GrpcRouteMetadata+-- 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.AppMesh.Types.GrpcRouteMetadata where++import Amazonka.AppMesh.Types.GrpcRouteMetadataMatchMethod+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the match metadata for the route.+--+-- /See:/ 'newGrpcRouteMetadata' smart constructor.+data GrpcRouteMetadata = GrpcRouteMetadata'+  { -- | Specify @True@ to match anything except the match criteria. The default+    -- value is @False@.+    invert :: Prelude.Maybe Prelude.Bool,+    -- | An object that represents the data to match from the request.+    match :: Prelude.Maybe GrpcRouteMetadataMatchMethod,+    -- | The name of the route.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcRouteMetadata' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'invert', 'grpcRouteMetadata_invert' - Specify @True@ to match anything except the match criteria. The default+-- value is @False@.+--+-- 'match', 'grpcRouteMetadata_match' - An object that represents the data to match from the request.+--+-- 'name', 'grpcRouteMetadata_name' - The name of the route.+newGrpcRouteMetadata ::+  -- | 'name'+  Prelude.Text ->+  GrpcRouteMetadata+newGrpcRouteMetadata pName_ =+  GrpcRouteMetadata'+    { invert = Prelude.Nothing,+      match = Prelude.Nothing,+      name = pName_+    }++-- | Specify @True@ to match anything except the match criteria. The default+-- value is @False@.+grpcRouteMetadata_invert :: Lens.Lens' GrpcRouteMetadata (Prelude.Maybe Prelude.Bool)+grpcRouteMetadata_invert = Lens.lens (\GrpcRouteMetadata' {invert} -> invert) (\s@GrpcRouteMetadata' {} a -> s {invert = a} :: GrpcRouteMetadata)++-- | An object that represents the data to match from the request.+grpcRouteMetadata_match :: Lens.Lens' GrpcRouteMetadata (Prelude.Maybe GrpcRouteMetadataMatchMethod)+grpcRouteMetadata_match = Lens.lens (\GrpcRouteMetadata' {match} -> match) (\s@GrpcRouteMetadata' {} a -> s {match = a} :: GrpcRouteMetadata)++-- | The name of the route.+grpcRouteMetadata_name :: Lens.Lens' GrpcRouteMetadata Prelude.Text+grpcRouteMetadata_name = Lens.lens (\GrpcRouteMetadata' {name} -> name) (\s@GrpcRouteMetadata' {} a -> s {name = a} :: GrpcRouteMetadata)++instance Data.FromJSON GrpcRouteMetadata where+  parseJSON =+    Data.withObject+      "GrpcRouteMetadata"+      ( \x ->+          GrpcRouteMetadata'+            Prelude.<$> (x Data..:? "invert")+            Prelude.<*> (x Data..:? "match")+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable GrpcRouteMetadata where+  hashWithSalt _salt GrpcRouteMetadata' {..} =+    _salt+      `Prelude.hashWithSalt` invert+      `Prelude.hashWithSalt` match+      `Prelude.hashWithSalt` name++instance Prelude.NFData GrpcRouteMetadata where+  rnf GrpcRouteMetadata' {..} =+    Prelude.rnf invert+      `Prelude.seq` Prelude.rnf match+      `Prelude.seq` Prelude.rnf name++instance Data.ToJSON GrpcRouteMetadata where+  toJSON GrpcRouteMetadata' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("invert" Data..=) Prelude.<$> invert,+            ("match" Data..=) Prelude.<$> match,+            Prelude.Just ("name" Data..= name)+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcRouteMetadataMatchMethod.hs view
@@ -0,0 +1,138 @@+{-# 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.AppMesh.Types.GrpcRouteMetadataMatchMethod+-- 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.AppMesh.Types.GrpcRouteMetadataMatchMethod where++import Amazonka.AppMesh.Types.MatchRange+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the match method. Specify one of the match+-- values.+--+-- /See:/ 'newGrpcRouteMetadataMatchMethod' smart constructor.+data GrpcRouteMetadataMatchMethod = GrpcRouteMetadataMatchMethod'+  { -- | The value sent by the client must match the specified value exactly.+    exact :: Prelude.Maybe Prelude.Text,+    -- | The value sent by the client must begin with the specified characters.+    prefix :: Prelude.Maybe Prelude.Text,+    -- | An object that represents the range of values to match on.+    range :: Prelude.Maybe MatchRange,+    -- | The value sent by the client must include the specified characters.+    regex :: Prelude.Maybe Prelude.Text,+    -- | The value sent by the client must end with the specified characters.+    suffix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcRouteMetadataMatchMethod' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'exact', 'grpcRouteMetadataMatchMethod_exact' - The value sent by the client must match the specified value exactly.+--+-- 'prefix', 'grpcRouteMetadataMatchMethod_prefix' - The value sent by the client must begin with the specified characters.+--+-- 'range', 'grpcRouteMetadataMatchMethod_range' - An object that represents the range of values to match on.+--+-- 'regex', 'grpcRouteMetadataMatchMethod_regex' - The value sent by the client must include the specified characters.+--+-- 'suffix', 'grpcRouteMetadataMatchMethod_suffix' - The value sent by the client must end with the specified characters.+newGrpcRouteMetadataMatchMethod ::+  GrpcRouteMetadataMatchMethod+newGrpcRouteMetadataMatchMethod =+  GrpcRouteMetadataMatchMethod'+    { exact =+        Prelude.Nothing,+      prefix = Prelude.Nothing,+      range = Prelude.Nothing,+      regex = Prelude.Nothing,+      suffix = Prelude.Nothing+    }++-- | The value sent by the client must match the specified value exactly.+grpcRouteMetadataMatchMethod_exact :: Lens.Lens' GrpcRouteMetadataMatchMethod (Prelude.Maybe Prelude.Text)+grpcRouteMetadataMatchMethod_exact = Lens.lens (\GrpcRouteMetadataMatchMethod' {exact} -> exact) (\s@GrpcRouteMetadataMatchMethod' {} a -> s {exact = a} :: GrpcRouteMetadataMatchMethod)++-- | The value sent by the client must begin with the specified characters.+grpcRouteMetadataMatchMethod_prefix :: Lens.Lens' GrpcRouteMetadataMatchMethod (Prelude.Maybe Prelude.Text)+grpcRouteMetadataMatchMethod_prefix = Lens.lens (\GrpcRouteMetadataMatchMethod' {prefix} -> prefix) (\s@GrpcRouteMetadataMatchMethod' {} a -> s {prefix = a} :: GrpcRouteMetadataMatchMethod)++-- | An object that represents the range of values to match on.+grpcRouteMetadataMatchMethod_range :: Lens.Lens' GrpcRouteMetadataMatchMethod (Prelude.Maybe MatchRange)+grpcRouteMetadataMatchMethod_range = Lens.lens (\GrpcRouteMetadataMatchMethod' {range} -> range) (\s@GrpcRouteMetadataMatchMethod' {} a -> s {range = a} :: GrpcRouteMetadataMatchMethod)++-- | The value sent by the client must include the specified characters.+grpcRouteMetadataMatchMethod_regex :: Lens.Lens' GrpcRouteMetadataMatchMethod (Prelude.Maybe Prelude.Text)+grpcRouteMetadataMatchMethod_regex = Lens.lens (\GrpcRouteMetadataMatchMethod' {regex} -> regex) (\s@GrpcRouteMetadataMatchMethod' {} a -> s {regex = a} :: GrpcRouteMetadataMatchMethod)++-- | The value sent by the client must end with the specified characters.+grpcRouteMetadataMatchMethod_suffix :: Lens.Lens' GrpcRouteMetadataMatchMethod (Prelude.Maybe Prelude.Text)+grpcRouteMetadataMatchMethod_suffix = Lens.lens (\GrpcRouteMetadataMatchMethod' {suffix} -> suffix) (\s@GrpcRouteMetadataMatchMethod' {} a -> s {suffix = a} :: GrpcRouteMetadataMatchMethod)++instance Data.FromJSON GrpcRouteMetadataMatchMethod where+  parseJSON =+    Data.withObject+      "GrpcRouteMetadataMatchMethod"+      ( \x ->+          GrpcRouteMetadataMatchMethod'+            Prelude.<$> (x Data..:? "exact")+            Prelude.<*> (x Data..:? "prefix")+            Prelude.<*> (x Data..:? "range")+            Prelude.<*> (x Data..:? "regex")+            Prelude.<*> (x Data..:? "suffix")+      )++instance+  Prelude.Hashable+    GrpcRouteMetadataMatchMethod+  where+  hashWithSalt _salt GrpcRouteMetadataMatchMethod' {..} =+    _salt+      `Prelude.hashWithSalt` exact+      `Prelude.hashWithSalt` prefix+      `Prelude.hashWithSalt` range+      `Prelude.hashWithSalt` regex+      `Prelude.hashWithSalt` suffix++instance Prelude.NFData GrpcRouteMetadataMatchMethod where+  rnf GrpcRouteMetadataMatchMethod' {..} =+    Prelude.rnf exact+      `Prelude.seq` Prelude.rnf prefix+      `Prelude.seq` Prelude.rnf range+      `Prelude.seq` Prelude.rnf regex+      `Prelude.seq` Prelude.rnf suffix++instance Data.ToJSON GrpcRouteMetadataMatchMethod where+  toJSON GrpcRouteMetadataMatchMethod' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("exact" Data..=) Prelude.<$> exact,+            ("prefix" Data..=) Prelude.<$> prefix,+            ("range" Data..=) Prelude.<$> range,+            ("regex" Data..=) Prelude.<$> regex,+            ("suffix" Data..=) Prelude.<$> suffix+          ]+      )
+ gen/Amazonka/AppMesh/Types/GrpcTimeout.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.GrpcTimeout+-- 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.AppMesh.Types.GrpcTimeout where++import Amazonka.AppMesh.Types.Duration+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents types of timeouts.+--+-- /See:/ 'newGrpcTimeout' smart constructor.+data GrpcTimeout = GrpcTimeout'+  { -- | An object that represents an idle timeout. An idle timeout bounds the+    -- amount of time that a connection may be idle. The default value is none.+    idle :: Prelude.Maybe Duration,+    -- | An object that represents a per request timeout. The default value is 15+    -- seconds. If you set a higher timeout, then make sure that the higher+    -- value is set for each App Mesh resource in a conversation. For example,+    -- if a virtual node backend uses a virtual router provider to route to+    -- another virtual node, then the timeout should be greater than 15 seconds+    -- for the source and destination virtual node and the route.+    perRequest :: Prelude.Maybe Duration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GrpcTimeout' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'idle', 'grpcTimeout_idle' - An object that represents an idle timeout. An idle timeout bounds the+-- amount of time that a connection may be idle. The default value is none.+--+-- 'perRequest', 'grpcTimeout_perRequest' - An object that represents a per request timeout. The default value is 15+-- seconds. If you set a higher timeout, then make sure that the higher+-- value is set for each App Mesh resource in a conversation. For example,+-- if a virtual node backend uses a virtual router provider to route to+-- another virtual node, then the timeout should be greater than 15 seconds+-- for the source and destination virtual node and the route.+newGrpcTimeout ::+  GrpcTimeout+newGrpcTimeout =+  GrpcTimeout'+    { idle = Prelude.Nothing,+      perRequest = Prelude.Nothing+    }++-- | An object that represents an idle timeout. An idle timeout bounds the+-- amount of time that a connection may be idle. The default value is none.+grpcTimeout_idle :: Lens.Lens' GrpcTimeout (Prelude.Maybe Duration)+grpcTimeout_idle = Lens.lens (\GrpcTimeout' {idle} -> idle) (\s@GrpcTimeout' {} a -> s {idle = a} :: GrpcTimeout)++-- | An object that represents a per request timeout. The default value is 15+-- seconds. If you set a higher timeout, then make sure that the higher+-- value is set for each App Mesh resource in a conversation. For example,+-- if a virtual node backend uses a virtual router provider to route to+-- another virtual node, then the timeout should be greater than 15 seconds+-- for the source and destination virtual node and the route.+grpcTimeout_perRequest :: Lens.Lens' GrpcTimeout (Prelude.Maybe Duration)+grpcTimeout_perRequest = Lens.lens (\GrpcTimeout' {perRequest} -> perRequest) (\s@GrpcTimeout' {} a -> s {perRequest = a} :: GrpcTimeout)++instance Data.FromJSON GrpcTimeout where+  parseJSON =+    Data.withObject+      "GrpcTimeout"+      ( \x ->+          GrpcTimeout'+            Prelude.<$> (x Data..:? "idle")+            Prelude.<*> (x Data..:? "perRequest")+      )++instance Prelude.Hashable GrpcTimeout where+  hashWithSalt _salt GrpcTimeout' {..} =+    _salt+      `Prelude.hashWithSalt` idle+      `Prelude.hashWithSalt` perRequest++instance Prelude.NFData GrpcTimeout where+  rnf GrpcTimeout' {..} =+    Prelude.rnf idle+      `Prelude.seq` Prelude.rnf perRequest++instance Data.ToJSON GrpcTimeout where+  toJSON GrpcTimeout' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("idle" Data..=) Prelude.<$> idle,+            ("perRequest" Data..=) Prelude.<$> perRequest+          ]+      )
+ gen/Amazonka/AppMesh/Types/HeaderMatchMethod.hs view
@@ -0,0 +1,134 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HeaderMatchMethod+-- 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.AppMesh.Types.HeaderMatchMethod where++import Amazonka.AppMesh.Types.MatchRange+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the method and value to match with the header+-- value sent in a request. Specify one match method.+--+-- /See:/ 'newHeaderMatchMethod' smart constructor.+data HeaderMatchMethod = HeaderMatchMethod'+  { -- | The value sent by the client must match the specified value exactly.+    exact :: Prelude.Maybe Prelude.Text,+    -- | The value sent by the client must begin with the specified characters.+    prefix :: Prelude.Maybe Prelude.Text,+    -- | An object that represents the range of values to match on.+    range :: Prelude.Maybe MatchRange,+    -- | The value sent by the client must include the specified characters.+    regex :: Prelude.Maybe Prelude.Text,+    -- | The value sent by the client must end with the specified characters.+    suffix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HeaderMatchMethod' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'exact', 'headerMatchMethod_exact' - The value sent by the client must match the specified value exactly.+--+-- 'prefix', 'headerMatchMethod_prefix' - The value sent by the client must begin with the specified characters.+--+-- 'range', 'headerMatchMethod_range' - An object that represents the range of values to match on.+--+-- 'regex', 'headerMatchMethod_regex' - The value sent by the client must include the specified characters.+--+-- 'suffix', 'headerMatchMethod_suffix' - The value sent by the client must end with the specified characters.+newHeaderMatchMethod ::+  HeaderMatchMethod+newHeaderMatchMethod =+  HeaderMatchMethod'+    { exact = Prelude.Nothing,+      prefix = Prelude.Nothing,+      range = Prelude.Nothing,+      regex = Prelude.Nothing,+      suffix = Prelude.Nothing+    }++-- | The value sent by the client must match the specified value exactly.+headerMatchMethod_exact :: Lens.Lens' HeaderMatchMethod (Prelude.Maybe Prelude.Text)+headerMatchMethod_exact = Lens.lens (\HeaderMatchMethod' {exact} -> exact) (\s@HeaderMatchMethod' {} a -> s {exact = a} :: HeaderMatchMethod)++-- | The value sent by the client must begin with the specified characters.+headerMatchMethod_prefix :: Lens.Lens' HeaderMatchMethod (Prelude.Maybe Prelude.Text)+headerMatchMethod_prefix = Lens.lens (\HeaderMatchMethod' {prefix} -> prefix) (\s@HeaderMatchMethod' {} a -> s {prefix = a} :: HeaderMatchMethod)++-- | An object that represents the range of values to match on.+headerMatchMethod_range :: Lens.Lens' HeaderMatchMethod (Prelude.Maybe MatchRange)+headerMatchMethod_range = Lens.lens (\HeaderMatchMethod' {range} -> range) (\s@HeaderMatchMethod' {} a -> s {range = a} :: HeaderMatchMethod)++-- | The value sent by the client must include the specified characters.+headerMatchMethod_regex :: Lens.Lens' HeaderMatchMethod (Prelude.Maybe Prelude.Text)+headerMatchMethod_regex = Lens.lens (\HeaderMatchMethod' {regex} -> regex) (\s@HeaderMatchMethod' {} a -> s {regex = a} :: HeaderMatchMethod)++-- | The value sent by the client must end with the specified characters.+headerMatchMethod_suffix :: Lens.Lens' HeaderMatchMethod (Prelude.Maybe Prelude.Text)+headerMatchMethod_suffix = Lens.lens (\HeaderMatchMethod' {suffix} -> suffix) (\s@HeaderMatchMethod' {} a -> s {suffix = a} :: HeaderMatchMethod)++instance Data.FromJSON HeaderMatchMethod where+  parseJSON =+    Data.withObject+      "HeaderMatchMethod"+      ( \x ->+          HeaderMatchMethod'+            Prelude.<$> (x Data..:? "exact")+            Prelude.<*> (x Data..:? "prefix")+            Prelude.<*> (x Data..:? "range")+            Prelude.<*> (x Data..:? "regex")+            Prelude.<*> (x Data..:? "suffix")+      )++instance Prelude.Hashable HeaderMatchMethod where+  hashWithSalt _salt HeaderMatchMethod' {..} =+    _salt+      `Prelude.hashWithSalt` exact+      `Prelude.hashWithSalt` prefix+      `Prelude.hashWithSalt` range+      `Prelude.hashWithSalt` regex+      `Prelude.hashWithSalt` suffix++instance Prelude.NFData HeaderMatchMethod where+  rnf HeaderMatchMethod' {..} =+    Prelude.rnf exact+      `Prelude.seq` Prelude.rnf prefix+      `Prelude.seq` Prelude.rnf range+      `Prelude.seq` Prelude.rnf regex+      `Prelude.seq` Prelude.rnf suffix++instance Data.ToJSON HeaderMatchMethod where+  toJSON HeaderMatchMethod' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("exact" Data..=) Prelude.<$> exact,+            ("prefix" Data..=) Prelude.<$> prefix,+            ("range" Data..=) Prelude.<$> range,+            ("regex" Data..=) Prelude.<$> regex,+            ("suffix" Data..=) Prelude.<$> suffix+          ]+      )
+ gen/Amazonka/AppMesh/Types/HealthCheckPolicy.hs view
@@ -0,0 +1,202 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HealthCheckPolicy+-- 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.AppMesh.Types.HealthCheckPolicy where++import Amazonka.AppMesh.Types.PortProtocol+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the health check policy for a virtual node\'s+-- listener.+--+-- /See:/ 'newHealthCheckPolicy' smart constructor.+data HealthCheckPolicy = HealthCheckPolicy'+  { -- | The destination path for the health check request. This value is only+    -- used if the specified protocol is HTTP or HTTP\/2. For any other+    -- protocol, this value is ignored.+    path :: Prelude.Maybe Prelude.Text,+    -- | The destination port for the health check request. This port must match+    -- the port defined in the PortMapping for the listener.+    port :: Prelude.Maybe Prelude.Natural,+    -- | The number of consecutive successful health checks that must occur+    -- before declaring listener healthy.+    healthyThreshold :: Prelude.Natural,+    -- | The time period in milliseconds between each health check execution.+    intervalMillis :: Prelude.Natural,+    -- | The protocol for the health check request. If you specify @grpc@, then+    -- your service must conform to the+    -- <https://github.com/grpc/grpc/blob/master/doc/health-checking.md GRPC Health Checking Protocol>.+    protocol :: PortProtocol,+    -- | The amount of time to wait when receiving a response from the health+    -- check, in milliseconds.+    timeoutMillis :: Prelude.Natural,+    -- | The number of consecutive failed health checks that must occur before+    -- declaring a virtual node unhealthy.+    unhealthyThreshold :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HealthCheckPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'path', 'healthCheckPolicy_path' - The destination path for the health check request. This value is only+-- used if the specified protocol is HTTP or HTTP\/2. For any other+-- protocol, this value is ignored.+--+-- 'port', 'healthCheckPolicy_port' - The destination port for the health check request. This port must match+-- the port defined in the PortMapping for the listener.+--+-- 'healthyThreshold', 'healthCheckPolicy_healthyThreshold' - The number of consecutive successful health checks that must occur+-- before declaring listener healthy.+--+-- 'intervalMillis', 'healthCheckPolicy_intervalMillis' - The time period in milliseconds between each health check execution.+--+-- 'protocol', 'healthCheckPolicy_protocol' - The protocol for the health check request. If you specify @grpc@, then+-- your service must conform to the+-- <https://github.com/grpc/grpc/blob/master/doc/health-checking.md GRPC Health Checking Protocol>.+--+-- 'timeoutMillis', 'healthCheckPolicy_timeoutMillis' - The amount of time to wait when receiving a response from the health+-- check, in milliseconds.+--+-- 'unhealthyThreshold', 'healthCheckPolicy_unhealthyThreshold' - The number of consecutive failed health checks that must occur before+-- declaring a virtual node unhealthy.+newHealthCheckPolicy ::+  -- | 'healthyThreshold'+  Prelude.Natural ->+  -- | 'intervalMillis'+  Prelude.Natural ->+  -- | 'protocol'+  PortProtocol ->+  -- | 'timeoutMillis'+  Prelude.Natural ->+  -- | 'unhealthyThreshold'+  Prelude.Natural ->+  HealthCheckPolicy+newHealthCheckPolicy+  pHealthyThreshold_+  pIntervalMillis_+  pProtocol_+  pTimeoutMillis_+  pUnhealthyThreshold_ =+    HealthCheckPolicy'+      { path = Prelude.Nothing,+        port = Prelude.Nothing,+        healthyThreshold = pHealthyThreshold_,+        intervalMillis = pIntervalMillis_,+        protocol = pProtocol_,+        timeoutMillis = pTimeoutMillis_,+        unhealthyThreshold = pUnhealthyThreshold_+      }++-- | The destination path for the health check request. This value is only+-- used if the specified protocol is HTTP or HTTP\/2. For any other+-- protocol, this value is ignored.+healthCheckPolicy_path :: Lens.Lens' HealthCheckPolicy (Prelude.Maybe Prelude.Text)+healthCheckPolicy_path = Lens.lens (\HealthCheckPolicy' {path} -> path) (\s@HealthCheckPolicy' {} a -> s {path = a} :: HealthCheckPolicy)++-- | The destination port for the health check request. This port must match+-- the port defined in the PortMapping for the listener.+healthCheckPolicy_port :: Lens.Lens' HealthCheckPolicy (Prelude.Maybe Prelude.Natural)+healthCheckPolicy_port = Lens.lens (\HealthCheckPolicy' {port} -> port) (\s@HealthCheckPolicy' {} a -> s {port = a} :: HealthCheckPolicy)++-- | The number of consecutive successful health checks that must occur+-- before declaring listener healthy.+healthCheckPolicy_healthyThreshold :: Lens.Lens' HealthCheckPolicy Prelude.Natural+healthCheckPolicy_healthyThreshold = Lens.lens (\HealthCheckPolicy' {healthyThreshold} -> healthyThreshold) (\s@HealthCheckPolicy' {} a -> s {healthyThreshold = a} :: HealthCheckPolicy)++-- | The time period in milliseconds between each health check execution.+healthCheckPolicy_intervalMillis :: Lens.Lens' HealthCheckPolicy Prelude.Natural+healthCheckPolicy_intervalMillis = Lens.lens (\HealthCheckPolicy' {intervalMillis} -> intervalMillis) (\s@HealthCheckPolicy' {} a -> s {intervalMillis = a} :: HealthCheckPolicy)++-- | The protocol for the health check request. If you specify @grpc@, then+-- your service must conform to the+-- <https://github.com/grpc/grpc/blob/master/doc/health-checking.md GRPC Health Checking Protocol>.+healthCheckPolicy_protocol :: Lens.Lens' HealthCheckPolicy PortProtocol+healthCheckPolicy_protocol = Lens.lens (\HealthCheckPolicy' {protocol} -> protocol) (\s@HealthCheckPolicy' {} a -> s {protocol = a} :: HealthCheckPolicy)++-- | The amount of time to wait when receiving a response from the health+-- check, in milliseconds.+healthCheckPolicy_timeoutMillis :: Lens.Lens' HealthCheckPolicy Prelude.Natural+healthCheckPolicy_timeoutMillis = Lens.lens (\HealthCheckPolicy' {timeoutMillis} -> timeoutMillis) (\s@HealthCheckPolicy' {} a -> s {timeoutMillis = a} :: HealthCheckPolicy)++-- | The number of consecutive failed health checks that must occur before+-- declaring a virtual node unhealthy.+healthCheckPolicy_unhealthyThreshold :: Lens.Lens' HealthCheckPolicy Prelude.Natural+healthCheckPolicy_unhealthyThreshold = Lens.lens (\HealthCheckPolicy' {unhealthyThreshold} -> unhealthyThreshold) (\s@HealthCheckPolicy' {} a -> s {unhealthyThreshold = a} :: HealthCheckPolicy)++instance Data.FromJSON HealthCheckPolicy where+  parseJSON =+    Data.withObject+      "HealthCheckPolicy"+      ( \x ->+          HealthCheckPolicy'+            Prelude.<$> (x Data..:? "path")+            Prelude.<*> (x Data..:? "port")+            Prelude.<*> (x Data..: "healthyThreshold")+            Prelude.<*> (x Data..: "intervalMillis")+            Prelude.<*> (x Data..: "protocol")+            Prelude.<*> (x Data..: "timeoutMillis")+            Prelude.<*> (x Data..: "unhealthyThreshold")+      )++instance Prelude.Hashable HealthCheckPolicy where+  hashWithSalt _salt HealthCheckPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` path+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` healthyThreshold+      `Prelude.hashWithSalt` intervalMillis+      `Prelude.hashWithSalt` protocol+      `Prelude.hashWithSalt` timeoutMillis+      `Prelude.hashWithSalt` unhealthyThreshold++instance Prelude.NFData HealthCheckPolicy where+  rnf HealthCheckPolicy' {..} =+    Prelude.rnf path+      `Prelude.seq` Prelude.rnf port+      `Prelude.seq` Prelude.rnf healthyThreshold+      `Prelude.seq` Prelude.rnf intervalMillis+      `Prelude.seq` Prelude.rnf protocol+      `Prelude.seq` Prelude.rnf timeoutMillis+      `Prelude.seq` Prelude.rnf unhealthyThreshold++instance Data.ToJSON HealthCheckPolicy where+  toJSON HealthCheckPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("path" Data..=) Prelude.<$> path,+            ("port" Data..=) Prelude.<$> port,+            Prelude.Just+              ("healthyThreshold" Data..= healthyThreshold),+            Prelude.Just+              ("intervalMillis" Data..= intervalMillis),+            Prelude.Just ("protocol" Data..= protocol),+            Prelude.Just ("timeoutMillis" Data..= timeoutMillis),+            Prelude.Just+              ("unhealthyThreshold" Data..= unhealthyThreshold)+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpGatewayRoute.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HttpGatewayRoute+-- 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.AppMesh.Types.HttpGatewayRoute where++import Amazonka.AppMesh.Types.HttpGatewayRouteAction+import Amazonka.AppMesh.Types.HttpGatewayRouteMatch+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents an HTTP gateway route.+--+-- /See:/ 'newHttpGatewayRoute' smart constructor.+data HttpGatewayRoute = HttpGatewayRoute'+  { -- | An object that represents the action to take if a match is determined.+    action :: HttpGatewayRouteAction,+    -- | An object that represents the criteria for determining a request match.+    match :: HttpGatewayRouteMatch+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpGatewayRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'action', 'httpGatewayRoute_action' - An object that represents the action to take if a match is determined.+--+-- 'match', 'httpGatewayRoute_match' - An object that represents the criteria for determining a request match.+newHttpGatewayRoute ::+  -- | 'action'+  HttpGatewayRouteAction ->+  -- | 'match'+  HttpGatewayRouteMatch ->+  HttpGatewayRoute+newHttpGatewayRoute pAction_ pMatch_ =+  HttpGatewayRoute'+    { action = pAction_,+      match = pMatch_+    }++-- | An object that represents the action to take if a match is determined.+httpGatewayRoute_action :: Lens.Lens' HttpGatewayRoute HttpGatewayRouteAction+httpGatewayRoute_action = Lens.lens (\HttpGatewayRoute' {action} -> action) (\s@HttpGatewayRoute' {} a -> s {action = a} :: HttpGatewayRoute)++-- | An object that represents the criteria for determining a request match.+httpGatewayRoute_match :: Lens.Lens' HttpGatewayRoute HttpGatewayRouteMatch+httpGatewayRoute_match = Lens.lens (\HttpGatewayRoute' {match} -> match) (\s@HttpGatewayRoute' {} a -> s {match = a} :: HttpGatewayRoute)++instance Data.FromJSON HttpGatewayRoute where+  parseJSON =+    Data.withObject+      "HttpGatewayRoute"+      ( \x ->+          HttpGatewayRoute'+            Prelude.<$> (x Data..: "action")+            Prelude.<*> (x Data..: "match")+      )++instance Prelude.Hashable HttpGatewayRoute where+  hashWithSalt _salt HttpGatewayRoute' {..} =+    _salt+      `Prelude.hashWithSalt` action+      `Prelude.hashWithSalt` match++instance Prelude.NFData HttpGatewayRoute where+  rnf HttpGatewayRoute' {..} =+    Prelude.rnf action `Prelude.seq` Prelude.rnf match++instance Data.ToJSON HttpGatewayRoute where+  toJSON HttpGatewayRoute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("action" Data..= action),+            Prelude.Just ("match" Data..= match)+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpGatewayRouteAction.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.AppMesh.Types.HttpGatewayRouteAction+-- 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.AppMesh.Types.HttpGatewayRouteAction where++import Amazonka.AppMesh.Types.GatewayRouteTarget+import Amazonka.AppMesh.Types.HttpGatewayRouteRewrite+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the action to take if a match is determined.+--+-- /See:/ 'newHttpGatewayRouteAction' smart constructor.+data HttpGatewayRouteAction = HttpGatewayRouteAction'+  { -- | The gateway route action to rewrite.+    rewrite :: Prelude.Maybe HttpGatewayRouteRewrite,+    -- | An object that represents the target that traffic is routed to when a+    -- request matches the gateway route.+    target :: GatewayRouteTarget+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpGatewayRouteAction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'rewrite', 'httpGatewayRouteAction_rewrite' - The gateway route action to rewrite.+--+-- 'target', 'httpGatewayRouteAction_target' - An object that represents the target that traffic is routed to when a+-- request matches the gateway route.+newHttpGatewayRouteAction ::+  -- | 'target'+  GatewayRouteTarget ->+  HttpGatewayRouteAction+newHttpGatewayRouteAction pTarget_ =+  HttpGatewayRouteAction'+    { rewrite = Prelude.Nothing,+      target = pTarget_+    }++-- | The gateway route action to rewrite.+httpGatewayRouteAction_rewrite :: Lens.Lens' HttpGatewayRouteAction (Prelude.Maybe HttpGatewayRouteRewrite)+httpGatewayRouteAction_rewrite = Lens.lens (\HttpGatewayRouteAction' {rewrite} -> rewrite) (\s@HttpGatewayRouteAction' {} a -> s {rewrite = a} :: HttpGatewayRouteAction)++-- | An object that represents the target that traffic is routed to when a+-- request matches the gateway route.+httpGatewayRouteAction_target :: Lens.Lens' HttpGatewayRouteAction GatewayRouteTarget+httpGatewayRouteAction_target = Lens.lens (\HttpGatewayRouteAction' {target} -> target) (\s@HttpGatewayRouteAction' {} a -> s {target = a} :: HttpGatewayRouteAction)++instance Data.FromJSON HttpGatewayRouteAction where+  parseJSON =+    Data.withObject+      "HttpGatewayRouteAction"+      ( \x ->+          HttpGatewayRouteAction'+            Prelude.<$> (x Data..:? "rewrite")+            Prelude.<*> (x Data..: "target")+      )++instance Prelude.Hashable HttpGatewayRouteAction where+  hashWithSalt _salt HttpGatewayRouteAction' {..} =+    _salt+      `Prelude.hashWithSalt` rewrite+      `Prelude.hashWithSalt` target++instance Prelude.NFData HttpGatewayRouteAction where+  rnf HttpGatewayRouteAction' {..} =+    Prelude.rnf rewrite+      `Prelude.seq` Prelude.rnf target++instance Data.ToJSON HttpGatewayRouteAction where+  toJSON HttpGatewayRouteAction' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("rewrite" Data..=) Prelude.<$> rewrite,+            Prelude.Just ("target" Data..= target)+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpGatewayRouteHeader.hs view
@@ -0,0 +1,115 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HttpGatewayRouteHeader+-- 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.AppMesh.Types.HttpGatewayRouteHeader where++import Amazonka.AppMesh.Types.HeaderMatchMethod+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the HTTP header in the gateway route.+--+-- /See:/ 'newHttpGatewayRouteHeader' smart constructor.+data HttpGatewayRouteHeader = HttpGatewayRouteHeader'+  { -- | Specify @True@ to match anything except the match criteria. The default+    -- value is @False@.+    invert :: Prelude.Maybe Prelude.Bool,+    -- | An object that represents the method and value to match with the header+    -- value sent in a request. Specify one match method.+    match :: Prelude.Maybe HeaderMatchMethod,+    -- | A name for the HTTP header in the gateway route that will be matched on.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpGatewayRouteHeader' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'invert', 'httpGatewayRouteHeader_invert' - Specify @True@ to match anything except the match criteria. The default+-- value is @False@.+--+-- 'match', 'httpGatewayRouteHeader_match' - An object that represents the method and value to match with the header+-- value sent in a request. Specify one match method.+--+-- 'name', 'httpGatewayRouteHeader_name' - A name for the HTTP header in the gateway route that will be matched on.+newHttpGatewayRouteHeader ::+  -- | 'name'+  Prelude.Text ->+  HttpGatewayRouteHeader+newHttpGatewayRouteHeader pName_ =+  HttpGatewayRouteHeader'+    { invert = Prelude.Nothing,+      match = Prelude.Nothing,+      name = pName_+    }++-- | Specify @True@ to match anything except the match criteria. The default+-- value is @False@.+httpGatewayRouteHeader_invert :: Lens.Lens' HttpGatewayRouteHeader (Prelude.Maybe Prelude.Bool)+httpGatewayRouteHeader_invert = Lens.lens (\HttpGatewayRouteHeader' {invert} -> invert) (\s@HttpGatewayRouteHeader' {} a -> s {invert = a} :: HttpGatewayRouteHeader)++-- | An object that represents the method and value to match with the header+-- value sent in a request. Specify one match method.+httpGatewayRouteHeader_match :: Lens.Lens' HttpGatewayRouteHeader (Prelude.Maybe HeaderMatchMethod)+httpGatewayRouteHeader_match = Lens.lens (\HttpGatewayRouteHeader' {match} -> match) (\s@HttpGatewayRouteHeader' {} a -> s {match = a} :: HttpGatewayRouteHeader)++-- | A name for the HTTP header in the gateway route that will be matched on.+httpGatewayRouteHeader_name :: Lens.Lens' HttpGatewayRouteHeader Prelude.Text+httpGatewayRouteHeader_name = Lens.lens (\HttpGatewayRouteHeader' {name} -> name) (\s@HttpGatewayRouteHeader' {} a -> s {name = a} :: HttpGatewayRouteHeader)++instance Data.FromJSON HttpGatewayRouteHeader where+  parseJSON =+    Data.withObject+      "HttpGatewayRouteHeader"+      ( \x ->+          HttpGatewayRouteHeader'+            Prelude.<$> (x Data..:? "invert")+            Prelude.<*> (x Data..:? "match")+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable HttpGatewayRouteHeader where+  hashWithSalt _salt HttpGatewayRouteHeader' {..} =+    _salt+      `Prelude.hashWithSalt` invert+      `Prelude.hashWithSalt` match+      `Prelude.hashWithSalt` name++instance Prelude.NFData HttpGatewayRouteHeader where+  rnf HttpGatewayRouteHeader' {..} =+    Prelude.rnf invert+      `Prelude.seq` Prelude.rnf match+      `Prelude.seq` Prelude.rnf name++instance Data.ToJSON HttpGatewayRouteHeader where+  toJSON HttpGatewayRouteHeader' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("invert" Data..=) Prelude.<$> invert,+            ("match" Data..=) Prelude.<$> match,+            Prelude.Just ("name" Data..= name)+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpGatewayRouteMatch.hs view
@@ -0,0 +1,179 @@+{-# 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.AppMesh.Types.HttpGatewayRouteMatch+-- 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.AppMesh.Types.HttpGatewayRouteMatch where++import Amazonka.AppMesh.Types.GatewayRouteHostnameMatch+import Amazonka.AppMesh.Types.HttpGatewayRouteHeader+import Amazonka.AppMesh.Types.HttpMethod+import Amazonka.AppMesh.Types.HttpPathMatch+import Amazonka.AppMesh.Types.HttpQueryParameter+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the criteria for determining a request match.+--+-- /See:/ 'newHttpGatewayRouteMatch' smart constructor.+data HttpGatewayRouteMatch = HttpGatewayRouteMatch'+  { -- | The client request headers to match on.+    headers :: Prelude.Maybe (Prelude.NonEmpty HttpGatewayRouteHeader),+    -- | The host name to match on.+    hostname :: Prelude.Maybe GatewayRouteHostnameMatch,+    -- | The method to match on.+    method :: Prelude.Maybe HttpMethod,+    -- | The path to match on.+    path :: Prelude.Maybe HttpPathMatch,+    -- | The port number to match on.+    port :: Prelude.Maybe Prelude.Natural,+    -- | Specifies the path to match requests with. This parameter must always+    -- start with @\/@, which by itself matches all requests to the virtual+    -- service name. You can also match for path-based routing of requests. For+    -- example, if your virtual service name is @my-service.local@ and you want+    -- the route to match requests to @my-service.local\/metrics@, your prefix+    -- should be @\/metrics@.+    prefix :: Prelude.Maybe Prelude.Text,+    -- | The query parameter to match on.+    queryParameters :: Prelude.Maybe (Prelude.NonEmpty HttpQueryParameter)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpGatewayRouteMatch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'headers', 'httpGatewayRouteMatch_headers' - The client request headers to match on.+--+-- 'hostname', 'httpGatewayRouteMatch_hostname' - The host name to match on.+--+-- 'method', 'httpGatewayRouteMatch_method' - The method to match on.+--+-- 'path', 'httpGatewayRouteMatch_path' - The path to match on.+--+-- 'port', 'httpGatewayRouteMatch_port' - The port number to match on.+--+-- 'prefix', 'httpGatewayRouteMatch_prefix' - Specifies the path to match requests with. This parameter must always+-- start with @\/@, which by itself matches all requests to the virtual+-- service name. You can also match for path-based routing of requests. For+-- example, if your virtual service name is @my-service.local@ and you want+-- the route to match requests to @my-service.local\/metrics@, your prefix+-- should be @\/metrics@.+--+-- 'queryParameters', 'httpGatewayRouteMatch_queryParameters' - The query parameter to match on.+newHttpGatewayRouteMatch ::+  HttpGatewayRouteMatch+newHttpGatewayRouteMatch =+  HttpGatewayRouteMatch'+    { headers = Prelude.Nothing,+      hostname = Prelude.Nothing,+      method = Prelude.Nothing,+      path = Prelude.Nothing,+      port = Prelude.Nothing,+      prefix = Prelude.Nothing,+      queryParameters = Prelude.Nothing+    }++-- | The client request headers to match on.+httpGatewayRouteMatch_headers :: Lens.Lens' HttpGatewayRouteMatch (Prelude.Maybe (Prelude.NonEmpty HttpGatewayRouteHeader))+httpGatewayRouteMatch_headers = Lens.lens (\HttpGatewayRouteMatch' {headers} -> headers) (\s@HttpGatewayRouteMatch' {} a -> s {headers = a} :: HttpGatewayRouteMatch) Prelude.. Lens.mapping Lens.coerced++-- | The host name to match on.+httpGatewayRouteMatch_hostname :: Lens.Lens' HttpGatewayRouteMatch (Prelude.Maybe GatewayRouteHostnameMatch)+httpGatewayRouteMatch_hostname = Lens.lens (\HttpGatewayRouteMatch' {hostname} -> hostname) (\s@HttpGatewayRouteMatch' {} a -> s {hostname = a} :: HttpGatewayRouteMatch)++-- | The method to match on.+httpGatewayRouteMatch_method :: Lens.Lens' HttpGatewayRouteMatch (Prelude.Maybe HttpMethod)+httpGatewayRouteMatch_method = Lens.lens (\HttpGatewayRouteMatch' {method} -> method) (\s@HttpGatewayRouteMatch' {} a -> s {method = a} :: HttpGatewayRouteMatch)++-- | The path to match on.+httpGatewayRouteMatch_path :: Lens.Lens' HttpGatewayRouteMatch (Prelude.Maybe HttpPathMatch)+httpGatewayRouteMatch_path = Lens.lens (\HttpGatewayRouteMatch' {path} -> path) (\s@HttpGatewayRouteMatch' {} a -> s {path = a} :: HttpGatewayRouteMatch)++-- | The port number to match on.+httpGatewayRouteMatch_port :: Lens.Lens' HttpGatewayRouteMatch (Prelude.Maybe Prelude.Natural)+httpGatewayRouteMatch_port = Lens.lens (\HttpGatewayRouteMatch' {port} -> port) (\s@HttpGatewayRouteMatch' {} a -> s {port = a} :: HttpGatewayRouteMatch)++-- | Specifies the path to match requests with. This parameter must always+-- start with @\/@, which by itself matches all requests to the virtual+-- service name. You can also match for path-based routing of requests. For+-- example, if your virtual service name is @my-service.local@ and you want+-- the route to match requests to @my-service.local\/metrics@, your prefix+-- should be @\/metrics@.+httpGatewayRouteMatch_prefix :: Lens.Lens' HttpGatewayRouteMatch (Prelude.Maybe Prelude.Text)+httpGatewayRouteMatch_prefix = Lens.lens (\HttpGatewayRouteMatch' {prefix} -> prefix) (\s@HttpGatewayRouteMatch' {} a -> s {prefix = a} :: HttpGatewayRouteMatch)++-- | The query parameter to match on.+httpGatewayRouteMatch_queryParameters :: Lens.Lens' HttpGatewayRouteMatch (Prelude.Maybe (Prelude.NonEmpty HttpQueryParameter))+httpGatewayRouteMatch_queryParameters = Lens.lens (\HttpGatewayRouteMatch' {queryParameters} -> queryParameters) (\s@HttpGatewayRouteMatch' {} a -> s {queryParameters = a} :: HttpGatewayRouteMatch) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON HttpGatewayRouteMatch where+  parseJSON =+    Data.withObject+      "HttpGatewayRouteMatch"+      ( \x ->+          HttpGatewayRouteMatch'+            Prelude.<$> (x Data..:? "headers")+            Prelude.<*> (x Data..:? "hostname")+            Prelude.<*> (x Data..:? "method")+            Prelude.<*> (x Data..:? "path")+            Prelude.<*> (x Data..:? "port")+            Prelude.<*> (x Data..:? "prefix")+            Prelude.<*> (x Data..:? "queryParameters")+      )++instance Prelude.Hashable HttpGatewayRouteMatch where+  hashWithSalt _salt HttpGatewayRouteMatch' {..} =+    _salt+      `Prelude.hashWithSalt` headers+      `Prelude.hashWithSalt` hostname+      `Prelude.hashWithSalt` method+      `Prelude.hashWithSalt` path+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` prefix+      `Prelude.hashWithSalt` queryParameters++instance Prelude.NFData HttpGatewayRouteMatch where+  rnf HttpGatewayRouteMatch' {..} =+    Prelude.rnf headers+      `Prelude.seq` Prelude.rnf hostname+      `Prelude.seq` Prelude.rnf method+      `Prelude.seq` Prelude.rnf path+      `Prelude.seq` Prelude.rnf port+      `Prelude.seq` Prelude.rnf prefix+      `Prelude.seq` Prelude.rnf queryParameters++instance Data.ToJSON HttpGatewayRouteMatch where+  toJSON HttpGatewayRouteMatch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("headers" Data..=) Prelude.<$> headers,+            ("hostname" Data..=) Prelude.<$> hostname,+            ("method" Data..=) Prelude.<$> method,+            ("path" Data..=) Prelude.<$> path,+            ("port" Data..=) Prelude.<$> port,+            ("prefix" Data..=) Prelude.<$> prefix,+            ("queryParameters" Data..=)+              Prelude.<$> queryParameters+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpGatewayRoutePathRewrite.hs view
@@ -0,0 +1,79 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HttpGatewayRoutePathRewrite+-- 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.AppMesh.Types.HttpGatewayRoutePathRewrite where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the path to rewrite.+--+-- /See:/ 'newHttpGatewayRoutePathRewrite' smart constructor.+data HttpGatewayRoutePathRewrite = HttpGatewayRoutePathRewrite'+  { -- | The exact path to rewrite.+    exact :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpGatewayRoutePathRewrite' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'exact', 'httpGatewayRoutePathRewrite_exact' - The exact path to rewrite.+newHttpGatewayRoutePathRewrite ::+  HttpGatewayRoutePathRewrite+newHttpGatewayRoutePathRewrite =+  HttpGatewayRoutePathRewrite'+    { exact =+        Prelude.Nothing+    }++-- | The exact path to rewrite.+httpGatewayRoutePathRewrite_exact :: Lens.Lens' HttpGatewayRoutePathRewrite (Prelude.Maybe Prelude.Text)+httpGatewayRoutePathRewrite_exact = Lens.lens (\HttpGatewayRoutePathRewrite' {exact} -> exact) (\s@HttpGatewayRoutePathRewrite' {} a -> s {exact = a} :: HttpGatewayRoutePathRewrite)++instance Data.FromJSON HttpGatewayRoutePathRewrite where+  parseJSON =+    Data.withObject+      "HttpGatewayRoutePathRewrite"+      ( \x ->+          HttpGatewayRoutePathRewrite'+            Prelude.<$> (x Data..:? "exact")+      )++instance Prelude.Hashable HttpGatewayRoutePathRewrite where+  hashWithSalt _salt HttpGatewayRoutePathRewrite' {..} =+    _salt `Prelude.hashWithSalt` exact++instance Prelude.NFData HttpGatewayRoutePathRewrite where+  rnf HttpGatewayRoutePathRewrite' {..} =+    Prelude.rnf exact++instance Data.ToJSON HttpGatewayRoutePathRewrite where+  toJSON HttpGatewayRoutePathRewrite' {..} =+    Data.object+      ( Prelude.catMaybes+          [("exact" Data..=) Prelude.<$> exact]+      )
+ gen/Amazonka/AppMesh/Types/HttpGatewayRoutePrefixRewrite.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HttpGatewayRoutePrefixRewrite+-- 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.AppMesh.Types.HttpGatewayRoutePrefixRewrite where++import Amazonka.AppMesh.Types.DefaultGatewayRouteRewrite+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the beginning characters of the route to rewrite.+--+-- /See:/ 'newHttpGatewayRoutePrefixRewrite' smart constructor.+data HttpGatewayRoutePrefixRewrite = HttpGatewayRoutePrefixRewrite'+  { -- | The default prefix used to replace the incoming route prefix when+    -- rewritten.+    defaultPrefix :: Prelude.Maybe DefaultGatewayRouteRewrite,+    -- | The value used to replace the incoming route prefix when rewritten.+    value :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpGatewayRoutePrefixRewrite' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'defaultPrefix', 'httpGatewayRoutePrefixRewrite_defaultPrefix' - The default prefix used to replace the incoming route prefix when+-- rewritten.+--+-- 'value', 'httpGatewayRoutePrefixRewrite_value' - The value used to replace the incoming route prefix when rewritten.+newHttpGatewayRoutePrefixRewrite ::+  HttpGatewayRoutePrefixRewrite+newHttpGatewayRoutePrefixRewrite =+  HttpGatewayRoutePrefixRewrite'+    { defaultPrefix =+        Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | The default prefix used to replace the incoming route prefix when+-- rewritten.+httpGatewayRoutePrefixRewrite_defaultPrefix :: Lens.Lens' HttpGatewayRoutePrefixRewrite (Prelude.Maybe DefaultGatewayRouteRewrite)+httpGatewayRoutePrefixRewrite_defaultPrefix = Lens.lens (\HttpGatewayRoutePrefixRewrite' {defaultPrefix} -> defaultPrefix) (\s@HttpGatewayRoutePrefixRewrite' {} a -> s {defaultPrefix = a} :: HttpGatewayRoutePrefixRewrite)++-- | The value used to replace the incoming route prefix when rewritten.+httpGatewayRoutePrefixRewrite_value :: Lens.Lens' HttpGatewayRoutePrefixRewrite (Prelude.Maybe Prelude.Text)+httpGatewayRoutePrefixRewrite_value = Lens.lens (\HttpGatewayRoutePrefixRewrite' {value} -> value) (\s@HttpGatewayRoutePrefixRewrite' {} a -> s {value = a} :: HttpGatewayRoutePrefixRewrite)++instance Data.FromJSON HttpGatewayRoutePrefixRewrite where+  parseJSON =+    Data.withObject+      "HttpGatewayRoutePrefixRewrite"+      ( \x ->+          HttpGatewayRoutePrefixRewrite'+            Prelude.<$> (x Data..:? "defaultPrefix")+            Prelude.<*> (x Data..:? "value")+      )++instance+  Prelude.Hashable+    HttpGatewayRoutePrefixRewrite+  where+  hashWithSalt _salt HttpGatewayRoutePrefixRewrite' {..} =+    _salt+      `Prelude.hashWithSalt` defaultPrefix+      `Prelude.hashWithSalt` value++instance Prelude.NFData HttpGatewayRoutePrefixRewrite where+  rnf HttpGatewayRoutePrefixRewrite' {..} =+    Prelude.rnf defaultPrefix+      `Prelude.seq` Prelude.rnf value++instance Data.ToJSON HttpGatewayRoutePrefixRewrite where+  toJSON HttpGatewayRoutePrefixRewrite' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("defaultPrefix" Data..=) Prelude.<$> defaultPrefix,+            ("value" Data..=) Prelude.<$> value+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpGatewayRouteRewrite.hs view
@@ -0,0 +1,110 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HttpGatewayRouteRewrite+-- 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.AppMesh.Types.HttpGatewayRouteRewrite where++import Amazonka.AppMesh.Types.GatewayRouteHostnameRewrite+import Amazonka.AppMesh.Types.HttpGatewayRoutePathRewrite+import Amazonka.AppMesh.Types.HttpGatewayRoutePrefixRewrite+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the gateway route to rewrite.+--+-- /See:/ 'newHttpGatewayRouteRewrite' smart constructor.+data HttpGatewayRouteRewrite = HttpGatewayRouteRewrite'+  { -- | The host name to rewrite.+    hostname :: Prelude.Maybe GatewayRouteHostnameRewrite,+    -- | The path to rewrite.+    path :: Prelude.Maybe HttpGatewayRoutePathRewrite,+    -- | The specified beginning characters to rewrite.+    prefix :: Prelude.Maybe HttpGatewayRoutePrefixRewrite+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpGatewayRouteRewrite' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'hostname', 'httpGatewayRouteRewrite_hostname' - The host name to rewrite.+--+-- 'path', 'httpGatewayRouteRewrite_path' - The path to rewrite.+--+-- 'prefix', 'httpGatewayRouteRewrite_prefix' - The specified beginning characters to rewrite.+newHttpGatewayRouteRewrite ::+  HttpGatewayRouteRewrite+newHttpGatewayRouteRewrite =+  HttpGatewayRouteRewrite'+    { hostname =+        Prelude.Nothing,+      path = Prelude.Nothing,+      prefix = Prelude.Nothing+    }++-- | The host name to rewrite.+httpGatewayRouteRewrite_hostname :: Lens.Lens' HttpGatewayRouteRewrite (Prelude.Maybe GatewayRouteHostnameRewrite)+httpGatewayRouteRewrite_hostname = Lens.lens (\HttpGatewayRouteRewrite' {hostname} -> hostname) (\s@HttpGatewayRouteRewrite' {} a -> s {hostname = a} :: HttpGatewayRouteRewrite)++-- | The path to rewrite.+httpGatewayRouteRewrite_path :: Lens.Lens' HttpGatewayRouteRewrite (Prelude.Maybe HttpGatewayRoutePathRewrite)+httpGatewayRouteRewrite_path = Lens.lens (\HttpGatewayRouteRewrite' {path} -> path) (\s@HttpGatewayRouteRewrite' {} a -> s {path = a} :: HttpGatewayRouteRewrite)++-- | The specified beginning characters to rewrite.+httpGatewayRouteRewrite_prefix :: Lens.Lens' HttpGatewayRouteRewrite (Prelude.Maybe HttpGatewayRoutePrefixRewrite)+httpGatewayRouteRewrite_prefix = Lens.lens (\HttpGatewayRouteRewrite' {prefix} -> prefix) (\s@HttpGatewayRouteRewrite' {} a -> s {prefix = a} :: HttpGatewayRouteRewrite)++instance Data.FromJSON HttpGatewayRouteRewrite where+  parseJSON =+    Data.withObject+      "HttpGatewayRouteRewrite"+      ( \x ->+          HttpGatewayRouteRewrite'+            Prelude.<$> (x Data..:? "hostname")+            Prelude.<*> (x Data..:? "path")+            Prelude.<*> (x Data..:? "prefix")+      )++instance Prelude.Hashable HttpGatewayRouteRewrite where+  hashWithSalt _salt HttpGatewayRouteRewrite' {..} =+    _salt+      `Prelude.hashWithSalt` hostname+      `Prelude.hashWithSalt` path+      `Prelude.hashWithSalt` prefix++instance Prelude.NFData HttpGatewayRouteRewrite where+  rnf HttpGatewayRouteRewrite' {..} =+    Prelude.rnf hostname+      `Prelude.seq` Prelude.rnf path+      `Prelude.seq` Prelude.rnf prefix++instance Data.ToJSON HttpGatewayRouteRewrite where+  toJSON HttpGatewayRouteRewrite' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("hostname" Data..=) Prelude.<$> hostname,+            ("path" Data..=) Prelude.<$> path,+            ("prefix" Data..=) Prelude.<$> prefix+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpMethod.hs view
@@ -0,0 +1,106 @@+{-# 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.AppMesh.Types.HttpMethod+-- 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.AppMesh.Types.HttpMethod+  ( HttpMethod+      ( ..,+        HttpMethod_CONNECT,+        HttpMethod_DELETE,+        HttpMethod_GET,+        HttpMethod_HEAD,+        HttpMethod_OPTIONS,+        HttpMethod_PATCH,+        HttpMethod_POST,+        HttpMethod_PUT,+        HttpMethod_TRACE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype HttpMethod = HttpMethod'+  { fromHttpMethod ::+      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 HttpMethod_CONNECT :: HttpMethod+pattern HttpMethod_CONNECT = HttpMethod' "CONNECT"++pattern HttpMethod_DELETE :: HttpMethod+pattern HttpMethod_DELETE = HttpMethod' "DELETE"++pattern HttpMethod_GET :: HttpMethod+pattern HttpMethod_GET = HttpMethod' "GET"++pattern HttpMethod_HEAD :: HttpMethod+pattern HttpMethod_HEAD = HttpMethod' "HEAD"++pattern HttpMethod_OPTIONS :: HttpMethod+pattern HttpMethod_OPTIONS = HttpMethod' "OPTIONS"++pattern HttpMethod_PATCH :: HttpMethod+pattern HttpMethod_PATCH = HttpMethod' "PATCH"++pattern HttpMethod_POST :: HttpMethod+pattern HttpMethod_POST = HttpMethod' "POST"++pattern HttpMethod_PUT :: HttpMethod+pattern HttpMethod_PUT = HttpMethod' "PUT"++pattern HttpMethod_TRACE :: HttpMethod+pattern HttpMethod_TRACE = HttpMethod' "TRACE"++{-# COMPLETE+  HttpMethod_CONNECT,+  HttpMethod_DELETE,+  HttpMethod_GET,+  HttpMethod_HEAD,+  HttpMethod_OPTIONS,+  HttpMethod_PATCH,+  HttpMethod_POST,+  HttpMethod_PUT,+  HttpMethod_TRACE,+  HttpMethod'+  #-}
+ gen/Amazonka/AppMesh/Types/HttpPathMatch.hs view
@@ -0,0 +1,92 @@+{-# 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.AppMesh.Types.HttpPathMatch+-- 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.AppMesh.Types.HttpPathMatch where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the path to match in the request.+--+-- /See:/ 'newHttpPathMatch' smart constructor.+data HttpPathMatch = HttpPathMatch'+  { -- | The exact path to match on.+    exact :: Prelude.Maybe Prelude.Text,+    -- | The regex used to match the path.+    regex :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpPathMatch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'exact', 'httpPathMatch_exact' - The exact path to match on.+--+-- 'regex', 'httpPathMatch_regex' - The regex used to match the path.+newHttpPathMatch ::+  HttpPathMatch+newHttpPathMatch =+  HttpPathMatch'+    { exact = Prelude.Nothing,+      regex = Prelude.Nothing+    }++-- | The exact path to match on.+httpPathMatch_exact :: Lens.Lens' HttpPathMatch (Prelude.Maybe Prelude.Text)+httpPathMatch_exact = Lens.lens (\HttpPathMatch' {exact} -> exact) (\s@HttpPathMatch' {} a -> s {exact = a} :: HttpPathMatch)++-- | The regex used to match the path.+httpPathMatch_regex :: Lens.Lens' HttpPathMatch (Prelude.Maybe Prelude.Text)+httpPathMatch_regex = Lens.lens (\HttpPathMatch' {regex} -> regex) (\s@HttpPathMatch' {} a -> s {regex = a} :: HttpPathMatch)++instance Data.FromJSON HttpPathMatch where+  parseJSON =+    Data.withObject+      "HttpPathMatch"+      ( \x ->+          HttpPathMatch'+            Prelude.<$> (x Data..:? "exact")+            Prelude.<*> (x Data..:? "regex")+      )++instance Prelude.Hashable HttpPathMatch where+  hashWithSalt _salt HttpPathMatch' {..} =+    _salt+      `Prelude.hashWithSalt` exact+      `Prelude.hashWithSalt` regex++instance Prelude.NFData HttpPathMatch where+  rnf HttpPathMatch' {..} =+    Prelude.rnf exact `Prelude.seq` Prelude.rnf regex++instance Data.ToJSON HttpPathMatch where+  toJSON HttpPathMatch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("exact" Data..=) Prelude.<$> exact,+            ("regex" Data..=) Prelude.<$> regex+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpQueryParameter.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HttpQueryParameter+-- 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.AppMesh.Types.HttpQueryParameter where++import Amazonka.AppMesh.Types.QueryParameterMatch+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the query parameter in the request.+--+-- /See:/ 'newHttpQueryParameter' smart constructor.+data HttpQueryParameter = HttpQueryParameter'+  { -- | The query parameter to match on.+    match :: Prelude.Maybe QueryParameterMatch,+    -- | A name for the query parameter that will be matched on.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpQueryParameter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'match', 'httpQueryParameter_match' - The query parameter to match on.+--+-- 'name', 'httpQueryParameter_name' - A name for the query parameter that will be matched on.+newHttpQueryParameter ::+  -- | 'name'+  Prelude.Text ->+  HttpQueryParameter+newHttpQueryParameter pName_ =+  HttpQueryParameter'+    { match = Prelude.Nothing,+      name = pName_+    }++-- | The query parameter to match on.+httpQueryParameter_match :: Lens.Lens' HttpQueryParameter (Prelude.Maybe QueryParameterMatch)+httpQueryParameter_match = Lens.lens (\HttpQueryParameter' {match} -> match) (\s@HttpQueryParameter' {} a -> s {match = a} :: HttpQueryParameter)++-- | A name for the query parameter that will be matched on.+httpQueryParameter_name :: Lens.Lens' HttpQueryParameter Prelude.Text+httpQueryParameter_name = Lens.lens (\HttpQueryParameter' {name} -> name) (\s@HttpQueryParameter' {} a -> s {name = a} :: HttpQueryParameter)++instance Data.FromJSON HttpQueryParameter where+  parseJSON =+    Data.withObject+      "HttpQueryParameter"+      ( \x ->+          HttpQueryParameter'+            Prelude.<$> (x Data..:? "match")+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable HttpQueryParameter where+  hashWithSalt _salt HttpQueryParameter' {..} =+    _salt+      `Prelude.hashWithSalt` match+      `Prelude.hashWithSalt` name++instance Prelude.NFData HttpQueryParameter where+  rnf HttpQueryParameter' {..} =+    Prelude.rnf match `Prelude.seq` Prelude.rnf name++instance Data.ToJSON HttpQueryParameter where+  toJSON HttpQueryParameter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("match" Data..=) Prelude.<$> match,+            Prelude.Just ("name" Data..= name)+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpRetryPolicy.hs view
@@ -0,0 +1,166 @@+{-# 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.AppMesh.Types.HttpRetryPolicy+-- 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.AppMesh.Types.HttpRetryPolicy where++import Amazonka.AppMesh.Types.Duration+import Amazonka.AppMesh.Types.TcpRetryPolicyEvent+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a retry policy. Specify at least one value for+-- at least one of the types of @RetryEvents@, a value for @maxRetries@,+-- and a value for @perRetryTimeout@. Both @server-error@ and+-- @gateway-error@ under @httpRetryEvents@ include the Envoy @reset@+-- policy. For more information on the @reset@ policy, see the+-- <https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on Envoy documentation>.+--+-- /See:/ 'newHttpRetryPolicy' smart constructor.+data HttpRetryPolicy = HttpRetryPolicy'+  { -- | Specify at least one of the following values.+    --+    -- -   __server-error__ – HTTP status codes 500, 501, 502, 503, 504, 505,+    --     506, 507, 508, 510, and 511+    --+    -- -   __gateway-error__ – HTTP status codes 502, 503, and 504+    --+    -- -   __client-error__ – HTTP status code 409+    --+    -- -   __stream-error__ – Retry on refused stream+    httpRetryEvents :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | Specify a valid value. The event occurs before any processing of a+    -- request has started and is encountered when the upstream is temporarily+    -- or permanently unavailable.+    tcpRetryEvents :: Prelude.Maybe (Prelude.NonEmpty TcpRetryPolicyEvent),+    -- | The maximum number of retry attempts.+    maxRetries :: Prelude.Natural,+    -- | The timeout for each retry attempt.+    perRetryTimeout :: Duration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpRetryPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpRetryEvents', 'httpRetryPolicy_httpRetryEvents' - Specify at least one of the following values.+--+-- -   __server-error__ – HTTP status codes 500, 501, 502, 503, 504, 505,+--     506, 507, 508, 510, and 511+--+-- -   __gateway-error__ – HTTP status codes 502, 503, and 504+--+-- -   __client-error__ – HTTP status code 409+--+-- -   __stream-error__ – Retry on refused stream+--+-- 'tcpRetryEvents', 'httpRetryPolicy_tcpRetryEvents' - Specify a valid value. The event occurs before any processing of a+-- request has started and is encountered when the upstream is temporarily+-- or permanently unavailable.+--+-- 'maxRetries', 'httpRetryPolicy_maxRetries' - The maximum number of retry attempts.+--+-- 'perRetryTimeout', 'httpRetryPolicy_perRetryTimeout' - The timeout for each retry attempt.+newHttpRetryPolicy ::+  -- | 'maxRetries'+  Prelude.Natural ->+  -- | 'perRetryTimeout'+  Duration ->+  HttpRetryPolicy+newHttpRetryPolicy pMaxRetries_ pPerRetryTimeout_ =+  HttpRetryPolicy'+    { httpRetryEvents = Prelude.Nothing,+      tcpRetryEvents = Prelude.Nothing,+      maxRetries = pMaxRetries_,+      perRetryTimeout = pPerRetryTimeout_+    }++-- | Specify at least one of the following values.+--+-- -   __server-error__ – HTTP status codes 500, 501, 502, 503, 504, 505,+--     506, 507, 508, 510, and 511+--+-- -   __gateway-error__ – HTTP status codes 502, 503, and 504+--+-- -   __client-error__ – HTTP status code 409+--+-- -   __stream-error__ – Retry on refused stream+httpRetryPolicy_httpRetryEvents :: Lens.Lens' HttpRetryPolicy (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+httpRetryPolicy_httpRetryEvents = Lens.lens (\HttpRetryPolicy' {httpRetryEvents} -> httpRetryEvents) (\s@HttpRetryPolicy' {} a -> s {httpRetryEvents = a} :: HttpRetryPolicy) Prelude.. Lens.mapping Lens.coerced++-- | Specify a valid value. The event occurs before any processing of a+-- request has started and is encountered when the upstream is temporarily+-- or permanently unavailable.+httpRetryPolicy_tcpRetryEvents :: Lens.Lens' HttpRetryPolicy (Prelude.Maybe (Prelude.NonEmpty TcpRetryPolicyEvent))+httpRetryPolicy_tcpRetryEvents = Lens.lens (\HttpRetryPolicy' {tcpRetryEvents} -> tcpRetryEvents) (\s@HttpRetryPolicy' {} a -> s {tcpRetryEvents = a} :: HttpRetryPolicy) Prelude.. Lens.mapping Lens.coerced++-- | The maximum number of retry attempts.+httpRetryPolicy_maxRetries :: Lens.Lens' HttpRetryPolicy Prelude.Natural+httpRetryPolicy_maxRetries = Lens.lens (\HttpRetryPolicy' {maxRetries} -> maxRetries) (\s@HttpRetryPolicy' {} a -> s {maxRetries = a} :: HttpRetryPolicy)++-- | The timeout for each retry attempt.+httpRetryPolicy_perRetryTimeout :: Lens.Lens' HttpRetryPolicy Duration+httpRetryPolicy_perRetryTimeout = Lens.lens (\HttpRetryPolicy' {perRetryTimeout} -> perRetryTimeout) (\s@HttpRetryPolicy' {} a -> s {perRetryTimeout = a} :: HttpRetryPolicy)++instance Data.FromJSON HttpRetryPolicy where+  parseJSON =+    Data.withObject+      "HttpRetryPolicy"+      ( \x ->+          HttpRetryPolicy'+            Prelude.<$> (x Data..:? "httpRetryEvents")+            Prelude.<*> (x Data..:? "tcpRetryEvents")+            Prelude.<*> (x Data..: "maxRetries")+            Prelude.<*> (x Data..: "perRetryTimeout")+      )++instance Prelude.Hashable HttpRetryPolicy where+  hashWithSalt _salt HttpRetryPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` httpRetryEvents+      `Prelude.hashWithSalt` tcpRetryEvents+      `Prelude.hashWithSalt` maxRetries+      `Prelude.hashWithSalt` perRetryTimeout++instance Prelude.NFData HttpRetryPolicy where+  rnf HttpRetryPolicy' {..} =+    Prelude.rnf httpRetryEvents+      `Prelude.seq` Prelude.rnf tcpRetryEvents+      `Prelude.seq` Prelude.rnf maxRetries+      `Prelude.seq` Prelude.rnf perRetryTimeout++instance Data.ToJSON HttpRetryPolicy where+  toJSON HttpRetryPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("httpRetryEvents" Data..=)+              Prelude.<$> httpRetryEvents,+            ("tcpRetryEvents" Data..=)+              Prelude.<$> tcpRetryEvents,+            Prelude.Just ("maxRetries" Data..= maxRetries),+            Prelude.Just+              ("perRetryTimeout" Data..= perRetryTimeout)+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpRoute.hs view
@@ -0,0 +1,127 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HttpRoute+-- 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.AppMesh.Types.HttpRoute where++import Amazonka.AppMesh.Types.HttpRetryPolicy+import Amazonka.AppMesh.Types.HttpRouteAction+import Amazonka.AppMesh.Types.HttpRouteMatch+import Amazonka.AppMesh.Types.HttpTimeout+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents an HTTP or HTTP\/2 route type.+--+-- /See:/ 'newHttpRoute' smart constructor.+data HttpRoute = HttpRoute'+  { -- | An object that represents a retry policy.+    retryPolicy :: Prelude.Maybe HttpRetryPolicy,+    -- | An object that represents types of timeouts.+    timeout :: Prelude.Maybe HttpTimeout,+    -- | An object that represents the action to take if a match is determined.+    action :: HttpRouteAction,+    -- | An object that represents the criteria for determining a request match.+    match :: HttpRouteMatch+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'retryPolicy', 'httpRoute_retryPolicy' - An object that represents a retry policy.+--+-- 'timeout', 'httpRoute_timeout' - An object that represents types of timeouts.+--+-- 'action', 'httpRoute_action' - An object that represents the action to take if a match is determined.+--+-- 'match', 'httpRoute_match' - An object that represents the criteria for determining a request match.+newHttpRoute ::+  -- | 'action'+  HttpRouteAction ->+  -- | 'match'+  HttpRouteMatch ->+  HttpRoute+newHttpRoute pAction_ pMatch_ =+  HttpRoute'+    { retryPolicy = Prelude.Nothing,+      timeout = Prelude.Nothing,+      action = pAction_,+      match = pMatch_+    }++-- | An object that represents a retry policy.+httpRoute_retryPolicy :: Lens.Lens' HttpRoute (Prelude.Maybe HttpRetryPolicy)+httpRoute_retryPolicy = Lens.lens (\HttpRoute' {retryPolicy} -> retryPolicy) (\s@HttpRoute' {} a -> s {retryPolicy = a} :: HttpRoute)++-- | An object that represents types of timeouts.+httpRoute_timeout :: Lens.Lens' HttpRoute (Prelude.Maybe HttpTimeout)+httpRoute_timeout = Lens.lens (\HttpRoute' {timeout} -> timeout) (\s@HttpRoute' {} a -> s {timeout = a} :: HttpRoute)++-- | An object that represents the action to take if a match is determined.+httpRoute_action :: Lens.Lens' HttpRoute HttpRouteAction+httpRoute_action = Lens.lens (\HttpRoute' {action} -> action) (\s@HttpRoute' {} a -> s {action = a} :: HttpRoute)++-- | An object that represents the criteria for determining a request match.+httpRoute_match :: Lens.Lens' HttpRoute HttpRouteMatch+httpRoute_match = Lens.lens (\HttpRoute' {match} -> match) (\s@HttpRoute' {} a -> s {match = a} :: HttpRoute)++instance Data.FromJSON HttpRoute where+  parseJSON =+    Data.withObject+      "HttpRoute"+      ( \x ->+          HttpRoute'+            Prelude.<$> (x Data..:? "retryPolicy")+            Prelude.<*> (x Data..:? "timeout")+            Prelude.<*> (x Data..: "action")+            Prelude.<*> (x Data..: "match")+      )++instance Prelude.Hashable HttpRoute where+  hashWithSalt _salt HttpRoute' {..} =+    _salt+      `Prelude.hashWithSalt` retryPolicy+      `Prelude.hashWithSalt` timeout+      `Prelude.hashWithSalt` action+      `Prelude.hashWithSalt` match++instance Prelude.NFData HttpRoute where+  rnf HttpRoute' {..} =+    Prelude.rnf retryPolicy+      `Prelude.seq` Prelude.rnf timeout+      `Prelude.seq` Prelude.rnf action+      `Prelude.seq` Prelude.rnf match++instance Data.ToJSON HttpRoute where+  toJSON HttpRoute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("retryPolicy" Data..=) Prelude.<$> retryPolicy,+            ("timeout" Data..=) Prelude.<$> timeout,+            Prelude.Just ("action" Data..= action),+            Prelude.Just ("match" Data..= match)+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpRouteAction.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.AppMesh.Types.HttpRouteAction+-- 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.AppMesh.Types.HttpRouteAction where++import Amazonka.AppMesh.Types.WeightedTarget+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the action to take if a match is determined.+--+-- /See:/ 'newHttpRouteAction' smart constructor.+data HttpRouteAction = HttpRouteAction'+  { -- | An object that represents the targets that traffic is routed to when a+    -- request matches the route.+    weightedTargets :: Prelude.NonEmpty WeightedTarget+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpRouteAction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'weightedTargets', 'httpRouteAction_weightedTargets' - An object that represents the targets that traffic is routed to when a+-- request matches the route.+newHttpRouteAction ::+  -- | 'weightedTargets'+  Prelude.NonEmpty WeightedTarget ->+  HttpRouteAction+newHttpRouteAction pWeightedTargets_ =+  HttpRouteAction'+    { weightedTargets =+        Lens.coerced Lens.# pWeightedTargets_+    }++-- | An object that represents the targets that traffic is routed to when a+-- request matches the route.+httpRouteAction_weightedTargets :: Lens.Lens' HttpRouteAction (Prelude.NonEmpty WeightedTarget)+httpRouteAction_weightedTargets = Lens.lens (\HttpRouteAction' {weightedTargets} -> weightedTargets) (\s@HttpRouteAction' {} a -> s {weightedTargets = a} :: HttpRouteAction) Prelude.. Lens.coerced++instance Data.FromJSON HttpRouteAction where+  parseJSON =+    Data.withObject+      "HttpRouteAction"+      ( \x ->+          HttpRouteAction'+            Prelude.<$> (x Data..: "weightedTargets")+      )++instance Prelude.Hashable HttpRouteAction where+  hashWithSalt _salt HttpRouteAction' {..} =+    _salt `Prelude.hashWithSalt` weightedTargets++instance Prelude.NFData HttpRouteAction where+  rnf HttpRouteAction' {..} =+    Prelude.rnf weightedTargets++instance Data.ToJSON HttpRouteAction where+  toJSON HttpRouteAction' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("weightedTargets" Data..= weightedTargets)+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpRouteHeader.hs view
@@ -0,0 +1,115 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HttpRouteHeader+-- 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.AppMesh.Types.HttpRouteHeader where++import Amazonka.AppMesh.Types.HeaderMatchMethod+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the HTTP header in the request.+--+-- /See:/ 'newHttpRouteHeader' smart constructor.+data HttpRouteHeader = HttpRouteHeader'+  { -- | Specify @True@ to match anything except the match criteria. The default+    -- value is @False@.+    invert :: Prelude.Maybe Prelude.Bool,+    -- | The @HeaderMatchMethod@ object.+    match :: Prelude.Maybe HeaderMatchMethod,+    -- | A name for the HTTP header in the client request that will be matched+    -- on.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpRouteHeader' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'invert', 'httpRouteHeader_invert' - Specify @True@ to match anything except the match criteria. The default+-- value is @False@.+--+-- 'match', 'httpRouteHeader_match' - The @HeaderMatchMethod@ object.+--+-- 'name', 'httpRouteHeader_name' - A name for the HTTP header in the client request that will be matched+-- on.+newHttpRouteHeader ::+  -- | 'name'+  Prelude.Text ->+  HttpRouteHeader+newHttpRouteHeader pName_ =+  HttpRouteHeader'+    { invert = Prelude.Nothing,+      match = Prelude.Nothing,+      name = pName_+    }++-- | Specify @True@ to match anything except the match criteria. The default+-- value is @False@.+httpRouteHeader_invert :: Lens.Lens' HttpRouteHeader (Prelude.Maybe Prelude.Bool)+httpRouteHeader_invert = Lens.lens (\HttpRouteHeader' {invert} -> invert) (\s@HttpRouteHeader' {} a -> s {invert = a} :: HttpRouteHeader)++-- | The @HeaderMatchMethod@ object.+httpRouteHeader_match :: Lens.Lens' HttpRouteHeader (Prelude.Maybe HeaderMatchMethod)+httpRouteHeader_match = Lens.lens (\HttpRouteHeader' {match} -> match) (\s@HttpRouteHeader' {} a -> s {match = a} :: HttpRouteHeader)++-- | A name for the HTTP header in the client request that will be matched+-- on.+httpRouteHeader_name :: Lens.Lens' HttpRouteHeader Prelude.Text+httpRouteHeader_name = Lens.lens (\HttpRouteHeader' {name} -> name) (\s@HttpRouteHeader' {} a -> s {name = a} :: HttpRouteHeader)++instance Data.FromJSON HttpRouteHeader where+  parseJSON =+    Data.withObject+      "HttpRouteHeader"+      ( \x ->+          HttpRouteHeader'+            Prelude.<$> (x Data..:? "invert")+            Prelude.<*> (x Data..:? "match")+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable HttpRouteHeader where+  hashWithSalt _salt HttpRouteHeader' {..} =+    _salt+      `Prelude.hashWithSalt` invert+      `Prelude.hashWithSalt` match+      `Prelude.hashWithSalt` name++instance Prelude.NFData HttpRouteHeader where+  rnf HttpRouteHeader' {..} =+    Prelude.rnf invert+      `Prelude.seq` Prelude.rnf match+      `Prelude.seq` Prelude.rnf name++instance Data.ToJSON HttpRouteHeader where+  toJSON HttpRouteHeader' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("invert" Data..=) Prelude.<$> invert,+            ("match" Data..=) Prelude.<$> match,+            Prelude.Just ("name" Data..= name)+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpRouteMatch.hs view
@@ -0,0 +1,183 @@+{-# 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.AppMesh.Types.HttpRouteMatch+-- 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.AppMesh.Types.HttpRouteMatch where++import Amazonka.AppMesh.Types.HttpMethod+import Amazonka.AppMesh.Types.HttpPathMatch+import Amazonka.AppMesh.Types.HttpQueryParameter+import Amazonka.AppMesh.Types.HttpRouteHeader+import Amazonka.AppMesh.Types.HttpScheme+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the requirements for a route to match HTTP+-- requests for a virtual router.+--+-- /See:/ 'newHttpRouteMatch' smart constructor.+data HttpRouteMatch = HttpRouteMatch'+  { -- | The client request headers to match on.+    headers :: Prelude.Maybe (Prelude.NonEmpty HttpRouteHeader),+    -- | The client request method to match on. Specify only one.+    method :: Prelude.Maybe HttpMethod,+    -- | The client request path to match on.+    path :: Prelude.Maybe HttpPathMatch,+    -- | The port number to match on.+    port :: Prelude.Maybe Prelude.Natural,+    -- | Specifies the path to match requests with. This parameter must always+    -- start with @\/@, which by itself matches all requests to the virtual+    -- service name. You can also match for path-based routing of requests. For+    -- example, if your virtual service name is @my-service.local@ and you want+    -- the route to match requests to @my-service.local\/metrics@, your prefix+    -- should be @\/metrics@.+    prefix :: Prelude.Maybe Prelude.Text,+    -- | The client request query parameters to match on.+    queryParameters :: Prelude.Maybe (Prelude.NonEmpty HttpQueryParameter),+    -- | The client request scheme to match on. Specify only one. Applicable only+    -- for HTTP2 routes.+    scheme :: Prelude.Maybe HttpScheme+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpRouteMatch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'headers', 'httpRouteMatch_headers' - The client request headers to match on.+--+-- 'method', 'httpRouteMatch_method' - The client request method to match on. Specify only one.+--+-- 'path', 'httpRouteMatch_path' - The client request path to match on.+--+-- 'port', 'httpRouteMatch_port' - The port number to match on.+--+-- 'prefix', 'httpRouteMatch_prefix' - Specifies the path to match requests with. This parameter must always+-- start with @\/@, which by itself matches all requests to the virtual+-- service name. You can also match for path-based routing of requests. For+-- example, if your virtual service name is @my-service.local@ and you want+-- the route to match requests to @my-service.local\/metrics@, your prefix+-- should be @\/metrics@.+--+-- 'queryParameters', 'httpRouteMatch_queryParameters' - The client request query parameters to match on.+--+-- 'scheme', 'httpRouteMatch_scheme' - The client request scheme to match on. Specify only one. Applicable only+-- for HTTP2 routes.+newHttpRouteMatch ::+  HttpRouteMatch+newHttpRouteMatch =+  HttpRouteMatch'+    { headers = Prelude.Nothing,+      method = Prelude.Nothing,+      path = Prelude.Nothing,+      port = Prelude.Nothing,+      prefix = Prelude.Nothing,+      queryParameters = Prelude.Nothing,+      scheme = Prelude.Nothing+    }++-- | The client request headers to match on.+httpRouteMatch_headers :: Lens.Lens' HttpRouteMatch (Prelude.Maybe (Prelude.NonEmpty HttpRouteHeader))+httpRouteMatch_headers = Lens.lens (\HttpRouteMatch' {headers} -> headers) (\s@HttpRouteMatch' {} a -> s {headers = a} :: HttpRouteMatch) Prelude.. Lens.mapping Lens.coerced++-- | The client request method to match on. Specify only one.+httpRouteMatch_method :: Lens.Lens' HttpRouteMatch (Prelude.Maybe HttpMethod)+httpRouteMatch_method = Lens.lens (\HttpRouteMatch' {method} -> method) (\s@HttpRouteMatch' {} a -> s {method = a} :: HttpRouteMatch)++-- | The client request path to match on.+httpRouteMatch_path :: Lens.Lens' HttpRouteMatch (Prelude.Maybe HttpPathMatch)+httpRouteMatch_path = Lens.lens (\HttpRouteMatch' {path} -> path) (\s@HttpRouteMatch' {} a -> s {path = a} :: HttpRouteMatch)++-- | The port number to match on.+httpRouteMatch_port :: Lens.Lens' HttpRouteMatch (Prelude.Maybe Prelude.Natural)+httpRouteMatch_port = Lens.lens (\HttpRouteMatch' {port} -> port) (\s@HttpRouteMatch' {} a -> s {port = a} :: HttpRouteMatch)++-- | Specifies the path to match requests with. This parameter must always+-- start with @\/@, which by itself matches all requests to the virtual+-- service name. You can also match for path-based routing of requests. For+-- example, if your virtual service name is @my-service.local@ and you want+-- the route to match requests to @my-service.local\/metrics@, your prefix+-- should be @\/metrics@.+httpRouteMatch_prefix :: Lens.Lens' HttpRouteMatch (Prelude.Maybe Prelude.Text)+httpRouteMatch_prefix = Lens.lens (\HttpRouteMatch' {prefix} -> prefix) (\s@HttpRouteMatch' {} a -> s {prefix = a} :: HttpRouteMatch)++-- | The client request query parameters to match on.+httpRouteMatch_queryParameters :: Lens.Lens' HttpRouteMatch (Prelude.Maybe (Prelude.NonEmpty HttpQueryParameter))+httpRouteMatch_queryParameters = Lens.lens (\HttpRouteMatch' {queryParameters} -> queryParameters) (\s@HttpRouteMatch' {} a -> s {queryParameters = a} :: HttpRouteMatch) Prelude.. Lens.mapping Lens.coerced++-- | The client request scheme to match on. Specify only one. Applicable only+-- for HTTP2 routes.+httpRouteMatch_scheme :: Lens.Lens' HttpRouteMatch (Prelude.Maybe HttpScheme)+httpRouteMatch_scheme = Lens.lens (\HttpRouteMatch' {scheme} -> scheme) (\s@HttpRouteMatch' {} a -> s {scheme = a} :: HttpRouteMatch)++instance Data.FromJSON HttpRouteMatch where+  parseJSON =+    Data.withObject+      "HttpRouteMatch"+      ( \x ->+          HttpRouteMatch'+            Prelude.<$> (x Data..:? "headers")+            Prelude.<*> (x Data..:? "method")+            Prelude.<*> (x Data..:? "path")+            Prelude.<*> (x Data..:? "port")+            Prelude.<*> (x Data..:? "prefix")+            Prelude.<*> (x Data..:? "queryParameters")+            Prelude.<*> (x Data..:? "scheme")+      )++instance Prelude.Hashable HttpRouteMatch where+  hashWithSalt _salt HttpRouteMatch' {..} =+    _salt+      `Prelude.hashWithSalt` headers+      `Prelude.hashWithSalt` method+      `Prelude.hashWithSalt` path+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` prefix+      `Prelude.hashWithSalt` queryParameters+      `Prelude.hashWithSalt` scheme++instance Prelude.NFData HttpRouteMatch where+  rnf HttpRouteMatch' {..} =+    Prelude.rnf headers+      `Prelude.seq` Prelude.rnf method+      `Prelude.seq` Prelude.rnf path+      `Prelude.seq` Prelude.rnf port+      `Prelude.seq` Prelude.rnf prefix+      `Prelude.seq` Prelude.rnf queryParameters+      `Prelude.seq` Prelude.rnf scheme++instance Data.ToJSON HttpRouteMatch where+  toJSON HttpRouteMatch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("headers" Data..=) Prelude.<$> headers,+            ("method" Data..=) Prelude.<$> method,+            ("path" Data..=) Prelude.<$> path,+            ("port" Data..=) Prelude.<$> port,+            ("prefix" Data..=) Prelude.<$> prefix,+            ("queryParameters" Data..=)+              Prelude.<$> queryParameters,+            ("scheme" Data..=) Prelude.<$> scheme+          ]+      )
+ gen/Amazonka/AppMesh/Types/HttpScheme.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.AppMesh.Types.HttpScheme+-- 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.AppMesh.Types.HttpScheme+  ( HttpScheme+      ( ..,+        HttpScheme_Http,+        HttpScheme_Https+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype HttpScheme = HttpScheme'+  { fromHttpScheme ::+      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 HttpScheme_Http :: HttpScheme+pattern HttpScheme_Http = HttpScheme' "http"++pattern HttpScheme_Https :: HttpScheme+pattern HttpScheme_Https = HttpScheme' "https"++{-# COMPLETE+  HttpScheme_Http,+  HttpScheme_Https,+  HttpScheme'+  #-}
+ gen/Amazonka/AppMesh/Types/HttpTimeout.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.HttpTimeout+-- 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.AppMesh.Types.HttpTimeout where++import Amazonka.AppMesh.Types.Duration+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents types of timeouts.+--+-- /See:/ 'newHttpTimeout' smart constructor.+data HttpTimeout = HttpTimeout'+  { -- | An object that represents an idle timeout. An idle timeout bounds the+    -- amount of time that a connection may be idle. The default value is none.+    idle :: Prelude.Maybe Duration,+    -- | An object that represents a per request timeout. The default value is 15+    -- seconds. If you set a higher timeout, then make sure that the higher+    -- value is set for each App Mesh resource in a conversation. For example,+    -- if a virtual node backend uses a virtual router provider to route to+    -- another virtual node, then the timeout should be greater than 15 seconds+    -- for the source and destination virtual node and the route.+    perRequest :: Prelude.Maybe Duration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'HttpTimeout' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'idle', 'httpTimeout_idle' - An object that represents an idle timeout. An idle timeout bounds the+-- amount of time that a connection may be idle. The default value is none.+--+-- 'perRequest', 'httpTimeout_perRequest' - An object that represents a per request timeout. The default value is 15+-- seconds. If you set a higher timeout, then make sure that the higher+-- value is set for each App Mesh resource in a conversation. For example,+-- if a virtual node backend uses a virtual router provider to route to+-- another virtual node, then the timeout should be greater than 15 seconds+-- for the source and destination virtual node and the route.+newHttpTimeout ::+  HttpTimeout+newHttpTimeout =+  HttpTimeout'+    { idle = Prelude.Nothing,+      perRequest = Prelude.Nothing+    }++-- | An object that represents an idle timeout. An idle timeout bounds the+-- amount of time that a connection may be idle. The default value is none.+httpTimeout_idle :: Lens.Lens' HttpTimeout (Prelude.Maybe Duration)+httpTimeout_idle = Lens.lens (\HttpTimeout' {idle} -> idle) (\s@HttpTimeout' {} a -> s {idle = a} :: HttpTimeout)++-- | An object that represents a per request timeout. The default value is 15+-- seconds. If you set a higher timeout, then make sure that the higher+-- value is set for each App Mesh resource in a conversation. For example,+-- if a virtual node backend uses a virtual router provider to route to+-- another virtual node, then the timeout should be greater than 15 seconds+-- for the source and destination virtual node and the route.+httpTimeout_perRequest :: Lens.Lens' HttpTimeout (Prelude.Maybe Duration)+httpTimeout_perRequest = Lens.lens (\HttpTimeout' {perRequest} -> perRequest) (\s@HttpTimeout' {} a -> s {perRequest = a} :: HttpTimeout)++instance Data.FromJSON HttpTimeout where+  parseJSON =+    Data.withObject+      "HttpTimeout"+      ( \x ->+          HttpTimeout'+            Prelude.<$> (x Data..:? "idle")+            Prelude.<*> (x Data..:? "perRequest")+      )++instance Prelude.Hashable HttpTimeout where+  hashWithSalt _salt HttpTimeout' {..} =+    _salt+      `Prelude.hashWithSalt` idle+      `Prelude.hashWithSalt` perRequest++instance Prelude.NFData HttpTimeout where+  rnf HttpTimeout' {..} =+    Prelude.rnf idle+      `Prelude.seq` Prelude.rnf perRequest++instance Data.ToJSON HttpTimeout where+  toJSON HttpTimeout' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("idle" Data..=) Prelude.<$> idle,+            ("perRequest" Data..=) Prelude.<$> perRequest+          ]+      )
+ gen/Amazonka/AppMesh/Types/IpPreference.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.AppMesh.Types.IpPreference+-- 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.AppMesh.Types.IpPreference+  ( IpPreference+      ( ..,+        IpPreference_IPv4_ONLY,+        IpPreference_IPv4_PREFERRED,+        IpPreference_IPv6_ONLY,+        IpPreference_IPv6_PREFERRED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype IpPreference = IpPreference'+  { fromIpPreference ::+      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 IpPreference_IPv4_ONLY :: IpPreference+pattern IpPreference_IPv4_ONLY = IpPreference' "IPv4_ONLY"++pattern IpPreference_IPv4_PREFERRED :: IpPreference+pattern IpPreference_IPv4_PREFERRED = IpPreference' "IPv4_PREFERRED"++pattern IpPreference_IPv6_ONLY :: IpPreference+pattern IpPreference_IPv6_ONLY = IpPreference' "IPv6_ONLY"++pattern IpPreference_IPv6_PREFERRED :: IpPreference+pattern IpPreference_IPv6_PREFERRED = IpPreference' "IPv6_PREFERRED"++{-# COMPLETE+  IpPreference_IPv4_ONLY,+  IpPreference_IPv4_PREFERRED,+  IpPreference_IPv6_ONLY,+  IpPreference_IPv6_PREFERRED,+  IpPreference'+  #-}
+ gen/Amazonka/AppMesh/Types/JsonFormatRef.hs view
@@ -0,0 +1,93 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.JsonFormatRef+-- 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.AppMesh.Types.JsonFormatRef where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the key value pairs for the JSON.+--+-- /See:/ 'newJsonFormatRef' smart constructor.+data JsonFormatRef = JsonFormatRef'+  { -- | The specified key for the JSON.+    key :: Prelude.Text,+    -- | The specified value for the JSON.+    value :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'JsonFormatRef' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'jsonFormatRef_key' - The specified key for the JSON.+--+-- 'value', 'jsonFormatRef_value' - The specified value for the JSON.+newJsonFormatRef ::+  -- | 'key'+  Prelude.Text ->+  -- | 'value'+  Prelude.Text ->+  JsonFormatRef+newJsonFormatRef pKey_ pValue_ =+  JsonFormatRef' {key = pKey_, value = pValue_}++-- | The specified key for the JSON.+jsonFormatRef_key :: Lens.Lens' JsonFormatRef Prelude.Text+jsonFormatRef_key = Lens.lens (\JsonFormatRef' {key} -> key) (\s@JsonFormatRef' {} a -> s {key = a} :: JsonFormatRef)++-- | The specified value for the JSON.+jsonFormatRef_value :: Lens.Lens' JsonFormatRef Prelude.Text+jsonFormatRef_value = Lens.lens (\JsonFormatRef' {value} -> value) (\s@JsonFormatRef' {} a -> s {value = a} :: JsonFormatRef)++instance Data.FromJSON JsonFormatRef where+  parseJSON =+    Data.withObject+      "JsonFormatRef"+      ( \x ->+          JsonFormatRef'+            Prelude.<$> (x Data..: "key")+            Prelude.<*> (x Data..: "value")+      )++instance Prelude.Hashable JsonFormatRef where+  hashWithSalt _salt JsonFormatRef' {..} =+    _salt+      `Prelude.hashWithSalt` key+      `Prelude.hashWithSalt` value++instance Prelude.NFData JsonFormatRef where+  rnf JsonFormatRef' {..} =+    Prelude.rnf key `Prelude.seq` Prelude.rnf value++instance Data.ToJSON JsonFormatRef where+  toJSON JsonFormatRef' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("key" Data..= key),+            Prelude.Just ("value" Data..= value)+          ]+      )
+ gen/Amazonka/AppMesh/Types/Listener.hs view
@@ -0,0 +1,158 @@+{-# 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.AppMesh.Types.Listener+-- 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.AppMesh.Types.Listener where++import Amazonka.AppMesh.Types.HealthCheckPolicy+import Amazonka.AppMesh.Types.ListenerTimeout+import Amazonka.AppMesh.Types.ListenerTls+import Amazonka.AppMesh.Types.OutlierDetection+import Amazonka.AppMesh.Types.PortMapping+import Amazonka.AppMesh.Types.VirtualNodeConnectionPool+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a listener for a virtual node.+--+-- /See:/ 'newListener' smart constructor.+data Listener = Listener'+  { -- | The connection pool information for the listener.+    connectionPool :: Prelude.Maybe VirtualNodeConnectionPool,+    -- | The health check information for the listener.+    healthCheck :: Prelude.Maybe HealthCheckPolicy,+    -- | The outlier detection information for the listener.+    outlierDetection :: Prelude.Maybe OutlierDetection,+    -- | An object that represents timeouts for different protocols.+    timeout :: Prelude.Maybe ListenerTimeout,+    -- | A reference to an object that represents the Transport Layer Security+    -- (TLS) properties for a listener.+    tls :: Prelude.Maybe ListenerTls,+    -- | The port mapping information for the listener.+    portMapping :: PortMapping+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Listener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'connectionPool', 'listener_connectionPool' - The connection pool information for the listener.+--+-- 'healthCheck', 'listener_healthCheck' - The health check information for the listener.+--+-- 'outlierDetection', 'listener_outlierDetection' - The outlier detection information for the listener.+--+-- 'timeout', 'listener_timeout' - An object that represents timeouts for different protocols.+--+-- 'tls', 'listener_tls' - A reference to an object that represents the Transport Layer Security+-- (TLS) properties for a listener.+--+-- 'portMapping', 'listener_portMapping' - The port mapping information for the listener.+newListener ::+  -- | 'portMapping'+  PortMapping ->+  Listener+newListener pPortMapping_ =+  Listener'+    { connectionPool = Prelude.Nothing,+      healthCheck = Prelude.Nothing,+      outlierDetection = Prelude.Nothing,+      timeout = Prelude.Nothing,+      tls = Prelude.Nothing,+      portMapping = pPortMapping_+    }++-- | The connection pool information for the listener.+listener_connectionPool :: Lens.Lens' Listener (Prelude.Maybe VirtualNodeConnectionPool)+listener_connectionPool = Lens.lens (\Listener' {connectionPool} -> connectionPool) (\s@Listener' {} a -> s {connectionPool = a} :: Listener)++-- | The health check information for the listener.+listener_healthCheck :: Lens.Lens' Listener (Prelude.Maybe HealthCheckPolicy)+listener_healthCheck = Lens.lens (\Listener' {healthCheck} -> healthCheck) (\s@Listener' {} a -> s {healthCheck = a} :: Listener)++-- | The outlier detection information for the listener.+listener_outlierDetection :: Lens.Lens' Listener (Prelude.Maybe OutlierDetection)+listener_outlierDetection = Lens.lens (\Listener' {outlierDetection} -> outlierDetection) (\s@Listener' {} a -> s {outlierDetection = a} :: Listener)++-- | An object that represents timeouts for different protocols.+listener_timeout :: Lens.Lens' Listener (Prelude.Maybe ListenerTimeout)+listener_timeout = Lens.lens (\Listener' {timeout} -> timeout) (\s@Listener' {} a -> s {timeout = a} :: Listener)++-- | A reference to an object that represents the Transport Layer Security+-- (TLS) properties for a listener.+listener_tls :: Lens.Lens' Listener (Prelude.Maybe ListenerTls)+listener_tls = Lens.lens (\Listener' {tls} -> tls) (\s@Listener' {} a -> s {tls = a} :: Listener)++-- | The port mapping information for the listener.+listener_portMapping :: Lens.Lens' Listener PortMapping+listener_portMapping = Lens.lens (\Listener' {portMapping} -> portMapping) (\s@Listener' {} a -> s {portMapping = a} :: Listener)++instance Data.FromJSON Listener where+  parseJSON =+    Data.withObject+      "Listener"+      ( \x ->+          Listener'+            Prelude.<$> (x Data..:? "connectionPool")+            Prelude.<*> (x Data..:? "healthCheck")+            Prelude.<*> (x Data..:? "outlierDetection")+            Prelude.<*> (x Data..:? "timeout")+            Prelude.<*> (x Data..:? "tls")+            Prelude.<*> (x Data..: "portMapping")+      )++instance Prelude.Hashable Listener where+  hashWithSalt _salt Listener' {..} =+    _salt+      `Prelude.hashWithSalt` connectionPool+      `Prelude.hashWithSalt` healthCheck+      `Prelude.hashWithSalt` outlierDetection+      `Prelude.hashWithSalt` timeout+      `Prelude.hashWithSalt` tls+      `Prelude.hashWithSalt` portMapping++instance Prelude.NFData Listener where+  rnf Listener' {..} =+    Prelude.rnf connectionPool+      `Prelude.seq` Prelude.rnf healthCheck+      `Prelude.seq` Prelude.rnf outlierDetection+      `Prelude.seq` Prelude.rnf timeout+      `Prelude.seq` Prelude.rnf tls+      `Prelude.seq` Prelude.rnf portMapping++instance Data.ToJSON Listener where+  toJSON Listener' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("connectionPool" Data..=)+              Prelude.<$> connectionPool,+            ("healthCheck" Data..=) Prelude.<$> healthCheck,+            ("outlierDetection" Data..=)+              Prelude.<$> outlierDetection,+            ("timeout" Data..=) Prelude.<$> timeout,+            ("tls" Data..=) Prelude.<$> tls,+            Prelude.Just ("portMapping" Data..= portMapping)+          ]+      )
+ gen/Amazonka/AppMesh/Types/ListenerTimeout.hs view
@@ -0,0 +1,122 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.ListenerTimeout+-- 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.AppMesh.Types.ListenerTimeout where++import Amazonka.AppMesh.Types.GrpcTimeout+import Amazonka.AppMesh.Types.HttpTimeout+import Amazonka.AppMesh.Types.TcpTimeout+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents timeouts for different protocols.+--+-- /See:/ 'newListenerTimeout' smart constructor.+data ListenerTimeout = ListenerTimeout'+  { -- | An object that represents types of timeouts.+    grpc :: Prelude.Maybe GrpcTimeout,+    -- | An object that represents types of timeouts.+    http :: Prelude.Maybe HttpTimeout,+    -- | An object that represents types of timeouts.+    http2 :: Prelude.Maybe HttpTimeout,+    -- | An object that represents types of timeouts.+    tcp :: Prelude.Maybe TcpTimeout+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListenerTimeout' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'grpc', 'listenerTimeout_grpc' - An object that represents types of timeouts.+--+-- 'http', 'listenerTimeout_http' - An object that represents types of timeouts.+--+-- 'http2', 'listenerTimeout_http2' - An object that represents types of timeouts.+--+-- 'tcp', 'listenerTimeout_tcp' - An object that represents types of timeouts.+newListenerTimeout ::+  ListenerTimeout+newListenerTimeout =+  ListenerTimeout'+    { grpc = Prelude.Nothing,+      http = Prelude.Nothing,+      http2 = Prelude.Nothing,+      tcp = Prelude.Nothing+    }++-- | An object that represents types of timeouts.+listenerTimeout_grpc :: Lens.Lens' ListenerTimeout (Prelude.Maybe GrpcTimeout)+listenerTimeout_grpc = Lens.lens (\ListenerTimeout' {grpc} -> grpc) (\s@ListenerTimeout' {} a -> s {grpc = a} :: ListenerTimeout)++-- | An object that represents types of timeouts.+listenerTimeout_http :: Lens.Lens' ListenerTimeout (Prelude.Maybe HttpTimeout)+listenerTimeout_http = Lens.lens (\ListenerTimeout' {http} -> http) (\s@ListenerTimeout' {} a -> s {http = a} :: ListenerTimeout)++-- | An object that represents types of timeouts.+listenerTimeout_http2 :: Lens.Lens' ListenerTimeout (Prelude.Maybe HttpTimeout)+listenerTimeout_http2 = Lens.lens (\ListenerTimeout' {http2} -> http2) (\s@ListenerTimeout' {} a -> s {http2 = a} :: ListenerTimeout)++-- | An object that represents types of timeouts.+listenerTimeout_tcp :: Lens.Lens' ListenerTimeout (Prelude.Maybe TcpTimeout)+listenerTimeout_tcp = Lens.lens (\ListenerTimeout' {tcp} -> tcp) (\s@ListenerTimeout' {} a -> s {tcp = a} :: ListenerTimeout)++instance Data.FromJSON ListenerTimeout where+  parseJSON =+    Data.withObject+      "ListenerTimeout"+      ( \x ->+          ListenerTimeout'+            Prelude.<$> (x Data..:? "grpc")+            Prelude.<*> (x Data..:? "http")+            Prelude.<*> (x Data..:? "http2")+            Prelude.<*> (x Data..:? "tcp")+      )++instance Prelude.Hashable ListenerTimeout where+  hashWithSalt _salt ListenerTimeout' {..} =+    _salt+      `Prelude.hashWithSalt` grpc+      `Prelude.hashWithSalt` http+      `Prelude.hashWithSalt` http2+      `Prelude.hashWithSalt` tcp++instance Prelude.NFData ListenerTimeout where+  rnf ListenerTimeout' {..} =+    Prelude.rnf grpc+      `Prelude.seq` Prelude.rnf http+      `Prelude.seq` Prelude.rnf http2+      `Prelude.seq` Prelude.rnf tcp++instance Data.ToJSON ListenerTimeout where+  toJSON ListenerTimeout' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("grpc" Data..=) Prelude.<$> grpc,+            ("http" Data..=) Prelude.<$> http,+            ("http2" Data..=) Prelude.<$> http2,+            ("tcp" Data..=) Prelude.<$> tcp+          ]+      )
+ gen/Amazonka/AppMesh/Types/ListenerTls.hs view
@@ -0,0 +1,141 @@+{-# 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.AppMesh.Types.ListenerTls+-- 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.AppMesh.Types.ListenerTls where++import Amazonka.AppMesh.Types.ListenerTlsCertificate+import Amazonka.AppMesh.Types.ListenerTlsMode+import Amazonka.AppMesh.Types.ListenerTlsValidationContext+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the Transport Layer Security (TLS) properties+-- for a listener.+--+-- /See:/ 'newListenerTls' smart constructor.+data ListenerTls = ListenerTls'+  { -- | A reference to an object that represents a listener\'s Transport Layer+    -- Security (TLS) validation context.+    validation :: Prelude.Maybe ListenerTlsValidationContext,+    -- | A reference to an object that represents a listener\'s Transport Layer+    -- Security (TLS) certificate.+    certificate :: ListenerTlsCertificate,+    -- | Specify one of the following modes.+    --+    -- -   ____STRICT – Listener only accepts connections with TLS enabled.+    --+    -- -   ____PERMISSIVE – Listener accepts connections with or without TLS+    --     enabled.+    --+    -- -   ____DISABLED – Listener only accepts connections without TLS.+    mode :: ListenerTlsMode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListenerTls' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'validation', 'listenerTls_validation' - A reference to an object that represents a listener\'s Transport Layer+-- Security (TLS) validation context.+--+-- 'certificate', 'listenerTls_certificate' - A reference to an object that represents a listener\'s Transport Layer+-- Security (TLS) certificate.+--+-- 'mode', 'listenerTls_mode' - Specify one of the following modes.+--+-- -   ____STRICT – Listener only accepts connections with TLS enabled.+--+-- -   ____PERMISSIVE – Listener accepts connections with or without TLS+--     enabled.+--+-- -   ____DISABLED – Listener only accepts connections without TLS.+newListenerTls ::+  -- | 'certificate'+  ListenerTlsCertificate ->+  -- | 'mode'+  ListenerTlsMode ->+  ListenerTls+newListenerTls pCertificate_ pMode_ =+  ListenerTls'+    { validation = Prelude.Nothing,+      certificate = pCertificate_,+      mode = pMode_+    }++-- | A reference to an object that represents a listener\'s Transport Layer+-- Security (TLS) validation context.+listenerTls_validation :: Lens.Lens' ListenerTls (Prelude.Maybe ListenerTlsValidationContext)+listenerTls_validation = Lens.lens (\ListenerTls' {validation} -> validation) (\s@ListenerTls' {} a -> s {validation = a} :: ListenerTls)++-- | A reference to an object that represents a listener\'s Transport Layer+-- Security (TLS) certificate.+listenerTls_certificate :: Lens.Lens' ListenerTls ListenerTlsCertificate+listenerTls_certificate = Lens.lens (\ListenerTls' {certificate} -> certificate) (\s@ListenerTls' {} a -> s {certificate = a} :: ListenerTls)++-- | Specify one of the following modes.+--+-- -   ____STRICT – Listener only accepts connections with TLS enabled.+--+-- -   ____PERMISSIVE – Listener accepts connections with or without TLS+--     enabled.+--+-- -   ____DISABLED – Listener only accepts connections without TLS.+listenerTls_mode :: Lens.Lens' ListenerTls ListenerTlsMode+listenerTls_mode = Lens.lens (\ListenerTls' {mode} -> mode) (\s@ListenerTls' {} a -> s {mode = a} :: ListenerTls)++instance Data.FromJSON ListenerTls where+  parseJSON =+    Data.withObject+      "ListenerTls"+      ( \x ->+          ListenerTls'+            Prelude.<$> (x Data..:? "validation")+            Prelude.<*> (x Data..: "certificate")+            Prelude.<*> (x Data..: "mode")+      )++instance Prelude.Hashable ListenerTls where+  hashWithSalt _salt ListenerTls' {..} =+    _salt+      `Prelude.hashWithSalt` validation+      `Prelude.hashWithSalt` certificate+      `Prelude.hashWithSalt` mode++instance Prelude.NFData ListenerTls where+  rnf ListenerTls' {..} =+    Prelude.rnf validation+      `Prelude.seq` Prelude.rnf certificate+      `Prelude.seq` Prelude.rnf mode++instance Data.ToJSON ListenerTls where+  toJSON ListenerTls' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("validation" Data..=) Prelude.<$> validation,+            Prelude.Just ("certificate" Data..= certificate),+            Prelude.Just ("mode" Data..= mode)+          ]+      )
+ gen/Amazonka/AppMesh/Types/ListenerTlsAcmCertificate.hs view
@@ -0,0 +1,92 @@+{-# 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.AppMesh.Types.ListenerTlsAcmCertificate+-- 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.AppMesh.Types.ListenerTlsAcmCertificate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents an Certificate Manager certificate.+--+-- /See:/ 'newListenerTlsAcmCertificate' smart constructor.+data ListenerTlsAcmCertificate = ListenerTlsAcmCertificate'+  { -- | The Amazon Resource Name (ARN) for the certificate. The certificate must+    -- meet specific requirements and you must have proxy authorization+    -- enabled. For more information, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites Transport Layer Security (TLS)>.+    certificateArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListenerTlsAcmCertificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'certificateArn', 'listenerTlsAcmCertificate_certificateArn' - The Amazon Resource Name (ARN) for the certificate. The certificate must+-- meet specific requirements and you must have proxy authorization+-- enabled. For more information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites Transport Layer Security (TLS)>.+newListenerTlsAcmCertificate ::+  -- | 'certificateArn'+  Prelude.Text ->+  ListenerTlsAcmCertificate+newListenerTlsAcmCertificate pCertificateArn_ =+  ListenerTlsAcmCertificate'+    { certificateArn =+        pCertificateArn_+    }++-- | The Amazon Resource Name (ARN) for the certificate. The certificate must+-- meet specific requirements and you must have proxy authorization+-- enabled. For more information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites Transport Layer Security (TLS)>.+listenerTlsAcmCertificate_certificateArn :: Lens.Lens' ListenerTlsAcmCertificate Prelude.Text+listenerTlsAcmCertificate_certificateArn = Lens.lens (\ListenerTlsAcmCertificate' {certificateArn} -> certificateArn) (\s@ListenerTlsAcmCertificate' {} a -> s {certificateArn = a} :: ListenerTlsAcmCertificate)++instance Data.FromJSON ListenerTlsAcmCertificate where+  parseJSON =+    Data.withObject+      "ListenerTlsAcmCertificate"+      ( \x ->+          ListenerTlsAcmCertificate'+            Prelude.<$> (x Data..: "certificateArn")+      )++instance Prelude.Hashable ListenerTlsAcmCertificate where+  hashWithSalt _salt ListenerTlsAcmCertificate' {..} =+    _salt `Prelude.hashWithSalt` certificateArn++instance Prelude.NFData ListenerTlsAcmCertificate where+  rnf ListenerTlsAcmCertificate' {..} =+    Prelude.rnf certificateArn++instance Data.ToJSON ListenerTlsAcmCertificate where+  toJSON ListenerTlsAcmCertificate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("certificateArn" Data..= certificateArn)+          ]+      )
+ gen/Amazonka/AppMesh/Types/ListenerTlsCertificate.hs view
@@ -0,0 +1,116 @@+{-# 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.AppMesh.Types.ListenerTlsCertificate+-- 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.AppMesh.Types.ListenerTlsCertificate where++import Amazonka.AppMesh.Types.ListenerTlsAcmCertificate+import Amazonka.AppMesh.Types.ListenerTlsFileCertificate+import Amazonka.AppMesh.Types.ListenerTlsSdsCertificate+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a listener\'s Transport Layer Security (TLS)+-- certificate.+--+-- /See:/ 'newListenerTlsCertificate' smart constructor.+data ListenerTlsCertificate = ListenerTlsCertificate'+  { -- | A reference to an object that represents an Certificate Manager+    -- certificate.+    acm :: Prelude.Maybe ListenerTlsAcmCertificate,+    -- | A reference to an object that represents a local file certificate.+    file :: Prelude.Maybe ListenerTlsFileCertificate,+    -- | A reference to an object that represents a listener\'s Secret Discovery+    -- Service certificate.+    sds :: Prelude.Maybe ListenerTlsSdsCertificate+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListenerTlsCertificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acm', 'listenerTlsCertificate_acm' - A reference to an object that represents an Certificate Manager+-- certificate.+--+-- 'file', 'listenerTlsCertificate_file' - A reference to an object that represents a local file certificate.+--+-- 'sds', 'listenerTlsCertificate_sds' - A reference to an object that represents a listener\'s Secret Discovery+-- Service certificate.+newListenerTlsCertificate ::+  ListenerTlsCertificate+newListenerTlsCertificate =+  ListenerTlsCertificate'+    { acm = Prelude.Nothing,+      file = Prelude.Nothing,+      sds = Prelude.Nothing+    }++-- | A reference to an object that represents an Certificate Manager+-- certificate.+listenerTlsCertificate_acm :: Lens.Lens' ListenerTlsCertificate (Prelude.Maybe ListenerTlsAcmCertificate)+listenerTlsCertificate_acm = Lens.lens (\ListenerTlsCertificate' {acm} -> acm) (\s@ListenerTlsCertificate' {} a -> s {acm = a} :: ListenerTlsCertificate)++-- | A reference to an object that represents a local file certificate.+listenerTlsCertificate_file :: Lens.Lens' ListenerTlsCertificate (Prelude.Maybe ListenerTlsFileCertificate)+listenerTlsCertificate_file = Lens.lens (\ListenerTlsCertificate' {file} -> file) (\s@ListenerTlsCertificate' {} a -> s {file = a} :: ListenerTlsCertificate)++-- | A reference to an object that represents a listener\'s Secret Discovery+-- Service certificate.+listenerTlsCertificate_sds :: Lens.Lens' ListenerTlsCertificate (Prelude.Maybe ListenerTlsSdsCertificate)+listenerTlsCertificate_sds = Lens.lens (\ListenerTlsCertificate' {sds} -> sds) (\s@ListenerTlsCertificate' {} a -> s {sds = a} :: ListenerTlsCertificate)++instance Data.FromJSON ListenerTlsCertificate where+  parseJSON =+    Data.withObject+      "ListenerTlsCertificate"+      ( \x ->+          ListenerTlsCertificate'+            Prelude.<$> (x Data..:? "acm")+            Prelude.<*> (x Data..:? "file")+            Prelude.<*> (x Data..:? "sds")+      )++instance Prelude.Hashable ListenerTlsCertificate where+  hashWithSalt _salt ListenerTlsCertificate' {..} =+    _salt+      `Prelude.hashWithSalt` acm+      `Prelude.hashWithSalt` file+      `Prelude.hashWithSalt` sds++instance Prelude.NFData ListenerTlsCertificate where+  rnf ListenerTlsCertificate' {..} =+    Prelude.rnf acm+      `Prelude.seq` Prelude.rnf file+      `Prelude.seq` Prelude.rnf sds++instance Data.ToJSON ListenerTlsCertificate where+  toJSON ListenerTlsCertificate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("acm" Data..=) Prelude.<$> acm,+            ("file" Data..=) Prelude.<$> file,+            ("sds" Data..=) Prelude.<$> sds+          ]+      )
+ gen/Amazonka/AppMesh/Types/ListenerTlsFileCertificate.hs view
@@ -0,0 +1,107 @@+{-# 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.AppMesh.Types.ListenerTlsFileCertificate+-- 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.AppMesh.Types.ListenerTlsFileCertificate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a local file certificate. The certificate must+-- meet specific requirements and you must have proxy authorization+-- enabled. For more information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites Transport Layer Security (TLS)>.+--+-- /See:/ 'newListenerTlsFileCertificate' smart constructor.+data ListenerTlsFileCertificate = ListenerTlsFileCertificate'+  { -- | The certificate chain for the certificate.+    certificateChain :: Prelude.Text,+    -- | The private key for a certificate stored on the file system of the+    -- virtual node that the proxy is running on.+    privateKey :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListenerTlsFileCertificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'certificateChain', 'listenerTlsFileCertificate_certificateChain' - The certificate chain for the certificate.+--+-- 'privateKey', 'listenerTlsFileCertificate_privateKey' - The private key for a certificate stored on the file system of the+-- virtual node that the proxy is running on.+newListenerTlsFileCertificate ::+  -- | 'certificateChain'+  Prelude.Text ->+  -- | 'privateKey'+  Prelude.Text ->+  ListenerTlsFileCertificate+newListenerTlsFileCertificate+  pCertificateChain_+  pPrivateKey_ =+    ListenerTlsFileCertificate'+      { certificateChain =+          pCertificateChain_,+        privateKey = pPrivateKey_+      }++-- | The certificate chain for the certificate.+listenerTlsFileCertificate_certificateChain :: Lens.Lens' ListenerTlsFileCertificate Prelude.Text+listenerTlsFileCertificate_certificateChain = Lens.lens (\ListenerTlsFileCertificate' {certificateChain} -> certificateChain) (\s@ListenerTlsFileCertificate' {} a -> s {certificateChain = a} :: ListenerTlsFileCertificate)++-- | The private key for a certificate stored on the file system of the+-- virtual node that the proxy is running on.+listenerTlsFileCertificate_privateKey :: Lens.Lens' ListenerTlsFileCertificate Prelude.Text+listenerTlsFileCertificate_privateKey = Lens.lens (\ListenerTlsFileCertificate' {privateKey} -> privateKey) (\s@ListenerTlsFileCertificate' {} a -> s {privateKey = a} :: ListenerTlsFileCertificate)++instance Data.FromJSON ListenerTlsFileCertificate where+  parseJSON =+    Data.withObject+      "ListenerTlsFileCertificate"+      ( \x ->+          ListenerTlsFileCertificate'+            Prelude.<$> (x Data..: "certificateChain")+            Prelude.<*> (x Data..: "privateKey")+      )++instance Prelude.Hashable ListenerTlsFileCertificate where+  hashWithSalt _salt ListenerTlsFileCertificate' {..} =+    _salt+      `Prelude.hashWithSalt` certificateChain+      `Prelude.hashWithSalt` privateKey++instance Prelude.NFData ListenerTlsFileCertificate where+  rnf ListenerTlsFileCertificate' {..} =+    Prelude.rnf certificateChain+      `Prelude.seq` Prelude.rnf privateKey++instance Data.ToJSON ListenerTlsFileCertificate where+  toJSON ListenerTlsFileCertificate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("certificateChain" Data..= certificateChain),+            Prelude.Just ("privateKey" Data..= privateKey)+          ]+      )
+ gen/Amazonka/AppMesh/Types/ListenerTlsMode.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.ListenerTlsMode+-- 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.AppMesh.Types.ListenerTlsMode+  ( ListenerTlsMode+      ( ..,+        ListenerTlsMode_DISABLED,+        ListenerTlsMode_PERMISSIVE,+        ListenerTlsMode_STRICT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ListenerTlsMode = ListenerTlsMode'+  { fromListenerTlsMode ::+      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 ListenerTlsMode_DISABLED :: ListenerTlsMode+pattern ListenerTlsMode_DISABLED = ListenerTlsMode' "DISABLED"++pattern ListenerTlsMode_PERMISSIVE :: ListenerTlsMode+pattern ListenerTlsMode_PERMISSIVE = ListenerTlsMode' "PERMISSIVE"++pattern ListenerTlsMode_STRICT :: ListenerTlsMode+pattern ListenerTlsMode_STRICT = ListenerTlsMode' "STRICT"++{-# COMPLETE+  ListenerTlsMode_DISABLED,+  ListenerTlsMode_PERMISSIVE,+  ListenerTlsMode_STRICT,+  ListenerTlsMode'+  #-}
+ gen/Amazonka/AppMesh/Types/ListenerTlsSdsCertificate.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.ListenerTlsSdsCertificate+-- 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.AppMesh.Types.ListenerTlsSdsCertificate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the listener\'s Secret Discovery Service+-- certificate. The proxy must be configured with a local SDS provider via+-- a Unix Domain Socket. See App Mesh+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html TLS documentation>+-- for more info.+--+-- /See:/ 'newListenerTlsSdsCertificate' smart constructor.+data ListenerTlsSdsCertificate = ListenerTlsSdsCertificate'+  { -- | A reference to an object that represents the name of the secret+    -- requested from the Secret Discovery Service provider representing+    -- Transport Layer Security (TLS) materials like a certificate or+    -- certificate chain.+    secretName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListenerTlsSdsCertificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'secretName', 'listenerTlsSdsCertificate_secretName' - A reference to an object that represents the name of the secret+-- requested from the Secret Discovery Service provider representing+-- Transport Layer Security (TLS) materials like a certificate or+-- certificate chain.+newListenerTlsSdsCertificate ::+  -- | 'secretName'+  Prelude.Text ->+  ListenerTlsSdsCertificate+newListenerTlsSdsCertificate pSecretName_ =+  ListenerTlsSdsCertificate'+    { secretName =+        pSecretName_+    }++-- | A reference to an object that represents the name of the secret+-- requested from the Secret Discovery Service provider representing+-- Transport Layer Security (TLS) materials like a certificate or+-- certificate chain.+listenerTlsSdsCertificate_secretName :: Lens.Lens' ListenerTlsSdsCertificate Prelude.Text+listenerTlsSdsCertificate_secretName = Lens.lens (\ListenerTlsSdsCertificate' {secretName} -> secretName) (\s@ListenerTlsSdsCertificate' {} a -> s {secretName = a} :: ListenerTlsSdsCertificate)++instance Data.FromJSON ListenerTlsSdsCertificate where+  parseJSON =+    Data.withObject+      "ListenerTlsSdsCertificate"+      ( \x ->+          ListenerTlsSdsCertificate'+            Prelude.<$> (x Data..: "secretName")+      )++instance Prelude.Hashable ListenerTlsSdsCertificate where+  hashWithSalt _salt ListenerTlsSdsCertificate' {..} =+    _salt `Prelude.hashWithSalt` secretName++instance Prelude.NFData ListenerTlsSdsCertificate where+  rnf ListenerTlsSdsCertificate' {..} =+    Prelude.rnf secretName++instance Data.ToJSON ListenerTlsSdsCertificate where+  toJSON ListenerTlsSdsCertificate' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("secretName" Data..= secretName)]+      )
+ gen/Amazonka/AppMesh/Types/ListenerTlsValidationContext.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.AppMesh.Types.ListenerTlsValidationContext+-- 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.AppMesh.Types.ListenerTlsValidationContext where++import Amazonka.AppMesh.Types.ListenerTlsValidationContextTrust+import Amazonka.AppMesh.Types.SubjectAlternativeNames+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a listener\'s Transport Layer Security (TLS)+-- validation context.+--+-- /See:/ 'newListenerTlsValidationContext' smart constructor.+data ListenerTlsValidationContext = ListenerTlsValidationContext'+  { -- | A reference to an object that represents the SANs for a listener\'s+    -- Transport Layer Security (TLS) validation context.+    subjectAlternativeNames :: Prelude.Maybe SubjectAlternativeNames,+    -- | A reference to where to retrieve the trust chain when validating a+    -- peer’s Transport Layer Security (TLS) certificate.+    trust :: ListenerTlsValidationContextTrust+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListenerTlsValidationContext' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'subjectAlternativeNames', 'listenerTlsValidationContext_subjectAlternativeNames' - A reference to an object that represents the SANs for a listener\'s+-- Transport Layer Security (TLS) validation context.+--+-- 'trust', 'listenerTlsValidationContext_trust' - A reference to where to retrieve the trust chain when validating a+-- peer’s Transport Layer Security (TLS) certificate.+newListenerTlsValidationContext ::+  -- | 'trust'+  ListenerTlsValidationContextTrust ->+  ListenerTlsValidationContext+newListenerTlsValidationContext pTrust_ =+  ListenerTlsValidationContext'+    { subjectAlternativeNames =+        Prelude.Nothing,+      trust = pTrust_+    }++-- | A reference to an object that represents the SANs for a listener\'s+-- Transport Layer Security (TLS) validation context.+listenerTlsValidationContext_subjectAlternativeNames :: Lens.Lens' ListenerTlsValidationContext (Prelude.Maybe SubjectAlternativeNames)+listenerTlsValidationContext_subjectAlternativeNames = Lens.lens (\ListenerTlsValidationContext' {subjectAlternativeNames} -> subjectAlternativeNames) (\s@ListenerTlsValidationContext' {} a -> s {subjectAlternativeNames = a} :: ListenerTlsValidationContext)++-- | A reference to where to retrieve the trust chain when validating a+-- peer’s Transport Layer Security (TLS) certificate.+listenerTlsValidationContext_trust :: Lens.Lens' ListenerTlsValidationContext ListenerTlsValidationContextTrust+listenerTlsValidationContext_trust = Lens.lens (\ListenerTlsValidationContext' {trust} -> trust) (\s@ListenerTlsValidationContext' {} a -> s {trust = a} :: ListenerTlsValidationContext)++instance Data.FromJSON ListenerTlsValidationContext where+  parseJSON =+    Data.withObject+      "ListenerTlsValidationContext"+      ( \x ->+          ListenerTlsValidationContext'+            Prelude.<$> (x Data..:? "subjectAlternativeNames")+            Prelude.<*> (x Data..: "trust")+      )++instance+  Prelude.Hashable+    ListenerTlsValidationContext+  where+  hashWithSalt _salt ListenerTlsValidationContext' {..} =+    _salt+      `Prelude.hashWithSalt` subjectAlternativeNames+      `Prelude.hashWithSalt` trust++instance Prelude.NFData ListenerTlsValidationContext where+  rnf ListenerTlsValidationContext' {..} =+    Prelude.rnf subjectAlternativeNames+      `Prelude.seq` Prelude.rnf trust++instance Data.ToJSON ListenerTlsValidationContext where+  toJSON ListenerTlsValidationContext' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("subjectAlternativeNames" Data..=)+              Prelude.<$> subjectAlternativeNames,+            Prelude.Just ("trust" Data..= trust)+          ]+      )
+ gen/Amazonka/AppMesh/Types/ListenerTlsValidationContextTrust.hs view
@@ -0,0 +1,116 @@+{-# 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.AppMesh.Types.ListenerTlsValidationContextTrust+-- 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.AppMesh.Types.ListenerTlsValidationContextTrust where++import Amazonka.AppMesh.Types.TlsValidationContextFileTrust+import Amazonka.AppMesh.Types.TlsValidationContextSdsTrust+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a listener\'s Transport Layer Security (TLS)+-- validation context trust.+--+-- /See:/ 'newListenerTlsValidationContextTrust' smart constructor.+data ListenerTlsValidationContextTrust = ListenerTlsValidationContextTrust'+  { -- | An object that represents a Transport Layer Security (TLS) validation+    -- context trust for a local file.+    file :: Prelude.Maybe TlsValidationContextFileTrust,+    -- | A reference to an object that represents a listener\'s Transport Layer+    -- Security (TLS) Secret Discovery Service validation context trust.+    sds :: Prelude.Maybe TlsValidationContextSdsTrust+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListenerTlsValidationContextTrust' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'file', 'listenerTlsValidationContextTrust_file' - An object that represents a Transport Layer Security (TLS) validation+-- context trust for a local file.+--+-- 'sds', 'listenerTlsValidationContextTrust_sds' - A reference to an object that represents a listener\'s Transport Layer+-- Security (TLS) Secret Discovery Service validation context trust.+newListenerTlsValidationContextTrust ::+  ListenerTlsValidationContextTrust+newListenerTlsValidationContextTrust =+  ListenerTlsValidationContextTrust'+    { file =+        Prelude.Nothing,+      sds = Prelude.Nothing+    }++-- | An object that represents a Transport Layer Security (TLS) validation+-- context trust for a local file.+listenerTlsValidationContextTrust_file :: Lens.Lens' ListenerTlsValidationContextTrust (Prelude.Maybe TlsValidationContextFileTrust)+listenerTlsValidationContextTrust_file = Lens.lens (\ListenerTlsValidationContextTrust' {file} -> file) (\s@ListenerTlsValidationContextTrust' {} a -> s {file = a} :: ListenerTlsValidationContextTrust)++-- | A reference to an object that represents a listener\'s Transport Layer+-- Security (TLS) Secret Discovery Service validation context trust.+listenerTlsValidationContextTrust_sds :: Lens.Lens' ListenerTlsValidationContextTrust (Prelude.Maybe TlsValidationContextSdsTrust)+listenerTlsValidationContextTrust_sds = Lens.lens (\ListenerTlsValidationContextTrust' {sds} -> sds) (\s@ListenerTlsValidationContextTrust' {} a -> s {sds = a} :: ListenerTlsValidationContextTrust)++instance+  Data.FromJSON+    ListenerTlsValidationContextTrust+  where+  parseJSON =+    Data.withObject+      "ListenerTlsValidationContextTrust"+      ( \x ->+          ListenerTlsValidationContextTrust'+            Prelude.<$> (x Data..:? "file")+            Prelude.<*> (x Data..:? "sds")+      )++instance+  Prelude.Hashable+    ListenerTlsValidationContextTrust+  where+  hashWithSalt+    _salt+    ListenerTlsValidationContextTrust' {..} =+      _salt+        `Prelude.hashWithSalt` file+        `Prelude.hashWithSalt` sds++instance+  Prelude.NFData+    ListenerTlsValidationContextTrust+  where+  rnf ListenerTlsValidationContextTrust' {..} =+    Prelude.rnf file `Prelude.seq` Prelude.rnf sds++instance+  Data.ToJSON+    ListenerTlsValidationContextTrust+  where+  toJSON ListenerTlsValidationContextTrust' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("file" Data..=) Prelude.<$> file,+            ("sds" Data..=) Prelude.<$> sds+          ]+      )
+ gen/Amazonka/AppMesh/Types/Logging.hs view
@@ -0,0 +1,74 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.Logging+-- 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.AppMesh.Types.Logging where++import Amazonka.AppMesh.Types.AccessLog+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the logging information for a virtual node.+--+-- /See:/ 'newLogging' smart constructor.+data Logging = Logging'+  { -- | The access log configuration for a virtual node.+    accessLog :: Prelude.Maybe AccessLog+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Logging' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accessLog', 'logging_accessLog' - The access log configuration for a virtual node.+newLogging ::+  Logging+newLogging = Logging' {accessLog = Prelude.Nothing}++-- | The access log configuration for a virtual node.+logging_accessLog :: Lens.Lens' Logging (Prelude.Maybe AccessLog)+logging_accessLog = Lens.lens (\Logging' {accessLog} -> accessLog) (\s@Logging' {} a -> s {accessLog = a} :: Logging)++instance Data.FromJSON Logging where+  parseJSON =+    Data.withObject+      "Logging"+      ( \x ->+          Logging' Prelude.<$> (x Data..:? "accessLog")+      )++instance Prelude.Hashable Logging where+  hashWithSalt _salt Logging' {..} =+    _salt `Prelude.hashWithSalt` accessLog++instance Prelude.NFData Logging where+  rnf Logging' {..} = Prelude.rnf accessLog++instance Data.ToJSON Logging where+  toJSON Logging' {..} =+    Data.object+      ( Prelude.catMaybes+          [("accessLog" Data..=) Prelude.<$> accessLog]+      )
+ gen/Amazonka/AppMesh/Types/LoggingFormat.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.LoggingFormat+-- 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.AppMesh.Types.LoggingFormat where++import Amazonka.AppMesh.Types.JsonFormatRef+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the format for the logs.+--+-- /See:/ 'newLoggingFormat' smart constructor.+data LoggingFormat = LoggingFormat'+  { json :: Prelude.Maybe [JsonFormatRef],+    text :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LoggingFormat' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'json', 'loggingFormat_json' -+--+-- 'text', 'loggingFormat_text' -+newLoggingFormat ::+  LoggingFormat+newLoggingFormat =+  LoggingFormat'+    { json = Prelude.Nothing,+      text = Prelude.Nothing+    }++loggingFormat_json :: Lens.Lens' LoggingFormat (Prelude.Maybe [JsonFormatRef])+loggingFormat_json = Lens.lens (\LoggingFormat' {json} -> json) (\s@LoggingFormat' {} a -> s {json = a} :: LoggingFormat) Prelude.. Lens.mapping Lens.coerced++loggingFormat_text :: Lens.Lens' LoggingFormat (Prelude.Maybe Prelude.Text)+loggingFormat_text = Lens.lens (\LoggingFormat' {text} -> text) (\s@LoggingFormat' {} a -> s {text = a} :: LoggingFormat)++instance Data.FromJSON LoggingFormat where+  parseJSON =+    Data.withObject+      "LoggingFormat"+      ( \x ->+          LoggingFormat'+            Prelude.<$> (x Data..:? "json" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "text")+      )++instance Prelude.Hashable LoggingFormat where+  hashWithSalt _salt LoggingFormat' {..} =+    _salt+      `Prelude.hashWithSalt` json+      `Prelude.hashWithSalt` text++instance Prelude.NFData LoggingFormat where+  rnf LoggingFormat' {..} =+    Prelude.rnf json `Prelude.seq` Prelude.rnf text++instance Data.ToJSON LoggingFormat where+  toJSON LoggingFormat' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("json" Data..=) Prelude.<$> json,+            ("text" Data..=) Prelude.<$> text+          ]+      )
+ gen/Amazonka/AppMesh/Types/MatchRange.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.AppMesh.Types.MatchRange+-- 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.AppMesh.Types.MatchRange where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the range of values to match on. The first+-- character of the range is included in the range, though the last+-- character is not. For example, if the range specified were 1-100, only+-- values 1-99 would be matched.+--+-- /See:/ 'newMatchRange' smart constructor.+data MatchRange = MatchRange'+  { -- | The end of the range.+    end :: Prelude.Integer,+    -- | The start of the range.+    start :: Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MatchRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'end', 'matchRange_end' - The end of the range.+--+-- 'start', 'matchRange_start' - The start of the range.+newMatchRange ::+  -- | 'end'+  Prelude.Integer ->+  -- | 'start'+  Prelude.Integer ->+  MatchRange+newMatchRange pEnd_ pStart_ =+  MatchRange' {end = pEnd_, start = pStart_}++-- | The end of the range.+matchRange_end :: Lens.Lens' MatchRange Prelude.Integer+matchRange_end = Lens.lens (\MatchRange' {end} -> end) (\s@MatchRange' {} a -> s {end = a} :: MatchRange)++-- | The start of the range.+matchRange_start :: Lens.Lens' MatchRange Prelude.Integer+matchRange_start = Lens.lens (\MatchRange' {start} -> start) (\s@MatchRange' {} a -> s {start = a} :: MatchRange)++instance Data.FromJSON MatchRange where+  parseJSON =+    Data.withObject+      "MatchRange"+      ( \x ->+          MatchRange'+            Prelude.<$> (x Data..: "end")+            Prelude.<*> (x Data..: "start")+      )++instance Prelude.Hashable MatchRange where+  hashWithSalt _salt MatchRange' {..} =+    _salt+      `Prelude.hashWithSalt` end+      `Prelude.hashWithSalt` start++instance Prelude.NFData MatchRange where+  rnf MatchRange' {..} =+    Prelude.rnf end `Prelude.seq` Prelude.rnf start++instance Data.ToJSON MatchRange where+  toJSON MatchRange' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("end" Data..= end),+            Prelude.Just ("start" Data..= start)+          ]+      )
+ gen/Amazonka/AppMesh/Types/MeshData.hs view
@@ -0,0 +1,120 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.MeshData+-- 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.AppMesh.Types.MeshData where++import Amazonka.AppMesh.Types.MeshSpec+import Amazonka.AppMesh.Types.MeshStatus+import Amazonka.AppMesh.Types.ResourceMetadata+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a service mesh returned by a describe+-- operation.+--+-- /See:/ 'newMeshData' smart constructor.+data MeshData = MeshData'+  { -- | The name of the service mesh.+    meshName :: Prelude.Text,+    -- | The associated metadata for the service mesh.+    metadata :: ResourceMetadata,+    -- | The associated specification for the service mesh.+    spec :: MeshSpec,+    -- | The status of the service mesh.+    status :: MeshStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MeshData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshName', 'meshData_meshName' - The name of the service mesh.+--+-- 'metadata', 'meshData_metadata' - The associated metadata for the service mesh.+--+-- 'spec', 'meshData_spec' - The associated specification for the service mesh.+--+-- 'status', 'meshData_status' - The status of the service mesh.+newMeshData ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'metadata'+  ResourceMetadata ->+  -- | 'spec'+  MeshSpec ->+  -- | 'status'+  MeshStatus ->+  MeshData+newMeshData pMeshName_ pMetadata_ pSpec_ pStatus_ =+  MeshData'+    { meshName = pMeshName_,+      metadata = pMetadata_,+      spec = pSpec_,+      status = pStatus_+    }++-- | The name of the service mesh.+meshData_meshName :: Lens.Lens' MeshData Prelude.Text+meshData_meshName = Lens.lens (\MeshData' {meshName} -> meshName) (\s@MeshData' {} a -> s {meshName = a} :: MeshData)++-- | The associated metadata for the service mesh.+meshData_metadata :: Lens.Lens' MeshData ResourceMetadata+meshData_metadata = Lens.lens (\MeshData' {metadata} -> metadata) (\s@MeshData' {} a -> s {metadata = a} :: MeshData)++-- | The associated specification for the service mesh.+meshData_spec :: Lens.Lens' MeshData MeshSpec+meshData_spec = Lens.lens (\MeshData' {spec} -> spec) (\s@MeshData' {} a -> s {spec = a} :: MeshData)++-- | The status of the service mesh.+meshData_status :: Lens.Lens' MeshData MeshStatus+meshData_status = Lens.lens (\MeshData' {status} -> status) (\s@MeshData' {} a -> s {status = a} :: MeshData)++instance Data.FromJSON MeshData where+  parseJSON =+    Data.withObject+      "MeshData"+      ( \x ->+          MeshData'+            Prelude.<$> (x Data..: "meshName")+            Prelude.<*> (x Data..: "metadata")+            Prelude.<*> (x Data..: "spec")+            Prelude.<*> (x Data..: "status")+      )++instance Prelude.Hashable MeshData where+  hashWithSalt _salt MeshData' {..} =+    _salt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` status++instance Prelude.NFData MeshData where+  rnf MeshData' {..} =+    Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/AppMesh/Types/MeshRef.hs view
@@ -0,0 +1,192 @@+{-# 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.AppMesh.Types.MeshRef+-- 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.AppMesh.Types.MeshRef where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a service mesh returned by a list operation.+--+-- /See:/ 'newMeshRef' smart constructor.+data MeshRef = MeshRef'+  { -- | The full Amazon Resource Name (ARN) of the service mesh.+    arn :: Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the resource was created.+    createdAt :: Data.POSIX,+    -- | The Unix epoch timestamp in seconds for when the resource was last+    -- updated.+    lastUpdatedAt :: Data.POSIX,+    -- | The name of the service mesh.+    meshName :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the resource owner. If the+    -- account ID is not your own, then it\'s the ID of the mesh owner or of+    -- another account that the mesh is shared with. For more information about+    -- mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    resourceOwner :: Prelude.Text,+    -- | The version of the resource. Resources are created at version 1, and+    -- this version is incremented each time that they\'re updated.+    version :: Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MeshRef' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'meshRef_arn' - The full Amazon Resource Name (ARN) of the service mesh.+--+-- 'createdAt', 'meshRef_createdAt' - The Unix epoch timestamp in seconds for when the resource was created.+--+-- 'lastUpdatedAt', 'meshRef_lastUpdatedAt' - The Unix epoch timestamp in seconds for when the resource was last+-- updated.+--+-- 'meshName', 'meshRef_meshName' - The name of the service mesh.+--+-- 'meshOwner', 'meshRef_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'resourceOwner', 'meshRef_resourceOwner' - The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'version', 'meshRef_version' - The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+newMeshRef ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'meshOwner'+  Prelude.Text ->+  -- | 'resourceOwner'+  Prelude.Text ->+  -- | 'version'+  Prelude.Integer ->+  MeshRef+newMeshRef+  pArn_+  pCreatedAt_+  pLastUpdatedAt_+  pMeshName_+  pMeshOwner_+  pResourceOwner_+  pVersion_ =+    MeshRef'+      { arn = pArn_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_,+        meshName = pMeshName_,+        meshOwner = pMeshOwner_,+        resourceOwner = pResourceOwner_,+        version = pVersion_+      }++-- | The full Amazon Resource Name (ARN) of the service mesh.+meshRef_arn :: Lens.Lens' MeshRef Prelude.Text+meshRef_arn = Lens.lens (\MeshRef' {arn} -> arn) (\s@MeshRef' {} a -> s {arn = a} :: MeshRef)++-- | The Unix epoch timestamp in seconds for when the resource was created.+meshRef_createdAt :: Lens.Lens' MeshRef Prelude.UTCTime+meshRef_createdAt = Lens.lens (\MeshRef' {createdAt} -> createdAt) (\s@MeshRef' {} a -> s {createdAt = a} :: MeshRef) Prelude.. Data._Time++-- | The Unix epoch timestamp in seconds for when the resource was last+-- updated.+meshRef_lastUpdatedAt :: Lens.Lens' MeshRef Prelude.UTCTime+meshRef_lastUpdatedAt = Lens.lens (\MeshRef' {lastUpdatedAt} -> lastUpdatedAt) (\s@MeshRef' {} a -> s {lastUpdatedAt = a} :: MeshRef) Prelude.. Data._Time++-- | The name of the service mesh.+meshRef_meshName :: Lens.Lens' MeshRef Prelude.Text+meshRef_meshName = Lens.lens (\MeshRef' {meshName} -> meshName) (\s@MeshRef' {} a -> s {meshName = a} :: MeshRef)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+meshRef_meshOwner :: Lens.Lens' MeshRef Prelude.Text+meshRef_meshOwner = Lens.lens (\MeshRef' {meshOwner} -> meshOwner) (\s@MeshRef' {} a -> s {meshOwner = a} :: MeshRef)++-- | The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+meshRef_resourceOwner :: Lens.Lens' MeshRef Prelude.Text+meshRef_resourceOwner = Lens.lens (\MeshRef' {resourceOwner} -> resourceOwner) (\s@MeshRef' {} a -> s {resourceOwner = a} :: MeshRef)++-- | The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+meshRef_version :: Lens.Lens' MeshRef Prelude.Integer+meshRef_version = Lens.lens (\MeshRef' {version} -> version) (\s@MeshRef' {} a -> s {version = a} :: MeshRef)++instance Data.FromJSON MeshRef where+  parseJSON =+    Data.withObject+      "MeshRef"+      ( \x ->+          MeshRef'+            Prelude.<$> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdAt")+            Prelude.<*> (x Data..: "lastUpdatedAt")+            Prelude.<*> (x Data..: "meshName")+            Prelude.<*> (x Data..: "meshOwner")+            Prelude.<*> (x Data..: "resourceOwner")+            Prelude.<*> (x Data..: "version")+      )++instance Prelude.Hashable MeshRef where+  hashWithSalt _salt MeshRef' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` resourceOwner+      `Prelude.hashWithSalt` version++instance Prelude.NFData MeshRef where+  rnf MeshRef' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf resourceOwner+      `Prelude.seq` Prelude.rnf version
+ gen/Amazonka/AppMesh/Types/MeshServiceDiscovery.hs view
@@ -0,0 +1,81 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.MeshServiceDiscovery+-- 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.AppMesh.Types.MeshServiceDiscovery where++import Amazonka.AppMesh.Types.IpPreference+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the service discovery information for a+-- service mesh.+--+-- /See:/ 'newMeshServiceDiscovery' smart constructor.+data MeshServiceDiscovery = MeshServiceDiscovery'+  { -- | The IP version to use to control traffic within the mesh.+    ipPreference :: Prelude.Maybe IpPreference+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MeshServiceDiscovery' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'ipPreference', 'meshServiceDiscovery_ipPreference' - The IP version to use to control traffic within the mesh.+newMeshServiceDiscovery ::+  MeshServiceDiscovery+newMeshServiceDiscovery =+  MeshServiceDiscovery'+    { ipPreference =+        Prelude.Nothing+    }++-- | The IP version to use to control traffic within the mesh.+meshServiceDiscovery_ipPreference :: Lens.Lens' MeshServiceDiscovery (Prelude.Maybe IpPreference)+meshServiceDiscovery_ipPreference = Lens.lens (\MeshServiceDiscovery' {ipPreference} -> ipPreference) (\s@MeshServiceDiscovery' {} a -> s {ipPreference = a} :: MeshServiceDiscovery)++instance Data.FromJSON MeshServiceDiscovery where+  parseJSON =+    Data.withObject+      "MeshServiceDiscovery"+      ( \x ->+          MeshServiceDiscovery'+            Prelude.<$> (x Data..:? "ipPreference")+      )++instance Prelude.Hashable MeshServiceDiscovery where+  hashWithSalt _salt MeshServiceDiscovery' {..} =+    _salt `Prelude.hashWithSalt` ipPreference++instance Prelude.NFData MeshServiceDiscovery where+  rnf MeshServiceDiscovery' {..} =+    Prelude.rnf ipPreference++instance Data.ToJSON MeshServiceDiscovery where+  toJSON MeshServiceDiscovery' {..} =+    Data.object+      ( Prelude.catMaybes+          [("ipPreference" Data..=) Prelude.<$> ipPreference]+      )
+ gen/Amazonka/AppMesh/Types/MeshSpec.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.MeshSpec+-- 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.AppMesh.Types.MeshSpec where++import Amazonka.AppMesh.Types.EgressFilter+import Amazonka.AppMesh.Types.MeshServiceDiscovery+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the specification of a service mesh.+--+-- /See:/ 'newMeshSpec' smart constructor.+data MeshSpec = MeshSpec'+  { -- | The egress filter rules for the service mesh.+    egressFilter :: Prelude.Maybe EgressFilter,+    serviceDiscovery :: Prelude.Maybe MeshServiceDiscovery+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MeshSpec' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'egressFilter', 'meshSpec_egressFilter' - The egress filter rules for the service mesh.+--+-- 'serviceDiscovery', 'meshSpec_serviceDiscovery' - Undocumented member.+newMeshSpec ::+  MeshSpec+newMeshSpec =+  MeshSpec'+    { egressFilter = Prelude.Nothing,+      serviceDiscovery = Prelude.Nothing+    }++-- | The egress filter rules for the service mesh.+meshSpec_egressFilter :: Lens.Lens' MeshSpec (Prelude.Maybe EgressFilter)+meshSpec_egressFilter = Lens.lens (\MeshSpec' {egressFilter} -> egressFilter) (\s@MeshSpec' {} a -> s {egressFilter = a} :: MeshSpec)++-- | Undocumented member.+meshSpec_serviceDiscovery :: Lens.Lens' MeshSpec (Prelude.Maybe MeshServiceDiscovery)+meshSpec_serviceDiscovery = Lens.lens (\MeshSpec' {serviceDiscovery} -> serviceDiscovery) (\s@MeshSpec' {} a -> s {serviceDiscovery = a} :: MeshSpec)++instance Data.FromJSON MeshSpec where+  parseJSON =+    Data.withObject+      "MeshSpec"+      ( \x ->+          MeshSpec'+            Prelude.<$> (x Data..:? "egressFilter")+            Prelude.<*> (x Data..:? "serviceDiscovery")+      )++instance Prelude.Hashable MeshSpec where+  hashWithSalt _salt MeshSpec' {..} =+    _salt+      `Prelude.hashWithSalt` egressFilter+      `Prelude.hashWithSalt` serviceDiscovery++instance Prelude.NFData MeshSpec where+  rnf MeshSpec' {..} =+    Prelude.rnf egressFilter+      `Prelude.seq` Prelude.rnf serviceDiscovery++instance Data.ToJSON MeshSpec where+  toJSON MeshSpec' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("egressFilter" Data..=) Prelude.<$> egressFilter,+            ("serviceDiscovery" Data..=)+              Prelude.<$> serviceDiscovery+          ]+      )
+ gen/Amazonka/AppMesh/Types/MeshStatus.hs view
@@ -0,0 +1,67 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.MeshStatus+-- 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.AppMesh.Types.MeshStatus where++import Amazonka.AppMesh.Types.MeshStatusCode+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the status of a service mesh.+--+-- /See:/ 'newMeshStatus' smart constructor.+data MeshStatus = MeshStatus'+  { -- | The current mesh status.+    status :: Prelude.Maybe MeshStatusCode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MeshStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'status', 'meshStatus_status' - The current mesh status.+newMeshStatus ::+  MeshStatus+newMeshStatus = MeshStatus' {status = Prelude.Nothing}++-- | The current mesh status.+meshStatus_status :: Lens.Lens' MeshStatus (Prelude.Maybe MeshStatusCode)+meshStatus_status = Lens.lens (\MeshStatus' {status} -> status) (\s@MeshStatus' {} a -> s {status = a} :: MeshStatus)++instance Data.FromJSON MeshStatus where+  parseJSON =+    Data.withObject+      "MeshStatus"+      ( \x ->+          MeshStatus' Prelude.<$> (x Data..:? "status")+      )++instance Prelude.Hashable MeshStatus where+  hashWithSalt _salt MeshStatus' {..} =+    _salt `Prelude.hashWithSalt` status++instance Prelude.NFData MeshStatus where+  rnf MeshStatus' {..} = Prelude.rnf status
+ gen/Amazonka/AppMesh/Types/MeshStatusCode.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.MeshStatusCode+-- 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.AppMesh.Types.MeshStatusCode+  ( MeshStatusCode+      ( ..,+        MeshStatusCode_ACTIVE,+        MeshStatusCode_DELETED,+        MeshStatusCode_INACTIVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype MeshStatusCode = MeshStatusCode'+  { fromMeshStatusCode ::+      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 MeshStatusCode_ACTIVE :: MeshStatusCode+pattern MeshStatusCode_ACTIVE = MeshStatusCode' "ACTIVE"++pattern MeshStatusCode_DELETED :: MeshStatusCode+pattern MeshStatusCode_DELETED = MeshStatusCode' "DELETED"++pattern MeshStatusCode_INACTIVE :: MeshStatusCode+pattern MeshStatusCode_INACTIVE = MeshStatusCode' "INACTIVE"++{-# COMPLETE+  MeshStatusCode_ACTIVE,+  MeshStatusCode_DELETED,+  MeshStatusCode_INACTIVE,+  MeshStatusCode'+  #-}
+ gen/Amazonka/AppMesh/Types/OutlierDetection.hs view
@@ -0,0 +1,145 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.OutlierDetection+-- 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.AppMesh.Types.OutlierDetection where++import Amazonka.AppMesh.Types.Duration+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the outlier detection for a virtual node\'s+-- listener.+--+-- /See:/ 'newOutlierDetection' smart constructor.+data OutlierDetection = OutlierDetection'+  { -- | The base amount of time for which a host is ejected.+    baseEjectionDuration :: Duration,+    -- | The time interval between ejection sweep analysis.+    interval :: Duration,+    -- | Maximum percentage of hosts in load balancing pool for upstream service+    -- that can be ejected. Will eject at least one host regardless of the+    -- value.+    maxEjectionPercent :: Prelude.Natural,+    -- | Number of consecutive @5xx@ errors required for ejection.+    maxServerErrors :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OutlierDetection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'baseEjectionDuration', 'outlierDetection_baseEjectionDuration' - The base amount of time for which a host is ejected.+--+-- 'interval', 'outlierDetection_interval' - The time interval between ejection sweep analysis.+--+-- 'maxEjectionPercent', 'outlierDetection_maxEjectionPercent' - Maximum percentage of hosts in load balancing pool for upstream service+-- that can be ejected. Will eject at least one host regardless of the+-- value.+--+-- 'maxServerErrors', 'outlierDetection_maxServerErrors' - Number of consecutive @5xx@ errors required for ejection.+newOutlierDetection ::+  -- | 'baseEjectionDuration'+  Duration ->+  -- | 'interval'+  Duration ->+  -- | 'maxEjectionPercent'+  Prelude.Natural ->+  -- | 'maxServerErrors'+  Prelude.Natural ->+  OutlierDetection+newOutlierDetection+  pBaseEjectionDuration_+  pInterval_+  pMaxEjectionPercent_+  pMaxServerErrors_ =+    OutlierDetection'+      { baseEjectionDuration =+          pBaseEjectionDuration_,+        interval = pInterval_,+        maxEjectionPercent = pMaxEjectionPercent_,+        maxServerErrors = pMaxServerErrors_+      }++-- | The base amount of time for which a host is ejected.+outlierDetection_baseEjectionDuration :: Lens.Lens' OutlierDetection Duration+outlierDetection_baseEjectionDuration = Lens.lens (\OutlierDetection' {baseEjectionDuration} -> baseEjectionDuration) (\s@OutlierDetection' {} a -> s {baseEjectionDuration = a} :: OutlierDetection)++-- | The time interval between ejection sweep analysis.+outlierDetection_interval :: Lens.Lens' OutlierDetection Duration+outlierDetection_interval = Lens.lens (\OutlierDetection' {interval} -> interval) (\s@OutlierDetection' {} a -> s {interval = a} :: OutlierDetection)++-- | Maximum percentage of hosts in load balancing pool for upstream service+-- that can be ejected. Will eject at least one host regardless of the+-- value.+outlierDetection_maxEjectionPercent :: Lens.Lens' OutlierDetection Prelude.Natural+outlierDetection_maxEjectionPercent = Lens.lens (\OutlierDetection' {maxEjectionPercent} -> maxEjectionPercent) (\s@OutlierDetection' {} a -> s {maxEjectionPercent = a} :: OutlierDetection)++-- | Number of consecutive @5xx@ errors required for ejection.+outlierDetection_maxServerErrors :: Lens.Lens' OutlierDetection Prelude.Natural+outlierDetection_maxServerErrors = Lens.lens (\OutlierDetection' {maxServerErrors} -> maxServerErrors) (\s@OutlierDetection' {} a -> s {maxServerErrors = a} :: OutlierDetection)++instance Data.FromJSON OutlierDetection where+  parseJSON =+    Data.withObject+      "OutlierDetection"+      ( \x ->+          OutlierDetection'+            Prelude.<$> (x Data..: "baseEjectionDuration")+            Prelude.<*> (x Data..: "interval")+            Prelude.<*> (x Data..: "maxEjectionPercent")+            Prelude.<*> (x Data..: "maxServerErrors")+      )++instance Prelude.Hashable OutlierDetection where+  hashWithSalt _salt OutlierDetection' {..} =+    _salt+      `Prelude.hashWithSalt` baseEjectionDuration+      `Prelude.hashWithSalt` interval+      `Prelude.hashWithSalt` maxEjectionPercent+      `Prelude.hashWithSalt` maxServerErrors++instance Prelude.NFData OutlierDetection where+  rnf OutlierDetection' {..} =+    Prelude.rnf baseEjectionDuration+      `Prelude.seq` Prelude.rnf interval+      `Prelude.seq` Prelude.rnf maxEjectionPercent+      `Prelude.seq` Prelude.rnf maxServerErrors++instance Data.ToJSON OutlierDetection where+  toJSON OutlierDetection' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "baseEjectionDuration"+                  Data..= baseEjectionDuration+              ),+            Prelude.Just ("interval" Data..= interval),+            Prelude.Just+              ("maxEjectionPercent" Data..= maxEjectionPercent),+            Prelude.Just+              ("maxServerErrors" Data..= maxServerErrors)+          ]+      )
+ gen/Amazonka/AppMesh/Types/PortMapping.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.PortMapping+-- 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.AppMesh.Types.PortMapping where++import Amazonka.AppMesh.Types.PortProtocol+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a port mapping.+--+-- /See:/ 'newPortMapping' smart constructor.+data PortMapping = PortMapping'+  { -- | The port used for the port mapping.+    port :: Prelude.Natural,+    -- | The protocol used for the port mapping. Specify one protocol.+    protocol :: PortProtocol+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PortMapping' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'port', 'portMapping_port' - The port used for the port mapping.+--+-- 'protocol', 'portMapping_protocol' - The protocol used for the port mapping. Specify one protocol.+newPortMapping ::+  -- | 'port'+  Prelude.Natural ->+  -- | 'protocol'+  PortProtocol ->+  PortMapping+newPortMapping pPort_ pProtocol_ =+  PortMapping' {port = pPort_, protocol = pProtocol_}++-- | The port used for the port mapping.+portMapping_port :: Lens.Lens' PortMapping Prelude.Natural+portMapping_port = Lens.lens (\PortMapping' {port} -> port) (\s@PortMapping' {} a -> s {port = a} :: PortMapping)++-- | The protocol used for the port mapping. Specify one protocol.+portMapping_protocol :: Lens.Lens' PortMapping PortProtocol+portMapping_protocol = Lens.lens (\PortMapping' {protocol} -> protocol) (\s@PortMapping' {} a -> s {protocol = a} :: PortMapping)++instance Data.FromJSON PortMapping where+  parseJSON =+    Data.withObject+      "PortMapping"+      ( \x ->+          PortMapping'+            Prelude.<$> (x Data..: "port")+            Prelude.<*> (x Data..: "protocol")+      )++instance Prelude.Hashable PortMapping where+  hashWithSalt _salt PortMapping' {..} =+    _salt+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` protocol++instance Prelude.NFData PortMapping where+  rnf PortMapping' {..} =+    Prelude.rnf port `Prelude.seq` Prelude.rnf protocol++instance Data.ToJSON PortMapping where+  toJSON PortMapping' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("port" Data..= port),+            Prelude.Just ("protocol" Data..= protocol)+          ]+      )
+ gen/Amazonka/AppMesh/Types/PortProtocol.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.AppMesh.Types.PortProtocol+-- 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.AppMesh.Types.PortProtocol+  ( PortProtocol+      ( ..,+        PortProtocol_Grpc,+        PortProtocol_Http,+        PortProtocol_Http2,+        PortProtocol_Tcp+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PortProtocol = PortProtocol'+  { fromPortProtocol ::+      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 PortProtocol_Grpc :: PortProtocol+pattern PortProtocol_Grpc = PortProtocol' "grpc"++pattern PortProtocol_Http :: PortProtocol+pattern PortProtocol_Http = PortProtocol' "http"++pattern PortProtocol_Http2 :: PortProtocol+pattern PortProtocol_Http2 = PortProtocol' "http2"++pattern PortProtocol_Tcp :: PortProtocol+pattern PortProtocol_Tcp = PortProtocol' "tcp"++{-# COMPLETE+  PortProtocol_Grpc,+  PortProtocol_Http,+  PortProtocol_Http2,+  PortProtocol_Tcp,+  PortProtocol'+  #-}
+ gen/Amazonka/AppMesh/Types/QueryParameterMatch.hs view
@@ -0,0 +1,75 @@+{-# 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.AppMesh.Types.QueryParameterMatch+-- 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.AppMesh.Types.QueryParameterMatch where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the query parameter to match.+--+-- /See:/ 'newQueryParameterMatch' smart constructor.+data QueryParameterMatch = QueryParameterMatch'+  { -- | The exact query parameter to match on.+    exact :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'QueryParameterMatch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'exact', 'queryParameterMatch_exact' - The exact query parameter to match on.+newQueryParameterMatch ::+  QueryParameterMatch+newQueryParameterMatch =+  QueryParameterMatch' {exact = Prelude.Nothing}++-- | The exact query parameter to match on.+queryParameterMatch_exact :: Lens.Lens' QueryParameterMatch (Prelude.Maybe Prelude.Text)+queryParameterMatch_exact = Lens.lens (\QueryParameterMatch' {exact} -> exact) (\s@QueryParameterMatch' {} a -> s {exact = a} :: QueryParameterMatch)++instance Data.FromJSON QueryParameterMatch where+  parseJSON =+    Data.withObject+      "QueryParameterMatch"+      ( \x ->+          QueryParameterMatch'+            Prelude.<$> (x Data..:? "exact")+      )++instance Prelude.Hashable QueryParameterMatch where+  hashWithSalt _salt QueryParameterMatch' {..} =+    _salt `Prelude.hashWithSalt` exact++instance Prelude.NFData QueryParameterMatch where+  rnf QueryParameterMatch' {..} = Prelude.rnf exact++instance Data.ToJSON QueryParameterMatch where+  toJSON QueryParameterMatch' {..} =+    Data.object+      ( Prelude.catMaybes+          [("exact" Data..=) Prelude.<$> exact]+      )
+ gen/Amazonka/AppMesh/Types/ResourceMetadata.hs view
@@ -0,0 +1,192 @@+{-# 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.AppMesh.Types.ResourceMetadata+-- 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.AppMesh.Types.ResourceMetadata where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents metadata for a resource.+--+-- /See:/ 'newResourceMetadata' smart constructor.+data ResourceMetadata = ResourceMetadata'+  { -- | The full Amazon Resource Name (ARN) for the resource.+    arn :: Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the resource was created.+    createdAt :: Data.POSIX,+    -- | The Unix epoch timestamp in seconds for when the resource was last+    -- updated.+    lastUpdatedAt :: Data.POSIX,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the resource owner. If the+    -- account ID is not your own, then it\'s the ID of the mesh owner or of+    -- another account that the mesh is shared with. For more information about+    -- mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    resourceOwner :: Prelude.Text,+    -- | The unique identifier for the resource.+    uid :: Prelude.Text,+    -- | The version of the resource. Resources are created at version 1, and+    -- this version is incremented each time that they\'re updated.+    version :: Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ResourceMetadata' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'resourceMetadata_arn' - The full Amazon Resource Name (ARN) for the resource.+--+-- 'createdAt', 'resourceMetadata_createdAt' - The Unix epoch timestamp in seconds for when the resource was created.+--+-- 'lastUpdatedAt', 'resourceMetadata_lastUpdatedAt' - The Unix epoch timestamp in seconds for when the resource was last+-- updated.+--+-- 'meshOwner', 'resourceMetadata_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'resourceOwner', 'resourceMetadata_resourceOwner' - The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'uid', 'resourceMetadata_uid' - The unique identifier for the resource.+--+-- 'version', 'resourceMetadata_version' - The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+newResourceMetadata ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  -- | 'meshOwner'+  Prelude.Text ->+  -- | 'resourceOwner'+  Prelude.Text ->+  -- | 'uid'+  Prelude.Text ->+  -- | 'version'+  Prelude.Integer ->+  ResourceMetadata+newResourceMetadata+  pArn_+  pCreatedAt_+  pLastUpdatedAt_+  pMeshOwner_+  pResourceOwner_+  pUid_+  pVersion_ =+    ResourceMetadata'+      { arn = pArn_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_,+        meshOwner = pMeshOwner_,+        resourceOwner = pResourceOwner_,+        uid = pUid_,+        version = pVersion_+      }++-- | The full Amazon Resource Name (ARN) for the resource.+resourceMetadata_arn :: Lens.Lens' ResourceMetadata Prelude.Text+resourceMetadata_arn = Lens.lens (\ResourceMetadata' {arn} -> arn) (\s@ResourceMetadata' {} a -> s {arn = a} :: ResourceMetadata)++-- | The Unix epoch timestamp in seconds for when the resource was created.+resourceMetadata_createdAt :: Lens.Lens' ResourceMetadata Prelude.UTCTime+resourceMetadata_createdAt = Lens.lens (\ResourceMetadata' {createdAt} -> createdAt) (\s@ResourceMetadata' {} a -> s {createdAt = a} :: ResourceMetadata) Prelude.. Data._Time++-- | The Unix epoch timestamp in seconds for when the resource was last+-- updated.+resourceMetadata_lastUpdatedAt :: Lens.Lens' ResourceMetadata Prelude.UTCTime+resourceMetadata_lastUpdatedAt = Lens.lens (\ResourceMetadata' {lastUpdatedAt} -> lastUpdatedAt) (\s@ResourceMetadata' {} a -> s {lastUpdatedAt = a} :: ResourceMetadata) Prelude.. Data._Time++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+resourceMetadata_meshOwner :: Lens.Lens' ResourceMetadata Prelude.Text+resourceMetadata_meshOwner = Lens.lens (\ResourceMetadata' {meshOwner} -> meshOwner) (\s@ResourceMetadata' {} a -> s {meshOwner = a} :: ResourceMetadata)++-- | The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+resourceMetadata_resourceOwner :: Lens.Lens' ResourceMetadata Prelude.Text+resourceMetadata_resourceOwner = Lens.lens (\ResourceMetadata' {resourceOwner} -> resourceOwner) (\s@ResourceMetadata' {} a -> s {resourceOwner = a} :: ResourceMetadata)++-- | The unique identifier for the resource.+resourceMetadata_uid :: Lens.Lens' ResourceMetadata Prelude.Text+resourceMetadata_uid = Lens.lens (\ResourceMetadata' {uid} -> uid) (\s@ResourceMetadata' {} a -> s {uid = a} :: ResourceMetadata)++-- | The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+resourceMetadata_version :: Lens.Lens' ResourceMetadata Prelude.Integer+resourceMetadata_version = Lens.lens (\ResourceMetadata' {version} -> version) (\s@ResourceMetadata' {} a -> s {version = a} :: ResourceMetadata)++instance Data.FromJSON ResourceMetadata where+  parseJSON =+    Data.withObject+      "ResourceMetadata"+      ( \x ->+          ResourceMetadata'+            Prelude.<$> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdAt")+            Prelude.<*> (x Data..: "lastUpdatedAt")+            Prelude.<*> (x Data..: "meshOwner")+            Prelude.<*> (x Data..: "resourceOwner")+            Prelude.<*> (x Data..: "uid")+            Prelude.<*> (x Data..: "version")+      )++instance Prelude.Hashable ResourceMetadata where+  hashWithSalt _salt ResourceMetadata' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` resourceOwner+      `Prelude.hashWithSalt` uid+      `Prelude.hashWithSalt` version++instance Prelude.NFData ResourceMetadata where+  rnf ResourceMetadata' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf resourceOwner+      `Prelude.seq` Prelude.rnf uid+      `Prelude.seq` Prelude.rnf version
+ gen/Amazonka/AppMesh/Types/RouteData.hs view
@@ -0,0 +1,153 @@+{-# 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.AppMesh.Types.RouteData+-- 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.AppMesh.Types.RouteData where++import Amazonka.AppMesh.Types.ResourceMetadata+import Amazonka.AppMesh.Types.RouteSpec+import Amazonka.AppMesh.Types.RouteStatus+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a route returned by a describe operation.+--+-- /See:/ 'newRouteData' smart constructor.+data RouteData = RouteData'+  { -- | The name of the service mesh that the route resides in.+    meshName :: Prelude.Text,+    -- | The associated metadata for the route.+    metadata :: ResourceMetadata,+    -- | The name of the route.+    routeName :: Prelude.Text,+    -- | The specifications of the route.+    spec :: RouteSpec,+    -- | The status of the route.+    status :: RouteStatus,+    -- | The virtual router that the route is associated with.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RouteData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshName', 'routeData_meshName' - The name of the service mesh that the route resides in.+--+-- 'metadata', 'routeData_metadata' - The associated metadata for the route.+--+-- 'routeName', 'routeData_routeName' - The name of the route.+--+-- 'spec', 'routeData_spec' - The specifications of the route.+--+-- 'status', 'routeData_status' - The status of the route.+--+-- 'virtualRouterName', 'routeData_virtualRouterName' - The virtual router that the route is associated with.+newRouteData ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'metadata'+  ResourceMetadata ->+  -- | 'routeName'+  Prelude.Text ->+  -- | 'spec'+  RouteSpec ->+  -- | 'status'+  RouteStatus ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  RouteData+newRouteData+  pMeshName_+  pMetadata_+  pRouteName_+  pSpec_+  pStatus_+  pVirtualRouterName_ =+    RouteData'+      { meshName = pMeshName_,+        metadata = pMetadata_,+        routeName = pRouteName_,+        spec = pSpec_,+        status = pStatus_,+        virtualRouterName = pVirtualRouterName_+      }++-- | The name of the service mesh that the route resides in.+routeData_meshName :: Lens.Lens' RouteData Prelude.Text+routeData_meshName = Lens.lens (\RouteData' {meshName} -> meshName) (\s@RouteData' {} a -> s {meshName = a} :: RouteData)++-- | The associated metadata for the route.+routeData_metadata :: Lens.Lens' RouteData ResourceMetadata+routeData_metadata = Lens.lens (\RouteData' {metadata} -> metadata) (\s@RouteData' {} a -> s {metadata = a} :: RouteData)++-- | The name of the route.+routeData_routeName :: Lens.Lens' RouteData Prelude.Text+routeData_routeName = Lens.lens (\RouteData' {routeName} -> routeName) (\s@RouteData' {} a -> s {routeName = a} :: RouteData)++-- | The specifications of the route.+routeData_spec :: Lens.Lens' RouteData RouteSpec+routeData_spec = Lens.lens (\RouteData' {spec} -> spec) (\s@RouteData' {} a -> s {spec = a} :: RouteData)++-- | The status of the route.+routeData_status :: Lens.Lens' RouteData RouteStatus+routeData_status = Lens.lens (\RouteData' {status} -> status) (\s@RouteData' {} a -> s {status = a} :: RouteData)++-- | The virtual router that the route is associated with.+routeData_virtualRouterName :: Lens.Lens' RouteData Prelude.Text+routeData_virtualRouterName = Lens.lens (\RouteData' {virtualRouterName} -> virtualRouterName) (\s@RouteData' {} a -> s {virtualRouterName = a} :: RouteData)++instance Data.FromJSON RouteData where+  parseJSON =+    Data.withObject+      "RouteData"+      ( \x ->+          RouteData'+            Prelude.<$> (x Data..: "meshName")+            Prelude.<*> (x Data..: "metadata")+            Prelude.<*> (x Data..: "routeName")+            Prelude.<*> (x Data..: "spec")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..: "virtualRouterName")+      )++instance Prelude.Hashable RouteData where+  hashWithSalt _salt RouteData' {..} =+    _salt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` routeName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData RouteData where+  rnf RouteData' {..} =+    Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf routeName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf virtualRouterName
+ gen/Amazonka/AppMesh/Types/RouteRef.hs view
@@ -0,0 +1,222 @@+{-# 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.AppMesh.Types.RouteRef+-- 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.AppMesh.Types.RouteRef where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a route returned by a list operation.+--+-- /See:/ 'newRouteRef' smart constructor.+data RouteRef = RouteRef'+  { -- | The full Amazon Resource Name (ARN) for the route.+    arn :: Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the resource was created.+    createdAt :: Data.POSIX,+    -- | The Unix epoch timestamp in seconds for when the resource was last+    -- updated.+    lastUpdatedAt :: Data.POSIX,+    -- | The name of the service mesh that the route resides in.+    meshName :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the resource owner. If the+    -- account ID is not your own, then it\'s the ID of the mesh owner or of+    -- another account that the mesh is shared with. For more information about+    -- mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    resourceOwner :: Prelude.Text,+    -- | The name of the route.+    routeName :: Prelude.Text,+    -- | The version of the resource. Resources are created at version 1, and+    -- this version is incremented each time that they\'re updated.+    version :: Prelude.Integer,+    -- | The virtual router that the route is associated with.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RouteRef' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'routeRef_arn' - The full Amazon Resource Name (ARN) for the route.+--+-- 'createdAt', 'routeRef_createdAt' - The Unix epoch timestamp in seconds for when the resource was created.+--+-- 'lastUpdatedAt', 'routeRef_lastUpdatedAt' - The Unix epoch timestamp in seconds for when the resource was last+-- updated.+--+-- 'meshName', 'routeRef_meshName' - The name of the service mesh that the route resides in.+--+-- 'meshOwner', 'routeRef_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'resourceOwner', 'routeRef_resourceOwner' - The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'routeName', 'routeRef_routeName' - The name of the route.+--+-- 'version', 'routeRef_version' - The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+--+-- 'virtualRouterName', 'routeRef_virtualRouterName' - The virtual router that the route is associated with.+newRouteRef ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'meshOwner'+  Prelude.Text ->+  -- | 'resourceOwner'+  Prelude.Text ->+  -- | 'routeName'+  Prelude.Text ->+  -- | 'version'+  Prelude.Integer ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  RouteRef+newRouteRef+  pArn_+  pCreatedAt_+  pLastUpdatedAt_+  pMeshName_+  pMeshOwner_+  pResourceOwner_+  pRouteName_+  pVersion_+  pVirtualRouterName_ =+    RouteRef'+      { arn = pArn_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_,+        meshName = pMeshName_,+        meshOwner = pMeshOwner_,+        resourceOwner = pResourceOwner_,+        routeName = pRouteName_,+        version = pVersion_,+        virtualRouterName = pVirtualRouterName_+      }++-- | The full Amazon Resource Name (ARN) for the route.+routeRef_arn :: Lens.Lens' RouteRef Prelude.Text+routeRef_arn = Lens.lens (\RouteRef' {arn} -> arn) (\s@RouteRef' {} a -> s {arn = a} :: RouteRef)++-- | The Unix epoch timestamp in seconds for when the resource was created.+routeRef_createdAt :: Lens.Lens' RouteRef Prelude.UTCTime+routeRef_createdAt = Lens.lens (\RouteRef' {createdAt} -> createdAt) (\s@RouteRef' {} a -> s {createdAt = a} :: RouteRef) Prelude.. Data._Time++-- | The Unix epoch timestamp in seconds for when the resource was last+-- updated.+routeRef_lastUpdatedAt :: Lens.Lens' RouteRef Prelude.UTCTime+routeRef_lastUpdatedAt = Lens.lens (\RouteRef' {lastUpdatedAt} -> lastUpdatedAt) (\s@RouteRef' {} a -> s {lastUpdatedAt = a} :: RouteRef) Prelude.. Data._Time++-- | The name of the service mesh that the route resides in.+routeRef_meshName :: Lens.Lens' RouteRef Prelude.Text+routeRef_meshName = Lens.lens (\RouteRef' {meshName} -> meshName) (\s@RouteRef' {} a -> s {meshName = a} :: RouteRef)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+routeRef_meshOwner :: Lens.Lens' RouteRef Prelude.Text+routeRef_meshOwner = Lens.lens (\RouteRef' {meshOwner} -> meshOwner) (\s@RouteRef' {} a -> s {meshOwner = a} :: RouteRef)++-- | The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+routeRef_resourceOwner :: Lens.Lens' RouteRef Prelude.Text+routeRef_resourceOwner = Lens.lens (\RouteRef' {resourceOwner} -> resourceOwner) (\s@RouteRef' {} a -> s {resourceOwner = a} :: RouteRef)++-- | The name of the route.+routeRef_routeName :: Lens.Lens' RouteRef Prelude.Text+routeRef_routeName = Lens.lens (\RouteRef' {routeName} -> routeName) (\s@RouteRef' {} a -> s {routeName = a} :: RouteRef)++-- | The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+routeRef_version :: Lens.Lens' RouteRef Prelude.Integer+routeRef_version = Lens.lens (\RouteRef' {version} -> version) (\s@RouteRef' {} a -> s {version = a} :: RouteRef)++-- | The virtual router that the route is associated with.+routeRef_virtualRouterName :: Lens.Lens' RouteRef Prelude.Text+routeRef_virtualRouterName = Lens.lens (\RouteRef' {virtualRouterName} -> virtualRouterName) (\s@RouteRef' {} a -> s {virtualRouterName = a} :: RouteRef)++instance Data.FromJSON RouteRef where+  parseJSON =+    Data.withObject+      "RouteRef"+      ( \x ->+          RouteRef'+            Prelude.<$> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdAt")+            Prelude.<*> (x Data..: "lastUpdatedAt")+            Prelude.<*> (x Data..: "meshName")+            Prelude.<*> (x Data..: "meshOwner")+            Prelude.<*> (x Data..: "resourceOwner")+            Prelude.<*> (x Data..: "routeName")+            Prelude.<*> (x Data..: "version")+            Prelude.<*> (x Data..: "virtualRouterName")+      )++instance Prelude.Hashable RouteRef where+  hashWithSalt _salt RouteRef' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` resourceOwner+      `Prelude.hashWithSalt` routeName+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData RouteRef where+  rnf RouteRef' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf resourceOwner+      `Prelude.seq` Prelude.rnf routeName+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf virtualRouterName
+ gen/Amazonka/AppMesh/Types/RouteSpec.hs view
@@ -0,0 +1,138 @@+{-# 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.AppMesh.Types.RouteSpec+-- 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.AppMesh.Types.RouteSpec where++import Amazonka.AppMesh.Types.GrpcRoute+import Amazonka.AppMesh.Types.HttpRoute+import Amazonka.AppMesh.Types.TcpRoute+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a route specification. Specify one route type.+--+-- /See:/ 'newRouteSpec' smart constructor.+data RouteSpec = RouteSpec'+  { -- | An object that represents the specification of a gRPC route.+    grpcRoute :: Prelude.Maybe GrpcRoute,+    -- | An object that represents the specification of an HTTP\/2 route.+    http2Route :: Prelude.Maybe HttpRoute,+    -- | An object that represents the specification of an HTTP route.+    httpRoute :: Prelude.Maybe HttpRoute,+    -- | The priority for the route. Routes are matched based on the specified+    -- value, where 0 is the highest priority.+    priority :: Prelude.Maybe Prelude.Natural,+    -- | An object that represents the specification of a TCP route.+    tcpRoute :: Prelude.Maybe TcpRoute+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RouteSpec' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'grpcRoute', 'routeSpec_grpcRoute' - An object that represents the specification of a gRPC route.+--+-- 'http2Route', 'routeSpec_http2Route' - An object that represents the specification of an HTTP\/2 route.+--+-- 'httpRoute', 'routeSpec_httpRoute' - An object that represents the specification of an HTTP route.+--+-- 'priority', 'routeSpec_priority' - The priority for the route. Routes are matched based on the specified+-- value, where 0 is the highest priority.+--+-- 'tcpRoute', 'routeSpec_tcpRoute' - An object that represents the specification of a TCP route.+newRouteSpec ::+  RouteSpec+newRouteSpec =+  RouteSpec'+    { grpcRoute = Prelude.Nothing,+      http2Route = Prelude.Nothing,+      httpRoute = Prelude.Nothing,+      priority = Prelude.Nothing,+      tcpRoute = Prelude.Nothing+    }++-- | An object that represents the specification of a gRPC route.+routeSpec_grpcRoute :: Lens.Lens' RouteSpec (Prelude.Maybe GrpcRoute)+routeSpec_grpcRoute = Lens.lens (\RouteSpec' {grpcRoute} -> grpcRoute) (\s@RouteSpec' {} a -> s {grpcRoute = a} :: RouteSpec)++-- | An object that represents the specification of an HTTP\/2 route.+routeSpec_http2Route :: Lens.Lens' RouteSpec (Prelude.Maybe HttpRoute)+routeSpec_http2Route = Lens.lens (\RouteSpec' {http2Route} -> http2Route) (\s@RouteSpec' {} a -> s {http2Route = a} :: RouteSpec)++-- | An object that represents the specification of an HTTP route.+routeSpec_httpRoute :: Lens.Lens' RouteSpec (Prelude.Maybe HttpRoute)+routeSpec_httpRoute = Lens.lens (\RouteSpec' {httpRoute} -> httpRoute) (\s@RouteSpec' {} a -> s {httpRoute = a} :: RouteSpec)++-- | The priority for the route. Routes are matched based on the specified+-- value, where 0 is the highest priority.+routeSpec_priority :: Lens.Lens' RouteSpec (Prelude.Maybe Prelude.Natural)+routeSpec_priority = Lens.lens (\RouteSpec' {priority} -> priority) (\s@RouteSpec' {} a -> s {priority = a} :: RouteSpec)++-- | An object that represents the specification of a TCP route.+routeSpec_tcpRoute :: Lens.Lens' RouteSpec (Prelude.Maybe TcpRoute)+routeSpec_tcpRoute = Lens.lens (\RouteSpec' {tcpRoute} -> tcpRoute) (\s@RouteSpec' {} a -> s {tcpRoute = a} :: RouteSpec)++instance Data.FromJSON RouteSpec where+  parseJSON =+    Data.withObject+      "RouteSpec"+      ( \x ->+          RouteSpec'+            Prelude.<$> (x Data..:? "grpcRoute")+            Prelude.<*> (x Data..:? "http2Route")+            Prelude.<*> (x Data..:? "httpRoute")+            Prelude.<*> (x Data..:? "priority")+            Prelude.<*> (x Data..:? "tcpRoute")+      )++instance Prelude.Hashable RouteSpec where+  hashWithSalt _salt RouteSpec' {..} =+    _salt+      `Prelude.hashWithSalt` grpcRoute+      `Prelude.hashWithSalt` http2Route+      `Prelude.hashWithSalt` httpRoute+      `Prelude.hashWithSalt` priority+      `Prelude.hashWithSalt` tcpRoute++instance Prelude.NFData RouteSpec where+  rnf RouteSpec' {..} =+    Prelude.rnf grpcRoute+      `Prelude.seq` Prelude.rnf http2Route+      `Prelude.seq` Prelude.rnf httpRoute+      `Prelude.seq` Prelude.rnf priority+      `Prelude.seq` Prelude.rnf tcpRoute++instance Data.ToJSON RouteSpec where+  toJSON RouteSpec' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("grpcRoute" Data..=) Prelude.<$> grpcRoute,+            ("http2Route" Data..=) Prelude.<$> http2Route,+            ("httpRoute" Data..=) Prelude.<$> httpRoute,+            ("priority" Data..=) Prelude.<$> priority,+            ("tcpRoute" Data..=) Prelude.<$> tcpRoute+          ]+      )
+ gen/Amazonka/AppMesh/Types/RouteStatus.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.AppMesh.Types.RouteStatus+-- 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.AppMesh.Types.RouteStatus where++import Amazonka.AppMesh.Types.RouteStatusCode+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the current status of a route.+--+-- /See:/ 'newRouteStatus' smart constructor.+data RouteStatus = RouteStatus'+  { -- | The current status for the route.+    status :: RouteStatusCode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RouteStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'status', 'routeStatus_status' - The current status for the route.+newRouteStatus ::+  -- | 'status'+  RouteStatusCode ->+  RouteStatus+newRouteStatus pStatus_ =+  RouteStatus' {status = pStatus_}++-- | The current status for the route.+routeStatus_status :: Lens.Lens' RouteStatus RouteStatusCode+routeStatus_status = Lens.lens (\RouteStatus' {status} -> status) (\s@RouteStatus' {} a -> s {status = a} :: RouteStatus)++instance Data.FromJSON RouteStatus where+  parseJSON =+    Data.withObject+      "RouteStatus"+      ( \x ->+          RouteStatus' Prelude.<$> (x Data..: "status")+      )++instance Prelude.Hashable RouteStatus where+  hashWithSalt _salt RouteStatus' {..} =+    _salt `Prelude.hashWithSalt` status++instance Prelude.NFData RouteStatus where+  rnf RouteStatus' {..} = Prelude.rnf status
+ gen/Amazonka/AppMesh/Types/RouteStatusCode.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.RouteStatusCode+-- 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.AppMesh.Types.RouteStatusCode+  ( RouteStatusCode+      ( ..,+        RouteStatusCode_ACTIVE,+        RouteStatusCode_DELETED,+        RouteStatusCode_INACTIVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RouteStatusCode = RouteStatusCode'+  { fromRouteStatusCode ::+      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 RouteStatusCode_ACTIVE :: RouteStatusCode+pattern RouteStatusCode_ACTIVE = RouteStatusCode' "ACTIVE"++pattern RouteStatusCode_DELETED :: RouteStatusCode+pattern RouteStatusCode_DELETED = RouteStatusCode' "DELETED"++pattern RouteStatusCode_INACTIVE :: RouteStatusCode+pattern RouteStatusCode_INACTIVE = RouteStatusCode' "INACTIVE"++{-# COMPLETE+  RouteStatusCode_ACTIVE,+  RouteStatusCode_DELETED,+  RouteStatusCode_INACTIVE,+  RouteStatusCode'+  #-}
+ gen/Amazonka/AppMesh/Types/ServiceDiscovery.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.AppMesh.Types.ServiceDiscovery+-- 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.AppMesh.Types.ServiceDiscovery where++import Amazonka.AppMesh.Types.AwsCloudMapServiceDiscovery+import Amazonka.AppMesh.Types.DnsServiceDiscovery+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the service discovery information for a+-- virtual node.+--+-- /See:/ 'newServiceDiscovery' smart constructor.+data ServiceDiscovery = ServiceDiscovery'+  { -- | Specifies any Cloud Map information for the virtual node.+    awsCloudMap :: Prelude.Maybe AwsCloudMapServiceDiscovery,+    -- | Specifies the DNS information for the virtual node.+    dns :: Prelude.Maybe DnsServiceDiscovery+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ServiceDiscovery' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'awsCloudMap', 'serviceDiscovery_awsCloudMap' - Specifies any Cloud Map information for the virtual node.+--+-- 'dns', 'serviceDiscovery_dns' - Specifies the DNS information for the virtual node.+newServiceDiscovery ::+  ServiceDiscovery+newServiceDiscovery =+  ServiceDiscovery'+    { awsCloudMap = Prelude.Nothing,+      dns = Prelude.Nothing+    }++-- | Specifies any Cloud Map information for the virtual node.+serviceDiscovery_awsCloudMap :: Lens.Lens' ServiceDiscovery (Prelude.Maybe AwsCloudMapServiceDiscovery)+serviceDiscovery_awsCloudMap = Lens.lens (\ServiceDiscovery' {awsCloudMap} -> awsCloudMap) (\s@ServiceDiscovery' {} a -> s {awsCloudMap = a} :: ServiceDiscovery)++-- | Specifies the DNS information for the virtual node.+serviceDiscovery_dns :: Lens.Lens' ServiceDiscovery (Prelude.Maybe DnsServiceDiscovery)+serviceDiscovery_dns = Lens.lens (\ServiceDiscovery' {dns} -> dns) (\s@ServiceDiscovery' {} a -> s {dns = a} :: ServiceDiscovery)++instance Data.FromJSON ServiceDiscovery where+  parseJSON =+    Data.withObject+      "ServiceDiscovery"+      ( \x ->+          ServiceDiscovery'+            Prelude.<$> (x Data..:? "awsCloudMap")+            Prelude.<*> (x Data..:? "dns")+      )++instance Prelude.Hashable ServiceDiscovery where+  hashWithSalt _salt ServiceDiscovery' {..} =+    _salt+      `Prelude.hashWithSalt` awsCloudMap+      `Prelude.hashWithSalt` dns++instance Prelude.NFData ServiceDiscovery where+  rnf ServiceDiscovery' {..} =+    Prelude.rnf awsCloudMap+      `Prelude.seq` Prelude.rnf dns++instance Data.ToJSON ServiceDiscovery where+  toJSON ServiceDiscovery' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("awsCloudMap" Data..=) Prelude.<$> awsCloudMap,+            ("dns" Data..=) Prelude.<$> dns+          ]+      )
+ gen/Amazonka/AppMesh/Types/SubjectAlternativeNameMatchers.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.SubjectAlternativeNameMatchers+-- 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.AppMesh.Types.SubjectAlternativeNameMatchers where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the methods by which a subject alternative+-- name on a peer Transport Layer Security (TLS) certificate can be+-- matched.+--+-- /See:/ 'newSubjectAlternativeNameMatchers' smart constructor.+data SubjectAlternativeNameMatchers = SubjectAlternativeNameMatchers'+  { -- | The values sent must match the specified values exactly.+    exact :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SubjectAlternativeNameMatchers' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'exact', 'subjectAlternativeNameMatchers_exact' - The values sent must match the specified values exactly.+newSubjectAlternativeNameMatchers ::+  SubjectAlternativeNameMatchers+newSubjectAlternativeNameMatchers =+  SubjectAlternativeNameMatchers'+    { exact =+        Prelude.mempty+    }++-- | The values sent must match the specified values exactly.+subjectAlternativeNameMatchers_exact :: Lens.Lens' SubjectAlternativeNameMatchers [Prelude.Text]+subjectAlternativeNameMatchers_exact = Lens.lens (\SubjectAlternativeNameMatchers' {exact} -> exact) (\s@SubjectAlternativeNameMatchers' {} a -> s {exact = a} :: SubjectAlternativeNameMatchers) Prelude.. Lens.coerced++instance Data.FromJSON SubjectAlternativeNameMatchers where+  parseJSON =+    Data.withObject+      "SubjectAlternativeNameMatchers"+      ( \x ->+          SubjectAlternativeNameMatchers'+            Prelude.<$> (x Data..:? "exact" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    SubjectAlternativeNameMatchers+  where+  hashWithSalt+    _salt+    SubjectAlternativeNameMatchers' {..} =+      _salt `Prelude.hashWithSalt` exact++instance+  Prelude.NFData+    SubjectAlternativeNameMatchers+  where+  rnf SubjectAlternativeNameMatchers' {..} =+    Prelude.rnf exact++instance Data.ToJSON SubjectAlternativeNameMatchers where+  toJSON SubjectAlternativeNameMatchers' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("exact" Data..= exact)]+      )
+ gen/Amazonka/AppMesh/Types/SubjectAlternativeNames.hs view
@@ -0,0 +1,79 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.SubjectAlternativeNames+-- 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.AppMesh.Types.SubjectAlternativeNames where++import Amazonka.AppMesh.Types.SubjectAlternativeNameMatchers+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the subject alternative names secured by the+-- certificate.+--+-- /See:/ 'newSubjectAlternativeNames' smart constructor.+data SubjectAlternativeNames = SubjectAlternativeNames'+  { -- | An object that represents the criteria for determining a SANs match.+    match :: SubjectAlternativeNameMatchers+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SubjectAlternativeNames' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'match', 'subjectAlternativeNames_match' - An object that represents the criteria for determining a SANs match.+newSubjectAlternativeNames ::+  -- | 'match'+  SubjectAlternativeNameMatchers ->+  SubjectAlternativeNames+newSubjectAlternativeNames pMatch_ =+  SubjectAlternativeNames' {match = pMatch_}++-- | An object that represents the criteria for determining a SANs match.+subjectAlternativeNames_match :: Lens.Lens' SubjectAlternativeNames SubjectAlternativeNameMatchers+subjectAlternativeNames_match = Lens.lens (\SubjectAlternativeNames' {match} -> match) (\s@SubjectAlternativeNames' {} a -> s {match = a} :: SubjectAlternativeNames)++instance Data.FromJSON SubjectAlternativeNames where+  parseJSON =+    Data.withObject+      "SubjectAlternativeNames"+      ( \x ->+          SubjectAlternativeNames'+            Prelude.<$> (x Data..: "match")+      )++instance Prelude.Hashable SubjectAlternativeNames where+  hashWithSalt _salt SubjectAlternativeNames' {..} =+    _salt `Prelude.hashWithSalt` match++instance Prelude.NFData SubjectAlternativeNames where+  rnf SubjectAlternativeNames' {..} = Prelude.rnf match++instance Data.ToJSON SubjectAlternativeNames where+  toJSON SubjectAlternativeNames' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("match" Data..= match)]+      )
+ gen/Amazonka/AppMesh/Types/TagRef.hs view
@@ -0,0 +1,103 @@+{-# 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.AppMesh.Types.TagRef+-- 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.AppMesh.Types.TagRef 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++-- | Optional metadata that you apply to a resource to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value, both of which you define. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+--+-- /See:/ 'newTagRef' smart constructor.+data TagRef = TagRef'+  { -- | One part of a key-value pair that make up a tag. A @key@ is a general+    -- label that acts like a category for more specific tag values.+    key :: Prelude.Text,+    -- | The optional part of a key-value pair that make up a tag. A @value@ acts+    -- as a descriptor within a tag category (key).+    value :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagRef' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'tagRef_key' - One part of a key-value pair that make up a tag. A @key@ is a general+-- label that acts like a category for more specific tag values.+--+-- 'value', 'tagRef_value' - The optional part of a key-value pair that make up a tag. A @value@ acts+-- as a descriptor within a tag category (key).+newTagRef ::+  -- | 'key'+  Prelude.Text ->+  -- | 'value'+  Prelude.Text ->+  TagRef+newTagRef pKey_ pValue_ =+  TagRef' {key = pKey_, value = pValue_}++-- | One part of a key-value pair that make up a tag. A @key@ is a general+-- label that acts like a category for more specific tag values.+tagRef_key :: Lens.Lens' TagRef Prelude.Text+tagRef_key = Lens.lens (\TagRef' {key} -> key) (\s@TagRef' {} a -> s {key = a} :: TagRef)++-- | The optional part of a key-value pair that make up a tag. A @value@ acts+-- as a descriptor within a tag category (key).+tagRef_value :: Lens.Lens' TagRef Prelude.Text+tagRef_value = Lens.lens (\TagRef' {value} -> value) (\s@TagRef' {} a -> s {value = a} :: TagRef)++instance Data.FromJSON TagRef where+  parseJSON =+    Data.withObject+      "TagRef"+      ( \x ->+          TagRef'+            Prelude.<$> (x Data..: "key")+            Prelude.<*> (x Data..: "value")+      )++instance Prelude.Hashable TagRef where+  hashWithSalt _salt TagRef' {..} =+    _salt+      `Prelude.hashWithSalt` key+      `Prelude.hashWithSalt` value++instance Prelude.NFData TagRef where+  rnf TagRef' {..} =+    Prelude.rnf key `Prelude.seq` Prelude.rnf value++instance Data.ToJSON TagRef where+  toJSON TagRef' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("key" Data..= key),+            Prelude.Just ("value" Data..= value)+          ]+      )
+ gen/Amazonka/AppMesh/Types/TcpRetryPolicyEvent.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.AppMesh.Types.TcpRetryPolicyEvent+-- 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.AppMesh.Types.TcpRetryPolicyEvent+  ( TcpRetryPolicyEvent+      ( ..,+        TcpRetryPolicyEvent_Connection_error+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TcpRetryPolicyEvent = TcpRetryPolicyEvent'+  { fromTcpRetryPolicyEvent ::+      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 TcpRetryPolicyEvent_Connection_error :: TcpRetryPolicyEvent+pattern TcpRetryPolicyEvent_Connection_error = TcpRetryPolicyEvent' "connection-error"++{-# COMPLETE+  TcpRetryPolicyEvent_Connection_error,+  TcpRetryPolicyEvent'+  #-}
+ gen/Amazonka/AppMesh/Types/TcpRoute.hs view
@@ -0,0 +1,111 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.TcpRoute+-- 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.AppMesh.Types.TcpRoute where++import Amazonka.AppMesh.Types.TcpRouteAction+import Amazonka.AppMesh.Types.TcpRouteMatch+import Amazonka.AppMesh.Types.TcpTimeout+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a TCP route type.+--+-- /See:/ 'newTcpRoute' smart constructor.+data TcpRoute = TcpRoute'+  { -- | An object that represents the criteria for determining a request match.+    match :: Prelude.Maybe TcpRouteMatch,+    -- | An object that represents types of timeouts.+    timeout :: Prelude.Maybe TcpTimeout,+    -- | The action to take if a match is determined.+    action :: TcpRouteAction+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TcpRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'match', 'tcpRoute_match' - An object that represents the criteria for determining a request match.+--+-- 'timeout', 'tcpRoute_timeout' - An object that represents types of timeouts.+--+-- 'action', 'tcpRoute_action' - The action to take if a match is determined.+newTcpRoute ::+  -- | 'action'+  TcpRouteAction ->+  TcpRoute+newTcpRoute pAction_ =+  TcpRoute'+    { match = Prelude.Nothing,+      timeout = Prelude.Nothing,+      action = pAction_+    }++-- | An object that represents the criteria for determining a request match.+tcpRoute_match :: Lens.Lens' TcpRoute (Prelude.Maybe TcpRouteMatch)+tcpRoute_match = Lens.lens (\TcpRoute' {match} -> match) (\s@TcpRoute' {} a -> s {match = a} :: TcpRoute)++-- | An object that represents types of timeouts.+tcpRoute_timeout :: Lens.Lens' TcpRoute (Prelude.Maybe TcpTimeout)+tcpRoute_timeout = Lens.lens (\TcpRoute' {timeout} -> timeout) (\s@TcpRoute' {} a -> s {timeout = a} :: TcpRoute)++-- | The action to take if a match is determined.+tcpRoute_action :: Lens.Lens' TcpRoute TcpRouteAction+tcpRoute_action = Lens.lens (\TcpRoute' {action} -> action) (\s@TcpRoute' {} a -> s {action = a} :: TcpRoute)++instance Data.FromJSON TcpRoute where+  parseJSON =+    Data.withObject+      "TcpRoute"+      ( \x ->+          TcpRoute'+            Prelude.<$> (x Data..:? "match")+            Prelude.<*> (x Data..:? "timeout")+            Prelude.<*> (x Data..: "action")+      )++instance Prelude.Hashable TcpRoute where+  hashWithSalt _salt TcpRoute' {..} =+    _salt+      `Prelude.hashWithSalt` match+      `Prelude.hashWithSalt` timeout+      `Prelude.hashWithSalt` action++instance Prelude.NFData TcpRoute where+  rnf TcpRoute' {..} =+    Prelude.rnf match+      `Prelude.seq` Prelude.rnf timeout+      `Prelude.seq` Prelude.rnf action++instance Data.ToJSON TcpRoute where+  toJSON TcpRoute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("match" Data..=) Prelude.<$> match,+            ("timeout" Data..=) Prelude.<$> timeout,+            Prelude.Just ("action" Data..= action)+          ]+      )
+ gen/Amazonka/AppMesh/Types/TcpRouteAction.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.AppMesh.Types.TcpRouteAction+-- 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.AppMesh.Types.TcpRouteAction where++import Amazonka.AppMesh.Types.WeightedTarget+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the action to take if a match is determined.+--+-- /See:/ 'newTcpRouteAction' smart constructor.+data TcpRouteAction = TcpRouteAction'+  { -- | An object that represents the targets that traffic is routed to when a+    -- request matches the route.+    weightedTargets :: Prelude.NonEmpty WeightedTarget+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TcpRouteAction' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'weightedTargets', 'tcpRouteAction_weightedTargets' - An object that represents the targets that traffic is routed to when a+-- request matches the route.+newTcpRouteAction ::+  -- | 'weightedTargets'+  Prelude.NonEmpty WeightedTarget ->+  TcpRouteAction+newTcpRouteAction pWeightedTargets_ =+  TcpRouteAction'+    { weightedTargets =+        Lens.coerced Lens.# pWeightedTargets_+    }++-- | An object that represents the targets that traffic is routed to when a+-- request matches the route.+tcpRouteAction_weightedTargets :: Lens.Lens' TcpRouteAction (Prelude.NonEmpty WeightedTarget)+tcpRouteAction_weightedTargets = Lens.lens (\TcpRouteAction' {weightedTargets} -> weightedTargets) (\s@TcpRouteAction' {} a -> s {weightedTargets = a} :: TcpRouteAction) Prelude.. Lens.coerced++instance Data.FromJSON TcpRouteAction where+  parseJSON =+    Data.withObject+      "TcpRouteAction"+      ( \x ->+          TcpRouteAction'+            Prelude.<$> (x Data..: "weightedTargets")+      )++instance Prelude.Hashable TcpRouteAction where+  hashWithSalt _salt TcpRouteAction' {..} =+    _salt `Prelude.hashWithSalt` weightedTargets++instance Prelude.NFData TcpRouteAction where+  rnf TcpRouteAction' {..} = Prelude.rnf weightedTargets++instance Data.ToJSON TcpRouteAction where+  toJSON TcpRouteAction' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("weightedTargets" Data..= weightedTargets)+          ]+      )
+ gen/Amazonka/AppMesh/Types/TcpRouteMatch.hs view
@@ -0,0 +1,74 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.TcpRouteMatch+-- 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.AppMesh.Types.TcpRouteMatch where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the TCP route to match.+--+-- /See:/ 'newTcpRouteMatch' smart constructor.+data TcpRouteMatch = TcpRouteMatch'+  { -- | The port number to match on.+    port :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TcpRouteMatch' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'port', 'tcpRouteMatch_port' - The port number to match on.+newTcpRouteMatch ::+  TcpRouteMatch+newTcpRouteMatch =+  TcpRouteMatch' {port = Prelude.Nothing}++-- | The port number to match on.+tcpRouteMatch_port :: Lens.Lens' TcpRouteMatch (Prelude.Maybe Prelude.Natural)+tcpRouteMatch_port = Lens.lens (\TcpRouteMatch' {port} -> port) (\s@TcpRouteMatch' {} a -> s {port = a} :: TcpRouteMatch)++instance Data.FromJSON TcpRouteMatch where+  parseJSON =+    Data.withObject+      "TcpRouteMatch"+      ( \x ->+          TcpRouteMatch' Prelude.<$> (x Data..:? "port")+      )++instance Prelude.Hashable TcpRouteMatch where+  hashWithSalt _salt TcpRouteMatch' {..} =+    _salt `Prelude.hashWithSalt` port++instance Prelude.NFData TcpRouteMatch where+  rnf TcpRouteMatch' {..} = Prelude.rnf port++instance Data.ToJSON TcpRouteMatch where+  toJSON TcpRouteMatch' {..} =+    Data.object+      ( Prelude.catMaybes+          [("port" Data..=) Prelude.<$> port]+      )
+ gen/Amazonka/AppMesh/Types/TcpTimeout.hs view
@@ -0,0 +1,75 @@+{-# 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.AppMesh.Types.TcpTimeout+-- 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.AppMesh.Types.TcpTimeout where++import Amazonka.AppMesh.Types.Duration+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents types of timeouts.+--+-- /See:/ 'newTcpTimeout' smart constructor.+data TcpTimeout = TcpTimeout'+  { -- | An object that represents an idle timeout. An idle timeout bounds the+    -- amount of time that a connection may be idle. The default value is none.+    idle :: Prelude.Maybe Duration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TcpTimeout' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'idle', 'tcpTimeout_idle' - An object that represents an idle timeout. An idle timeout bounds the+-- amount of time that a connection may be idle. The default value is none.+newTcpTimeout ::+  TcpTimeout+newTcpTimeout = TcpTimeout' {idle = Prelude.Nothing}++-- | An object that represents an idle timeout. An idle timeout bounds the+-- amount of time that a connection may be idle. The default value is none.+tcpTimeout_idle :: Lens.Lens' TcpTimeout (Prelude.Maybe Duration)+tcpTimeout_idle = Lens.lens (\TcpTimeout' {idle} -> idle) (\s@TcpTimeout' {} a -> s {idle = a} :: TcpTimeout)++instance Data.FromJSON TcpTimeout where+  parseJSON =+    Data.withObject+      "TcpTimeout"+      (\x -> TcpTimeout' Prelude.<$> (x Data..:? "idle"))++instance Prelude.Hashable TcpTimeout where+  hashWithSalt _salt TcpTimeout' {..} =+    _salt `Prelude.hashWithSalt` idle++instance Prelude.NFData TcpTimeout where+  rnf TcpTimeout' {..} = Prelude.rnf idle++instance Data.ToJSON TcpTimeout where+  toJSON TcpTimeout' {..} =+    Data.object+      ( Prelude.catMaybes+          [("idle" Data..=) Prelude.<$> idle]+      )
+ gen/Amazonka/AppMesh/Types/TlsValidationContext.hs view
@@ -0,0 +1,127 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.TlsValidationContext+-- 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.AppMesh.Types.TlsValidationContext where++import Amazonka.AppMesh.Types.SubjectAlternativeNames+import Amazonka.AppMesh.Types.TlsValidationContextTrust+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents how the proxy will validate its peer during+-- Transport Layer Security (TLS) negotiation.+--+-- /See:/ 'newTlsValidationContext' smart constructor.+data TlsValidationContext = TlsValidationContext'+  { -- | A reference to an object that represents the SANs for a Transport Layer+    -- Security (TLS) validation context. If you don\'t specify SANs on the+    -- /terminating/ mesh endpoint, the Envoy proxy for that node doesn\'t+    -- verify the SAN on a peer client certificate. If you don\'t specify SANs+    -- on the /originating/ mesh endpoint, the SAN on the certificate provided+    -- by the terminating endpoint must match the mesh endpoint service+    -- discovery configuration. Since SPIRE vended certificates have a SPIFFE+    -- ID as a name, you must set the SAN since the name doesn\'t match the+    -- service discovery name.+    subjectAlternativeNames :: Prelude.Maybe SubjectAlternativeNames,+    -- | A reference to where to retrieve the trust chain when validating a+    -- peer’s Transport Layer Security (TLS) certificate.+    trust :: TlsValidationContextTrust+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TlsValidationContext' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'subjectAlternativeNames', 'tlsValidationContext_subjectAlternativeNames' - A reference to an object that represents the SANs for a Transport Layer+-- Security (TLS) validation context. If you don\'t specify SANs on the+-- /terminating/ mesh endpoint, the Envoy proxy for that node doesn\'t+-- verify the SAN on a peer client certificate. If you don\'t specify SANs+-- on the /originating/ mesh endpoint, the SAN on the certificate provided+-- by the terminating endpoint must match the mesh endpoint service+-- discovery configuration. Since SPIRE vended certificates have a SPIFFE+-- ID as a name, you must set the SAN since the name doesn\'t match the+-- service discovery name.+--+-- 'trust', 'tlsValidationContext_trust' - A reference to where to retrieve the trust chain when validating a+-- peer’s Transport Layer Security (TLS) certificate.+newTlsValidationContext ::+  -- | 'trust'+  TlsValidationContextTrust ->+  TlsValidationContext+newTlsValidationContext pTrust_ =+  TlsValidationContext'+    { subjectAlternativeNames =+        Prelude.Nothing,+      trust = pTrust_+    }++-- | A reference to an object that represents the SANs for a Transport Layer+-- Security (TLS) validation context. If you don\'t specify SANs on the+-- /terminating/ mesh endpoint, the Envoy proxy for that node doesn\'t+-- verify the SAN on a peer client certificate. If you don\'t specify SANs+-- on the /originating/ mesh endpoint, the SAN on the certificate provided+-- by the terminating endpoint must match the mesh endpoint service+-- discovery configuration. Since SPIRE vended certificates have a SPIFFE+-- ID as a name, you must set the SAN since the name doesn\'t match the+-- service discovery name.+tlsValidationContext_subjectAlternativeNames :: Lens.Lens' TlsValidationContext (Prelude.Maybe SubjectAlternativeNames)+tlsValidationContext_subjectAlternativeNames = Lens.lens (\TlsValidationContext' {subjectAlternativeNames} -> subjectAlternativeNames) (\s@TlsValidationContext' {} a -> s {subjectAlternativeNames = a} :: TlsValidationContext)++-- | A reference to where to retrieve the trust chain when validating a+-- peer’s Transport Layer Security (TLS) certificate.+tlsValidationContext_trust :: Lens.Lens' TlsValidationContext TlsValidationContextTrust+tlsValidationContext_trust = Lens.lens (\TlsValidationContext' {trust} -> trust) (\s@TlsValidationContext' {} a -> s {trust = a} :: TlsValidationContext)++instance Data.FromJSON TlsValidationContext where+  parseJSON =+    Data.withObject+      "TlsValidationContext"+      ( \x ->+          TlsValidationContext'+            Prelude.<$> (x Data..:? "subjectAlternativeNames")+            Prelude.<*> (x Data..: "trust")+      )++instance Prelude.Hashable TlsValidationContext where+  hashWithSalt _salt TlsValidationContext' {..} =+    _salt+      `Prelude.hashWithSalt` subjectAlternativeNames+      `Prelude.hashWithSalt` trust++instance Prelude.NFData TlsValidationContext where+  rnf TlsValidationContext' {..} =+    Prelude.rnf subjectAlternativeNames+      `Prelude.seq` Prelude.rnf trust++instance Data.ToJSON TlsValidationContext where+  toJSON TlsValidationContext' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("subjectAlternativeNames" Data..=)+              Prelude.<$> subjectAlternativeNames,+            Prelude.Just ("trust" Data..= trust)+          ]+      )
+ gen/Amazonka/AppMesh/Types/TlsValidationContextAcmTrust.hs view
@@ -0,0 +1,92 @@+{-# 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.AppMesh.Types.TlsValidationContextAcmTrust+-- 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.AppMesh.Types.TlsValidationContextAcmTrust where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a Transport Layer Security (TLS) validation+-- context trust for an Certificate Manager certificate.+--+-- /See:/ 'newTlsValidationContextAcmTrust' smart constructor.+data TlsValidationContextAcmTrust = TlsValidationContextAcmTrust'+  { -- | One or more ACM Amazon Resource Name (ARN)s.+    certificateAuthorityArns :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TlsValidationContextAcmTrust' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'certificateAuthorityArns', 'tlsValidationContextAcmTrust_certificateAuthorityArns' - One or more ACM Amazon Resource Name (ARN)s.+newTlsValidationContextAcmTrust ::+  -- | 'certificateAuthorityArns'+  Prelude.NonEmpty Prelude.Text ->+  TlsValidationContextAcmTrust+newTlsValidationContextAcmTrust+  pCertificateAuthorityArns_ =+    TlsValidationContextAcmTrust'+      { certificateAuthorityArns =+          Lens.coerced+            Lens.# pCertificateAuthorityArns_+      }++-- | One or more ACM Amazon Resource Name (ARN)s.+tlsValidationContextAcmTrust_certificateAuthorityArns :: Lens.Lens' TlsValidationContextAcmTrust (Prelude.NonEmpty Prelude.Text)+tlsValidationContextAcmTrust_certificateAuthorityArns = Lens.lens (\TlsValidationContextAcmTrust' {certificateAuthorityArns} -> certificateAuthorityArns) (\s@TlsValidationContextAcmTrust' {} a -> s {certificateAuthorityArns = a} :: TlsValidationContextAcmTrust) Prelude.. Lens.coerced++instance Data.FromJSON TlsValidationContextAcmTrust where+  parseJSON =+    Data.withObject+      "TlsValidationContextAcmTrust"+      ( \x ->+          TlsValidationContextAcmTrust'+            Prelude.<$> (x Data..: "certificateAuthorityArns")+      )++instance+  Prelude.Hashable+    TlsValidationContextAcmTrust+  where+  hashWithSalt _salt TlsValidationContextAcmTrust' {..} =+    _salt+      `Prelude.hashWithSalt` certificateAuthorityArns++instance Prelude.NFData TlsValidationContextAcmTrust where+  rnf TlsValidationContextAcmTrust' {..} =+    Prelude.rnf certificateAuthorityArns++instance Data.ToJSON TlsValidationContextAcmTrust where+  toJSON TlsValidationContextAcmTrust' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "certificateAuthorityArns"+                  Data..= certificateAuthorityArns+              )+          ]+      )
+ gen/Amazonka/AppMesh/Types/TlsValidationContextFileTrust.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.AppMesh.Types.TlsValidationContextFileTrust+-- 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.AppMesh.Types.TlsValidationContextFileTrust where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a Transport Layer Security (TLS) validation+-- context trust for a local file.+--+-- /See:/ 'newTlsValidationContextFileTrust' smart constructor.+data TlsValidationContextFileTrust = TlsValidationContextFileTrust'+  { -- | The certificate trust chain for a certificate stored on the file system+    -- of the virtual node that the proxy is running on.+    certificateChain :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TlsValidationContextFileTrust' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'certificateChain', 'tlsValidationContextFileTrust_certificateChain' - The certificate trust chain for a certificate stored on the file system+-- of the virtual node that the proxy is running on.+newTlsValidationContextFileTrust ::+  -- | 'certificateChain'+  Prelude.Text ->+  TlsValidationContextFileTrust+newTlsValidationContextFileTrust pCertificateChain_ =+  TlsValidationContextFileTrust'+    { certificateChain =+        pCertificateChain_+    }++-- | The certificate trust chain for a certificate stored on the file system+-- of the virtual node that the proxy is running on.+tlsValidationContextFileTrust_certificateChain :: Lens.Lens' TlsValidationContextFileTrust Prelude.Text+tlsValidationContextFileTrust_certificateChain = Lens.lens (\TlsValidationContextFileTrust' {certificateChain} -> certificateChain) (\s@TlsValidationContextFileTrust' {} a -> s {certificateChain = a} :: TlsValidationContextFileTrust)++instance Data.FromJSON TlsValidationContextFileTrust where+  parseJSON =+    Data.withObject+      "TlsValidationContextFileTrust"+      ( \x ->+          TlsValidationContextFileTrust'+            Prelude.<$> (x Data..: "certificateChain")+      )++instance+  Prelude.Hashable+    TlsValidationContextFileTrust+  where+  hashWithSalt _salt TlsValidationContextFileTrust' {..} =+    _salt `Prelude.hashWithSalt` certificateChain++instance Prelude.NFData TlsValidationContextFileTrust where+  rnf TlsValidationContextFileTrust' {..} =+    Prelude.rnf certificateChain++instance Data.ToJSON TlsValidationContextFileTrust where+  toJSON TlsValidationContextFileTrust' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("certificateChain" Data..= certificateChain)+          ]+      )
+ gen/Amazonka/AppMesh/Types/TlsValidationContextSdsTrust.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.TlsValidationContextSdsTrust+-- 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.AppMesh.Types.TlsValidationContextSdsTrust where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a Transport Layer Security (TLS) Secret+-- Discovery Service validation context trust. The proxy must be configured+-- with a local SDS provider via a Unix Domain Socket. See App Mesh+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html TLS documentation>+-- for more info.+--+-- /See:/ 'newTlsValidationContextSdsTrust' smart constructor.+data TlsValidationContextSdsTrust = TlsValidationContextSdsTrust'+  { -- | A reference to an object that represents the name of the secret for a+    -- Transport Layer Security (TLS) Secret Discovery Service validation+    -- context trust.+    secretName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TlsValidationContextSdsTrust' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'secretName', 'tlsValidationContextSdsTrust_secretName' - A reference to an object that represents the name of the secret for a+-- Transport Layer Security (TLS) Secret Discovery Service validation+-- context trust.+newTlsValidationContextSdsTrust ::+  -- | 'secretName'+  Prelude.Text ->+  TlsValidationContextSdsTrust+newTlsValidationContextSdsTrust pSecretName_ =+  TlsValidationContextSdsTrust'+    { secretName =+        pSecretName_+    }++-- | A reference to an object that represents the name of the secret for a+-- Transport Layer Security (TLS) Secret Discovery Service validation+-- context trust.+tlsValidationContextSdsTrust_secretName :: Lens.Lens' TlsValidationContextSdsTrust Prelude.Text+tlsValidationContextSdsTrust_secretName = Lens.lens (\TlsValidationContextSdsTrust' {secretName} -> secretName) (\s@TlsValidationContextSdsTrust' {} a -> s {secretName = a} :: TlsValidationContextSdsTrust)++instance Data.FromJSON TlsValidationContextSdsTrust where+  parseJSON =+    Data.withObject+      "TlsValidationContextSdsTrust"+      ( \x ->+          TlsValidationContextSdsTrust'+            Prelude.<$> (x Data..: "secretName")+      )++instance+  Prelude.Hashable+    TlsValidationContextSdsTrust+  where+  hashWithSalt _salt TlsValidationContextSdsTrust' {..} =+    _salt `Prelude.hashWithSalt` secretName++instance Prelude.NFData TlsValidationContextSdsTrust where+  rnf TlsValidationContextSdsTrust' {..} =+    Prelude.rnf secretName++instance Data.ToJSON TlsValidationContextSdsTrust where+  toJSON TlsValidationContextSdsTrust' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("secretName" Data..= secretName)]+      )
+ gen/Amazonka/AppMesh/Types/TlsValidationContextTrust.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.TlsValidationContextTrust+-- 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.AppMesh.Types.TlsValidationContextTrust where++import Amazonka.AppMesh.Types.TlsValidationContextAcmTrust+import Amazonka.AppMesh.Types.TlsValidationContextFileTrust+import Amazonka.AppMesh.Types.TlsValidationContextSdsTrust+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a Transport Layer Security (TLS) validation+-- context trust.+--+-- /See:/ 'newTlsValidationContextTrust' smart constructor.+data TlsValidationContextTrust = TlsValidationContextTrust'+  { -- | A reference to an object that represents a Transport Layer Security+    -- (TLS) validation context trust for an Certificate Manager certificate.+    acm :: Prelude.Maybe TlsValidationContextAcmTrust,+    -- | An object that represents a Transport Layer Security (TLS) validation+    -- context trust for a local file.+    file :: Prelude.Maybe TlsValidationContextFileTrust,+    -- | A reference to an object that represents a Transport Layer Security+    -- (TLS) Secret Discovery Service validation context trust.+    sds :: Prelude.Maybe TlsValidationContextSdsTrust+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TlsValidationContextTrust' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acm', 'tlsValidationContextTrust_acm' - A reference to an object that represents a Transport Layer Security+-- (TLS) validation context trust for an Certificate Manager certificate.+--+-- 'file', 'tlsValidationContextTrust_file' - An object that represents a Transport Layer Security (TLS) validation+-- context trust for a local file.+--+-- 'sds', 'tlsValidationContextTrust_sds' - A reference to an object that represents a Transport Layer Security+-- (TLS) Secret Discovery Service validation context trust.+newTlsValidationContextTrust ::+  TlsValidationContextTrust+newTlsValidationContextTrust =+  TlsValidationContextTrust'+    { acm = Prelude.Nothing,+      file = Prelude.Nothing,+      sds = Prelude.Nothing+    }++-- | A reference to an object that represents a Transport Layer Security+-- (TLS) validation context trust for an Certificate Manager certificate.+tlsValidationContextTrust_acm :: Lens.Lens' TlsValidationContextTrust (Prelude.Maybe TlsValidationContextAcmTrust)+tlsValidationContextTrust_acm = Lens.lens (\TlsValidationContextTrust' {acm} -> acm) (\s@TlsValidationContextTrust' {} a -> s {acm = a} :: TlsValidationContextTrust)++-- | An object that represents a Transport Layer Security (TLS) validation+-- context trust for a local file.+tlsValidationContextTrust_file :: Lens.Lens' TlsValidationContextTrust (Prelude.Maybe TlsValidationContextFileTrust)+tlsValidationContextTrust_file = Lens.lens (\TlsValidationContextTrust' {file} -> file) (\s@TlsValidationContextTrust' {} a -> s {file = a} :: TlsValidationContextTrust)++-- | A reference to an object that represents a Transport Layer Security+-- (TLS) Secret Discovery Service validation context trust.+tlsValidationContextTrust_sds :: Lens.Lens' TlsValidationContextTrust (Prelude.Maybe TlsValidationContextSdsTrust)+tlsValidationContextTrust_sds = Lens.lens (\TlsValidationContextTrust' {sds} -> sds) (\s@TlsValidationContextTrust' {} a -> s {sds = a} :: TlsValidationContextTrust)++instance Data.FromJSON TlsValidationContextTrust where+  parseJSON =+    Data.withObject+      "TlsValidationContextTrust"+      ( \x ->+          TlsValidationContextTrust'+            Prelude.<$> (x Data..:? "acm")+            Prelude.<*> (x Data..:? "file")+            Prelude.<*> (x Data..:? "sds")+      )++instance Prelude.Hashable TlsValidationContextTrust where+  hashWithSalt _salt TlsValidationContextTrust' {..} =+    _salt+      `Prelude.hashWithSalt` acm+      `Prelude.hashWithSalt` file+      `Prelude.hashWithSalt` sds++instance Prelude.NFData TlsValidationContextTrust where+  rnf TlsValidationContextTrust' {..} =+    Prelude.rnf acm+      `Prelude.seq` Prelude.rnf file+      `Prelude.seq` Prelude.rnf sds++instance Data.ToJSON TlsValidationContextTrust where+  toJSON TlsValidationContextTrust' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("acm" Data..=) Prelude.<$> acm,+            ("file" Data..=) Prelude.<$> file,+            ("sds" Data..=) Prelude.<$> sds+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayAccessLog.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayAccessLog+-- 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.AppMesh.Types.VirtualGatewayAccessLog where++import Amazonka.AppMesh.Types.VirtualGatewayFileAccessLog+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 access log configuration for a virtual gateway.+--+-- /See:/ 'newVirtualGatewayAccessLog' smart constructor.+data VirtualGatewayAccessLog = VirtualGatewayAccessLog'+  { -- | The file object to send virtual gateway access logs to.+    file :: Prelude.Maybe VirtualGatewayFileAccessLog+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayAccessLog' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'file', 'virtualGatewayAccessLog_file' - The file object to send virtual gateway access logs to.+newVirtualGatewayAccessLog ::+  VirtualGatewayAccessLog+newVirtualGatewayAccessLog =+  VirtualGatewayAccessLog' {file = Prelude.Nothing}++-- | The file object to send virtual gateway access logs to.+virtualGatewayAccessLog_file :: Lens.Lens' VirtualGatewayAccessLog (Prelude.Maybe VirtualGatewayFileAccessLog)+virtualGatewayAccessLog_file = Lens.lens (\VirtualGatewayAccessLog' {file} -> file) (\s@VirtualGatewayAccessLog' {} a -> s {file = a} :: VirtualGatewayAccessLog)++instance Data.FromJSON VirtualGatewayAccessLog where+  parseJSON =+    Data.withObject+      "VirtualGatewayAccessLog"+      ( \x ->+          VirtualGatewayAccessLog'+            Prelude.<$> (x Data..:? "file")+      )++instance Prelude.Hashable VirtualGatewayAccessLog where+  hashWithSalt _salt VirtualGatewayAccessLog' {..} =+    _salt `Prelude.hashWithSalt` file++instance Prelude.NFData VirtualGatewayAccessLog where+  rnf VirtualGatewayAccessLog' {..} = Prelude.rnf file++instance Data.ToJSON VirtualGatewayAccessLog where+  toJSON VirtualGatewayAccessLog' {..} =+    Data.object+      ( Prelude.catMaybes+          [("file" Data..=) Prelude.<$> file]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayBackendDefaults.hs view
@@ -0,0 +1,83 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayBackendDefaults+-- 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.AppMesh.Types.VirtualGatewayBackendDefaults where++import Amazonka.AppMesh.Types.VirtualGatewayClientPolicy+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the default properties for a backend.+--+-- /See:/ 'newVirtualGatewayBackendDefaults' smart constructor.+data VirtualGatewayBackendDefaults = VirtualGatewayBackendDefaults'+  { -- | A reference to an object that represents a client policy.+    clientPolicy :: Prelude.Maybe VirtualGatewayClientPolicy+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayBackendDefaults' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientPolicy', 'virtualGatewayBackendDefaults_clientPolicy' - A reference to an object that represents a client policy.+newVirtualGatewayBackendDefaults ::+  VirtualGatewayBackendDefaults+newVirtualGatewayBackendDefaults =+  VirtualGatewayBackendDefaults'+    { clientPolicy =+        Prelude.Nothing+    }++-- | A reference to an object that represents a client policy.+virtualGatewayBackendDefaults_clientPolicy :: Lens.Lens' VirtualGatewayBackendDefaults (Prelude.Maybe VirtualGatewayClientPolicy)+virtualGatewayBackendDefaults_clientPolicy = Lens.lens (\VirtualGatewayBackendDefaults' {clientPolicy} -> clientPolicy) (\s@VirtualGatewayBackendDefaults' {} a -> s {clientPolicy = a} :: VirtualGatewayBackendDefaults)++instance Data.FromJSON VirtualGatewayBackendDefaults where+  parseJSON =+    Data.withObject+      "VirtualGatewayBackendDefaults"+      ( \x ->+          VirtualGatewayBackendDefaults'+            Prelude.<$> (x Data..:? "clientPolicy")+      )++instance+  Prelude.Hashable+    VirtualGatewayBackendDefaults+  where+  hashWithSalt _salt VirtualGatewayBackendDefaults' {..} =+    _salt `Prelude.hashWithSalt` clientPolicy++instance Prelude.NFData VirtualGatewayBackendDefaults where+  rnf VirtualGatewayBackendDefaults' {..} =+    Prelude.rnf clientPolicy++instance Data.ToJSON VirtualGatewayBackendDefaults where+  toJSON VirtualGatewayBackendDefaults' {..} =+    Data.object+      ( Prelude.catMaybes+          [("clientPolicy" Data..=) Prelude.<$> clientPolicy]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayClientPolicy.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayClientPolicy+-- 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.AppMesh.Types.VirtualGatewayClientPolicy where++import Amazonka.AppMesh.Types.VirtualGatewayClientPolicyTls+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a client policy.+--+-- /See:/ 'newVirtualGatewayClientPolicy' smart constructor.+data VirtualGatewayClientPolicy = VirtualGatewayClientPolicy'+  { -- | A reference to an object that represents a Transport Layer Security+    -- (TLS) client policy.+    tls :: Prelude.Maybe VirtualGatewayClientPolicyTls+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayClientPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tls', 'virtualGatewayClientPolicy_tls' - A reference to an object that represents a Transport Layer Security+-- (TLS) client policy.+newVirtualGatewayClientPolicy ::+  VirtualGatewayClientPolicy+newVirtualGatewayClientPolicy =+  VirtualGatewayClientPolicy' {tls = Prelude.Nothing}++-- | A reference to an object that represents a Transport Layer Security+-- (TLS) client policy.+virtualGatewayClientPolicy_tls :: Lens.Lens' VirtualGatewayClientPolicy (Prelude.Maybe VirtualGatewayClientPolicyTls)+virtualGatewayClientPolicy_tls = Lens.lens (\VirtualGatewayClientPolicy' {tls} -> tls) (\s@VirtualGatewayClientPolicy' {} a -> s {tls = a} :: VirtualGatewayClientPolicy)++instance Data.FromJSON VirtualGatewayClientPolicy where+  parseJSON =+    Data.withObject+      "VirtualGatewayClientPolicy"+      ( \x ->+          VirtualGatewayClientPolicy'+            Prelude.<$> (x Data..:? "tls")+      )++instance Prelude.Hashable VirtualGatewayClientPolicy where+  hashWithSalt _salt VirtualGatewayClientPolicy' {..} =+    _salt `Prelude.hashWithSalt` tls++instance Prelude.NFData VirtualGatewayClientPolicy where+  rnf VirtualGatewayClientPolicy' {..} = Prelude.rnf tls++instance Data.ToJSON VirtualGatewayClientPolicy where+  toJSON VirtualGatewayClientPolicy' {..} =+    Data.object+      (Prelude.catMaybes [("tls" Data..=) Prelude.<$> tls])
+ gen/Amazonka/AppMesh/Types/VirtualGatewayClientPolicyTls.hs view
@@ -0,0 +1,137 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayClientPolicyTls+-- 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.AppMesh.Types.VirtualGatewayClientPolicyTls where++import Amazonka.AppMesh.Types.VirtualGatewayClientTlsCertificate+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContext+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a Transport Layer Security (TLS) client+-- policy.+--+-- /See:/ 'newVirtualGatewayClientPolicyTls' smart constructor.+data VirtualGatewayClientPolicyTls = VirtualGatewayClientPolicyTls'+  { -- | A reference to an object that represents a virtual gateway\'s client\'s+    -- Transport Layer Security (TLS) certificate.+    certificate :: Prelude.Maybe VirtualGatewayClientTlsCertificate,+    -- | Whether the policy is enforced. The default is @True@, if a value isn\'t+    -- specified.+    enforce :: Prelude.Maybe Prelude.Bool,+    -- | One or more ports that the policy is enforced for.+    ports :: Prelude.Maybe [Prelude.Natural],+    -- | A reference to an object that represents a Transport Layer Security+    -- (TLS) validation context.+    validation :: VirtualGatewayTlsValidationContext+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayClientPolicyTls' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'certificate', 'virtualGatewayClientPolicyTls_certificate' - A reference to an object that represents a virtual gateway\'s client\'s+-- Transport Layer Security (TLS) certificate.+--+-- 'enforce', 'virtualGatewayClientPolicyTls_enforce' - Whether the policy is enforced. The default is @True@, if a value isn\'t+-- specified.+--+-- 'ports', 'virtualGatewayClientPolicyTls_ports' - One or more ports that the policy is enforced for.+--+-- 'validation', 'virtualGatewayClientPolicyTls_validation' - A reference to an object that represents a Transport Layer Security+-- (TLS) validation context.+newVirtualGatewayClientPolicyTls ::+  -- | 'validation'+  VirtualGatewayTlsValidationContext ->+  VirtualGatewayClientPolicyTls+newVirtualGatewayClientPolicyTls pValidation_ =+  VirtualGatewayClientPolicyTls'+    { certificate =+        Prelude.Nothing,+      enforce = Prelude.Nothing,+      ports = Prelude.Nothing,+      validation = pValidation_+    }++-- | A reference to an object that represents a virtual gateway\'s client\'s+-- Transport Layer Security (TLS) certificate.+virtualGatewayClientPolicyTls_certificate :: Lens.Lens' VirtualGatewayClientPolicyTls (Prelude.Maybe VirtualGatewayClientTlsCertificate)+virtualGatewayClientPolicyTls_certificate = Lens.lens (\VirtualGatewayClientPolicyTls' {certificate} -> certificate) (\s@VirtualGatewayClientPolicyTls' {} a -> s {certificate = a} :: VirtualGatewayClientPolicyTls)++-- | Whether the policy is enforced. The default is @True@, if a value isn\'t+-- specified.+virtualGatewayClientPolicyTls_enforce :: Lens.Lens' VirtualGatewayClientPolicyTls (Prelude.Maybe Prelude.Bool)+virtualGatewayClientPolicyTls_enforce = Lens.lens (\VirtualGatewayClientPolicyTls' {enforce} -> enforce) (\s@VirtualGatewayClientPolicyTls' {} a -> s {enforce = a} :: VirtualGatewayClientPolicyTls)++-- | One or more ports that the policy is enforced for.+virtualGatewayClientPolicyTls_ports :: Lens.Lens' VirtualGatewayClientPolicyTls (Prelude.Maybe [Prelude.Natural])+virtualGatewayClientPolicyTls_ports = Lens.lens (\VirtualGatewayClientPolicyTls' {ports} -> ports) (\s@VirtualGatewayClientPolicyTls' {} a -> s {ports = a} :: VirtualGatewayClientPolicyTls) Prelude.. Lens.mapping Lens.coerced++-- | A reference to an object that represents a Transport Layer Security+-- (TLS) validation context.+virtualGatewayClientPolicyTls_validation :: Lens.Lens' VirtualGatewayClientPolicyTls VirtualGatewayTlsValidationContext+virtualGatewayClientPolicyTls_validation = Lens.lens (\VirtualGatewayClientPolicyTls' {validation} -> validation) (\s@VirtualGatewayClientPolicyTls' {} a -> s {validation = a} :: VirtualGatewayClientPolicyTls)++instance Data.FromJSON VirtualGatewayClientPolicyTls where+  parseJSON =+    Data.withObject+      "VirtualGatewayClientPolicyTls"+      ( \x ->+          VirtualGatewayClientPolicyTls'+            Prelude.<$> (x Data..:? "certificate")+            Prelude.<*> (x Data..:? "enforce")+            Prelude.<*> (x Data..:? "ports" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "validation")+      )++instance+  Prelude.Hashable+    VirtualGatewayClientPolicyTls+  where+  hashWithSalt _salt VirtualGatewayClientPolicyTls' {..} =+    _salt+      `Prelude.hashWithSalt` certificate+      `Prelude.hashWithSalt` enforce+      `Prelude.hashWithSalt` ports+      `Prelude.hashWithSalt` validation++instance Prelude.NFData VirtualGatewayClientPolicyTls where+  rnf VirtualGatewayClientPolicyTls' {..} =+    Prelude.rnf certificate+      `Prelude.seq` Prelude.rnf enforce+      `Prelude.seq` Prelude.rnf ports+      `Prelude.seq` Prelude.rnf validation++instance Data.ToJSON VirtualGatewayClientPolicyTls where+  toJSON VirtualGatewayClientPolicyTls' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("certificate" Data..=) Prelude.<$> certificate,+            ("enforce" Data..=) Prelude.<$> enforce,+            ("ports" Data..=) Prelude.<$> ports,+            Prelude.Just ("validation" Data..= validation)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayClientTlsCertificate.hs view
@@ -0,0 +1,125 @@+{-# 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.AppMesh.Types.VirtualGatewayClientTlsCertificate+-- 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.AppMesh.Types.VirtualGatewayClientTlsCertificate where++import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsFileCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsSdsCertificate+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the virtual gateway\'s client\'s Transport+-- Layer Security (TLS) certificate.+--+-- /See:/ 'newVirtualGatewayClientTlsCertificate' smart constructor.+data VirtualGatewayClientTlsCertificate = VirtualGatewayClientTlsCertificate'+  { -- | An object that represents a local file certificate. The certificate must+    -- meet specific requirements and you must have proxy authorization+    -- enabled. For more information, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html Transport Layer Security (TLS)>+    -- .+    file :: Prelude.Maybe VirtualGatewayListenerTlsFileCertificate,+    -- | A reference to an object that represents a virtual gateway\'s client\'s+    -- Secret Discovery Service certificate.+    sds :: Prelude.Maybe VirtualGatewayListenerTlsSdsCertificate+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayClientTlsCertificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'file', 'virtualGatewayClientTlsCertificate_file' - An object that represents a local file certificate. The certificate must+-- meet specific requirements and you must have proxy authorization+-- enabled. For more information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html Transport Layer Security (TLS)>+-- .+--+-- 'sds', 'virtualGatewayClientTlsCertificate_sds' - A reference to an object that represents a virtual gateway\'s client\'s+-- Secret Discovery Service certificate.+newVirtualGatewayClientTlsCertificate ::+  VirtualGatewayClientTlsCertificate+newVirtualGatewayClientTlsCertificate =+  VirtualGatewayClientTlsCertificate'+    { file =+        Prelude.Nothing,+      sds = Prelude.Nothing+    }++-- | An object that represents a local file certificate. The certificate must+-- meet specific requirements and you must have proxy authorization+-- enabled. For more information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html Transport Layer Security (TLS)>+-- .+virtualGatewayClientTlsCertificate_file :: Lens.Lens' VirtualGatewayClientTlsCertificate (Prelude.Maybe VirtualGatewayListenerTlsFileCertificate)+virtualGatewayClientTlsCertificate_file = Lens.lens (\VirtualGatewayClientTlsCertificate' {file} -> file) (\s@VirtualGatewayClientTlsCertificate' {} a -> s {file = a} :: VirtualGatewayClientTlsCertificate)++-- | A reference to an object that represents a virtual gateway\'s client\'s+-- Secret Discovery Service certificate.+virtualGatewayClientTlsCertificate_sds :: Lens.Lens' VirtualGatewayClientTlsCertificate (Prelude.Maybe VirtualGatewayListenerTlsSdsCertificate)+virtualGatewayClientTlsCertificate_sds = Lens.lens (\VirtualGatewayClientTlsCertificate' {sds} -> sds) (\s@VirtualGatewayClientTlsCertificate' {} a -> s {sds = a} :: VirtualGatewayClientTlsCertificate)++instance+  Data.FromJSON+    VirtualGatewayClientTlsCertificate+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayClientTlsCertificate"+      ( \x ->+          VirtualGatewayClientTlsCertificate'+            Prelude.<$> (x Data..:? "file")+            Prelude.<*> (x Data..:? "sds")+      )++instance+  Prelude.Hashable+    VirtualGatewayClientTlsCertificate+  where+  hashWithSalt+    _salt+    VirtualGatewayClientTlsCertificate' {..} =+      _salt+        `Prelude.hashWithSalt` file+        `Prelude.hashWithSalt` sds++instance+  Prelude.NFData+    VirtualGatewayClientTlsCertificate+  where+  rnf VirtualGatewayClientTlsCertificate' {..} =+    Prelude.rnf file `Prelude.seq` Prelude.rnf sds++instance+  Data.ToJSON+    VirtualGatewayClientTlsCertificate+  where+  toJSON VirtualGatewayClientTlsCertificate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("file" Data..=) Prelude.<$> file,+            ("sds" Data..=) Prelude.<$> sds+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayConnectionPool.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayConnectionPool+-- 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.AppMesh.Types.VirtualGatewayConnectionPool where++import Amazonka.AppMesh.Types.VirtualGatewayGrpcConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayHttp2ConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayHttpConnectionPool+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the type of virtual gateway connection pool.+--+-- Only one protocol is used at a time and should be the same protocol as+-- the one chosen under port mapping.+--+-- If not present the default value for @maxPendingRequests@ is+-- @2147483647@.+--+-- /See:/ 'newVirtualGatewayConnectionPool' smart constructor.+data VirtualGatewayConnectionPool = VirtualGatewayConnectionPool'+  { -- | An object that represents a type of connection pool.+    grpc :: Prelude.Maybe VirtualGatewayGrpcConnectionPool,+    -- | An object that represents a type of connection pool.+    http :: Prelude.Maybe VirtualGatewayHttpConnectionPool,+    -- | An object that represents a type of connection pool.+    http2 :: Prelude.Maybe VirtualGatewayHttp2ConnectionPool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayConnectionPool' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'grpc', 'virtualGatewayConnectionPool_grpc' - An object that represents a type of connection pool.+--+-- 'http', 'virtualGatewayConnectionPool_http' - An object that represents a type of connection pool.+--+-- 'http2', 'virtualGatewayConnectionPool_http2' - An object that represents a type of connection pool.+newVirtualGatewayConnectionPool ::+  VirtualGatewayConnectionPool+newVirtualGatewayConnectionPool =+  VirtualGatewayConnectionPool'+    { grpc =+        Prelude.Nothing,+      http = Prelude.Nothing,+      http2 = Prelude.Nothing+    }++-- | An object that represents a type of connection pool.+virtualGatewayConnectionPool_grpc :: Lens.Lens' VirtualGatewayConnectionPool (Prelude.Maybe VirtualGatewayGrpcConnectionPool)+virtualGatewayConnectionPool_grpc = Lens.lens (\VirtualGatewayConnectionPool' {grpc} -> grpc) (\s@VirtualGatewayConnectionPool' {} a -> s {grpc = a} :: VirtualGatewayConnectionPool)++-- | An object that represents a type of connection pool.+virtualGatewayConnectionPool_http :: Lens.Lens' VirtualGatewayConnectionPool (Prelude.Maybe VirtualGatewayHttpConnectionPool)+virtualGatewayConnectionPool_http = Lens.lens (\VirtualGatewayConnectionPool' {http} -> http) (\s@VirtualGatewayConnectionPool' {} a -> s {http = a} :: VirtualGatewayConnectionPool)++-- | An object that represents a type of connection pool.+virtualGatewayConnectionPool_http2 :: Lens.Lens' VirtualGatewayConnectionPool (Prelude.Maybe VirtualGatewayHttp2ConnectionPool)+virtualGatewayConnectionPool_http2 = Lens.lens (\VirtualGatewayConnectionPool' {http2} -> http2) (\s@VirtualGatewayConnectionPool' {} a -> s {http2 = a} :: VirtualGatewayConnectionPool)++instance Data.FromJSON VirtualGatewayConnectionPool where+  parseJSON =+    Data.withObject+      "VirtualGatewayConnectionPool"+      ( \x ->+          VirtualGatewayConnectionPool'+            Prelude.<$> (x Data..:? "grpc")+            Prelude.<*> (x Data..:? "http")+            Prelude.<*> (x Data..:? "http2")+      )++instance+  Prelude.Hashable+    VirtualGatewayConnectionPool+  where+  hashWithSalt _salt VirtualGatewayConnectionPool' {..} =+    _salt+      `Prelude.hashWithSalt` grpc+      `Prelude.hashWithSalt` http+      `Prelude.hashWithSalt` http2++instance Prelude.NFData VirtualGatewayConnectionPool where+  rnf VirtualGatewayConnectionPool' {..} =+    Prelude.rnf grpc+      `Prelude.seq` Prelude.rnf http+      `Prelude.seq` Prelude.rnf http2++instance Data.ToJSON VirtualGatewayConnectionPool where+  toJSON VirtualGatewayConnectionPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("grpc" Data..=) Prelude.<$> grpc,+            ("http" Data..=) Prelude.<$> http,+            ("http2" Data..=) Prelude.<$> http2+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayData.hs view
@@ -0,0 +1,138 @@+{-# 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.AppMesh.Types.VirtualGatewayData+-- 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.AppMesh.Types.VirtualGatewayData where++import Amazonka.AppMesh.Types.ResourceMetadata+import Amazonka.AppMesh.Types.VirtualGatewaySpec+import Amazonka.AppMesh.Types.VirtualGatewayStatus+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual gateway returned by a describe+-- operation.+--+-- /See:/ 'newVirtualGatewayData' smart constructor.+data VirtualGatewayData = VirtualGatewayData'+  { -- | The name of the service mesh that the virtual gateway resides in.+    meshName :: Prelude.Text,+    metadata :: ResourceMetadata,+    -- | The specifications of the virtual gateway.+    spec :: VirtualGatewaySpec,+    -- | The current status of the virtual gateway.+    status :: VirtualGatewayStatus,+    -- | The name of the virtual gateway.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshName', 'virtualGatewayData_meshName' - The name of the service mesh that the virtual gateway resides in.+--+-- 'metadata', 'virtualGatewayData_metadata' - Undocumented member.+--+-- 'spec', 'virtualGatewayData_spec' - The specifications of the virtual gateway.+--+-- 'status', 'virtualGatewayData_status' - The current status of the virtual gateway.+--+-- 'virtualGatewayName', 'virtualGatewayData_virtualGatewayName' - The name of the virtual gateway.+newVirtualGatewayData ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'metadata'+  ResourceMetadata ->+  -- | 'spec'+  VirtualGatewaySpec ->+  -- | 'status'+  VirtualGatewayStatus ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  VirtualGatewayData+newVirtualGatewayData+  pMeshName_+  pMetadata_+  pSpec_+  pStatus_+  pVirtualGatewayName_ =+    VirtualGatewayData'+      { meshName = pMeshName_,+        metadata = pMetadata_,+        spec = pSpec_,+        status = pStatus_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | The name of the service mesh that the virtual gateway resides in.+virtualGatewayData_meshName :: Lens.Lens' VirtualGatewayData Prelude.Text+virtualGatewayData_meshName = Lens.lens (\VirtualGatewayData' {meshName} -> meshName) (\s@VirtualGatewayData' {} a -> s {meshName = a} :: VirtualGatewayData)++-- | Undocumented member.+virtualGatewayData_metadata :: Lens.Lens' VirtualGatewayData ResourceMetadata+virtualGatewayData_metadata = Lens.lens (\VirtualGatewayData' {metadata} -> metadata) (\s@VirtualGatewayData' {} a -> s {metadata = a} :: VirtualGatewayData)++-- | The specifications of the virtual gateway.+virtualGatewayData_spec :: Lens.Lens' VirtualGatewayData VirtualGatewaySpec+virtualGatewayData_spec = Lens.lens (\VirtualGatewayData' {spec} -> spec) (\s@VirtualGatewayData' {} a -> s {spec = a} :: VirtualGatewayData)++-- | The current status of the virtual gateway.+virtualGatewayData_status :: Lens.Lens' VirtualGatewayData VirtualGatewayStatus+virtualGatewayData_status = Lens.lens (\VirtualGatewayData' {status} -> status) (\s@VirtualGatewayData' {} a -> s {status = a} :: VirtualGatewayData)++-- | The name of the virtual gateway.+virtualGatewayData_virtualGatewayName :: Lens.Lens' VirtualGatewayData Prelude.Text+virtualGatewayData_virtualGatewayName = Lens.lens (\VirtualGatewayData' {virtualGatewayName} -> virtualGatewayName) (\s@VirtualGatewayData' {} a -> s {virtualGatewayName = a} :: VirtualGatewayData)++instance Data.FromJSON VirtualGatewayData where+  parseJSON =+    Data.withObject+      "VirtualGatewayData"+      ( \x ->+          VirtualGatewayData'+            Prelude.<$> (x Data..: "meshName")+            Prelude.<*> (x Data..: "metadata")+            Prelude.<*> (x Data..: "spec")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..: "virtualGatewayName")+      )++instance Prelude.Hashable VirtualGatewayData where+  hashWithSalt _salt VirtualGatewayData' {..} =+    _salt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData VirtualGatewayData where+  rnf VirtualGatewayData' {..} =+    Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf virtualGatewayName
+ gen/Amazonka/AppMesh/Types/VirtualGatewayFileAccessLog.hs view
@@ -0,0 +1,111 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayFileAccessLog+-- 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.AppMesh.Types.VirtualGatewayFileAccessLog where++import Amazonka.AppMesh.Types.LoggingFormat+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents an access log file.+--+-- /See:/ 'newVirtualGatewayFileAccessLog' smart constructor.+data VirtualGatewayFileAccessLog = VirtualGatewayFileAccessLog'+  { -- | The specified format for the virtual gateway access logs. It can be+    -- either @json_format@ or @text_format@.+    format :: Prelude.Maybe LoggingFormat,+    -- | The file path to write access logs to. You can use @\/dev\/stdout@ to+    -- send access logs to standard out and configure your Envoy container to+    -- use a log driver, such as @awslogs@, to export the access logs to a log+    -- storage service such as Amazon CloudWatch Logs. You can also specify a+    -- path in the Envoy container\'s file system to write the files to disk.+    path :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayFileAccessLog' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'format', 'virtualGatewayFileAccessLog_format' - The specified format for the virtual gateway access logs. It can be+-- either @json_format@ or @text_format@.+--+-- 'path', 'virtualGatewayFileAccessLog_path' - The file path to write access logs to. You can use @\/dev\/stdout@ to+-- send access logs to standard out and configure your Envoy container to+-- use a log driver, such as @awslogs@, to export the access logs to a log+-- storage service such as Amazon CloudWatch Logs. You can also specify a+-- path in the Envoy container\'s file system to write the files to disk.+newVirtualGatewayFileAccessLog ::+  -- | 'path'+  Prelude.Text ->+  VirtualGatewayFileAccessLog+newVirtualGatewayFileAccessLog pPath_ =+  VirtualGatewayFileAccessLog'+    { format =+        Prelude.Nothing,+      path = pPath_+    }++-- | The specified format for the virtual gateway access logs. It can be+-- either @json_format@ or @text_format@.+virtualGatewayFileAccessLog_format :: Lens.Lens' VirtualGatewayFileAccessLog (Prelude.Maybe LoggingFormat)+virtualGatewayFileAccessLog_format = Lens.lens (\VirtualGatewayFileAccessLog' {format} -> format) (\s@VirtualGatewayFileAccessLog' {} a -> s {format = a} :: VirtualGatewayFileAccessLog)++-- | The file path to write access logs to. You can use @\/dev\/stdout@ to+-- send access logs to standard out and configure your Envoy container to+-- use a log driver, such as @awslogs@, to export the access logs to a log+-- storage service such as Amazon CloudWatch Logs. You can also specify a+-- path in the Envoy container\'s file system to write the files to disk.+virtualGatewayFileAccessLog_path :: Lens.Lens' VirtualGatewayFileAccessLog Prelude.Text+virtualGatewayFileAccessLog_path = Lens.lens (\VirtualGatewayFileAccessLog' {path} -> path) (\s@VirtualGatewayFileAccessLog' {} a -> s {path = a} :: VirtualGatewayFileAccessLog)++instance Data.FromJSON VirtualGatewayFileAccessLog where+  parseJSON =+    Data.withObject+      "VirtualGatewayFileAccessLog"+      ( \x ->+          VirtualGatewayFileAccessLog'+            Prelude.<$> (x Data..:? "format")+            Prelude.<*> (x Data..: "path")+      )++instance Prelude.Hashable VirtualGatewayFileAccessLog where+  hashWithSalt _salt VirtualGatewayFileAccessLog' {..} =+    _salt+      `Prelude.hashWithSalt` format+      `Prelude.hashWithSalt` path++instance Prelude.NFData VirtualGatewayFileAccessLog where+  rnf VirtualGatewayFileAccessLog' {..} =+    Prelude.rnf format `Prelude.seq` Prelude.rnf path++instance Data.ToJSON VirtualGatewayFileAccessLog where+  toJSON VirtualGatewayFileAccessLog' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("format" Data..=) Prelude.<$> format,+            Prelude.Just ("path" Data..= path)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayGrpcConnectionPool.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayGrpcConnectionPool+-- 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.AppMesh.Types.VirtualGatewayGrpcConnectionPool where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a type of connection pool.+--+-- /See:/ 'newVirtualGatewayGrpcConnectionPool' smart constructor.+data VirtualGatewayGrpcConnectionPool = VirtualGatewayGrpcConnectionPool'+  { -- | Maximum number of inflight requests Envoy can concurrently support+    -- across hosts in upstream cluster.+    maxRequests :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayGrpcConnectionPool' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxRequests', 'virtualGatewayGrpcConnectionPool_maxRequests' - Maximum number of inflight requests Envoy can concurrently support+-- across hosts in upstream cluster.+newVirtualGatewayGrpcConnectionPool ::+  -- | 'maxRequests'+  Prelude.Natural ->+  VirtualGatewayGrpcConnectionPool+newVirtualGatewayGrpcConnectionPool pMaxRequests_ =+  VirtualGatewayGrpcConnectionPool'+    { maxRequests =+        pMaxRequests_+    }++-- | Maximum number of inflight requests Envoy can concurrently support+-- across hosts in upstream cluster.+virtualGatewayGrpcConnectionPool_maxRequests :: Lens.Lens' VirtualGatewayGrpcConnectionPool Prelude.Natural+virtualGatewayGrpcConnectionPool_maxRequests = Lens.lens (\VirtualGatewayGrpcConnectionPool' {maxRequests} -> maxRequests) (\s@VirtualGatewayGrpcConnectionPool' {} a -> s {maxRequests = a} :: VirtualGatewayGrpcConnectionPool)++instance+  Data.FromJSON+    VirtualGatewayGrpcConnectionPool+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayGrpcConnectionPool"+      ( \x ->+          VirtualGatewayGrpcConnectionPool'+            Prelude.<$> (x Data..: "maxRequests")+      )++instance+  Prelude.Hashable+    VirtualGatewayGrpcConnectionPool+  where+  hashWithSalt+    _salt+    VirtualGatewayGrpcConnectionPool' {..} =+      _salt `Prelude.hashWithSalt` maxRequests++instance+  Prelude.NFData+    VirtualGatewayGrpcConnectionPool+  where+  rnf VirtualGatewayGrpcConnectionPool' {..} =+    Prelude.rnf maxRequests++instance Data.ToJSON VirtualGatewayGrpcConnectionPool where+  toJSON VirtualGatewayGrpcConnectionPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("maxRequests" Data..= maxRequests)]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayHealthCheckPolicy.hs view
@@ -0,0 +1,214 @@+{-# 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.AppMesh.Types.VirtualGatewayHealthCheckPolicy+-- 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.AppMesh.Types.VirtualGatewayHealthCheckPolicy where++import Amazonka.AppMesh.Types.VirtualGatewayPortProtocol+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the health check policy for a virtual+-- gateway\'s listener.+--+-- /See:/ 'newVirtualGatewayHealthCheckPolicy' smart constructor.+data VirtualGatewayHealthCheckPolicy = VirtualGatewayHealthCheckPolicy'+  { -- | The destination path for the health check request. This value is only+    -- used if the specified protocol is HTTP or HTTP\/2. For any other+    -- protocol, this value is ignored.+    path :: Prelude.Maybe Prelude.Text,+    -- | The destination port for the health check request. This port must match+    -- the port defined in the PortMapping for the listener.+    port :: Prelude.Maybe Prelude.Natural,+    -- | The number of consecutive successful health checks that must occur+    -- before declaring the listener healthy.+    healthyThreshold :: Prelude.Natural,+    -- | The time period in milliseconds between each health check execution.+    intervalMillis :: Prelude.Natural,+    -- | The protocol for the health check request. If you specify @grpc@, then+    -- your service must conform to the+    -- <https://github.com/grpc/grpc/blob/master/doc/health-checking.md GRPC Health Checking Protocol>.+    protocol :: VirtualGatewayPortProtocol,+    -- | The amount of time to wait when receiving a response from the health+    -- check, in milliseconds.+    timeoutMillis :: Prelude.Natural,+    -- | The number of consecutive failed health checks that must occur before+    -- declaring a virtual gateway unhealthy.+    unhealthyThreshold :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayHealthCheckPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'path', 'virtualGatewayHealthCheckPolicy_path' - The destination path for the health check request. This value is only+-- used if the specified protocol is HTTP or HTTP\/2. For any other+-- protocol, this value is ignored.+--+-- 'port', 'virtualGatewayHealthCheckPolicy_port' - The destination port for the health check request. This port must match+-- the port defined in the PortMapping for the listener.+--+-- 'healthyThreshold', 'virtualGatewayHealthCheckPolicy_healthyThreshold' - The number of consecutive successful health checks that must occur+-- before declaring the listener healthy.+--+-- 'intervalMillis', 'virtualGatewayHealthCheckPolicy_intervalMillis' - The time period in milliseconds between each health check execution.+--+-- 'protocol', 'virtualGatewayHealthCheckPolicy_protocol' - The protocol for the health check request. If you specify @grpc@, then+-- your service must conform to the+-- <https://github.com/grpc/grpc/blob/master/doc/health-checking.md GRPC Health Checking Protocol>.+--+-- 'timeoutMillis', 'virtualGatewayHealthCheckPolicy_timeoutMillis' - The amount of time to wait when receiving a response from the health+-- check, in milliseconds.+--+-- 'unhealthyThreshold', 'virtualGatewayHealthCheckPolicy_unhealthyThreshold' - The number of consecutive failed health checks that must occur before+-- declaring a virtual gateway unhealthy.+newVirtualGatewayHealthCheckPolicy ::+  -- | 'healthyThreshold'+  Prelude.Natural ->+  -- | 'intervalMillis'+  Prelude.Natural ->+  -- | 'protocol'+  VirtualGatewayPortProtocol ->+  -- | 'timeoutMillis'+  Prelude.Natural ->+  -- | 'unhealthyThreshold'+  Prelude.Natural ->+  VirtualGatewayHealthCheckPolicy+newVirtualGatewayHealthCheckPolicy+  pHealthyThreshold_+  pIntervalMillis_+  pProtocol_+  pTimeoutMillis_+  pUnhealthyThreshold_ =+    VirtualGatewayHealthCheckPolicy'+      { path =+          Prelude.Nothing,+        port = Prelude.Nothing,+        healthyThreshold = pHealthyThreshold_,+        intervalMillis = pIntervalMillis_,+        protocol = pProtocol_,+        timeoutMillis = pTimeoutMillis_,+        unhealthyThreshold = pUnhealthyThreshold_+      }++-- | The destination path for the health check request. This value is only+-- used if the specified protocol is HTTP or HTTP\/2. For any other+-- protocol, this value is ignored.+virtualGatewayHealthCheckPolicy_path :: Lens.Lens' VirtualGatewayHealthCheckPolicy (Prelude.Maybe Prelude.Text)+virtualGatewayHealthCheckPolicy_path = Lens.lens (\VirtualGatewayHealthCheckPolicy' {path} -> path) (\s@VirtualGatewayHealthCheckPolicy' {} a -> s {path = a} :: VirtualGatewayHealthCheckPolicy)++-- | The destination port for the health check request. This port must match+-- the port defined in the PortMapping for the listener.+virtualGatewayHealthCheckPolicy_port :: Lens.Lens' VirtualGatewayHealthCheckPolicy (Prelude.Maybe Prelude.Natural)+virtualGatewayHealthCheckPolicy_port = Lens.lens (\VirtualGatewayHealthCheckPolicy' {port} -> port) (\s@VirtualGatewayHealthCheckPolicy' {} a -> s {port = a} :: VirtualGatewayHealthCheckPolicy)++-- | The number of consecutive successful health checks that must occur+-- before declaring the listener healthy.+virtualGatewayHealthCheckPolicy_healthyThreshold :: Lens.Lens' VirtualGatewayHealthCheckPolicy Prelude.Natural+virtualGatewayHealthCheckPolicy_healthyThreshold = Lens.lens (\VirtualGatewayHealthCheckPolicy' {healthyThreshold} -> healthyThreshold) (\s@VirtualGatewayHealthCheckPolicy' {} a -> s {healthyThreshold = a} :: VirtualGatewayHealthCheckPolicy)++-- | The time period in milliseconds between each health check execution.+virtualGatewayHealthCheckPolicy_intervalMillis :: Lens.Lens' VirtualGatewayHealthCheckPolicy Prelude.Natural+virtualGatewayHealthCheckPolicy_intervalMillis = Lens.lens (\VirtualGatewayHealthCheckPolicy' {intervalMillis} -> intervalMillis) (\s@VirtualGatewayHealthCheckPolicy' {} a -> s {intervalMillis = a} :: VirtualGatewayHealthCheckPolicy)++-- | The protocol for the health check request. If you specify @grpc@, then+-- your service must conform to the+-- <https://github.com/grpc/grpc/blob/master/doc/health-checking.md GRPC Health Checking Protocol>.+virtualGatewayHealthCheckPolicy_protocol :: Lens.Lens' VirtualGatewayHealthCheckPolicy VirtualGatewayPortProtocol+virtualGatewayHealthCheckPolicy_protocol = Lens.lens (\VirtualGatewayHealthCheckPolicy' {protocol} -> protocol) (\s@VirtualGatewayHealthCheckPolicy' {} a -> s {protocol = a} :: VirtualGatewayHealthCheckPolicy)++-- | The amount of time to wait when receiving a response from the health+-- check, in milliseconds.+virtualGatewayHealthCheckPolicy_timeoutMillis :: Lens.Lens' VirtualGatewayHealthCheckPolicy Prelude.Natural+virtualGatewayHealthCheckPolicy_timeoutMillis = Lens.lens (\VirtualGatewayHealthCheckPolicy' {timeoutMillis} -> timeoutMillis) (\s@VirtualGatewayHealthCheckPolicy' {} a -> s {timeoutMillis = a} :: VirtualGatewayHealthCheckPolicy)++-- | The number of consecutive failed health checks that must occur before+-- declaring a virtual gateway unhealthy.+virtualGatewayHealthCheckPolicy_unhealthyThreshold :: Lens.Lens' VirtualGatewayHealthCheckPolicy Prelude.Natural+virtualGatewayHealthCheckPolicy_unhealthyThreshold = Lens.lens (\VirtualGatewayHealthCheckPolicy' {unhealthyThreshold} -> unhealthyThreshold) (\s@VirtualGatewayHealthCheckPolicy' {} a -> s {unhealthyThreshold = a} :: VirtualGatewayHealthCheckPolicy)++instance+  Data.FromJSON+    VirtualGatewayHealthCheckPolicy+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayHealthCheckPolicy"+      ( \x ->+          VirtualGatewayHealthCheckPolicy'+            Prelude.<$> (x Data..:? "path")+            Prelude.<*> (x Data..:? "port")+            Prelude.<*> (x Data..: "healthyThreshold")+            Prelude.<*> (x Data..: "intervalMillis")+            Prelude.<*> (x Data..: "protocol")+            Prelude.<*> (x Data..: "timeoutMillis")+            Prelude.<*> (x Data..: "unhealthyThreshold")+      )++instance+  Prelude.Hashable+    VirtualGatewayHealthCheckPolicy+  where+  hashWithSalt+    _salt+    VirtualGatewayHealthCheckPolicy' {..} =+      _salt+        `Prelude.hashWithSalt` path+        `Prelude.hashWithSalt` port+        `Prelude.hashWithSalt` healthyThreshold+        `Prelude.hashWithSalt` intervalMillis+        `Prelude.hashWithSalt` protocol+        `Prelude.hashWithSalt` timeoutMillis+        `Prelude.hashWithSalt` unhealthyThreshold++instance+  Prelude.NFData+    VirtualGatewayHealthCheckPolicy+  where+  rnf VirtualGatewayHealthCheckPolicy' {..} =+    Prelude.rnf path+      `Prelude.seq` Prelude.rnf port+      `Prelude.seq` Prelude.rnf healthyThreshold+      `Prelude.seq` Prelude.rnf intervalMillis+      `Prelude.seq` Prelude.rnf protocol+      `Prelude.seq` Prelude.rnf timeoutMillis+      `Prelude.seq` Prelude.rnf unhealthyThreshold++instance Data.ToJSON VirtualGatewayHealthCheckPolicy where+  toJSON VirtualGatewayHealthCheckPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("path" Data..=) Prelude.<$> path,+            ("port" Data..=) Prelude.<$> port,+            Prelude.Just+              ("healthyThreshold" Data..= healthyThreshold),+            Prelude.Just+              ("intervalMillis" Data..= intervalMillis),+            Prelude.Just ("protocol" Data..= protocol),+            Prelude.Just ("timeoutMillis" Data..= timeoutMillis),+            Prelude.Just+              ("unhealthyThreshold" Data..= unhealthyThreshold)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayHttp2ConnectionPool.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayHttp2ConnectionPool+-- 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.AppMesh.Types.VirtualGatewayHttp2ConnectionPool where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a type of connection pool.+--+-- /See:/ 'newVirtualGatewayHttp2ConnectionPool' smart constructor.+data VirtualGatewayHttp2ConnectionPool = VirtualGatewayHttp2ConnectionPool'+  { -- | Maximum number of inflight requests Envoy can concurrently support+    -- across hosts in upstream cluster.+    maxRequests :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayHttp2ConnectionPool' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxRequests', 'virtualGatewayHttp2ConnectionPool_maxRequests' - Maximum number of inflight requests Envoy can concurrently support+-- across hosts in upstream cluster.+newVirtualGatewayHttp2ConnectionPool ::+  -- | 'maxRequests'+  Prelude.Natural ->+  VirtualGatewayHttp2ConnectionPool+newVirtualGatewayHttp2ConnectionPool pMaxRequests_ =+  VirtualGatewayHttp2ConnectionPool'+    { maxRequests =+        pMaxRequests_+    }++-- | Maximum number of inflight requests Envoy can concurrently support+-- across hosts in upstream cluster.+virtualGatewayHttp2ConnectionPool_maxRequests :: Lens.Lens' VirtualGatewayHttp2ConnectionPool Prelude.Natural+virtualGatewayHttp2ConnectionPool_maxRequests = Lens.lens (\VirtualGatewayHttp2ConnectionPool' {maxRequests} -> maxRequests) (\s@VirtualGatewayHttp2ConnectionPool' {} a -> s {maxRequests = a} :: VirtualGatewayHttp2ConnectionPool)++instance+  Data.FromJSON+    VirtualGatewayHttp2ConnectionPool+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayHttp2ConnectionPool"+      ( \x ->+          VirtualGatewayHttp2ConnectionPool'+            Prelude.<$> (x Data..: "maxRequests")+      )++instance+  Prelude.Hashable+    VirtualGatewayHttp2ConnectionPool+  where+  hashWithSalt+    _salt+    VirtualGatewayHttp2ConnectionPool' {..} =+      _salt `Prelude.hashWithSalt` maxRequests++instance+  Prelude.NFData+    VirtualGatewayHttp2ConnectionPool+  where+  rnf VirtualGatewayHttp2ConnectionPool' {..} =+    Prelude.rnf maxRequests++instance+  Data.ToJSON+    VirtualGatewayHttp2ConnectionPool+  where+  toJSON VirtualGatewayHttp2ConnectionPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("maxRequests" Data..= maxRequests)]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayHttpConnectionPool.hs view
@@ -0,0 +1,115 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayHttpConnectionPool+-- 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.AppMesh.Types.VirtualGatewayHttpConnectionPool where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a type of connection pool.+--+-- /See:/ 'newVirtualGatewayHttpConnectionPool' smart constructor.+data VirtualGatewayHttpConnectionPool = VirtualGatewayHttpConnectionPool'+  { -- | Number of overflowing requests after @max_connections@ Envoy will queue+    -- to upstream cluster.+    maxPendingRequests :: Prelude.Maybe Prelude.Natural,+    -- | Maximum number of outbound TCP connections Envoy can establish+    -- concurrently with all hosts in upstream cluster.+    maxConnections :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayHttpConnectionPool' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxPendingRequests', 'virtualGatewayHttpConnectionPool_maxPendingRequests' - Number of overflowing requests after @max_connections@ Envoy will queue+-- to upstream cluster.+--+-- 'maxConnections', 'virtualGatewayHttpConnectionPool_maxConnections' - Maximum number of outbound TCP connections Envoy can establish+-- concurrently with all hosts in upstream cluster.+newVirtualGatewayHttpConnectionPool ::+  -- | 'maxConnections'+  Prelude.Natural ->+  VirtualGatewayHttpConnectionPool+newVirtualGatewayHttpConnectionPool pMaxConnections_ =+  VirtualGatewayHttpConnectionPool'+    { maxPendingRequests =+        Prelude.Nothing,+      maxConnections = pMaxConnections_+    }++-- | Number of overflowing requests after @max_connections@ Envoy will queue+-- to upstream cluster.+virtualGatewayHttpConnectionPool_maxPendingRequests :: Lens.Lens' VirtualGatewayHttpConnectionPool (Prelude.Maybe Prelude.Natural)+virtualGatewayHttpConnectionPool_maxPendingRequests = Lens.lens (\VirtualGatewayHttpConnectionPool' {maxPendingRequests} -> maxPendingRequests) (\s@VirtualGatewayHttpConnectionPool' {} a -> s {maxPendingRequests = a} :: VirtualGatewayHttpConnectionPool)++-- | Maximum number of outbound TCP connections Envoy can establish+-- concurrently with all hosts in upstream cluster.+virtualGatewayHttpConnectionPool_maxConnections :: Lens.Lens' VirtualGatewayHttpConnectionPool Prelude.Natural+virtualGatewayHttpConnectionPool_maxConnections = Lens.lens (\VirtualGatewayHttpConnectionPool' {maxConnections} -> maxConnections) (\s@VirtualGatewayHttpConnectionPool' {} a -> s {maxConnections = a} :: VirtualGatewayHttpConnectionPool)++instance+  Data.FromJSON+    VirtualGatewayHttpConnectionPool+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayHttpConnectionPool"+      ( \x ->+          VirtualGatewayHttpConnectionPool'+            Prelude.<$> (x Data..:? "maxPendingRequests")+            Prelude.<*> (x Data..: "maxConnections")+      )++instance+  Prelude.Hashable+    VirtualGatewayHttpConnectionPool+  where+  hashWithSalt+    _salt+    VirtualGatewayHttpConnectionPool' {..} =+      _salt+        `Prelude.hashWithSalt` maxPendingRequests+        `Prelude.hashWithSalt` maxConnections++instance+  Prelude.NFData+    VirtualGatewayHttpConnectionPool+  where+  rnf VirtualGatewayHttpConnectionPool' {..} =+    Prelude.rnf maxPendingRequests+      `Prelude.seq` Prelude.rnf maxConnections++instance Data.ToJSON VirtualGatewayHttpConnectionPool where+  toJSON VirtualGatewayHttpConnectionPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxPendingRequests" Data..=)+              Prelude.<$> maxPendingRequests,+            Prelude.Just+              ("maxConnections" Data..= maxConnections)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayListener.hs view
@@ -0,0 +1,130 @@+{-# 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.AppMesh.Types.VirtualGatewayListener+-- 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.AppMesh.Types.VirtualGatewayListener where++import Amazonka.AppMesh.Types.VirtualGatewayConnectionPool+import Amazonka.AppMesh.Types.VirtualGatewayHealthCheckPolicy+import Amazonka.AppMesh.Types.VirtualGatewayListenerTls+import Amazonka.AppMesh.Types.VirtualGatewayPortMapping+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a listener for a virtual gateway.+--+-- /See:/ 'newVirtualGatewayListener' smart constructor.+data VirtualGatewayListener = VirtualGatewayListener'+  { -- | The connection pool information for the virtual gateway listener.+    connectionPool :: Prelude.Maybe VirtualGatewayConnectionPool,+    -- | The health check information for the listener.+    healthCheck :: Prelude.Maybe VirtualGatewayHealthCheckPolicy,+    -- | A reference to an object that represents the Transport Layer Security+    -- (TLS) properties for the listener.+    tls :: Prelude.Maybe VirtualGatewayListenerTls,+    -- | The port mapping information for the listener.+    portMapping :: VirtualGatewayPortMapping+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'connectionPool', 'virtualGatewayListener_connectionPool' - The connection pool information for the virtual gateway listener.+--+-- 'healthCheck', 'virtualGatewayListener_healthCheck' - The health check information for the listener.+--+-- 'tls', 'virtualGatewayListener_tls' - A reference to an object that represents the Transport Layer Security+-- (TLS) properties for the listener.+--+-- 'portMapping', 'virtualGatewayListener_portMapping' - The port mapping information for the listener.+newVirtualGatewayListener ::+  -- | 'portMapping'+  VirtualGatewayPortMapping ->+  VirtualGatewayListener+newVirtualGatewayListener pPortMapping_ =+  VirtualGatewayListener'+    { connectionPool =+        Prelude.Nothing,+      healthCheck = Prelude.Nothing,+      tls = Prelude.Nothing,+      portMapping = pPortMapping_+    }++-- | The connection pool information for the virtual gateway listener.+virtualGatewayListener_connectionPool :: Lens.Lens' VirtualGatewayListener (Prelude.Maybe VirtualGatewayConnectionPool)+virtualGatewayListener_connectionPool = Lens.lens (\VirtualGatewayListener' {connectionPool} -> connectionPool) (\s@VirtualGatewayListener' {} a -> s {connectionPool = a} :: VirtualGatewayListener)++-- | The health check information for the listener.+virtualGatewayListener_healthCheck :: Lens.Lens' VirtualGatewayListener (Prelude.Maybe VirtualGatewayHealthCheckPolicy)+virtualGatewayListener_healthCheck = Lens.lens (\VirtualGatewayListener' {healthCheck} -> healthCheck) (\s@VirtualGatewayListener' {} a -> s {healthCheck = a} :: VirtualGatewayListener)++-- | A reference to an object that represents the Transport Layer Security+-- (TLS) properties for the listener.+virtualGatewayListener_tls :: Lens.Lens' VirtualGatewayListener (Prelude.Maybe VirtualGatewayListenerTls)+virtualGatewayListener_tls = Lens.lens (\VirtualGatewayListener' {tls} -> tls) (\s@VirtualGatewayListener' {} a -> s {tls = a} :: VirtualGatewayListener)++-- | The port mapping information for the listener.+virtualGatewayListener_portMapping :: Lens.Lens' VirtualGatewayListener VirtualGatewayPortMapping+virtualGatewayListener_portMapping = Lens.lens (\VirtualGatewayListener' {portMapping} -> portMapping) (\s@VirtualGatewayListener' {} a -> s {portMapping = a} :: VirtualGatewayListener)++instance Data.FromJSON VirtualGatewayListener where+  parseJSON =+    Data.withObject+      "VirtualGatewayListener"+      ( \x ->+          VirtualGatewayListener'+            Prelude.<$> (x Data..:? "connectionPool")+            Prelude.<*> (x Data..:? "healthCheck")+            Prelude.<*> (x Data..:? "tls")+            Prelude.<*> (x Data..: "portMapping")+      )++instance Prelude.Hashable VirtualGatewayListener where+  hashWithSalt _salt VirtualGatewayListener' {..} =+    _salt+      `Prelude.hashWithSalt` connectionPool+      `Prelude.hashWithSalt` healthCheck+      `Prelude.hashWithSalt` tls+      `Prelude.hashWithSalt` portMapping++instance Prelude.NFData VirtualGatewayListener where+  rnf VirtualGatewayListener' {..} =+    Prelude.rnf connectionPool+      `Prelude.seq` Prelude.rnf healthCheck+      `Prelude.seq` Prelude.rnf tls+      `Prelude.seq` Prelude.rnf portMapping++instance Data.ToJSON VirtualGatewayListener where+  toJSON VirtualGatewayListener' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("connectionPool" Data..=)+              Prelude.<$> connectionPool,+            ("healthCheck" Data..=) Prelude.<$> healthCheck,+            ("tls" Data..=) Prelude.<$> tls,+            Prelude.Just ("portMapping" Data..= portMapping)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayListenerTls.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.AppMesh.Types.VirtualGatewayListenerTls+-- 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.AppMesh.Types.VirtualGatewayListenerTls where++import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsMode+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContext+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the Transport Layer Security (TLS) properties+-- for a listener.+--+-- /See:/ 'newVirtualGatewayListenerTls' smart constructor.+data VirtualGatewayListenerTls = VirtualGatewayListenerTls'+  { -- | A reference to an object that represents a virtual gateway\'s+    -- listener\'s Transport Layer Security (TLS) validation context.+    validation :: Prelude.Maybe VirtualGatewayListenerTlsValidationContext,+    -- | An object that represents a Transport Layer Security (TLS) certificate.+    certificate :: VirtualGatewayListenerTlsCertificate,+    -- | Specify one of the following modes.+    --+    -- -   ____STRICT – Listener only accepts connections with TLS enabled.+    --+    -- -   ____PERMISSIVE – Listener accepts connections with or without TLS+    --     enabled.+    --+    -- -   ____DISABLED – Listener only accepts connections without TLS.+    mode :: VirtualGatewayListenerTlsMode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayListenerTls' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'validation', 'virtualGatewayListenerTls_validation' - A reference to an object that represents a virtual gateway\'s+-- listener\'s Transport Layer Security (TLS) validation context.+--+-- 'certificate', 'virtualGatewayListenerTls_certificate' - An object that represents a Transport Layer Security (TLS) certificate.+--+-- 'mode', 'virtualGatewayListenerTls_mode' - Specify one of the following modes.+--+-- -   ____STRICT – Listener only accepts connections with TLS enabled.+--+-- -   ____PERMISSIVE – Listener accepts connections with or without TLS+--     enabled.+--+-- -   ____DISABLED – Listener only accepts connections without TLS.+newVirtualGatewayListenerTls ::+  -- | 'certificate'+  VirtualGatewayListenerTlsCertificate ->+  -- | 'mode'+  VirtualGatewayListenerTlsMode ->+  VirtualGatewayListenerTls+newVirtualGatewayListenerTls pCertificate_ pMode_ =+  VirtualGatewayListenerTls'+    { validation =+        Prelude.Nothing,+      certificate = pCertificate_,+      mode = pMode_+    }++-- | A reference to an object that represents a virtual gateway\'s+-- listener\'s Transport Layer Security (TLS) validation context.+virtualGatewayListenerTls_validation :: Lens.Lens' VirtualGatewayListenerTls (Prelude.Maybe VirtualGatewayListenerTlsValidationContext)+virtualGatewayListenerTls_validation = Lens.lens (\VirtualGatewayListenerTls' {validation} -> validation) (\s@VirtualGatewayListenerTls' {} a -> s {validation = a} :: VirtualGatewayListenerTls)++-- | An object that represents a Transport Layer Security (TLS) certificate.+virtualGatewayListenerTls_certificate :: Lens.Lens' VirtualGatewayListenerTls VirtualGatewayListenerTlsCertificate+virtualGatewayListenerTls_certificate = Lens.lens (\VirtualGatewayListenerTls' {certificate} -> certificate) (\s@VirtualGatewayListenerTls' {} a -> s {certificate = a} :: VirtualGatewayListenerTls)++-- | Specify one of the following modes.+--+-- -   ____STRICT – Listener only accepts connections with TLS enabled.+--+-- -   ____PERMISSIVE – Listener accepts connections with or without TLS+--     enabled.+--+-- -   ____DISABLED – Listener only accepts connections without TLS.+virtualGatewayListenerTls_mode :: Lens.Lens' VirtualGatewayListenerTls VirtualGatewayListenerTlsMode+virtualGatewayListenerTls_mode = Lens.lens (\VirtualGatewayListenerTls' {mode} -> mode) (\s@VirtualGatewayListenerTls' {} a -> s {mode = a} :: VirtualGatewayListenerTls)++instance Data.FromJSON VirtualGatewayListenerTls where+  parseJSON =+    Data.withObject+      "VirtualGatewayListenerTls"+      ( \x ->+          VirtualGatewayListenerTls'+            Prelude.<$> (x Data..:? "validation")+            Prelude.<*> (x Data..: "certificate")+            Prelude.<*> (x Data..: "mode")+      )++instance Prelude.Hashable VirtualGatewayListenerTls where+  hashWithSalt _salt VirtualGatewayListenerTls' {..} =+    _salt+      `Prelude.hashWithSalt` validation+      `Prelude.hashWithSalt` certificate+      `Prelude.hashWithSalt` mode++instance Prelude.NFData VirtualGatewayListenerTls where+  rnf VirtualGatewayListenerTls' {..} =+    Prelude.rnf validation+      `Prelude.seq` Prelude.rnf certificate+      `Prelude.seq` Prelude.rnf mode++instance Data.ToJSON VirtualGatewayListenerTls where+  toJSON VirtualGatewayListenerTls' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("validation" Data..=) Prelude.<$> validation,+            Prelude.Just ("certificate" Data..= certificate),+            Prelude.Just ("mode" Data..= mode)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayListenerTlsAcmCertificate.hs view
@@ -0,0 +1,107 @@+{-# 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.AppMesh.Types.VirtualGatewayListenerTlsAcmCertificate+-- 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.AppMesh.Types.VirtualGatewayListenerTlsAcmCertificate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents an Certificate Manager certificate.+--+-- /See:/ 'newVirtualGatewayListenerTlsAcmCertificate' smart constructor.+data VirtualGatewayListenerTlsAcmCertificate = VirtualGatewayListenerTlsAcmCertificate'+  { -- | The Amazon Resource Name (ARN) for the certificate. The certificate must+    -- meet specific requirements and you must have proxy authorization+    -- enabled. For more information, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites Transport Layer Security (TLS)>.+    certificateArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayListenerTlsAcmCertificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'certificateArn', 'virtualGatewayListenerTlsAcmCertificate_certificateArn' - The Amazon Resource Name (ARN) for the certificate. The certificate must+-- meet specific requirements and you must have proxy authorization+-- enabled. For more information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites Transport Layer Security (TLS)>.+newVirtualGatewayListenerTlsAcmCertificate ::+  -- | 'certificateArn'+  Prelude.Text ->+  VirtualGatewayListenerTlsAcmCertificate+newVirtualGatewayListenerTlsAcmCertificate+  pCertificateArn_ =+    VirtualGatewayListenerTlsAcmCertificate'+      { certificateArn =+          pCertificateArn_+      }++-- | The Amazon Resource Name (ARN) for the certificate. The certificate must+-- meet specific requirements and you must have proxy authorization+-- enabled. For more information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites Transport Layer Security (TLS)>.+virtualGatewayListenerTlsAcmCertificate_certificateArn :: Lens.Lens' VirtualGatewayListenerTlsAcmCertificate Prelude.Text+virtualGatewayListenerTlsAcmCertificate_certificateArn = Lens.lens (\VirtualGatewayListenerTlsAcmCertificate' {certificateArn} -> certificateArn) (\s@VirtualGatewayListenerTlsAcmCertificate' {} a -> s {certificateArn = a} :: VirtualGatewayListenerTlsAcmCertificate)++instance+  Data.FromJSON+    VirtualGatewayListenerTlsAcmCertificate+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayListenerTlsAcmCertificate"+      ( \x ->+          VirtualGatewayListenerTlsAcmCertificate'+            Prelude.<$> (x Data..: "certificateArn")+      )++instance+  Prelude.Hashable+    VirtualGatewayListenerTlsAcmCertificate+  where+  hashWithSalt+    _salt+    VirtualGatewayListenerTlsAcmCertificate' {..} =+      _salt `Prelude.hashWithSalt` certificateArn++instance+  Prelude.NFData+    VirtualGatewayListenerTlsAcmCertificate+  where+  rnf VirtualGatewayListenerTlsAcmCertificate' {..} =+    Prelude.rnf certificateArn++instance+  Data.ToJSON+    VirtualGatewayListenerTlsAcmCertificate+  where+  toJSON VirtualGatewayListenerTlsAcmCertificate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("certificateArn" Data..= certificateArn)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayListenerTlsCertificate.hs view
@@ -0,0 +1,131 @@+{-# 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.AppMesh.Types.VirtualGatewayListenerTlsCertificate+-- 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.AppMesh.Types.VirtualGatewayListenerTlsCertificate where++import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsAcmCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsFileCertificate+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsSdsCertificate+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a listener\'s Transport Layer Security (TLS)+-- certificate.+--+-- /See:/ 'newVirtualGatewayListenerTlsCertificate' smart constructor.+data VirtualGatewayListenerTlsCertificate = VirtualGatewayListenerTlsCertificate'+  { -- | A reference to an object that represents an Certificate Manager+    -- certificate.+    acm :: Prelude.Maybe VirtualGatewayListenerTlsAcmCertificate,+    -- | A reference to an object that represents a local file certificate.+    file :: Prelude.Maybe VirtualGatewayListenerTlsFileCertificate,+    -- | A reference to an object that represents a virtual gateway\'s+    -- listener\'s Secret Discovery Service certificate.+    sds :: Prelude.Maybe VirtualGatewayListenerTlsSdsCertificate+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayListenerTlsCertificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acm', 'virtualGatewayListenerTlsCertificate_acm' - A reference to an object that represents an Certificate Manager+-- certificate.+--+-- 'file', 'virtualGatewayListenerTlsCertificate_file' - A reference to an object that represents a local file certificate.+--+-- 'sds', 'virtualGatewayListenerTlsCertificate_sds' - A reference to an object that represents a virtual gateway\'s+-- listener\'s Secret Discovery Service certificate.+newVirtualGatewayListenerTlsCertificate ::+  VirtualGatewayListenerTlsCertificate+newVirtualGatewayListenerTlsCertificate =+  VirtualGatewayListenerTlsCertificate'+    { acm =+        Prelude.Nothing,+      file = Prelude.Nothing,+      sds = Prelude.Nothing+    }++-- | A reference to an object that represents an Certificate Manager+-- certificate.+virtualGatewayListenerTlsCertificate_acm :: Lens.Lens' VirtualGatewayListenerTlsCertificate (Prelude.Maybe VirtualGatewayListenerTlsAcmCertificate)+virtualGatewayListenerTlsCertificate_acm = Lens.lens (\VirtualGatewayListenerTlsCertificate' {acm} -> acm) (\s@VirtualGatewayListenerTlsCertificate' {} a -> s {acm = a} :: VirtualGatewayListenerTlsCertificate)++-- | A reference to an object that represents a local file certificate.+virtualGatewayListenerTlsCertificate_file :: Lens.Lens' VirtualGatewayListenerTlsCertificate (Prelude.Maybe VirtualGatewayListenerTlsFileCertificate)+virtualGatewayListenerTlsCertificate_file = Lens.lens (\VirtualGatewayListenerTlsCertificate' {file} -> file) (\s@VirtualGatewayListenerTlsCertificate' {} a -> s {file = a} :: VirtualGatewayListenerTlsCertificate)++-- | A reference to an object that represents a virtual gateway\'s+-- listener\'s Secret Discovery Service certificate.+virtualGatewayListenerTlsCertificate_sds :: Lens.Lens' VirtualGatewayListenerTlsCertificate (Prelude.Maybe VirtualGatewayListenerTlsSdsCertificate)+virtualGatewayListenerTlsCertificate_sds = Lens.lens (\VirtualGatewayListenerTlsCertificate' {sds} -> sds) (\s@VirtualGatewayListenerTlsCertificate' {} a -> s {sds = a} :: VirtualGatewayListenerTlsCertificate)++instance+  Data.FromJSON+    VirtualGatewayListenerTlsCertificate+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayListenerTlsCertificate"+      ( \x ->+          VirtualGatewayListenerTlsCertificate'+            Prelude.<$> (x Data..:? "acm")+            Prelude.<*> (x Data..:? "file")+            Prelude.<*> (x Data..:? "sds")+      )++instance+  Prelude.Hashable+    VirtualGatewayListenerTlsCertificate+  where+  hashWithSalt+    _salt+    VirtualGatewayListenerTlsCertificate' {..} =+      _salt+        `Prelude.hashWithSalt` acm+        `Prelude.hashWithSalt` file+        `Prelude.hashWithSalt` sds++instance+  Prelude.NFData+    VirtualGatewayListenerTlsCertificate+  where+  rnf VirtualGatewayListenerTlsCertificate' {..} =+    Prelude.rnf acm+      `Prelude.seq` Prelude.rnf file+      `Prelude.seq` Prelude.rnf sds++instance+  Data.ToJSON+    VirtualGatewayListenerTlsCertificate+  where+  toJSON VirtualGatewayListenerTlsCertificate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("acm" Data..=) Prelude.<$> acm,+            ("file" Data..=) Prelude.<$> file,+            ("sds" Data..=) Prelude.<$> sds+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayListenerTlsFileCertificate.hs view
@@ -0,0 +1,121 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayListenerTlsFileCertificate+-- 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.AppMesh.Types.VirtualGatewayListenerTlsFileCertificate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a local file certificate. The certificate must+-- meet specific requirements and you must have proxy authorization+-- enabled. For more information, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites Transport Layer Security (TLS)>.+--+-- /See:/ 'newVirtualGatewayListenerTlsFileCertificate' smart constructor.+data VirtualGatewayListenerTlsFileCertificate = VirtualGatewayListenerTlsFileCertificate'+  { -- | The certificate chain for the certificate.+    certificateChain :: Prelude.Text,+    -- | The private key for a certificate stored on the file system of the mesh+    -- endpoint that the proxy is running on.+    privateKey :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayListenerTlsFileCertificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'certificateChain', 'virtualGatewayListenerTlsFileCertificate_certificateChain' - The certificate chain for the certificate.+--+-- 'privateKey', 'virtualGatewayListenerTlsFileCertificate_privateKey' - The private key for a certificate stored on the file system of the mesh+-- endpoint that the proxy is running on.+newVirtualGatewayListenerTlsFileCertificate ::+  -- | 'certificateChain'+  Prelude.Text ->+  -- | 'privateKey'+  Prelude.Text ->+  VirtualGatewayListenerTlsFileCertificate+newVirtualGatewayListenerTlsFileCertificate+  pCertificateChain_+  pPrivateKey_ =+    VirtualGatewayListenerTlsFileCertificate'+      { certificateChain =+          pCertificateChain_,+        privateKey = pPrivateKey_+      }++-- | The certificate chain for the certificate.+virtualGatewayListenerTlsFileCertificate_certificateChain :: Lens.Lens' VirtualGatewayListenerTlsFileCertificate Prelude.Text+virtualGatewayListenerTlsFileCertificate_certificateChain = Lens.lens (\VirtualGatewayListenerTlsFileCertificate' {certificateChain} -> certificateChain) (\s@VirtualGatewayListenerTlsFileCertificate' {} a -> s {certificateChain = a} :: VirtualGatewayListenerTlsFileCertificate)++-- | The private key for a certificate stored on the file system of the mesh+-- endpoint that the proxy is running on.+virtualGatewayListenerTlsFileCertificate_privateKey :: Lens.Lens' VirtualGatewayListenerTlsFileCertificate Prelude.Text+virtualGatewayListenerTlsFileCertificate_privateKey = Lens.lens (\VirtualGatewayListenerTlsFileCertificate' {privateKey} -> privateKey) (\s@VirtualGatewayListenerTlsFileCertificate' {} a -> s {privateKey = a} :: VirtualGatewayListenerTlsFileCertificate)++instance+  Data.FromJSON+    VirtualGatewayListenerTlsFileCertificate+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayListenerTlsFileCertificate"+      ( \x ->+          VirtualGatewayListenerTlsFileCertificate'+            Prelude.<$> (x Data..: "certificateChain")+            Prelude.<*> (x Data..: "privateKey")+      )++instance+  Prelude.Hashable+    VirtualGatewayListenerTlsFileCertificate+  where+  hashWithSalt+    _salt+    VirtualGatewayListenerTlsFileCertificate' {..} =+      _salt+        `Prelude.hashWithSalt` certificateChain+        `Prelude.hashWithSalt` privateKey++instance+  Prelude.NFData+    VirtualGatewayListenerTlsFileCertificate+  where+  rnf VirtualGatewayListenerTlsFileCertificate' {..} =+    Prelude.rnf certificateChain+      `Prelude.seq` Prelude.rnf privateKey++instance+  Data.ToJSON+    VirtualGatewayListenerTlsFileCertificate+  where+  toJSON VirtualGatewayListenerTlsFileCertificate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("certificateChain" Data..= certificateChain),+            Prelude.Just ("privateKey" Data..= privateKey)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayListenerTlsMode.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayListenerTlsMode+-- 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.AppMesh.Types.VirtualGatewayListenerTlsMode+  ( VirtualGatewayListenerTlsMode+      ( ..,+        VirtualGatewayListenerTlsMode_DISABLED,+        VirtualGatewayListenerTlsMode_PERMISSIVE,+        VirtualGatewayListenerTlsMode_STRICT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype VirtualGatewayListenerTlsMode = VirtualGatewayListenerTlsMode'+  { fromVirtualGatewayListenerTlsMode ::+      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 VirtualGatewayListenerTlsMode_DISABLED :: VirtualGatewayListenerTlsMode+pattern VirtualGatewayListenerTlsMode_DISABLED = VirtualGatewayListenerTlsMode' "DISABLED"++pattern VirtualGatewayListenerTlsMode_PERMISSIVE :: VirtualGatewayListenerTlsMode+pattern VirtualGatewayListenerTlsMode_PERMISSIVE = VirtualGatewayListenerTlsMode' "PERMISSIVE"++pattern VirtualGatewayListenerTlsMode_STRICT :: VirtualGatewayListenerTlsMode+pattern VirtualGatewayListenerTlsMode_STRICT = VirtualGatewayListenerTlsMode' "STRICT"++{-# COMPLETE+  VirtualGatewayListenerTlsMode_DISABLED,+  VirtualGatewayListenerTlsMode_PERMISSIVE,+  VirtualGatewayListenerTlsMode_STRICT,+  VirtualGatewayListenerTlsMode'+  #-}
+ gen/Amazonka/AppMesh/Types/VirtualGatewayListenerTlsSdsCertificate.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.AppMesh.Types.VirtualGatewayListenerTlsSdsCertificate+-- 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.AppMesh.Types.VirtualGatewayListenerTlsSdsCertificate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the virtual gateway\'s listener\'s Secret+-- Discovery Service certificate.The proxy must be configured with a local+-- SDS provider via a Unix Domain Socket. See App+-- Mesh<https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html TLS documentation>+-- for more info.+--+-- /See:/ 'newVirtualGatewayListenerTlsSdsCertificate' smart constructor.+data VirtualGatewayListenerTlsSdsCertificate = VirtualGatewayListenerTlsSdsCertificate'+  { -- | A reference to an object that represents the name of the secret secret+    -- requested from the Secret Discovery Service provider representing+    -- Transport Layer Security (TLS) materials like a certificate or+    -- certificate chain.+    secretName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayListenerTlsSdsCertificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'secretName', 'virtualGatewayListenerTlsSdsCertificate_secretName' - A reference to an object that represents the name of the secret secret+-- requested from the Secret Discovery Service provider representing+-- Transport Layer Security (TLS) materials like a certificate or+-- certificate chain.+newVirtualGatewayListenerTlsSdsCertificate ::+  -- | 'secretName'+  Prelude.Text ->+  VirtualGatewayListenerTlsSdsCertificate+newVirtualGatewayListenerTlsSdsCertificate+  pSecretName_ =+    VirtualGatewayListenerTlsSdsCertificate'+      { secretName =+          pSecretName_+      }++-- | A reference to an object that represents the name of the secret secret+-- requested from the Secret Discovery Service provider representing+-- Transport Layer Security (TLS) materials like a certificate or+-- certificate chain.+virtualGatewayListenerTlsSdsCertificate_secretName :: Lens.Lens' VirtualGatewayListenerTlsSdsCertificate Prelude.Text+virtualGatewayListenerTlsSdsCertificate_secretName = Lens.lens (\VirtualGatewayListenerTlsSdsCertificate' {secretName} -> secretName) (\s@VirtualGatewayListenerTlsSdsCertificate' {} a -> s {secretName = a} :: VirtualGatewayListenerTlsSdsCertificate)++instance+  Data.FromJSON+    VirtualGatewayListenerTlsSdsCertificate+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayListenerTlsSdsCertificate"+      ( \x ->+          VirtualGatewayListenerTlsSdsCertificate'+            Prelude.<$> (x Data..: "secretName")+      )++instance+  Prelude.Hashable+    VirtualGatewayListenerTlsSdsCertificate+  where+  hashWithSalt+    _salt+    VirtualGatewayListenerTlsSdsCertificate' {..} =+      _salt `Prelude.hashWithSalt` secretName++instance+  Prelude.NFData+    VirtualGatewayListenerTlsSdsCertificate+  where+  rnf VirtualGatewayListenerTlsSdsCertificate' {..} =+    Prelude.rnf secretName++instance+  Data.ToJSON+    VirtualGatewayListenerTlsSdsCertificate+  where+  toJSON VirtualGatewayListenerTlsSdsCertificate' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("secretName" Data..= secretName)]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayListenerTlsValidationContext.hs view
@@ -0,0 +1,121 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContext+-- 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.AppMesh.Types.VirtualGatewayListenerTlsValidationContext where++import Amazonka.AppMesh.Types.SubjectAlternativeNames+import Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContextTrust+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual gateway\'s listener\'s Transport+-- Layer Security (TLS) validation context.+--+-- /See:/ 'newVirtualGatewayListenerTlsValidationContext' smart constructor.+data VirtualGatewayListenerTlsValidationContext = VirtualGatewayListenerTlsValidationContext'+  { -- | A reference to an object that represents the SANs for a virtual gateway+    -- listener\'s Transport Layer Security (TLS) validation context.+    subjectAlternativeNames :: Prelude.Maybe SubjectAlternativeNames,+    -- | A reference to where to retrieve the trust chain when validating a+    -- peer’s Transport Layer Security (TLS) certificate.+    trust :: VirtualGatewayListenerTlsValidationContextTrust+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayListenerTlsValidationContext' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'subjectAlternativeNames', 'virtualGatewayListenerTlsValidationContext_subjectAlternativeNames' - A reference to an object that represents the SANs for a virtual gateway+-- listener\'s Transport Layer Security (TLS) validation context.+--+-- 'trust', 'virtualGatewayListenerTlsValidationContext_trust' - A reference to where to retrieve the trust chain when validating a+-- peer’s Transport Layer Security (TLS) certificate.+newVirtualGatewayListenerTlsValidationContext ::+  -- | 'trust'+  VirtualGatewayListenerTlsValidationContextTrust ->+  VirtualGatewayListenerTlsValidationContext+newVirtualGatewayListenerTlsValidationContext pTrust_ =+  VirtualGatewayListenerTlsValidationContext'+    { subjectAlternativeNames =+        Prelude.Nothing,+      trust = pTrust_+    }++-- | A reference to an object that represents the SANs for a virtual gateway+-- listener\'s Transport Layer Security (TLS) validation context.+virtualGatewayListenerTlsValidationContext_subjectAlternativeNames :: Lens.Lens' VirtualGatewayListenerTlsValidationContext (Prelude.Maybe SubjectAlternativeNames)+virtualGatewayListenerTlsValidationContext_subjectAlternativeNames = Lens.lens (\VirtualGatewayListenerTlsValidationContext' {subjectAlternativeNames} -> subjectAlternativeNames) (\s@VirtualGatewayListenerTlsValidationContext' {} a -> s {subjectAlternativeNames = a} :: VirtualGatewayListenerTlsValidationContext)++-- | A reference to where to retrieve the trust chain when validating a+-- peer’s Transport Layer Security (TLS) certificate.+virtualGatewayListenerTlsValidationContext_trust :: Lens.Lens' VirtualGatewayListenerTlsValidationContext VirtualGatewayListenerTlsValidationContextTrust+virtualGatewayListenerTlsValidationContext_trust = Lens.lens (\VirtualGatewayListenerTlsValidationContext' {trust} -> trust) (\s@VirtualGatewayListenerTlsValidationContext' {} a -> s {trust = a} :: VirtualGatewayListenerTlsValidationContext)++instance+  Data.FromJSON+    VirtualGatewayListenerTlsValidationContext+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayListenerTlsValidationContext"+      ( \x ->+          VirtualGatewayListenerTlsValidationContext'+            Prelude.<$> (x Data..:? "subjectAlternativeNames")+            Prelude.<*> (x Data..: "trust")+      )++instance+  Prelude.Hashable+    VirtualGatewayListenerTlsValidationContext+  where+  hashWithSalt+    _salt+    VirtualGatewayListenerTlsValidationContext' {..} =+      _salt+        `Prelude.hashWithSalt` subjectAlternativeNames+        `Prelude.hashWithSalt` trust++instance+  Prelude.NFData+    VirtualGatewayListenerTlsValidationContext+  where+  rnf VirtualGatewayListenerTlsValidationContext' {..} =+    Prelude.rnf subjectAlternativeNames+      `Prelude.seq` Prelude.rnf trust++instance+  Data.ToJSON+    VirtualGatewayListenerTlsValidationContext+  where+  toJSON+    VirtualGatewayListenerTlsValidationContext' {..} =+      Data.object+        ( Prelude.catMaybes+            [ ("subjectAlternativeNames" Data..=)+                Prelude.<$> subjectAlternativeNames,+              Prelude.Just ("trust" Data..= trust)+            ]+        )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayListenerTlsValidationContextTrust.hs view
@@ -0,0 +1,121 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayListenerTlsValidationContextTrust+-- 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.AppMesh.Types.VirtualGatewayListenerTlsValidationContextTrust where++import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextFileTrust+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextSdsTrust+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual gateway\'s listener\'s Transport+-- Layer Security (TLS) validation context trust.+--+-- /See:/ 'newVirtualGatewayListenerTlsValidationContextTrust' smart constructor.+data VirtualGatewayListenerTlsValidationContextTrust = VirtualGatewayListenerTlsValidationContextTrust'+  { -- | An object that represents a Transport Layer Security (TLS) validation+    -- context trust for a local file.+    file :: Prelude.Maybe VirtualGatewayTlsValidationContextFileTrust,+    -- | A reference to an object that represents a virtual gateway\'s+    -- listener\'s Transport Layer Security (TLS) Secret Discovery Service+    -- validation context trust.+    sds :: Prelude.Maybe VirtualGatewayTlsValidationContextSdsTrust+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayListenerTlsValidationContextTrust' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'file', 'virtualGatewayListenerTlsValidationContextTrust_file' - An object that represents a Transport Layer Security (TLS) validation+-- context trust for a local file.+--+-- 'sds', 'virtualGatewayListenerTlsValidationContextTrust_sds' - A reference to an object that represents a virtual gateway\'s+-- listener\'s Transport Layer Security (TLS) Secret Discovery Service+-- validation context trust.+newVirtualGatewayListenerTlsValidationContextTrust ::+  VirtualGatewayListenerTlsValidationContextTrust+newVirtualGatewayListenerTlsValidationContextTrust =+  VirtualGatewayListenerTlsValidationContextTrust'+    { file =+        Prelude.Nothing,+      sds = Prelude.Nothing+    }++-- | An object that represents a Transport Layer Security (TLS) validation+-- context trust for a local file.+virtualGatewayListenerTlsValidationContextTrust_file :: Lens.Lens' VirtualGatewayListenerTlsValidationContextTrust (Prelude.Maybe VirtualGatewayTlsValidationContextFileTrust)+virtualGatewayListenerTlsValidationContextTrust_file = Lens.lens (\VirtualGatewayListenerTlsValidationContextTrust' {file} -> file) (\s@VirtualGatewayListenerTlsValidationContextTrust' {} a -> s {file = a} :: VirtualGatewayListenerTlsValidationContextTrust)++-- | A reference to an object that represents a virtual gateway\'s+-- listener\'s Transport Layer Security (TLS) Secret Discovery Service+-- validation context trust.+virtualGatewayListenerTlsValidationContextTrust_sds :: Lens.Lens' VirtualGatewayListenerTlsValidationContextTrust (Prelude.Maybe VirtualGatewayTlsValidationContextSdsTrust)+virtualGatewayListenerTlsValidationContextTrust_sds = Lens.lens (\VirtualGatewayListenerTlsValidationContextTrust' {sds} -> sds) (\s@VirtualGatewayListenerTlsValidationContextTrust' {} a -> s {sds = a} :: VirtualGatewayListenerTlsValidationContextTrust)++instance+  Data.FromJSON+    VirtualGatewayListenerTlsValidationContextTrust+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayListenerTlsValidationContextTrust"+      ( \x ->+          VirtualGatewayListenerTlsValidationContextTrust'+            Prelude.<$> (x Data..:? "file")+            Prelude.<*> (x Data..:? "sds")+      )++instance+  Prelude.Hashable+    VirtualGatewayListenerTlsValidationContextTrust+  where+  hashWithSalt+    _salt+    VirtualGatewayListenerTlsValidationContextTrust' {..} =+      _salt+        `Prelude.hashWithSalt` file+        `Prelude.hashWithSalt` sds++instance+  Prelude.NFData+    VirtualGatewayListenerTlsValidationContextTrust+  where+  rnf+    VirtualGatewayListenerTlsValidationContextTrust' {..} =+      Prelude.rnf file `Prelude.seq` Prelude.rnf sds++instance+  Data.ToJSON+    VirtualGatewayListenerTlsValidationContextTrust+  where+  toJSON+    VirtualGatewayListenerTlsValidationContextTrust' {..} =+      Data.object+        ( Prelude.catMaybes+            [ ("file" Data..=) Prelude.<$> file,+              ("sds" Data..=) Prelude.<$> sds+            ]+        )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayLogging.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayLogging+-- 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.AppMesh.Types.VirtualGatewayLogging where++import Amazonka.AppMesh.Types.VirtualGatewayAccessLog+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents logging information.+--+-- /See:/ 'newVirtualGatewayLogging' smart constructor.+data VirtualGatewayLogging = VirtualGatewayLogging'+  { -- | The access log configuration.+    accessLog :: Prelude.Maybe VirtualGatewayAccessLog+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayLogging' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accessLog', 'virtualGatewayLogging_accessLog' - The access log configuration.+newVirtualGatewayLogging ::+  VirtualGatewayLogging+newVirtualGatewayLogging =+  VirtualGatewayLogging' {accessLog = Prelude.Nothing}++-- | The access log configuration.+virtualGatewayLogging_accessLog :: Lens.Lens' VirtualGatewayLogging (Prelude.Maybe VirtualGatewayAccessLog)+virtualGatewayLogging_accessLog = Lens.lens (\VirtualGatewayLogging' {accessLog} -> accessLog) (\s@VirtualGatewayLogging' {} a -> s {accessLog = a} :: VirtualGatewayLogging)++instance Data.FromJSON VirtualGatewayLogging where+  parseJSON =+    Data.withObject+      "VirtualGatewayLogging"+      ( \x ->+          VirtualGatewayLogging'+            Prelude.<$> (x Data..:? "accessLog")+      )++instance Prelude.Hashable VirtualGatewayLogging where+  hashWithSalt _salt VirtualGatewayLogging' {..} =+    _salt `Prelude.hashWithSalt` accessLog++instance Prelude.NFData VirtualGatewayLogging where+  rnf VirtualGatewayLogging' {..} =+    Prelude.rnf accessLog++instance Data.ToJSON VirtualGatewayLogging where+  toJSON VirtualGatewayLogging' {..} =+    Data.object+      ( Prelude.catMaybes+          [("accessLog" Data..=) Prelude.<$> accessLog]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayPortMapping.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.AppMesh.Types.VirtualGatewayPortMapping+-- 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.AppMesh.Types.VirtualGatewayPortMapping where++import Amazonka.AppMesh.Types.VirtualGatewayPortProtocol+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a port mapping.+--+-- /See:/ 'newVirtualGatewayPortMapping' smart constructor.+data VirtualGatewayPortMapping = VirtualGatewayPortMapping'+  { -- | The port used for the port mapping. Specify one protocol.+    port :: Prelude.Natural,+    -- | The protocol used for the port mapping.+    protocol :: VirtualGatewayPortProtocol+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayPortMapping' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'port', 'virtualGatewayPortMapping_port' - The port used for the port mapping. Specify one protocol.+--+-- 'protocol', 'virtualGatewayPortMapping_protocol' - The protocol used for the port mapping.+newVirtualGatewayPortMapping ::+  -- | 'port'+  Prelude.Natural ->+  -- | 'protocol'+  VirtualGatewayPortProtocol ->+  VirtualGatewayPortMapping+newVirtualGatewayPortMapping pPort_ pProtocol_ =+  VirtualGatewayPortMapping'+    { port = pPort_,+      protocol = pProtocol_+    }++-- | The port used for the port mapping. Specify one protocol.+virtualGatewayPortMapping_port :: Lens.Lens' VirtualGatewayPortMapping Prelude.Natural+virtualGatewayPortMapping_port = Lens.lens (\VirtualGatewayPortMapping' {port} -> port) (\s@VirtualGatewayPortMapping' {} a -> s {port = a} :: VirtualGatewayPortMapping)++-- | The protocol used for the port mapping.+virtualGatewayPortMapping_protocol :: Lens.Lens' VirtualGatewayPortMapping VirtualGatewayPortProtocol+virtualGatewayPortMapping_protocol = Lens.lens (\VirtualGatewayPortMapping' {protocol} -> protocol) (\s@VirtualGatewayPortMapping' {} a -> s {protocol = a} :: VirtualGatewayPortMapping)++instance Data.FromJSON VirtualGatewayPortMapping where+  parseJSON =+    Data.withObject+      "VirtualGatewayPortMapping"+      ( \x ->+          VirtualGatewayPortMapping'+            Prelude.<$> (x Data..: "port")+            Prelude.<*> (x Data..: "protocol")+      )++instance Prelude.Hashable VirtualGatewayPortMapping where+  hashWithSalt _salt VirtualGatewayPortMapping' {..} =+    _salt+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` protocol++instance Prelude.NFData VirtualGatewayPortMapping where+  rnf VirtualGatewayPortMapping' {..} =+    Prelude.rnf port `Prelude.seq` Prelude.rnf protocol++instance Data.ToJSON VirtualGatewayPortMapping where+  toJSON VirtualGatewayPortMapping' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("port" Data..= port),+            Prelude.Just ("protocol" Data..= protocol)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayPortProtocol.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayPortProtocol+-- 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.AppMesh.Types.VirtualGatewayPortProtocol+  ( VirtualGatewayPortProtocol+      ( ..,+        VirtualGatewayPortProtocol_Grpc,+        VirtualGatewayPortProtocol_Http,+        VirtualGatewayPortProtocol_Http2+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype VirtualGatewayPortProtocol = VirtualGatewayPortProtocol'+  { fromVirtualGatewayPortProtocol ::+      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 VirtualGatewayPortProtocol_Grpc :: VirtualGatewayPortProtocol+pattern VirtualGatewayPortProtocol_Grpc = VirtualGatewayPortProtocol' "grpc"++pattern VirtualGatewayPortProtocol_Http :: VirtualGatewayPortProtocol+pattern VirtualGatewayPortProtocol_Http = VirtualGatewayPortProtocol' "http"++pattern VirtualGatewayPortProtocol_Http2 :: VirtualGatewayPortProtocol+pattern VirtualGatewayPortProtocol_Http2 = VirtualGatewayPortProtocol' "http2"++{-# COMPLETE+  VirtualGatewayPortProtocol_Grpc,+  VirtualGatewayPortProtocol_Http,+  VirtualGatewayPortProtocol_Http2,+  VirtualGatewayPortProtocol'+  #-}
+ gen/Amazonka/AppMesh/Types/VirtualGatewayRef.hs view
@@ -0,0 +1,208 @@+{-# 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.AppMesh.Types.VirtualGatewayRef+-- 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.AppMesh.Types.VirtualGatewayRef where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual gateway returned by a list+-- operation.+--+-- /See:/ 'newVirtualGatewayRef' smart constructor.+data VirtualGatewayRef = VirtualGatewayRef'+  { -- | The full Amazon Resource Name (ARN) for the resource.+    arn :: Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the resource was created.+    createdAt :: Data.POSIX,+    -- | The Unix epoch timestamp in seconds for when the resource was last+    -- updated.+    lastUpdatedAt :: Data.POSIX,+    -- | The name of the service mesh that the resource resides in.+    meshName :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the resource owner. If the+    -- account ID is not your own, then it\'s the ID of the mesh owner or of+    -- another account that the mesh is shared with. For more information about+    -- mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    resourceOwner :: Prelude.Text,+    -- | The version of the resource. Resources are created at version 1, and+    -- this version is incremented each time that they\'re updated.+    version :: Prelude.Integer,+    -- | The name of the resource.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayRef' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'virtualGatewayRef_arn' - The full Amazon Resource Name (ARN) for the resource.+--+-- 'createdAt', 'virtualGatewayRef_createdAt' - The Unix epoch timestamp in seconds for when the resource was created.+--+-- 'lastUpdatedAt', 'virtualGatewayRef_lastUpdatedAt' - The Unix epoch timestamp in seconds for when the resource was last+-- updated.+--+-- 'meshName', 'virtualGatewayRef_meshName' - The name of the service mesh that the resource resides in.+--+-- 'meshOwner', 'virtualGatewayRef_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'resourceOwner', 'virtualGatewayRef_resourceOwner' - The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'version', 'virtualGatewayRef_version' - The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+--+-- 'virtualGatewayName', 'virtualGatewayRef_virtualGatewayName' - The name of the resource.+newVirtualGatewayRef ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'meshOwner'+  Prelude.Text ->+  -- | 'resourceOwner'+  Prelude.Text ->+  -- | 'version'+  Prelude.Integer ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  VirtualGatewayRef+newVirtualGatewayRef+  pArn_+  pCreatedAt_+  pLastUpdatedAt_+  pMeshName_+  pMeshOwner_+  pResourceOwner_+  pVersion_+  pVirtualGatewayName_ =+    VirtualGatewayRef'+      { arn = pArn_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_,+        meshName = pMeshName_,+        meshOwner = pMeshOwner_,+        resourceOwner = pResourceOwner_,+        version = pVersion_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | The full Amazon Resource Name (ARN) for the resource.+virtualGatewayRef_arn :: Lens.Lens' VirtualGatewayRef Prelude.Text+virtualGatewayRef_arn = Lens.lens (\VirtualGatewayRef' {arn} -> arn) (\s@VirtualGatewayRef' {} a -> s {arn = a} :: VirtualGatewayRef)++-- | The Unix epoch timestamp in seconds for when the resource was created.+virtualGatewayRef_createdAt :: Lens.Lens' VirtualGatewayRef Prelude.UTCTime+virtualGatewayRef_createdAt = Lens.lens (\VirtualGatewayRef' {createdAt} -> createdAt) (\s@VirtualGatewayRef' {} a -> s {createdAt = a} :: VirtualGatewayRef) Prelude.. Data._Time++-- | The Unix epoch timestamp in seconds for when the resource was last+-- updated.+virtualGatewayRef_lastUpdatedAt :: Lens.Lens' VirtualGatewayRef Prelude.UTCTime+virtualGatewayRef_lastUpdatedAt = Lens.lens (\VirtualGatewayRef' {lastUpdatedAt} -> lastUpdatedAt) (\s@VirtualGatewayRef' {} a -> s {lastUpdatedAt = a} :: VirtualGatewayRef) Prelude.. Data._Time++-- | The name of the service mesh that the resource resides in.+virtualGatewayRef_meshName :: Lens.Lens' VirtualGatewayRef Prelude.Text+virtualGatewayRef_meshName = Lens.lens (\VirtualGatewayRef' {meshName} -> meshName) (\s@VirtualGatewayRef' {} a -> s {meshName = a} :: VirtualGatewayRef)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+virtualGatewayRef_meshOwner :: Lens.Lens' VirtualGatewayRef Prelude.Text+virtualGatewayRef_meshOwner = Lens.lens (\VirtualGatewayRef' {meshOwner} -> meshOwner) (\s@VirtualGatewayRef' {} a -> s {meshOwner = a} :: VirtualGatewayRef)++-- | The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+virtualGatewayRef_resourceOwner :: Lens.Lens' VirtualGatewayRef Prelude.Text+virtualGatewayRef_resourceOwner = Lens.lens (\VirtualGatewayRef' {resourceOwner} -> resourceOwner) (\s@VirtualGatewayRef' {} a -> s {resourceOwner = a} :: VirtualGatewayRef)++-- | The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+virtualGatewayRef_version :: Lens.Lens' VirtualGatewayRef Prelude.Integer+virtualGatewayRef_version = Lens.lens (\VirtualGatewayRef' {version} -> version) (\s@VirtualGatewayRef' {} a -> s {version = a} :: VirtualGatewayRef)++-- | The name of the resource.+virtualGatewayRef_virtualGatewayName :: Lens.Lens' VirtualGatewayRef Prelude.Text+virtualGatewayRef_virtualGatewayName = Lens.lens (\VirtualGatewayRef' {virtualGatewayName} -> virtualGatewayName) (\s@VirtualGatewayRef' {} a -> s {virtualGatewayName = a} :: VirtualGatewayRef)++instance Data.FromJSON VirtualGatewayRef where+  parseJSON =+    Data.withObject+      "VirtualGatewayRef"+      ( \x ->+          VirtualGatewayRef'+            Prelude.<$> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdAt")+            Prelude.<*> (x Data..: "lastUpdatedAt")+            Prelude.<*> (x Data..: "meshName")+            Prelude.<*> (x Data..: "meshOwner")+            Prelude.<*> (x Data..: "resourceOwner")+            Prelude.<*> (x Data..: "version")+            Prelude.<*> (x Data..: "virtualGatewayName")+      )++instance Prelude.Hashable VirtualGatewayRef where+  hashWithSalt _salt VirtualGatewayRef' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` resourceOwner+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData VirtualGatewayRef where+  rnf VirtualGatewayRef' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf resourceOwner+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf virtualGatewayName
+ gen/Amazonka/AppMesh/Types/VirtualGatewaySpec.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.AppMesh.Types.VirtualGatewaySpec+-- 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.AppMesh.Types.VirtualGatewaySpec where++import Amazonka.AppMesh.Types.VirtualGatewayBackendDefaults+import Amazonka.AppMesh.Types.VirtualGatewayListener+import Amazonka.AppMesh.Types.VirtualGatewayLogging+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the specification of a service mesh resource.+--+-- /See:/ 'newVirtualGatewaySpec' smart constructor.+data VirtualGatewaySpec = VirtualGatewaySpec'+  { -- | A reference to an object that represents the defaults for backends.+    backendDefaults :: Prelude.Maybe VirtualGatewayBackendDefaults,+    logging :: Prelude.Maybe VirtualGatewayLogging,+    -- | The listeners that the mesh endpoint is expected to receive inbound+    -- traffic from. You can specify one listener.+    listeners :: [VirtualGatewayListener]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewaySpec' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'backendDefaults', 'virtualGatewaySpec_backendDefaults' - A reference to an object that represents the defaults for backends.+--+-- 'logging', 'virtualGatewaySpec_logging' - Undocumented member.+--+-- 'listeners', 'virtualGatewaySpec_listeners' - The listeners that the mesh endpoint is expected to receive inbound+-- traffic from. You can specify one listener.+newVirtualGatewaySpec ::+  VirtualGatewaySpec+newVirtualGatewaySpec =+  VirtualGatewaySpec'+    { backendDefaults =+        Prelude.Nothing,+      logging = Prelude.Nothing,+      listeners = Prelude.mempty+    }++-- | A reference to an object that represents the defaults for backends.+virtualGatewaySpec_backendDefaults :: Lens.Lens' VirtualGatewaySpec (Prelude.Maybe VirtualGatewayBackendDefaults)+virtualGatewaySpec_backendDefaults = Lens.lens (\VirtualGatewaySpec' {backendDefaults} -> backendDefaults) (\s@VirtualGatewaySpec' {} a -> s {backendDefaults = a} :: VirtualGatewaySpec)++-- | Undocumented member.+virtualGatewaySpec_logging :: Lens.Lens' VirtualGatewaySpec (Prelude.Maybe VirtualGatewayLogging)+virtualGatewaySpec_logging = Lens.lens (\VirtualGatewaySpec' {logging} -> logging) (\s@VirtualGatewaySpec' {} a -> s {logging = a} :: VirtualGatewaySpec)++-- | The listeners that the mesh endpoint is expected to receive inbound+-- traffic from. You can specify one listener.+virtualGatewaySpec_listeners :: Lens.Lens' VirtualGatewaySpec [VirtualGatewayListener]+virtualGatewaySpec_listeners = Lens.lens (\VirtualGatewaySpec' {listeners} -> listeners) (\s@VirtualGatewaySpec' {} a -> s {listeners = a} :: VirtualGatewaySpec) Prelude.. Lens.coerced++instance Data.FromJSON VirtualGatewaySpec where+  parseJSON =+    Data.withObject+      "VirtualGatewaySpec"+      ( \x ->+          VirtualGatewaySpec'+            Prelude.<$> (x Data..:? "backendDefaults")+            Prelude.<*> (x Data..:? "logging")+            Prelude.<*> (x Data..:? "listeners" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable VirtualGatewaySpec where+  hashWithSalt _salt VirtualGatewaySpec' {..} =+    _salt+      `Prelude.hashWithSalt` backendDefaults+      `Prelude.hashWithSalt` logging+      `Prelude.hashWithSalt` listeners++instance Prelude.NFData VirtualGatewaySpec where+  rnf VirtualGatewaySpec' {..} =+    Prelude.rnf backendDefaults+      `Prelude.seq` Prelude.rnf logging+      `Prelude.seq` Prelude.rnf listeners++instance Data.ToJSON VirtualGatewaySpec where+  toJSON VirtualGatewaySpec' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("backendDefaults" Data..=)+              Prelude.<$> backendDefaults,+            ("logging" Data..=) Prelude.<$> logging,+            Prelude.Just ("listeners" Data..= listeners)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayStatus.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayStatus+-- 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.AppMesh.Types.VirtualGatewayStatus where++import Amazonka.AppMesh.Types.VirtualGatewayStatusCode+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the status of the mesh resource.+--+-- /See:/ 'newVirtualGatewayStatus' smart constructor.+data VirtualGatewayStatus = VirtualGatewayStatus'+  { -- | The current status.+    status :: VirtualGatewayStatusCode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'status', 'virtualGatewayStatus_status' - The current status.+newVirtualGatewayStatus ::+  -- | 'status'+  VirtualGatewayStatusCode ->+  VirtualGatewayStatus+newVirtualGatewayStatus pStatus_ =+  VirtualGatewayStatus' {status = pStatus_}++-- | The current status.+virtualGatewayStatus_status :: Lens.Lens' VirtualGatewayStatus VirtualGatewayStatusCode+virtualGatewayStatus_status = Lens.lens (\VirtualGatewayStatus' {status} -> status) (\s@VirtualGatewayStatus' {} a -> s {status = a} :: VirtualGatewayStatus)++instance Data.FromJSON VirtualGatewayStatus where+  parseJSON =+    Data.withObject+      "VirtualGatewayStatus"+      ( \x ->+          VirtualGatewayStatus'+            Prelude.<$> (x Data..: "status")+      )++instance Prelude.Hashable VirtualGatewayStatus where+  hashWithSalt _salt VirtualGatewayStatus' {..} =+    _salt `Prelude.hashWithSalt` status++instance Prelude.NFData VirtualGatewayStatus where+  rnf VirtualGatewayStatus' {..} = Prelude.rnf status
+ gen/Amazonka/AppMesh/Types/VirtualGatewayStatusCode.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayStatusCode+-- 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.AppMesh.Types.VirtualGatewayStatusCode+  ( VirtualGatewayStatusCode+      ( ..,+        VirtualGatewayStatusCode_ACTIVE,+        VirtualGatewayStatusCode_DELETED,+        VirtualGatewayStatusCode_INACTIVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype VirtualGatewayStatusCode = VirtualGatewayStatusCode'+  { fromVirtualGatewayStatusCode ::+      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 VirtualGatewayStatusCode_ACTIVE :: VirtualGatewayStatusCode+pattern VirtualGatewayStatusCode_ACTIVE = VirtualGatewayStatusCode' "ACTIVE"++pattern VirtualGatewayStatusCode_DELETED :: VirtualGatewayStatusCode+pattern VirtualGatewayStatusCode_DELETED = VirtualGatewayStatusCode' "DELETED"++pattern VirtualGatewayStatusCode_INACTIVE :: VirtualGatewayStatusCode+pattern VirtualGatewayStatusCode_INACTIVE = VirtualGatewayStatusCode' "INACTIVE"++{-# COMPLETE+  VirtualGatewayStatusCode_ACTIVE,+  VirtualGatewayStatusCode_DELETED,+  VirtualGatewayStatusCode_INACTIVE,+  VirtualGatewayStatusCode'+  #-}
+ gen/Amazonka/AppMesh/Types/VirtualGatewayTlsValidationContext.hs view
@@ -0,0 +1,123 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContext+-- 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.AppMesh.Types.VirtualGatewayTlsValidationContext where++import Amazonka.AppMesh.Types.SubjectAlternativeNames+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextTrust+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a Transport Layer Security (TLS) validation+-- context.+--+-- /See:/ 'newVirtualGatewayTlsValidationContext' smart constructor.+data VirtualGatewayTlsValidationContext = VirtualGatewayTlsValidationContext'+  { -- | A reference to an object that represents the SANs for a virtual+    -- gateway\'s listener\'s Transport Layer Security (TLS) validation+    -- context.+    subjectAlternativeNames :: Prelude.Maybe SubjectAlternativeNames,+    -- | A reference to where to retrieve the trust chain when validating a+    -- peer’s Transport Layer Security (TLS) certificate.+    trust :: VirtualGatewayTlsValidationContextTrust+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayTlsValidationContext' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'subjectAlternativeNames', 'virtualGatewayTlsValidationContext_subjectAlternativeNames' - A reference to an object that represents the SANs for a virtual+-- gateway\'s listener\'s Transport Layer Security (TLS) validation+-- context.+--+-- 'trust', 'virtualGatewayTlsValidationContext_trust' - A reference to where to retrieve the trust chain when validating a+-- peer’s Transport Layer Security (TLS) certificate.+newVirtualGatewayTlsValidationContext ::+  -- | 'trust'+  VirtualGatewayTlsValidationContextTrust ->+  VirtualGatewayTlsValidationContext+newVirtualGatewayTlsValidationContext pTrust_ =+  VirtualGatewayTlsValidationContext'+    { subjectAlternativeNames =+        Prelude.Nothing,+      trust = pTrust_+    }++-- | A reference to an object that represents the SANs for a virtual+-- gateway\'s listener\'s Transport Layer Security (TLS) validation+-- context.+virtualGatewayTlsValidationContext_subjectAlternativeNames :: Lens.Lens' VirtualGatewayTlsValidationContext (Prelude.Maybe SubjectAlternativeNames)+virtualGatewayTlsValidationContext_subjectAlternativeNames = Lens.lens (\VirtualGatewayTlsValidationContext' {subjectAlternativeNames} -> subjectAlternativeNames) (\s@VirtualGatewayTlsValidationContext' {} a -> s {subjectAlternativeNames = a} :: VirtualGatewayTlsValidationContext)++-- | A reference to where to retrieve the trust chain when validating a+-- peer’s Transport Layer Security (TLS) certificate.+virtualGatewayTlsValidationContext_trust :: Lens.Lens' VirtualGatewayTlsValidationContext VirtualGatewayTlsValidationContextTrust+virtualGatewayTlsValidationContext_trust = Lens.lens (\VirtualGatewayTlsValidationContext' {trust} -> trust) (\s@VirtualGatewayTlsValidationContext' {} a -> s {trust = a} :: VirtualGatewayTlsValidationContext)++instance+  Data.FromJSON+    VirtualGatewayTlsValidationContext+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayTlsValidationContext"+      ( \x ->+          VirtualGatewayTlsValidationContext'+            Prelude.<$> (x Data..:? "subjectAlternativeNames")+            Prelude.<*> (x Data..: "trust")+      )++instance+  Prelude.Hashable+    VirtualGatewayTlsValidationContext+  where+  hashWithSalt+    _salt+    VirtualGatewayTlsValidationContext' {..} =+      _salt+        `Prelude.hashWithSalt` subjectAlternativeNames+        `Prelude.hashWithSalt` trust++instance+  Prelude.NFData+    VirtualGatewayTlsValidationContext+  where+  rnf VirtualGatewayTlsValidationContext' {..} =+    Prelude.rnf subjectAlternativeNames+      `Prelude.seq` Prelude.rnf trust++instance+  Data.ToJSON+    VirtualGatewayTlsValidationContext+  where+  toJSON VirtualGatewayTlsValidationContext' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("subjectAlternativeNames" Data..=)+              Prelude.<$> subjectAlternativeNames,+            Prelude.Just ("trust" Data..= trust)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayTlsValidationContextAcmTrust.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextAcmTrust+-- 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.AppMesh.Types.VirtualGatewayTlsValidationContextAcmTrust where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a Transport Layer Security (TLS) validation+-- context trust for an Certificate Manager certificate.+--+-- /See:/ 'newVirtualGatewayTlsValidationContextAcmTrust' smart constructor.+data VirtualGatewayTlsValidationContextAcmTrust = VirtualGatewayTlsValidationContextAcmTrust'+  { -- | One or more ACM Amazon Resource Name (ARN)s.+    certificateAuthorityArns :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayTlsValidationContextAcmTrust' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'certificateAuthorityArns', 'virtualGatewayTlsValidationContextAcmTrust_certificateAuthorityArns' - One or more ACM Amazon Resource Name (ARN)s.+newVirtualGatewayTlsValidationContextAcmTrust ::+  -- | 'certificateAuthorityArns'+  Prelude.NonEmpty Prelude.Text ->+  VirtualGatewayTlsValidationContextAcmTrust+newVirtualGatewayTlsValidationContextAcmTrust+  pCertificateAuthorityArns_ =+    VirtualGatewayTlsValidationContextAcmTrust'+      { certificateAuthorityArns =+          Lens.coerced+            Lens.# pCertificateAuthorityArns_+      }++-- | One or more ACM Amazon Resource Name (ARN)s.+virtualGatewayTlsValidationContextAcmTrust_certificateAuthorityArns :: Lens.Lens' VirtualGatewayTlsValidationContextAcmTrust (Prelude.NonEmpty Prelude.Text)+virtualGatewayTlsValidationContextAcmTrust_certificateAuthorityArns = Lens.lens (\VirtualGatewayTlsValidationContextAcmTrust' {certificateAuthorityArns} -> certificateAuthorityArns) (\s@VirtualGatewayTlsValidationContextAcmTrust' {} a -> s {certificateAuthorityArns = a} :: VirtualGatewayTlsValidationContextAcmTrust) Prelude.. Lens.coerced++instance+  Data.FromJSON+    VirtualGatewayTlsValidationContextAcmTrust+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayTlsValidationContextAcmTrust"+      ( \x ->+          VirtualGatewayTlsValidationContextAcmTrust'+            Prelude.<$> (x Data..: "certificateAuthorityArns")+      )++instance+  Prelude.Hashable+    VirtualGatewayTlsValidationContextAcmTrust+  where+  hashWithSalt+    _salt+    VirtualGatewayTlsValidationContextAcmTrust' {..} =+      _salt+        `Prelude.hashWithSalt` certificateAuthorityArns++instance+  Prelude.NFData+    VirtualGatewayTlsValidationContextAcmTrust+  where+  rnf VirtualGatewayTlsValidationContextAcmTrust' {..} =+    Prelude.rnf certificateAuthorityArns++instance+  Data.ToJSON+    VirtualGatewayTlsValidationContextAcmTrust+  where+  toJSON+    VirtualGatewayTlsValidationContextAcmTrust' {..} =+      Data.object+        ( Prelude.catMaybes+            [ Prelude.Just+                ( "certificateAuthorityArns"+                    Data..= certificateAuthorityArns+                )+            ]+        )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayTlsValidationContextFileTrust.hs view
@@ -0,0 +1,103 @@+{-# 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.AppMesh.Types.VirtualGatewayTlsValidationContextFileTrust+-- 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.AppMesh.Types.VirtualGatewayTlsValidationContextFileTrust where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a Transport Layer Security (TLS) validation+-- context trust for a local file.+--+-- /See:/ 'newVirtualGatewayTlsValidationContextFileTrust' smart constructor.+data VirtualGatewayTlsValidationContextFileTrust = VirtualGatewayTlsValidationContextFileTrust'+  { -- | The certificate trust chain for a certificate stored on the file system+    -- of the virtual node that the proxy is running on.+    certificateChain :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayTlsValidationContextFileTrust' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'certificateChain', 'virtualGatewayTlsValidationContextFileTrust_certificateChain' - The certificate trust chain for a certificate stored on the file system+-- of the virtual node that the proxy is running on.+newVirtualGatewayTlsValidationContextFileTrust ::+  -- | 'certificateChain'+  Prelude.Text ->+  VirtualGatewayTlsValidationContextFileTrust+newVirtualGatewayTlsValidationContextFileTrust+  pCertificateChain_ =+    VirtualGatewayTlsValidationContextFileTrust'+      { certificateChain =+          pCertificateChain_+      }++-- | The certificate trust chain for a certificate stored on the file system+-- of the virtual node that the proxy is running on.+virtualGatewayTlsValidationContextFileTrust_certificateChain :: Lens.Lens' VirtualGatewayTlsValidationContextFileTrust Prelude.Text+virtualGatewayTlsValidationContextFileTrust_certificateChain = Lens.lens (\VirtualGatewayTlsValidationContextFileTrust' {certificateChain} -> certificateChain) (\s@VirtualGatewayTlsValidationContextFileTrust' {} a -> s {certificateChain = a} :: VirtualGatewayTlsValidationContextFileTrust)++instance+  Data.FromJSON+    VirtualGatewayTlsValidationContextFileTrust+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayTlsValidationContextFileTrust"+      ( \x ->+          VirtualGatewayTlsValidationContextFileTrust'+            Prelude.<$> (x Data..: "certificateChain")+      )++instance+  Prelude.Hashable+    VirtualGatewayTlsValidationContextFileTrust+  where+  hashWithSalt+    _salt+    VirtualGatewayTlsValidationContextFileTrust' {..} =+      _salt `Prelude.hashWithSalt` certificateChain++instance+  Prelude.NFData+    VirtualGatewayTlsValidationContextFileTrust+  where+  rnf VirtualGatewayTlsValidationContextFileTrust' {..} =+    Prelude.rnf certificateChain++instance+  Data.ToJSON+    VirtualGatewayTlsValidationContextFileTrust+  where+  toJSON+    VirtualGatewayTlsValidationContextFileTrust' {..} =+      Data.object+        ( Prelude.catMaybes+            [ Prelude.Just+                ("certificateChain" Data..= certificateChain)+            ]+        )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayTlsValidationContextSdsTrust.hs view
@@ -0,0 +1,108 @@+{-# 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.AppMesh.Types.VirtualGatewayTlsValidationContextSdsTrust+-- 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.AppMesh.Types.VirtualGatewayTlsValidationContextSdsTrust where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual gateway\'s listener\'s Transport+-- Layer Security (TLS) Secret Discovery Service validation context trust.+-- The proxy must be configured with a local SDS provider via a Unix Domain+-- Socket. See App Mesh+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html TLS documentation>+-- for more info.+--+-- /See:/ 'newVirtualGatewayTlsValidationContextSdsTrust' smart constructor.+data VirtualGatewayTlsValidationContextSdsTrust = VirtualGatewayTlsValidationContextSdsTrust'+  { -- | A reference to an object that represents the name of the secret for a+    -- virtual gateway\'s Transport Layer Security (TLS) Secret Discovery+    -- Service validation context trust.+    secretName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayTlsValidationContextSdsTrust' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'secretName', 'virtualGatewayTlsValidationContextSdsTrust_secretName' - A reference to an object that represents the name of the secret for a+-- virtual gateway\'s Transport Layer Security (TLS) Secret Discovery+-- Service validation context trust.+newVirtualGatewayTlsValidationContextSdsTrust ::+  -- | 'secretName'+  Prelude.Text ->+  VirtualGatewayTlsValidationContextSdsTrust+newVirtualGatewayTlsValidationContextSdsTrust+  pSecretName_ =+    VirtualGatewayTlsValidationContextSdsTrust'+      { secretName =+          pSecretName_+      }++-- | A reference to an object that represents the name of the secret for a+-- virtual gateway\'s Transport Layer Security (TLS) Secret Discovery+-- Service validation context trust.+virtualGatewayTlsValidationContextSdsTrust_secretName :: Lens.Lens' VirtualGatewayTlsValidationContextSdsTrust Prelude.Text+virtualGatewayTlsValidationContextSdsTrust_secretName = Lens.lens (\VirtualGatewayTlsValidationContextSdsTrust' {secretName} -> secretName) (\s@VirtualGatewayTlsValidationContextSdsTrust' {} a -> s {secretName = a} :: VirtualGatewayTlsValidationContextSdsTrust)++instance+  Data.FromJSON+    VirtualGatewayTlsValidationContextSdsTrust+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayTlsValidationContextSdsTrust"+      ( \x ->+          VirtualGatewayTlsValidationContextSdsTrust'+            Prelude.<$> (x Data..: "secretName")+      )++instance+  Prelude.Hashable+    VirtualGatewayTlsValidationContextSdsTrust+  where+  hashWithSalt+    _salt+    VirtualGatewayTlsValidationContextSdsTrust' {..} =+      _salt `Prelude.hashWithSalt` secretName++instance+  Prelude.NFData+    VirtualGatewayTlsValidationContextSdsTrust+  where+  rnf VirtualGatewayTlsValidationContextSdsTrust' {..} =+    Prelude.rnf secretName++instance+  Data.ToJSON+    VirtualGatewayTlsValidationContextSdsTrust+  where+  toJSON+    VirtualGatewayTlsValidationContextSdsTrust' {..} =+      Data.object+        ( Prelude.catMaybes+            [Prelude.Just ("secretName" Data..= secretName)]+        )
+ gen/Amazonka/AppMesh/Types/VirtualGatewayTlsValidationContextTrust.hs view
@@ -0,0 +1,134 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextTrust+-- 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.AppMesh.Types.VirtualGatewayTlsValidationContextTrust where++import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextAcmTrust+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextFileTrust+import Amazonka.AppMesh.Types.VirtualGatewayTlsValidationContextSdsTrust+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a Transport Layer Security (TLS) validation+-- context trust.+--+-- /See:/ 'newVirtualGatewayTlsValidationContextTrust' smart constructor.+data VirtualGatewayTlsValidationContextTrust = VirtualGatewayTlsValidationContextTrust'+  { -- | A reference to an object that represents a Transport Layer Security+    -- (TLS) validation context trust for an Certificate Manager certificate.+    acm :: Prelude.Maybe VirtualGatewayTlsValidationContextAcmTrust,+    -- | An object that represents a Transport Layer Security (TLS) validation+    -- context trust for a local file.+    file :: Prelude.Maybe VirtualGatewayTlsValidationContextFileTrust,+    -- | A reference to an object that represents a virtual gateway\'s Transport+    -- Layer Security (TLS) Secret Discovery Service validation context trust.+    sds :: Prelude.Maybe VirtualGatewayTlsValidationContextSdsTrust+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualGatewayTlsValidationContextTrust' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acm', 'virtualGatewayTlsValidationContextTrust_acm' - A reference to an object that represents a Transport Layer Security+-- (TLS) validation context trust for an Certificate Manager certificate.+--+-- 'file', 'virtualGatewayTlsValidationContextTrust_file' - An object that represents a Transport Layer Security (TLS) validation+-- context trust for a local file.+--+-- 'sds', 'virtualGatewayTlsValidationContextTrust_sds' - A reference to an object that represents a virtual gateway\'s Transport+-- Layer Security (TLS) Secret Discovery Service validation context trust.+newVirtualGatewayTlsValidationContextTrust ::+  VirtualGatewayTlsValidationContextTrust+newVirtualGatewayTlsValidationContextTrust =+  VirtualGatewayTlsValidationContextTrust'+    { acm =+        Prelude.Nothing,+      file = Prelude.Nothing,+      sds = Prelude.Nothing+    }++-- | A reference to an object that represents a Transport Layer Security+-- (TLS) validation context trust for an Certificate Manager certificate.+virtualGatewayTlsValidationContextTrust_acm :: Lens.Lens' VirtualGatewayTlsValidationContextTrust (Prelude.Maybe VirtualGatewayTlsValidationContextAcmTrust)+virtualGatewayTlsValidationContextTrust_acm = Lens.lens (\VirtualGatewayTlsValidationContextTrust' {acm} -> acm) (\s@VirtualGatewayTlsValidationContextTrust' {} a -> s {acm = a} :: VirtualGatewayTlsValidationContextTrust)++-- | An object that represents a Transport Layer Security (TLS) validation+-- context trust for a local file.+virtualGatewayTlsValidationContextTrust_file :: Lens.Lens' VirtualGatewayTlsValidationContextTrust (Prelude.Maybe VirtualGatewayTlsValidationContextFileTrust)+virtualGatewayTlsValidationContextTrust_file = Lens.lens (\VirtualGatewayTlsValidationContextTrust' {file} -> file) (\s@VirtualGatewayTlsValidationContextTrust' {} a -> s {file = a} :: VirtualGatewayTlsValidationContextTrust)++-- | A reference to an object that represents a virtual gateway\'s Transport+-- Layer Security (TLS) Secret Discovery Service validation context trust.+virtualGatewayTlsValidationContextTrust_sds :: Lens.Lens' VirtualGatewayTlsValidationContextTrust (Prelude.Maybe VirtualGatewayTlsValidationContextSdsTrust)+virtualGatewayTlsValidationContextTrust_sds = Lens.lens (\VirtualGatewayTlsValidationContextTrust' {sds} -> sds) (\s@VirtualGatewayTlsValidationContextTrust' {} a -> s {sds = a} :: VirtualGatewayTlsValidationContextTrust)++instance+  Data.FromJSON+    VirtualGatewayTlsValidationContextTrust+  where+  parseJSON =+    Data.withObject+      "VirtualGatewayTlsValidationContextTrust"+      ( \x ->+          VirtualGatewayTlsValidationContextTrust'+            Prelude.<$> (x Data..:? "acm")+            Prelude.<*> (x Data..:? "file")+            Prelude.<*> (x Data..:? "sds")+      )++instance+  Prelude.Hashable+    VirtualGatewayTlsValidationContextTrust+  where+  hashWithSalt+    _salt+    VirtualGatewayTlsValidationContextTrust' {..} =+      _salt+        `Prelude.hashWithSalt` acm+        `Prelude.hashWithSalt` file+        `Prelude.hashWithSalt` sds++instance+  Prelude.NFData+    VirtualGatewayTlsValidationContextTrust+  where+  rnf VirtualGatewayTlsValidationContextTrust' {..} =+    Prelude.rnf acm+      `Prelude.seq` Prelude.rnf file+      `Prelude.seq` Prelude.rnf sds++instance+  Data.ToJSON+    VirtualGatewayTlsValidationContextTrust+  where+  toJSON VirtualGatewayTlsValidationContextTrust' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("acm" Data..=) Prelude.<$> acm,+            ("file" Data..=) Prelude.<$> file,+            ("sds" Data..=) Prelude.<$> sds+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualNodeConnectionPool.hs view
@@ -0,0 +1,129 @@+{-# 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.AppMesh.Types.VirtualNodeConnectionPool+-- 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.AppMesh.Types.VirtualNodeConnectionPool where++import Amazonka.AppMesh.Types.VirtualNodeGrpcConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeHttp2ConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeHttpConnectionPool+import Amazonka.AppMesh.Types.VirtualNodeTcpConnectionPool+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the type of virtual node connection pool.+--+-- Only one protocol is used at a time and should be the same protocol as+-- the one chosen under port mapping.+--+-- If not present the default value for @maxPendingRequests@ is+-- @2147483647@.+--+-- /See:/ 'newVirtualNodeConnectionPool' smart constructor.+data VirtualNodeConnectionPool = VirtualNodeConnectionPool'+  { -- | An object that represents a type of connection pool.+    grpc :: Prelude.Maybe VirtualNodeGrpcConnectionPool,+    -- | An object that represents a type of connection pool.+    http :: Prelude.Maybe VirtualNodeHttpConnectionPool,+    -- | An object that represents a type of connection pool.+    http2 :: Prelude.Maybe VirtualNodeHttp2ConnectionPool,+    -- | An object that represents a type of connection pool.+    tcp :: Prelude.Maybe VirtualNodeTcpConnectionPool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualNodeConnectionPool' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'grpc', 'virtualNodeConnectionPool_grpc' - An object that represents a type of connection pool.+--+-- 'http', 'virtualNodeConnectionPool_http' - An object that represents a type of connection pool.+--+-- 'http2', 'virtualNodeConnectionPool_http2' - An object that represents a type of connection pool.+--+-- 'tcp', 'virtualNodeConnectionPool_tcp' - An object that represents a type of connection pool.+newVirtualNodeConnectionPool ::+  VirtualNodeConnectionPool+newVirtualNodeConnectionPool =+  VirtualNodeConnectionPool'+    { grpc = Prelude.Nothing,+      http = Prelude.Nothing,+      http2 = Prelude.Nothing,+      tcp = Prelude.Nothing+    }++-- | An object that represents a type of connection pool.+virtualNodeConnectionPool_grpc :: Lens.Lens' VirtualNodeConnectionPool (Prelude.Maybe VirtualNodeGrpcConnectionPool)+virtualNodeConnectionPool_grpc = Lens.lens (\VirtualNodeConnectionPool' {grpc} -> grpc) (\s@VirtualNodeConnectionPool' {} a -> s {grpc = a} :: VirtualNodeConnectionPool)++-- | An object that represents a type of connection pool.+virtualNodeConnectionPool_http :: Lens.Lens' VirtualNodeConnectionPool (Prelude.Maybe VirtualNodeHttpConnectionPool)+virtualNodeConnectionPool_http = Lens.lens (\VirtualNodeConnectionPool' {http} -> http) (\s@VirtualNodeConnectionPool' {} a -> s {http = a} :: VirtualNodeConnectionPool)++-- | An object that represents a type of connection pool.+virtualNodeConnectionPool_http2 :: Lens.Lens' VirtualNodeConnectionPool (Prelude.Maybe VirtualNodeHttp2ConnectionPool)+virtualNodeConnectionPool_http2 = Lens.lens (\VirtualNodeConnectionPool' {http2} -> http2) (\s@VirtualNodeConnectionPool' {} a -> s {http2 = a} :: VirtualNodeConnectionPool)++-- | An object that represents a type of connection pool.+virtualNodeConnectionPool_tcp :: Lens.Lens' VirtualNodeConnectionPool (Prelude.Maybe VirtualNodeTcpConnectionPool)+virtualNodeConnectionPool_tcp = Lens.lens (\VirtualNodeConnectionPool' {tcp} -> tcp) (\s@VirtualNodeConnectionPool' {} a -> s {tcp = a} :: VirtualNodeConnectionPool)++instance Data.FromJSON VirtualNodeConnectionPool where+  parseJSON =+    Data.withObject+      "VirtualNodeConnectionPool"+      ( \x ->+          VirtualNodeConnectionPool'+            Prelude.<$> (x Data..:? "grpc")+            Prelude.<*> (x Data..:? "http")+            Prelude.<*> (x Data..:? "http2")+            Prelude.<*> (x Data..:? "tcp")+      )++instance Prelude.Hashable VirtualNodeConnectionPool where+  hashWithSalt _salt VirtualNodeConnectionPool' {..} =+    _salt+      `Prelude.hashWithSalt` grpc+      `Prelude.hashWithSalt` http+      `Prelude.hashWithSalt` http2+      `Prelude.hashWithSalt` tcp++instance Prelude.NFData VirtualNodeConnectionPool where+  rnf VirtualNodeConnectionPool' {..} =+    Prelude.rnf grpc+      `Prelude.seq` Prelude.rnf http+      `Prelude.seq` Prelude.rnf http2+      `Prelude.seq` Prelude.rnf tcp++instance Data.ToJSON VirtualNodeConnectionPool where+  toJSON VirtualNodeConnectionPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("grpc" Data..=) Prelude.<$> grpc,+            ("http" Data..=) Prelude.<$> http,+            ("http2" Data..=) Prelude.<$> http2,+            ("tcp" Data..=) Prelude.<$> tcp+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualNodeData.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.AppMesh.Types.VirtualNodeData+-- 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.AppMesh.Types.VirtualNodeData where++import Amazonka.AppMesh.Types.ResourceMetadata+import Amazonka.AppMesh.Types.VirtualNodeSpec+import Amazonka.AppMesh.Types.VirtualNodeStatus+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual node returned by a describe+-- operation.+--+-- /See:/ 'newVirtualNodeData' smart constructor.+data VirtualNodeData = VirtualNodeData'+  { -- | The name of the service mesh that the virtual node resides in.+    meshName :: Prelude.Text,+    -- | The associated metadata for the virtual node.+    metadata :: ResourceMetadata,+    -- | The specifications of the virtual node.+    spec :: VirtualNodeSpec,+    -- | The current status for the virtual node.+    status :: VirtualNodeStatus,+    -- | The name of the virtual node.+    virtualNodeName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualNodeData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshName', 'virtualNodeData_meshName' - The name of the service mesh that the virtual node resides in.+--+-- 'metadata', 'virtualNodeData_metadata' - The associated metadata for the virtual node.+--+-- 'spec', 'virtualNodeData_spec' - The specifications of the virtual node.+--+-- 'status', 'virtualNodeData_status' - The current status for the virtual node.+--+-- 'virtualNodeName', 'virtualNodeData_virtualNodeName' - The name of the virtual node.+newVirtualNodeData ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'metadata'+  ResourceMetadata ->+  -- | 'spec'+  VirtualNodeSpec ->+  -- | 'status'+  VirtualNodeStatus ->+  -- | 'virtualNodeName'+  Prelude.Text ->+  VirtualNodeData+newVirtualNodeData+  pMeshName_+  pMetadata_+  pSpec_+  pStatus_+  pVirtualNodeName_ =+    VirtualNodeData'+      { meshName = pMeshName_,+        metadata = pMetadata_,+        spec = pSpec_,+        status = pStatus_,+        virtualNodeName = pVirtualNodeName_+      }++-- | The name of the service mesh that the virtual node resides in.+virtualNodeData_meshName :: Lens.Lens' VirtualNodeData Prelude.Text+virtualNodeData_meshName = Lens.lens (\VirtualNodeData' {meshName} -> meshName) (\s@VirtualNodeData' {} a -> s {meshName = a} :: VirtualNodeData)++-- | The associated metadata for the virtual node.+virtualNodeData_metadata :: Lens.Lens' VirtualNodeData ResourceMetadata+virtualNodeData_metadata = Lens.lens (\VirtualNodeData' {metadata} -> metadata) (\s@VirtualNodeData' {} a -> s {metadata = a} :: VirtualNodeData)++-- | The specifications of the virtual node.+virtualNodeData_spec :: Lens.Lens' VirtualNodeData VirtualNodeSpec+virtualNodeData_spec = Lens.lens (\VirtualNodeData' {spec} -> spec) (\s@VirtualNodeData' {} a -> s {spec = a} :: VirtualNodeData)++-- | The current status for the virtual node.+virtualNodeData_status :: Lens.Lens' VirtualNodeData VirtualNodeStatus+virtualNodeData_status = Lens.lens (\VirtualNodeData' {status} -> status) (\s@VirtualNodeData' {} a -> s {status = a} :: VirtualNodeData)++-- | The name of the virtual node.+virtualNodeData_virtualNodeName :: Lens.Lens' VirtualNodeData Prelude.Text+virtualNodeData_virtualNodeName = Lens.lens (\VirtualNodeData' {virtualNodeName} -> virtualNodeName) (\s@VirtualNodeData' {} a -> s {virtualNodeName = a} :: VirtualNodeData)++instance Data.FromJSON VirtualNodeData where+  parseJSON =+    Data.withObject+      "VirtualNodeData"+      ( \x ->+          VirtualNodeData'+            Prelude.<$> (x Data..: "meshName")+            Prelude.<*> (x Data..: "metadata")+            Prelude.<*> (x Data..: "spec")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..: "virtualNodeName")+      )++instance Prelude.Hashable VirtualNodeData where+  hashWithSalt _salt VirtualNodeData' {..} =+    _salt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` virtualNodeName++instance Prelude.NFData VirtualNodeData where+  rnf VirtualNodeData' {..} =+    Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf virtualNodeName
+ gen/Amazonka/AppMesh/Types/VirtualNodeGrpcConnectionPool.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.AppMesh.Types.VirtualNodeGrpcConnectionPool+-- 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.AppMesh.Types.VirtualNodeGrpcConnectionPool where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a type of connection pool.+--+-- /See:/ 'newVirtualNodeGrpcConnectionPool' smart constructor.+data VirtualNodeGrpcConnectionPool = VirtualNodeGrpcConnectionPool'+  { -- | Maximum number of inflight requests Envoy can concurrently support+    -- across hosts in upstream cluster.+    maxRequests :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualNodeGrpcConnectionPool' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxRequests', 'virtualNodeGrpcConnectionPool_maxRequests' - Maximum number of inflight requests Envoy can concurrently support+-- across hosts in upstream cluster.+newVirtualNodeGrpcConnectionPool ::+  -- | 'maxRequests'+  Prelude.Natural ->+  VirtualNodeGrpcConnectionPool+newVirtualNodeGrpcConnectionPool pMaxRequests_ =+  VirtualNodeGrpcConnectionPool'+    { maxRequests =+        pMaxRequests_+    }++-- | Maximum number of inflight requests Envoy can concurrently support+-- across hosts in upstream cluster.+virtualNodeGrpcConnectionPool_maxRequests :: Lens.Lens' VirtualNodeGrpcConnectionPool Prelude.Natural+virtualNodeGrpcConnectionPool_maxRequests = Lens.lens (\VirtualNodeGrpcConnectionPool' {maxRequests} -> maxRequests) (\s@VirtualNodeGrpcConnectionPool' {} a -> s {maxRequests = a} :: VirtualNodeGrpcConnectionPool)++instance Data.FromJSON VirtualNodeGrpcConnectionPool where+  parseJSON =+    Data.withObject+      "VirtualNodeGrpcConnectionPool"+      ( \x ->+          VirtualNodeGrpcConnectionPool'+            Prelude.<$> (x Data..: "maxRequests")+      )++instance+  Prelude.Hashable+    VirtualNodeGrpcConnectionPool+  where+  hashWithSalt _salt VirtualNodeGrpcConnectionPool' {..} =+    _salt `Prelude.hashWithSalt` maxRequests++instance Prelude.NFData VirtualNodeGrpcConnectionPool where+  rnf VirtualNodeGrpcConnectionPool' {..} =+    Prelude.rnf maxRequests++instance Data.ToJSON VirtualNodeGrpcConnectionPool where+  toJSON VirtualNodeGrpcConnectionPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("maxRequests" Data..= maxRequests)]+      )
+ gen/Amazonka/AppMesh/Types/VirtualNodeHttp2ConnectionPool.hs view
@@ -0,0 +1,92 @@+{-# 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.AppMesh.Types.VirtualNodeHttp2ConnectionPool+-- 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.AppMesh.Types.VirtualNodeHttp2ConnectionPool where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a type of connection pool.+--+-- /See:/ 'newVirtualNodeHttp2ConnectionPool' smart constructor.+data VirtualNodeHttp2ConnectionPool = VirtualNodeHttp2ConnectionPool'+  { -- | Maximum number of inflight requests Envoy can concurrently support+    -- across hosts in upstream cluster.+    maxRequests :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualNodeHttp2ConnectionPool' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxRequests', 'virtualNodeHttp2ConnectionPool_maxRequests' - Maximum number of inflight requests Envoy can concurrently support+-- across hosts in upstream cluster.+newVirtualNodeHttp2ConnectionPool ::+  -- | 'maxRequests'+  Prelude.Natural ->+  VirtualNodeHttp2ConnectionPool+newVirtualNodeHttp2ConnectionPool pMaxRequests_ =+  VirtualNodeHttp2ConnectionPool'+    { maxRequests =+        pMaxRequests_+    }++-- | Maximum number of inflight requests Envoy can concurrently support+-- across hosts in upstream cluster.+virtualNodeHttp2ConnectionPool_maxRequests :: Lens.Lens' VirtualNodeHttp2ConnectionPool Prelude.Natural+virtualNodeHttp2ConnectionPool_maxRequests = Lens.lens (\VirtualNodeHttp2ConnectionPool' {maxRequests} -> maxRequests) (\s@VirtualNodeHttp2ConnectionPool' {} a -> s {maxRequests = a} :: VirtualNodeHttp2ConnectionPool)++instance Data.FromJSON VirtualNodeHttp2ConnectionPool where+  parseJSON =+    Data.withObject+      "VirtualNodeHttp2ConnectionPool"+      ( \x ->+          VirtualNodeHttp2ConnectionPool'+            Prelude.<$> (x Data..: "maxRequests")+      )++instance+  Prelude.Hashable+    VirtualNodeHttp2ConnectionPool+  where+  hashWithSalt+    _salt+    VirtualNodeHttp2ConnectionPool' {..} =+      _salt `Prelude.hashWithSalt` maxRequests++instance+  Prelude.NFData+    VirtualNodeHttp2ConnectionPool+  where+  rnf VirtualNodeHttp2ConnectionPool' {..} =+    Prelude.rnf maxRequests++instance Data.ToJSON VirtualNodeHttp2ConnectionPool where+  toJSON VirtualNodeHttp2ConnectionPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("maxRequests" Data..= maxRequests)]+      )
+ gen/Amazonka/AppMesh/Types/VirtualNodeHttpConnectionPool.hs view
@@ -0,0 +1,107 @@+{-# 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.AppMesh.Types.VirtualNodeHttpConnectionPool+-- 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.AppMesh.Types.VirtualNodeHttpConnectionPool where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a type of connection pool.+--+-- /See:/ 'newVirtualNodeHttpConnectionPool' smart constructor.+data VirtualNodeHttpConnectionPool = VirtualNodeHttpConnectionPool'+  { -- | Number of overflowing requests after @max_connections@ Envoy will queue+    -- to upstream cluster.+    maxPendingRequests :: Prelude.Maybe Prelude.Natural,+    -- | Maximum number of outbound TCP connections Envoy can establish+    -- concurrently with all hosts in upstream cluster.+    maxConnections :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualNodeHttpConnectionPool' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxPendingRequests', 'virtualNodeHttpConnectionPool_maxPendingRequests' - Number of overflowing requests after @max_connections@ Envoy will queue+-- to upstream cluster.+--+-- 'maxConnections', 'virtualNodeHttpConnectionPool_maxConnections' - Maximum number of outbound TCP connections Envoy can establish+-- concurrently with all hosts in upstream cluster.+newVirtualNodeHttpConnectionPool ::+  -- | 'maxConnections'+  Prelude.Natural ->+  VirtualNodeHttpConnectionPool+newVirtualNodeHttpConnectionPool pMaxConnections_ =+  VirtualNodeHttpConnectionPool'+    { maxPendingRequests =+        Prelude.Nothing,+      maxConnections = pMaxConnections_+    }++-- | Number of overflowing requests after @max_connections@ Envoy will queue+-- to upstream cluster.+virtualNodeHttpConnectionPool_maxPendingRequests :: Lens.Lens' VirtualNodeHttpConnectionPool (Prelude.Maybe Prelude.Natural)+virtualNodeHttpConnectionPool_maxPendingRequests = Lens.lens (\VirtualNodeHttpConnectionPool' {maxPendingRequests} -> maxPendingRequests) (\s@VirtualNodeHttpConnectionPool' {} a -> s {maxPendingRequests = a} :: VirtualNodeHttpConnectionPool)++-- | Maximum number of outbound TCP connections Envoy can establish+-- concurrently with all hosts in upstream cluster.+virtualNodeHttpConnectionPool_maxConnections :: Lens.Lens' VirtualNodeHttpConnectionPool Prelude.Natural+virtualNodeHttpConnectionPool_maxConnections = Lens.lens (\VirtualNodeHttpConnectionPool' {maxConnections} -> maxConnections) (\s@VirtualNodeHttpConnectionPool' {} a -> s {maxConnections = a} :: VirtualNodeHttpConnectionPool)++instance Data.FromJSON VirtualNodeHttpConnectionPool where+  parseJSON =+    Data.withObject+      "VirtualNodeHttpConnectionPool"+      ( \x ->+          VirtualNodeHttpConnectionPool'+            Prelude.<$> (x Data..:? "maxPendingRequests")+            Prelude.<*> (x Data..: "maxConnections")+      )++instance+  Prelude.Hashable+    VirtualNodeHttpConnectionPool+  where+  hashWithSalt _salt VirtualNodeHttpConnectionPool' {..} =+    _salt+      `Prelude.hashWithSalt` maxPendingRequests+      `Prelude.hashWithSalt` maxConnections++instance Prelude.NFData VirtualNodeHttpConnectionPool where+  rnf VirtualNodeHttpConnectionPool' {..} =+    Prelude.rnf maxPendingRequests+      `Prelude.seq` Prelude.rnf maxConnections++instance Data.ToJSON VirtualNodeHttpConnectionPool where+  toJSON VirtualNodeHttpConnectionPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxPendingRequests" Data..=)+              Prelude.<$> maxPendingRequests,+            Prelude.Just+              ("maxConnections" Data..= maxConnections)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualNodeRef.hs view
@@ -0,0 +1,207 @@+{-# 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.AppMesh.Types.VirtualNodeRef+-- 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.AppMesh.Types.VirtualNodeRef where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual node returned by a list operation.+--+-- /See:/ 'newVirtualNodeRef' smart constructor.+data VirtualNodeRef = VirtualNodeRef'+  { -- | The full Amazon Resource Name (ARN) for the virtual node.+    arn :: Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the resource was created.+    createdAt :: Data.POSIX,+    -- | The Unix epoch timestamp in seconds for when the resource was last+    -- updated.+    lastUpdatedAt :: Data.POSIX,+    -- | The name of the service mesh that the virtual node resides in.+    meshName :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the resource owner. If the+    -- account ID is not your own, then it\'s the ID of the mesh owner or of+    -- another account that the mesh is shared with. For more information about+    -- mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    resourceOwner :: Prelude.Text,+    -- | The version of the resource. Resources are created at version 1, and+    -- this version is incremented each time that they\'re updated.+    version :: Prelude.Integer,+    -- | The name of the virtual node.+    virtualNodeName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualNodeRef' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'virtualNodeRef_arn' - The full Amazon Resource Name (ARN) for the virtual node.+--+-- 'createdAt', 'virtualNodeRef_createdAt' - The Unix epoch timestamp in seconds for when the resource was created.+--+-- 'lastUpdatedAt', 'virtualNodeRef_lastUpdatedAt' - The Unix epoch timestamp in seconds for when the resource was last+-- updated.+--+-- 'meshName', 'virtualNodeRef_meshName' - The name of the service mesh that the virtual node resides in.+--+-- 'meshOwner', 'virtualNodeRef_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'resourceOwner', 'virtualNodeRef_resourceOwner' - The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'version', 'virtualNodeRef_version' - The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+--+-- 'virtualNodeName', 'virtualNodeRef_virtualNodeName' - The name of the virtual node.+newVirtualNodeRef ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'meshOwner'+  Prelude.Text ->+  -- | 'resourceOwner'+  Prelude.Text ->+  -- | 'version'+  Prelude.Integer ->+  -- | 'virtualNodeName'+  Prelude.Text ->+  VirtualNodeRef+newVirtualNodeRef+  pArn_+  pCreatedAt_+  pLastUpdatedAt_+  pMeshName_+  pMeshOwner_+  pResourceOwner_+  pVersion_+  pVirtualNodeName_ =+    VirtualNodeRef'+      { arn = pArn_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_,+        meshName = pMeshName_,+        meshOwner = pMeshOwner_,+        resourceOwner = pResourceOwner_,+        version = pVersion_,+        virtualNodeName = pVirtualNodeName_+      }++-- | The full Amazon Resource Name (ARN) for the virtual node.+virtualNodeRef_arn :: Lens.Lens' VirtualNodeRef Prelude.Text+virtualNodeRef_arn = Lens.lens (\VirtualNodeRef' {arn} -> arn) (\s@VirtualNodeRef' {} a -> s {arn = a} :: VirtualNodeRef)++-- | The Unix epoch timestamp in seconds for when the resource was created.+virtualNodeRef_createdAt :: Lens.Lens' VirtualNodeRef Prelude.UTCTime+virtualNodeRef_createdAt = Lens.lens (\VirtualNodeRef' {createdAt} -> createdAt) (\s@VirtualNodeRef' {} a -> s {createdAt = a} :: VirtualNodeRef) Prelude.. Data._Time++-- | The Unix epoch timestamp in seconds for when the resource was last+-- updated.+virtualNodeRef_lastUpdatedAt :: Lens.Lens' VirtualNodeRef Prelude.UTCTime+virtualNodeRef_lastUpdatedAt = Lens.lens (\VirtualNodeRef' {lastUpdatedAt} -> lastUpdatedAt) (\s@VirtualNodeRef' {} a -> s {lastUpdatedAt = a} :: VirtualNodeRef) Prelude.. Data._Time++-- | The name of the service mesh that the virtual node resides in.+virtualNodeRef_meshName :: Lens.Lens' VirtualNodeRef Prelude.Text+virtualNodeRef_meshName = Lens.lens (\VirtualNodeRef' {meshName} -> meshName) (\s@VirtualNodeRef' {} a -> s {meshName = a} :: VirtualNodeRef)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+virtualNodeRef_meshOwner :: Lens.Lens' VirtualNodeRef Prelude.Text+virtualNodeRef_meshOwner = Lens.lens (\VirtualNodeRef' {meshOwner} -> meshOwner) (\s@VirtualNodeRef' {} a -> s {meshOwner = a} :: VirtualNodeRef)++-- | The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+virtualNodeRef_resourceOwner :: Lens.Lens' VirtualNodeRef Prelude.Text+virtualNodeRef_resourceOwner = Lens.lens (\VirtualNodeRef' {resourceOwner} -> resourceOwner) (\s@VirtualNodeRef' {} a -> s {resourceOwner = a} :: VirtualNodeRef)++-- | The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+virtualNodeRef_version :: Lens.Lens' VirtualNodeRef Prelude.Integer+virtualNodeRef_version = Lens.lens (\VirtualNodeRef' {version} -> version) (\s@VirtualNodeRef' {} a -> s {version = a} :: VirtualNodeRef)++-- | The name of the virtual node.+virtualNodeRef_virtualNodeName :: Lens.Lens' VirtualNodeRef Prelude.Text+virtualNodeRef_virtualNodeName = Lens.lens (\VirtualNodeRef' {virtualNodeName} -> virtualNodeName) (\s@VirtualNodeRef' {} a -> s {virtualNodeName = a} :: VirtualNodeRef)++instance Data.FromJSON VirtualNodeRef where+  parseJSON =+    Data.withObject+      "VirtualNodeRef"+      ( \x ->+          VirtualNodeRef'+            Prelude.<$> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdAt")+            Prelude.<*> (x Data..: "lastUpdatedAt")+            Prelude.<*> (x Data..: "meshName")+            Prelude.<*> (x Data..: "meshOwner")+            Prelude.<*> (x Data..: "resourceOwner")+            Prelude.<*> (x Data..: "version")+            Prelude.<*> (x Data..: "virtualNodeName")+      )++instance Prelude.Hashable VirtualNodeRef where+  hashWithSalt _salt VirtualNodeRef' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` resourceOwner+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` virtualNodeName++instance Prelude.NFData VirtualNodeRef where+  rnf VirtualNodeRef' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf resourceOwner+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf virtualNodeName
+ gen/Amazonka/AppMesh/Types/VirtualNodeServiceProvider.hs view
@@ -0,0 +1,83 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualNodeServiceProvider+-- 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.AppMesh.Types.VirtualNodeServiceProvider where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual node service provider.+--+-- /See:/ 'newVirtualNodeServiceProvider' smart constructor.+data VirtualNodeServiceProvider = VirtualNodeServiceProvider'+  { -- | The name of the virtual node that is acting as a service provider.+    virtualNodeName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualNodeServiceProvider' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'virtualNodeName', 'virtualNodeServiceProvider_virtualNodeName' - The name of the virtual node that is acting as a service provider.+newVirtualNodeServiceProvider ::+  -- | 'virtualNodeName'+  Prelude.Text ->+  VirtualNodeServiceProvider+newVirtualNodeServiceProvider pVirtualNodeName_ =+  VirtualNodeServiceProvider'+    { virtualNodeName =+        pVirtualNodeName_+    }++-- | The name of the virtual node that is acting as a service provider.+virtualNodeServiceProvider_virtualNodeName :: Lens.Lens' VirtualNodeServiceProvider Prelude.Text+virtualNodeServiceProvider_virtualNodeName = Lens.lens (\VirtualNodeServiceProvider' {virtualNodeName} -> virtualNodeName) (\s@VirtualNodeServiceProvider' {} a -> s {virtualNodeName = a} :: VirtualNodeServiceProvider)++instance Data.FromJSON VirtualNodeServiceProvider where+  parseJSON =+    Data.withObject+      "VirtualNodeServiceProvider"+      ( \x ->+          VirtualNodeServiceProvider'+            Prelude.<$> (x Data..: "virtualNodeName")+      )++instance Prelude.Hashable VirtualNodeServiceProvider where+  hashWithSalt _salt VirtualNodeServiceProvider' {..} =+    _salt `Prelude.hashWithSalt` virtualNodeName++instance Prelude.NFData VirtualNodeServiceProvider where+  rnf VirtualNodeServiceProvider' {..} =+    Prelude.rnf virtualNodeName++instance Data.ToJSON VirtualNodeServiceProvider where+  toJSON VirtualNodeServiceProvider' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("virtualNodeName" Data..= virtualNodeName)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualNodeSpec.hs view
@@ -0,0 +1,157 @@+{-# 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.AppMesh.Types.VirtualNodeSpec+-- 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.AppMesh.Types.VirtualNodeSpec where++import Amazonka.AppMesh.Types.Backend+import Amazonka.AppMesh.Types.BackendDefaults+import Amazonka.AppMesh.Types.Listener+import Amazonka.AppMesh.Types.Logging+import Amazonka.AppMesh.Types.ServiceDiscovery+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the specification of a virtual node.+--+-- /See:/ 'newVirtualNodeSpec' smart constructor.+data VirtualNodeSpec = VirtualNodeSpec'+  { -- | A reference to an object that represents the defaults for backends.+    backendDefaults :: Prelude.Maybe BackendDefaults,+    -- | The backends that the virtual node is expected to send outbound traffic+    -- to.+    backends :: Prelude.Maybe [Backend],+    -- | The listener that the virtual node is expected to receive inbound+    -- traffic from. You can specify one listener.+    listeners :: Prelude.Maybe [Listener],+    -- | The inbound and outbound access logging information for the virtual+    -- node.+    logging :: Prelude.Maybe Logging,+    -- | The service discovery information for the virtual node. If your virtual+    -- node does not expect ingress traffic, you can omit this parameter. If+    -- you specify a @listener@, then you must specify service discovery+    -- information.+    serviceDiscovery :: Prelude.Maybe ServiceDiscovery+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualNodeSpec' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'backendDefaults', 'virtualNodeSpec_backendDefaults' - A reference to an object that represents the defaults for backends.+--+-- 'backends', 'virtualNodeSpec_backends' - The backends that the virtual node is expected to send outbound traffic+-- to.+--+-- 'listeners', 'virtualNodeSpec_listeners' - The listener that the virtual node is expected to receive inbound+-- traffic from. You can specify one listener.+--+-- 'logging', 'virtualNodeSpec_logging' - The inbound and outbound access logging information for the virtual+-- node.+--+-- 'serviceDiscovery', 'virtualNodeSpec_serviceDiscovery' - The service discovery information for the virtual node. If your virtual+-- node does not expect ingress traffic, you can omit this parameter. If+-- you specify a @listener@, then you must specify service discovery+-- information.+newVirtualNodeSpec ::+  VirtualNodeSpec+newVirtualNodeSpec =+  VirtualNodeSpec'+    { backendDefaults = Prelude.Nothing,+      backends = Prelude.Nothing,+      listeners = Prelude.Nothing,+      logging = Prelude.Nothing,+      serviceDiscovery = Prelude.Nothing+    }++-- | A reference to an object that represents the defaults for backends.+virtualNodeSpec_backendDefaults :: Lens.Lens' VirtualNodeSpec (Prelude.Maybe BackendDefaults)+virtualNodeSpec_backendDefaults = Lens.lens (\VirtualNodeSpec' {backendDefaults} -> backendDefaults) (\s@VirtualNodeSpec' {} a -> s {backendDefaults = a} :: VirtualNodeSpec)++-- | The backends that the virtual node is expected to send outbound traffic+-- to.+virtualNodeSpec_backends :: Lens.Lens' VirtualNodeSpec (Prelude.Maybe [Backend])+virtualNodeSpec_backends = Lens.lens (\VirtualNodeSpec' {backends} -> backends) (\s@VirtualNodeSpec' {} a -> s {backends = a} :: VirtualNodeSpec) Prelude.. Lens.mapping Lens.coerced++-- | The listener that the virtual node is expected to receive inbound+-- traffic from. You can specify one listener.+virtualNodeSpec_listeners :: Lens.Lens' VirtualNodeSpec (Prelude.Maybe [Listener])+virtualNodeSpec_listeners = Lens.lens (\VirtualNodeSpec' {listeners} -> listeners) (\s@VirtualNodeSpec' {} a -> s {listeners = a} :: VirtualNodeSpec) Prelude.. Lens.mapping Lens.coerced++-- | The inbound and outbound access logging information for the virtual+-- node.+virtualNodeSpec_logging :: Lens.Lens' VirtualNodeSpec (Prelude.Maybe Logging)+virtualNodeSpec_logging = Lens.lens (\VirtualNodeSpec' {logging} -> logging) (\s@VirtualNodeSpec' {} a -> s {logging = a} :: VirtualNodeSpec)++-- | The service discovery information for the virtual node. If your virtual+-- node does not expect ingress traffic, you can omit this parameter. If+-- you specify a @listener@, then you must specify service discovery+-- information.+virtualNodeSpec_serviceDiscovery :: Lens.Lens' VirtualNodeSpec (Prelude.Maybe ServiceDiscovery)+virtualNodeSpec_serviceDiscovery = Lens.lens (\VirtualNodeSpec' {serviceDiscovery} -> serviceDiscovery) (\s@VirtualNodeSpec' {} a -> s {serviceDiscovery = a} :: VirtualNodeSpec)++instance Data.FromJSON VirtualNodeSpec where+  parseJSON =+    Data.withObject+      "VirtualNodeSpec"+      ( \x ->+          VirtualNodeSpec'+            Prelude.<$> (x Data..:? "backendDefaults")+            Prelude.<*> (x Data..:? "backends" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "listeners" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "logging")+            Prelude.<*> (x Data..:? "serviceDiscovery")+      )++instance Prelude.Hashable VirtualNodeSpec where+  hashWithSalt _salt VirtualNodeSpec' {..} =+    _salt+      `Prelude.hashWithSalt` backendDefaults+      `Prelude.hashWithSalt` backends+      `Prelude.hashWithSalt` listeners+      `Prelude.hashWithSalt` logging+      `Prelude.hashWithSalt` serviceDiscovery++instance Prelude.NFData VirtualNodeSpec where+  rnf VirtualNodeSpec' {..} =+    Prelude.rnf backendDefaults+      `Prelude.seq` Prelude.rnf backends+      `Prelude.seq` Prelude.rnf listeners+      `Prelude.seq` Prelude.rnf logging+      `Prelude.seq` Prelude.rnf serviceDiscovery++instance Data.ToJSON VirtualNodeSpec where+  toJSON VirtualNodeSpec' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("backendDefaults" Data..=)+              Prelude.<$> backendDefaults,+            ("backends" Data..=) Prelude.<$> backends,+            ("listeners" Data..=) Prelude.<$> listeners,+            ("logging" Data..=) Prelude.<$> logging,+            ("serviceDiscovery" Data..=)+              Prelude.<$> serviceDiscovery+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualNodeStatus.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.AppMesh.Types.VirtualNodeStatus+-- 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.AppMesh.Types.VirtualNodeStatus where++import Amazonka.AppMesh.Types.VirtualNodeStatusCode+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the current status of the virtual node.+--+-- /See:/ 'newVirtualNodeStatus' smart constructor.+data VirtualNodeStatus = VirtualNodeStatus'+  { -- | The current status of the virtual node.+    status :: VirtualNodeStatusCode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualNodeStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'status', 'virtualNodeStatus_status' - The current status of the virtual node.+newVirtualNodeStatus ::+  -- | 'status'+  VirtualNodeStatusCode ->+  VirtualNodeStatus+newVirtualNodeStatus pStatus_ =+  VirtualNodeStatus' {status = pStatus_}++-- | The current status of the virtual node.+virtualNodeStatus_status :: Lens.Lens' VirtualNodeStatus VirtualNodeStatusCode+virtualNodeStatus_status = Lens.lens (\VirtualNodeStatus' {status} -> status) (\s@VirtualNodeStatus' {} a -> s {status = a} :: VirtualNodeStatus)++instance Data.FromJSON VirtualNodeStatus where+  parseJSON =+    Data.withObject+      "VirtualNodeStatus"+      ( \x ->+          VirtualNodeStatus' Prelude.<$> (x Data..: "status")+      )++instance Prelude.Hashable VirtualNodeStatus where+  hashWithSalt _salt VirtualNodeStatus' {..} =+    _salt `Prelude.hashWithSalt` status++instance Prelude.NFData VirtualNodeStatus where+  rnf VirtualNodeStatus' {..} = Prelude.rnf status
+ gen/Amazonka/AppMesh/Types/VirtualNodeStatusCode.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualNodeStatusCode+-- 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.AppMesh.Types.VirtualNodeStatusCode+  ( VirtualNodeStatusCode+      ( ..,+        VirtualNodeStatusCode_ACTIVE,+        VirtualNodeStatusCode_DELETED,+        VirtualNodeStatusCode_INACTIVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype VirtualNodeStatusCode = VirtualNodeStatusCode'+  { fromVirtualNodeStatusCode ::+      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 VirtualNodeStatusCode_ACTIVE :: VirtualNodeStatusCode+pattern VirtualNodeStatusCode_ACTIVE = VirtualNodeStatusCode' "ACTIVE"++pattern VirtualNodeStatusCode_DELETED :: VirtualNodeStatusCode+pattern VirtualNodeStatusCode_DELETED = VirtualNodeStatusCode' "DELETED"++pattern VirtualNodeStatusCode_INACTIVE :: VirtualNodeStatusCode+pattern VirtualNodeStatusCode_INACTIVE = VirtualNodeStatusCode' "INACTIVE"++{-# COMPLETE+  VirtualNodeStatusCode_ACTIVE,+  VirtualNodeStatusCode_DELETED,+  VirtualNodeStatusCode_INACTIVE,+  VirtualNodeStatusCode'+  #-}
+ gen/Amazonka/AppMesh/Types/VirtualNodeTcpConnectionPool.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualNodeTcpConnectionPool+-- 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.AppMesh.Types.VirtualNodeTcpConnectionPool where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a type of connection pool.+--+-- /See:/ 'newVirtualNodeTcpConnectionPool' smart constructor.+data VirtualNodeTcpConnectionPool = VirtualNodeTcpConnectionPool'+  { -- | Maximum number of outbound TCP connections Envoy can establish+    -- concurrently with all hosts in upstream cluster.+    maxConnections :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualNodeTcpConnectionPool' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxConnections', 'virtualNodeTcpConnectionPool_maxConnections' - Maximum number of outbound TCP connections Envoy can establish+-- concurrently with all hosts in upstream cluster.+newVirtualNodeTcpConnectionPool ::+  -- | 'maxConnections'+  Prelude.Natural ->+  VirtualNodeTcpConnectionPool+newVirtualNodeTcpConnectionPool pMaxConnections_ =+  VirtualNodeTcpConnectionPool'+    { maxConnections =+        pMaxConnections_+    }++-- | Maximum number of outbound TCP connections Envoy can establish+-- concurrently with all hosts in upstream cluster.+virtualNodeTcpConnectionPool_maxConnections :: Lens.Lens' VirtualNodeTcpConnectionPool Prelude.Natural+virtualNodeTcpConnectionPool_maxConnections = Lens.lens (\VirtualNodeTcpConnectionPool' {maxConnections} -> maxConnections) (\s@VirtualNodeTcpConnectionPool' {} a -> s {maxConnections = a} :: VirtualNodeTcpConnectionPool)++instance Data.FromJSON VirtualNodeTcpConnectionPool where+  parseJSON =+    Data.withObject+      "VirtualNodeTcpConnectionPool"+      ( \x ->+          VirtualNodeTcpConnectionPool'+            Prelude.<$> (x Data..: "maxConnections")+      )++instance+  Prelude.Hashable+    VirtualNodeTcpConnectionPool+  where+  hashWithSalt _salt VirtualNodeTcpConnectionPool' {..} =+    _salt `Prelude.hashWithSalt` maxConnections++instance Prelude.NFData VirtualNodeTcpConnectionPool where+  rnf VirtualNodeTcpConnectionPool' {..} =+    Prelude.rnf maxConnections++instance Data.ToJSON VirtualNodeTcpConnectionPool where+  toJSON VirtualNodeTcpConnectionPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("maxConnections" Data..= maxConnections)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualRouterData.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.AppMesh.Types.VirtualRouterData+-- 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.AppMesh.Types.VirtualRouterData where++import Amazonka.AppMesh.Types.ResourceMetadata+import Amazonka.AppMesh.Types.VirtualRouterSpec+import Amazonka.AppMesh.Types.VirtualRouterStatus+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual router returned by a describe+-- operation.+--+-- /See:/ 'newVirtualRouterData' smart constructor.+data VirtualRouterData = VirtualRouterData'+  { -- | The name of the service mesh that the virtual router resides in.+    meshName :: Prelude.Text,+    -- | The associated metadata for the virtual router.+    metadata :: ResourceMetadata,+    -- | The specifications of the virtual router.+    spec :: VirtualRouterSpec,+    -- | The current status of the virtual router.+    status :: VirtualRouterStatus,+    -- | The name of the virtual router.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualRouterData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshName', 'virtualRouterData_meshName' - The name of the service mesh that the virtual router resides in.+--+-- 'metadata', 'virtualRouterData_metadata' - The associated metadata for the virtual router.+--+-- 'spec', 'virtualRouterData_spec' - The specifications of the virtual router.+--+-- 'status', 'virtualRouterData_status' - The current status of the virtual router.+--+-- 'virtualRouterName', 'virtualRouterData_virtualRouterName' - The name of the virtual router.+newVirtualRouterData ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'metadata'+  ResourceMetadata ->+  -- | 'spec'+  VirtualRouterSpec ->+  -- | 'status'+  VirtualRouterStatus ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  VirtualRouterData+newVirtualRouterData+  pMeshName_+  pMetadata_+  pSpec_+  pStatus_+  pVirtualRouterName_ =+    VirtualRouterData'+      { meshName = pMeshName_,+        metadata = pMetadata_,+        spec = pSpec_,+        status = pStatus_,+        virtualRouterName = pVirtualRouterName_+      }++-- | The name of the service mesh that the virtual router resides in.+virtualRouterData_meshName :: Lens.Lens' VirtualRouterData Prelude.Text+virtualRouterData_meshName = Lens.lens (\VirtualRouterData' {meshName} -> meshName) (\s@VirtualRouterData' {} a -> s {meshName = a} :: VirtualRouterData)++-- | The associated metadata for the virtual router.+virtualRouterData_metadata :: Lens.Lens' VirtualRouterData ResourceMetadata+virtualRouterData_metadata = Lens.lens (\VirtualRouterData' {metadata} -> metadata) (\s@VirtualRouterData' {} a -> s {metadata = a} :: VirtualRouterData)++-- | The specifications of the virtual router.+virtualRouterData_spec :: Lens.Lens' VirtualRouterData VirtualRouterSpec+virtualRouterData_spec = Lens.lens (\VirtualRouterData' {spec} -> spec) (\s@VirtualRouterData' {} a -> s {spec = a} :: VirtualRouterData)++-- | The current status of the virtual router.+virtualRouterData_status :: Lens.Lens' VirtualRouterData VirtualRouterStatus+virtualRouterData_status = Lens.lens (\VirtualRouterData' {status} -> status) (\s@VirtualRouterData' {} a -> s {status = a} :: VirtualRouterData)++-- | The name of the virtual router.+virtualRouterData_virtualRouterName :: Lens.Lens' VirtualRouterData Prelude.Text+virtualRouterData_virtualRouterName = Lens.lens (\VirtualRouterData' {virtualRouterName} -> virtualRouterName) (\s@VirtualRouterData' {} a -> s {virtualRouterName = a} :: VirtualRouterData)++instance Data.FromJSON VirtualRouterData where+  parseJSON =+    Data.withObject+      "VirtualRouterData"+      ( \x ->+          VirtualRouterData'+            Prelude.<$> (x Data..: "meshName")+            Prelude.<*> (x Data..: "metadata")+            Prelude.<*> (x Data..: "spec")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..: "virtualRouterName")+      )++instance Prelude.Hashable VirtualRouterData where+  hashWithSalt _salt VirtualRouterData' {..} =+    _salt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData VirtualRouterData where+  rnf VirtualRouterData' {..} =+    Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf virtualRouterName
+ gen/Amazonka/AppMesh/Types/VirtualRouterListener.hs view
@@ -0,0 +1,78 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualRouterListener+-- 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.AppMesh.Types.VirtualRouterListener where++import Amazonka.AppMesh.Types.PortMapping+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual router listener.+--+-- /See:/ 'newVirtualRouterListener' smart constructor.+data VirtualRouterListener = VirtualRouterListener'+  { portMapping :: PortMapping+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualRouterListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'portMapping', 'virtualRouterListener_portMapping' - Undocumented member.+newVirtualRouterListener ::+  -- | 'portMapping'+  PortMapping ->+  VirtualRouterListener+newVirtualRouterListener pPortMapping_ =+  VirtualRouterListener' {portMapping = pPortMapping_}++-- | Undocumented member.+virtualRouterListener_portMapping :: Lens.Lens' VirtualRouterListener PortMapping+virtualRouterListener_portMapping = Lens.lens (\VirtualRouterListener' {portMapping} -> portMapping) (\s@VirtualRouterListener' {} a -> s {portMapping = a} :: VirtualRouterListener)++instance Data.FromJSON VirtualRouterListener where+  parseJSON =+    Data.withObject+      "VirtualRouterListener"+      ( \x ->+          VirtualRouterListener'+            Prelude.<$> (x Data..: "portMapping")+      )++instance Prelude.Hashable VirtualRouterListener where+  hashWithSalt _salt VirtualRouterListener' {..} =+    _salt `Prelude.hashWithSalt` portMapping++instance Prelude.NFData VirtualRouterListener where+  rnf VirtualRouterListener' {..} =+    Prelude.rnf portMapping++instance Data.ToJSON VirtualRouterListener where+  toJSON VirtualRouterListener' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("portMapping" Data..= portMapping)]+      )
+ gen/Amazonka/AppMesh/Types/VirtualRouterRef.hs view
@@ -0,0 +1,207 @@+{-# 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.AppMesh.Types.VirtualRouterRef+-- 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.AppMesh.Types.VirtualRouterRef where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual router returned by a list operation.+--+-- /See:/ 'newVirtualRouterRef' smart constructor.+data VirtualRouterRef = VirtualRouterRef'+  { -- | The full Amazon Resource Name (ARN) for the virtual router.+    arn :: Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the resource was created.+    createdAt :: Data.POSIX,+    -- | The Unix epoch timestamp in seconds for when the resource was last+    -- updated.+    lastUpdatedAt :: Data.POSIX,+    -- | The name of the service mesh that the virtual router resides in.+    meshName :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the resource owner. If the+    -- account ID is not your own, then it\'s the ID of the mesh owner or of+    -- another account that the mesh is shared with. For more information about+    -- mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    resourceOwner :: Prelude.Text,+    -- | The version of the resource. Resources are created at version 1, and+    -- this version is incremented each time that they\'re updated.+    version :: Prelude.Integer,+    -- | The name of the virtual router.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualRouterRef' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'virtualRouterRef_arn' - The full Amazon Resource Name (ARN) for the virtual router.+--+-- 'createdAt', 'virtualRouterRef_createdAt' - The Unix epoch timestamp in seconds for when the resource was created.+--+-- 'lastUpdatedAt', 'virtualRouterRef_lastUpdatedAt' - The Unix epoch timestamp in seconds for when the resource was last+-- updated.+--+-- 'meshName', 'virtualRouterRef_meshName' - The name of the service mesh that the virtual router resides in.+--+-- 'meshOwner', 'virtualRouterRef_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'resourceOwner', 'virtualRouterRef_resourceOwner' - The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'version', 'virtualRouterRef_version' - The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+--+-- 'virtualRouterName', 'virtualRouterRef_virtualRouterName' - The name of the virtual router.+newVirtualRouterRef ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'meshOwner'+  Prelude.Text ->+  -- | 'resourceOwner'+  Prelude.Text ->+  -- | 'version'+  Prelude.Integer ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  VirtualRouterRef+newVirtualRouterRef+  pArn_+  pCreatedAt_+  pLastUpdatedAt_+  pMeshName_+  pMeshOwner_+  pResourceOwner_+  pVersion_+  pVirtualRouterName_ =+    VirtualRouterRef'+      { arn = pArn_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_,+        meshName = pMeshName_,+        meshOwner = pMeshOwner_,+        resourceOwner = pResourceOwner_,+        version = pVersion_,+        virtualRouterName = pVirtualRouterName_+      }++-- | The full Amazon Resource Name (ARN) for the virtual router.+virtualRouterRef_arn :: Lens.Lens' VirtualRouterRef Prelude.Text+virtualRouterRef_arn = Lens.lens (\VirtualRouterRef' {arn} -> arn) (\s@VirtualRouterRef' {} a -> s {arn = a} :: VirtualRouterRef)++-- | The Unix epoch timestamp in seconds for when the resource was created.+virtualRouterRef_createdAt :: Lens.Lens' VirtualRouterRef Prelude.UTCTime+virtualRouterRef_createdAt = Lens.lens (\VirtualRouterRef' {createdAt} -> createdAt) (\s@VirtualRouterRef' {} a -> s {createdAt = a} :: VirtualRouterRef) Prelude.. Data._Time++-- | The Unix epoch timestamp in seconds for when the resource was last+-- updated.+virtualRouterRef_lastUpdatedAt :: Lens.Lens' VirtualRouterRef Prelude.UTCTime+virtualRouterRef_lastUpdatedAt = Lens.lens (\VirtualRouterRef' {lastUpdatedAt} -> lastUpdatedAt) (\s@VirtualRouterRef' {} a -> s {lastUpdatedAt = a} :: VirtualRouterRef) Prelude.. Data._Time++-- | The name of the service mesh that the virtual router resides in.+virtualRouterRef_meshName :: Lens.Lens' VirtualRouterRef Prelude.Text+virtualRouterRef_meshName = Lens.lens (\VirtualRouterRef' {meshName} -> meshName) (\s@VirtualRouterRef' {} a -> s {meshName = a} :: VirtualRouterRef)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+virtualRouterRef_meshOwner :: Lens.Lens' VirtualRouterRef Prelude.Text+virtualRouterRef_meshOwner = Lens.lens (\VirtualRouterRef' {meshOwner} -> meshOwner) (\s@VirtualRouterRef' {} a -> s {meshOwner = a} :: VirtualRouterRef)++-- | The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+virtualRouterRef_resourceOwner :: Lens.Lens' VirtualRouterRef Prelude.Text+virtualRouterRef_resourceOwner = Lens.lens (\VirtualRouterRef' {resourceOwner} -> resourceOwner) (\s@VirtualRouterRef' {} a -> s {resourceOwner = a} :: VirtualRouterRef)++-- | The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+virtualRouterRef_version :: Lens.Lens' VirtualRouterRef Prelude.Integer+virtualRouterRef_version = Lens.lens (\VirtualRouterRef' {version} -> version) (\s@VirtualRouterRef' {} a -> s {version = a} :: VirtualRouterRef)++-- | The name of the virtual router.+virtualRouterRef_virtualRouterName :: Lens.Lens' VirtualRouterRef Prelude.Text+virtualRouterRef_virtualRouterName = Lens.lens (\VirtualRouterRef' {virtualRouterName} -> virtualRouterName) (\s@VirtualRouterRef' {} a -> s {virtualRouterName = a} :: VirtualRouterRef)++instance Data.FromJSON VirtualRouterRef where+  parseJSON =+    Data.withObject+      "VirtualRouterRef"+      ( \x ->+          VirtualRouterRef'+            Prelude.<$> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdAt")+            Prelude.<*> (x Data..: "lastUpdatedAt")+            Prelude.<*> (x Data..: "meshName")+            Prelude.<*> (x Data..: "meshOwner")+            Prelude.<*> (x Data..: "resourceOwner")+            Prelude.<*> (x Data..: "version")+            Prelude.<*> (x Data..: "virtualRouterName")+      )++instance Prelude.Hashable VirtualRouterRef where+  hashWithSalt _salt VirtualRouterRef' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` resourceOwner+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData VirtualRouterRef where+  rnf VirtualRouterRef' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf resourceOwner+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf virtualRouterName
+ gen/Amazonka/AppMesh/Types/VirtualRouterServiceProvider.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.AppMesh.Types.VirtualRouterServiceProvider+-- 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.AppMesh.Types.VirtualRouterServiceProvider where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual node service provider.+--+-- /See:/ 'newVirtualRouterServiceProvider' smart constructor.+data VirtualRouterServiceProvider = VirtualRouterServiceProvider'+  { -- | The name of the virtual router that is acting as a service provider.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualRouterServiceProvider' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'virtualRouterName', 'virtualRouterServiceProvider_virtualRouterName' - The name of the virtual router that is acting as a service provider.+newVirtualRouterServiceProvider ::+  -- | 'virtualRouterName'+  Prelude.Text ->+  VirtualRouterServiceProvider+newVirtualRouterServiceProvider pVirtualRouterName_ =+  VirtualRouterServiceProvider'+    { virtualRouterName =+        pVirtualRouterName_+    }++-- | The name of the virtual router that is acting as a service provider.+virtualRouterServiceProvider_virtualRouterName :: Lens.Lens' VirtualRouterServiceProvider Prelude.Text+virtualRouterServiceProvider_virtualRouterName = Lens.lens (\VirtualRouterServiceProvider' {virtualRouterName} -> virtualRouterName) (\s@VirtualRouterServiceProvider' {} a -> s {virtualRouterName = a} :: VirtualRouterServiceProvider)++instance Data.FromJSON VirtualRouterServiceProvider where+  parseJSON =+    Data.withObject+      "VirtualRouterServiceProvider"+      ( \x ->+          VirtualRouterServiceProvider'+            Prelude.<$> (x Data..: "virtualRouterName")+      )++instance+  Prelude.Hashable+    VirtualRouterServiceProvider+  where+  hashWithSalt _salt VirtualRouterServiceProvider' {..} =+    _salt `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData VirtualRouterServiceProvider where+  rnf VirtualRouterServiceProvider' {..} =+    Prelude.rnf virtualRouterName++instance Data.ToJSON VirtualRouterServiceProvider where+  toJSON VirtualRouterServiceProvider' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("virtualRouterName" Data..= virtualRouterName)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualRouterSpec.hs view
@@ -0,0 +1,79 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualRouterSpec+-- 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.AppMesh.Types.VirtualRouterSpec where++import Amazonka.AppMesh.Types.VirtualRouterListener+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the specification of a virtual router.+--+-- /See:/ 'newVirtualRouterSpec' smart constructor.+data VirtualRouterSpec = VirtualRouterSpec'+  { -- | The listeners that the virtual router is expected to receive inbound+    -- traffic from. You can specify one listener.+    listeners :: Prelude.Maybe [VirtualRouterListener]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualRouterSpec' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listeners', 'virtualRouterSpec_listeners' - The listeners that the virtual router is expected to receive inbound+-- traffic from. You can specify one listener.+newVirtualRouterSpec ::+  VirtualRouterSpec+newVirtualRouterSpec =+  VirtualRouterSpec' {listeners = Prelude.Nothing}++-- | The listeners that the virtual router is expected to receive inbound+-- traffic from. You can specify one listener.+virtualRouterSpec_listeners :: Lens.Lens' VirtualRouterSpec (Prelude.Maybe [VirtualRouterListener])+virtualRouterSpec_listeners = Lens.lens (\VirtualRouterSpec' {listeners} -> listeners) (\s@VirtualRouterSpec' {} a -> s {listeners = a} :: VirtualRouterSpec) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON VirtualRouterSpec where+  parseJSON =+    Data.withObject+      "VirtualRouterSpec"+      ( \x ->+          VirtualRouterSpec'+            Prelude.<$> (x Data..:? "listeners" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable VirtualRouterSpec where+  hashWithSalt _salt VirtualRouterSpec' {..} =+    _salt `Prelude.hashWithSalt` listeners++instance Prelude.NFData VirtualRouterSpec where+  rnf VirtualRouterSpec' {..} = Prelude.rnf listeners++instance Data.ToJSON VirtualRouterSpec where+  toJSON VirtualRouterSpec' {..} =+    Data.object+      ( Prelude.catMaybes+          [("listeners" Data..=) Prelude.<$> listeners]+      )
+ gen/Amazonka/AppMesh/Types/VirtualRouterStatus.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualRouterStatus+-- 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.AppMesh.Types.VirtualRouterStatus where++import Amazonka.AppMesh.Types.VirtualRouterStatusCode+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the status of a virtual router.+--+-- /See:/ 'newVirtualRouterStatus' smart constructor.+data VirtualRouterStatus = VirtualRouterStatus'+  { -- | The current status of the virtual router.+    status :: VirtualRouterStatusCode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualRouterStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'status', 'virtualRouterStatus_status' - The current status of the virtual router.+newVirtualRouterStatus ::+  -- | 'status'+  VirtualRouterStatusCode ->+  VirtualRouterStatus+newVirtualRouterStatus pStatus_ =+  VirtualRouterStatus' {status = pStatus_}++-- | The current status of the virtual router.+virtualRouterStatus_status :: Lens.Lens' VirtualRouterStatus VirtualRouterStatusCode+virtualRouterStatus_status = Lens.lens (\VirtualRouterStatus' {status} -> status) (\s@VirtualRouterStatus' {} a -> s {status = a} :: VirtualRouterStatus)++instance Data.FromJSON VirtualRouterStatus where+  parseJSON =+    Data.withObject+      "VirtualRouterStatus"+      ( \x ->+          VirtualRouterStatus'+            Prelude.<$> (x Data..: "status")+      )++instance Prelude.Hashable VirtualRouterStatus where+  hashWithSalt _salt VirtualRouterStatus' {..} =+    _salt `Prelude.hashWithSalt` status++instance Prelude.NFData VirtualRouterStatus where+  rnf VirtualRouterStatus' {..} = Prelude.rnf status
+ gen/Amazonka/AppMesh/Types/VirtualRouterStatusCode.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualRouterStatusCode+-- 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.AppMesh.Types.VirtualRouterStatusCode+  ( VirtualRouterStatusCode+      ( ..,+        VirtualRouterStatusCode_ACTIVE,+        VirtualRouterStatusCode_DELETED,+        VirtualRouterStatusCode_INACTIVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype VirtualRouterStatusCode = VirtualRouterStatusCode'+  { fromVirtualRouterStatusCode ::+      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 VirtualRouterStatusCode_ACTIVE :: VirtualRouterStatusCode+pattern VirtualRouterStatusCode_ACTIVE = VirtualRouterStatusCode' "ACTIVE"++pattern VirtualRouterStatusCode_DELETED :: VirtualRouterStatusCode+pattern VirtualRouterStatusCode_DELETED = VirtualRouterStatusCode' "DELETED"++pattern VirtualRouterStatusCode_INACTIVE :: VirtualRouterStatusCode+pattern VirtualRouterStatusCode_INACTIVE = VirtualRouterStatusCode' "INACTIVE"++{-# COMPLETE+  VirtualRouterStatusCode_ACTIVE,+  VirtualRouterStatusCode_DELETED,+  VirtualRouterStatusCode_INACTIVE,+  VirtualRouterStatusCode'+  #-}
+ gen/Amazonka/AppMesh/Types/VirtualServiceBackend.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualServiceBackend+-- 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.AppMesh.Types.VirtualServiceBackend where++import Amazonka.AppMesh.Types.ClientPolicy+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual service backend for a virtual node.+--+-- /See:/ 'newVirtualServiceBackend' smart constructor.+data VirtualServiceBackend = VirtualServiceBackend'+  { -- | A reference to an object that represents the client policy for a+    -- backend.+    clientPolicy :: Prelude.Maybe ClientPolicy,+    -- | The name of the virtual service that is acting as a virtual node+    -- backend.+    virtualServiceName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualServiceBackend' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientPolicy', 'virtualServiceBackend_clientPolicy' - A reference to an object that represents the client policy for a+-- backend.+--+-- 'virtualServiceName', 'virtualServiceBackend_virtualServiceName' - The name of the virtual service that is acting as a virtual node+-- backend.+newVirtualServiceBackend ::+  -- | 'virtualServiceName'+  Prelude.Text ->+  VirtualServiceBackend+newVirtualServiceBackend pVirtualServiceName_ =+  VirtualServiceBackend'+    { clientPolicy =+        Prelude.Nothing,+      virtualServiceName = pVirtualServiceName_+    }++-- | A reference to an object that represents the client policy for a+-- backend.+virtualServiceBackend_clientPolicy :: Lens.Lens' VirtualServiceBackend (Prelude.Maybe ClientPolicy)+virtualServiceBackend_clientPolicy = Lens.lens (\VirtualServiceBackend' {clientPolicy} -> clientPolicy) (\s@VirtualServiceBackend' {} a -> s {clientPolicy = a} :: VirtualServiceBackend)++-- | The name of the virtual service that is acting as a virtual node+-- backend.+virtualServiceBackend_virtualServiceName :: Lens.Lens' VirtualServiceBackend Prelude.Text+virtualServiceBackend_virtualServiceName = Lens.lens (\VirtualServiceBackend' {virtualServiceName} -> virtualServiceName) (\s@VirtualServiceBackend' {} a -> s {virtualServiceName = a} :: VirtualServiceBackend)++instance Data.FromJSON VirtualServiceBackend where+  parseJSON =+    Data.withObject+      "VirtualServiceBackend"+      ( \x ->+          VirtualServiceBackend'+            Prelude.<$> (x Data..:? "clientPolicy")+            Prelude.<*> (x Data..: "virtualServiceName")+      )++instance Prelude.Hashable VirtualServiceBackend where+  hashWithSalt _salt VirtualServiceBackend' {..} =+    _salt+      `Prelude.hashWithSalt` clientPolicy+      `Prelude.hashWithSalt` virtualServiceName++instance Prelude.NFData VirtualServiceBackend where+  rnf VirtualServiceBackend' {..} =+    Prelude.rnf clientPolicy+      `Prelude.seq` Prelude.rnf virtualServiceName++instance Data.ToJSON VirtualServiceBackend where+  toJSON VirtualServiceBackend' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientPolicy" Data..=) Prelude.<$> clientPolicy,+            Prelude.Just+              ("virtualServiceName" Data..= virtualServiceName)+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualServiceData.hs view
@@ -0,0 +1,138 @@+{-# 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.AppMesh.Types.VirtualServiceData+-- 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.AppMesh.Types.VirtualServiceData where++import Amazonka.AppMesh.Types.ResourceMetadata+import Amazonka.AppMesh.Types.VirtualServiceSpec+import Amazonka.AppMesh.Types.VirtualServiceStatus+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual service returned by a describe+-- operation.+--+-- /See:/ 'newVirtualServiceData' smart constructor.+data VirtualServiceData = VirtualServiceData'+  { -- | The name of the service mesh that the virtual service resides in.+    meshName :: Prelude.Text,+    metadata :: ResourceMetadata,+    -- | The specifications of the virtual service.+    spec :: VirtualServiceSpec,+    -- | The current status of the virtual service.+    status :: VirtualServiceStatus,+    -- | The name of the virtual service.+    virtualServiceName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualServiceData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'meshName', 'virtualServiceData_meshName' - The name of the service mesh that the virtual service resides in.+--+-- 'metadata', 'virtualServiceData_metadata' - Undocumented member.+--+-- 'spec', 'virtualServiceData_spec' - The specifications of the virtual service.+--+-- 'status', 'virtualServiceData_status' - The current status of the virtual service.+--+-- 'virtualServiceName', 'virtualServiceData_virtualServiceName' - The name of the virtual service.+newVirtualServiceData ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'metadata'+  ResourceMetadata ->+  -- | 'spec'+  VirtualServiceSpec ->+  -- | 'status'+  VirtualServiceStatus ->+  -- | 'virtualServiceName'+  Prelude.Text ->+  VirtualServiceData+newVirtualServiceData+  pMeshName_+  pMetadata_+  pSpec_+  pStatus_+  pVirtualServiceName_ =+    VirtualServiceData'+      { meshName = pMeshName_,+        metadata = pMetadata_,+        spec = pSpec_,+        status = pStatus_,+        virtualServiceName = pVirtualServiceName_+      }++-- | The name of the service mesh that the virtual service resides in.+virtualServiceData_meshName :: Lens.Lens' VirtualServiceData Prelude.Text+virtualServiceData_meshName = Lens.lens (\VirtualServiceData' {meshName} -> meshName) (\s@VirtualServiceData' {} a -> s {meshName = a} :: VirtualServiceData)++-- | Undocumented member.+virtualServiceData_metadata :: Lens.Lens' VirtualServiceData ResourceMetadata+virtualServiceData_metadata = Lens.lens (\VirtualServiceData' {metadata} -> metadata) (\s@VirtualServiceData' {} a -> s {metadata = a} :: VirtualServiceData)++-- | The specifications of the virtual service.+virtualServiceData_spec :: Lens.Lens' VirtualServiceData VirtualServiceSpec+virtualServiceData_spec = Lens.lens (\VirtualServiceData' {spec} -> spec) (\s@VirtualServiceData' {} a -> s {spec = a} :: VirtualServiceData)++-- | The current status of the virtual service.+virtualServiceData_status :: Lens.Lens' VirtualServiceData VirtualServiceStatus+virtualServiceData_status = Lens.lens (\VirtualServiceData' {status} -> status) (\s@VirtualServiceData' {} a -> s {status = a} :: VirtualServiceData)++-- | The name of the virtual service.+virtualServiceData_virtualServiceName :: Lens.Lens' VirtualServiceData Prelude.Text+virtualServiceData_virtualServiceName = Lens.lens (\VirtualServiceData' {virtualServiceName} -> virtualServiceName) (\s@VirtualServiceData' {} a -> s {virtualServiceName = a} :: VirtualServiceData)++instance Data.FromJSON VirtualServiceData where+  parseJSON =+    Data.withObject+      "VirtualServiceData"+      ( \x ->+          VirtualServiceData'+            Prelude.<$> (x Data..: "meshName")+            Prelude.<*> (x Data..: "metadata")+            Prelude.<*> (x Data..: "spec")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..: "virtualServiceName")+      )++instance Prelude.Hashable VirtualServiceData where+  hashWithSalt _salt VirtualServiceData' {..} =+    _salt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` virtualServiceName++instance Prelude.NFData VirtualServiceData where+  rnf VirtualServiceData' {..} =+    Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf virtualServiceName
+ gen/Amazonka/AppMesh/Types/VirtualServiceProvider.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.AppMesh.Types.VirtualServiceProvider+-- 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.AppMesh.Types.VirtualServiceProvider where++import Amazonka.AppMesh.Types.VirtualNodeServiceProvider+import Amazonka.AppMesh.Types.VirtualRouterServiceProvider+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the provider for a virtual service.+--+-- /See:/ 'newVirtualServiceProvider' smart constructor.+data VirtualServiceProvider = VirtualServiceProvider'+  { -- | The virtual node associated with a virtual service.+    virtualNode :: Prelude.Maybe VirtualNodeServiceProvider,+    -- | The virtual router associated with a virtual service.+    virtualRouter :: Prelude.Maybe VirtualRouterServiceProvider+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualServiceProvider' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'virtualNode', 'virtualServiceProvider_virtualNode' - The virtual node associated with a virtual service.+--+-- 'virtualRouter', 'virtualServiceProvider_virtualRouter' - The virtual router associated with a virtual service.+newVirtualServiceProvider ::+  VirtualServiceProvider+newVirtualServiceProvider =+  VirtualServiceProvider'+    { virtualNode =+        Prelude.Nothing,+      virtualRouter = Prelude.Nothing+    }++-- | The virtual node associated with a virtual service.+virtualServiceProvider_virtualNode :: Lens.Lens' VirtualServiceProvider (Prelude.Maybe VirtualNodeServiceProvider)+virtualServiceProvider_virtualNode = Lens.lens (\VirtualServiceProvider' {virtualNode} -> virtualNode) (\s@VirtualServiceProvider' {} a -> s {virtualNode = a} :: VirtualServiceProvider)++-- | The virtual router associated with a virtual service.+virtualServiceProvider_virtualRouter :: Lens.Lens' VirtualServiceProvider (Prelude.Maybe VirtualRouterServiceProvider)+virtualServiceProvider_virtualRouter = Lens.lens (\VirtualServiceProvider' {virtualRouter} -> virtualRouter) (\s@VirtualServiceProvider' {} a -> s {virtualRouter = a} :: VirtualServiceProvider)++instance Data.FromJSON VirtualServiceProvider where+  parseJSON =+    Data.withObject+      "VirtualServiceProvider"+      ( \x ->+          VirtualServiceProvider'+            Prelude.<$> (x Data..:? "virtualNode")+            Prelude.<*> (x Data..:? "virtualRouter")+      )++instance Prelude.Hashable VirtualServiceProvider where+  hashWithSalt _salt VirtualServiceProvider' {..} =+    _salt+      `Prelude.hashWithSalt` virtualNode+      `Prelude.hashWithSalt` virtualRouter++instance Prelude.NFData VirtualServiceProvider where+  rnf VirtualServiceProvider' {..} =+    Prelude.rnf virtualNode+      `Prelude.seq` Prelude.rnf virtualRouter++instance Data.ToJSON VirtualServiceProvider where+  toJSON VirtualServiceProvider' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("virtualNode" Data..=) Prelude.<$> virtualNode,+            ("virtualRouter" Data..=) Prelude.<$> virtualRouter+          ]+      )
+ gen/Amazonka/AppMesh/Types/VirtualServiceRef.hs view
@@ -0,0 +1,208 @@+{-# 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.AppMesh.Types.VirtualServiceRef+-- 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.AppMesh.Types.VirtualServiceRef where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a virtual service returned by a list+-- operation.+--+-- /See:/ 'newVirtualServiceRef' smart constructor.+data VirtualServiceRef = VirtualServiceRef'+  { -- | The full Amazon Resource Name (ARN) for the virtual service.+    arn :: Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the resource was created.+    createdAt :: Data.POSIX,+    -- | The Unix epoch timestamp in seconds for when the resource was last+    -- updated.+    lastUpdatedAt :: Data.POSIX,+    -- | The name of the service mesh that the virtual service resides in.+    meshName :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the resource owner. If the+    -- account ID is not your own, then it\'s the ID of the mesh owner or of+    -- another account that the mesh is shared with. For more information about+    -- mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    resourceOwner :: Prelude.Text,+    -- | The version of the resource. Resources are created at version 1, and+    -- this version is incremented each time that they\'re updated.+    version :: Prelude.Integer,+    -- | The name of the virtual service.+    virtualServiceName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualServiceRef' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'virtualServiceRef_arn' - The full Amazon Resource Name (ARN) for the virtual service.+--+-- 'createdAt', 'virtualServiceRef_createdAt' - The Unix epoch timestamp in seconds for when the resource was created.+--+-- 'lastUpdatedAt', 'virtualServiceRef_lastUpdatedAt' - The Unix epoch timestamp in seconds for when the resource was last+-- updated.+--+-- 'meshName', 'virtualServiceRef_meshName' - The name of the service mesh that the virtual service resides in.+--+-- 'meshOwner', 'virtualServiceRef_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'resourceOwner', 'virtualServiceRef_resourceOwner' - The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'version', 'virtualServiceRef_version' - The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+--+-- 'virtualServiceName', 'virtualServiceRef_virtualServiceName' - The name of the virtual service.+newVirtualServiceRef ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'createdAt'+  Prelude.UTCTime ->+  -- | 'lastUpdatedAt'+  Prelude.UTCTime ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'meshOwner'+  Prelude.Text ->+  -- | 'resourceOwner'+  Prelude.Text ->+  -- | 'version'+  Prelude.Integer ->+  -- | 'virtualServiceName'+  Prelude.Text ->+  VirtualServiceRef+newVirtualServiceRef+  pArn_+  pCreatedAt_+  pLastUpdatedAt_+  pMeshName_+  pMeshOwner_+  pResourceOwner_+  pVersion_+  pVirtualServiceName_ =+    VirtualServiceRef'+      { arn = pArn_,+        createdAt = Data._Time Lens.# pCreatedAt_,+        lastUpdatedAt = Data._Time Lens.# pLastUpdatedAt_,+        meshName = pMeshName_,+        meshOwner = pMeshOwner_,+        resourceOwner = pResourceOwner_,+        version = pVersion_,+        virtualServiceName = pVirtualServiceName_+      }++-- | The full Amazon Resource Name (ARN) for the virtual service.+virtualServiceRef_arn :: Lens.Lens' VirtualServiceRef Prelude.Text+virtualServiceRef_arn = Lens.lens (\VirtualServiceRef' {arn} -> arn) (\s@VirtualServiceRef' {} a -> s {arn = a} :: VirtualServiceRef)++-- | The Unix epoch timestamp in seconds for when the resource was created.+virtualServiceRef_createdAt :: Lens.Lens' VirtualServiceRef Prelude.UTCTime+virtualServiceRef_createdAt = Lens.lens (\VirtualServiceRef' {createdAt} -> createdAt) (\s@VirtualServiceRef' {} a -> s {createdAt = a} :: VirtualServiceRef) Prelude.. Data._Time++-- | The Unix epoch timestamp in seconds for when the resource was last+-- updated.+virtualServiceRef_lastUpdatedAt :: Lens.Lens' VirtualServiceRef Prelude.UTCTime+virtualServiceRef_lastUpdatedAt = Lens.lens (\VirtualServiceRef' {lastUpdatedAt} -> lastUpdatedAt) (\s@VirtualServiceRef' {} a -> s {lastUpdatedAt = a} :: VirtualServiceRef) Prelude.. Data._Time++-- | The name of the service mesh that the virtual service resides in.+virtualServiceRef_meshName :: Lens.Lens' VirtualServiceRef Prelude.Text+virtualServiceRef_meshName = Lens.lens (\VirtualServiceRef' {meshName} -> meshName) (\s@VirtualServiceRef' {} a -> s {meshName = a} :: VirtualServiceRef)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+virtualServiceRef_meshOwner :: Lens.Lens' VirtualServiceRef Prelude.Text+virtualServiceRef_meshOwner = Lens.lens (\VirtualServiceRef' {meshOwner} -> meshOwner) (\s@VirtualServiceRef' {} a -> s {meshOwner = a} :: VirtualServiceRef)++-- | The Amazon Web Services IAM account ID of the resource owner. If the+-- account ID is not your own, then it\'s the ID of the mesh owner or of+-- another account that the mesh is shared with. For more information about+-- mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+virtualServiceRef_resourceOwner :: Lens.Lens' VirtualServiceRef Prelude.Text+virtualServiceRef_resourceOwner = Lens.lens (\VirtualServiceRef' {resourceOwner} -> resourceOwner) (\s@VirtualServiceRef' {} a -> s {resourceOwner = a} :: VirtualServiceRef)++-- | The version of the resource. Resources are created at version 1, and+-- this version is incremented each time that they\'re updated.+virtualServiceRef_version :: Lens.Lens' VirtualServiceRef Prelude.Integer+virtualServiceRef_version = Lens.lens (\VirtualServiceRef' {version} -> version) (\s@VirtualServiceRef' {} a -> s {version = a} :: VirtualServiceRef)++-- | The name of the virtual service.+virtualServiceRef_virtualServiceName :: Lens.Lens' VirtualServiceRef Prelude.Text+virtualServiceRef_virtualServiceName = Lens.lens (\VirtualServiceRef' {virtualServiceName} -> virtualServiceName) (\s@VirtualServiceRef' {} a -> s {virtualServiceName = a} :: VirtualServiceRef)++instance Data.FromJSON VirtualServiceRef where+  parseJSON =+    Data.withObject+      "VirtualServiceRef"+      ( \x ->+          VirtualServiceRef'+            Prelude.<$> (x Data..: "arn")+            Prelude.<*> (x Data..: "createdAt")+            Prelude.<*> (x Data..: "lastUpdatedAt")+            Prelude.<*> (x Data..: "meshName")+            Prelude.<*> (x Data..: "meshOwner")+            Prelude.<*> (x Data..: "resourceOwner")+            Prelude.<*> (x Data..: "version")+            Prelude.<*> (x Data..: "virtualServiceName")+      )++instance Prelude.Hashable VirtualServiceRef where+  hashWithSalt _salt VirtualServiceRef' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` lastUpdatedAt+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` resourceOwner+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` virtualServiceName++instance Prelude.NFData VirtualServiceRef where+  rnf VirtualServiceRef' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf lastUpdatedAt+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf resourceOwner+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf virtualServiceName
+ gen/Amazonka/AppMesh/Types/VirtualServiceSpec.hs view
@@ -0,0 +1,79 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualServiceSpec+-- 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.AppMesh.Types.VirtualServiceSpec where++import Amazonka.AppMesh.Types.VirtualServiceProvider+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the specification of a virtual service.+--+-- /See:/ 'newVirtualServiceSpec' smart constructor.+data VirtualServiceSpec = VirtualServiceSpec'+  { -- | The App Mesh object that is acting as the provider for a virtual+    -- service. You can specify a single virtual node or virtual router.+    provider :: Prelude.Maybe VirtualServiceProvider+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualServiceSpec' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'provider', 'virtualServiceSpec_provider' - The App Mesh object that is acting as the provider for a virtual+-- service. You can specify a single virtual node or virtual router.+newVirtualServiceSpec ::+  VirtualServiceSpec+newVirtualServiceSpec =+  VirtualServiceSpec' {provider = Prelude.Nothing}++-- | The App Mesh object that is acting as the provider for a virtual+-- service. You can specify a single virtual node or virtual router.+virtualServiceSpec_provider :: Lens.Lens' VirtualServiceSpec (Prelude.Maybe VirtualServiceProvider)+virtualServiceSpec_provider = Lens.lens (\VirtualServiceSpec' {provider} -> provider) (\s@VirtualServiceSpec' {} a -> s {provider = a} :: VirtualServiceSpec)++instance Data.FromJSON VirtualServiceSpec where+  parseJSON =+    Data.withObject+      "VirtualServiceSpec"+      ( \x ->+          VirtualServiceSpec'+            Prelude.<$> (x Data..:? "provider")+      )++instance Prelude.Hashable VirtualServiceSpec where+  hashWithSalt _salt VirtualServiceSpec' {..} =+    _salt `Prelude.hashWithSalt` provider++instance Prelude.NFData VirtualServiceSpec where+  rnf VirtualServiceSpec' {..} = Prelude.rnf provider++instance Data.ToJSON VirtualServiceSpec where+  toJSON VirtualServiceSpec' {..} =+    Data.object+      ( Prelude.catMaybes+          [("provider" Data..=) Prelude.<$> provider]+      )
+ gen/Amazonka/AppMesh/Types/VirtualServiceStatus.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualServiceStatus+-- 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.AppMesh.Types.VirtualServiceStatus where++import Amazonka.AppMesh.Types.VirtualServiceStatusCode+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents the status of a virtual service.+--+-- /See:/ 'newVirtualServiceStatus' smart constructor.+data VirtualServiceStatus = VirtualServiceStatus'+  { -- | The current status of the virtual service.+    status :: VirtualServiceStatusCode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VirtualServiceStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'status', 'virtualServiceStatus_status' - The current status of the virtual service.+newVirtualServiceStatus ::+  -- | 'status'+  VirtualServiceStatusCode ->+  VirtualServiceStatus+newVirtualServiceStatus pStatus_ =+  VirtualServiceStatus' {status = pStatus_}++-- | The current status of the virtual service.+virtualServiceStatus_status :: Lens.Lens' VirtualServiceStatus VirtualServiceStatusCode+virtualServiceStatus_status = Lens.lens (\VirtualServiceStatus' {status} -> status) (\s@VirtualServiceStatus' {} a -> s {status = a} :: VirtualServiceStatus)++instance Data.FromJSON VirtualServiceStatus where+  parseJSON =+    Data.withObject+      "VirtualServiceStatus"+      ( \x ->+          VirtualServiceStatus'+            Prelude.<$> (x Data..: "status")+      )++instance Prelude.Hashable VirtualServiceStatus where+  hashWithSalt _salt VirtualServiceStatus' {..} =+    _salt `Prelude.hashWithSalt` status++instance Prelude.NFData VirtualServiceStatus where+  rnf VirtualServiceStatus' {..} = Prelude.rnf status
+ gen/Amazonka/AppMesh/Types/VirtualServiceStatusCode.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.VirtualServiceStatusCode+-- 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.AppMesh.Types.VirtualServiceStatusCode+  ( VirtualServiceStatusCode+      ( ..,+        VirtualServiceStatusCode_ACTIVE,+        VirtualServiceStatusCode_DELETED,+        VirtualServiceStatusCode_INACTIVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype VirtualServiceStatusCode = VirtualServiceStatusCode'+  { fromVirtualServiceStatusCode ::+      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 VirtualServiceStatusCode_ACTIVE :: VirtualServiceStatusCode+pattern VirtualServiceStatusCode_ACTIVE = VirtualServiceStatusCode' "ACTIVE"++pattern VirtualServiceStatusCode_DELETED :: VirtualServiceStatusCode+pattern VirtualServiceStatusCode_DELETED = VirtualServiceStatusCode' "DELETED"++pattern VirtualServiceStatusCode_INACTIVE :: VirtualServiceStatusCode+pattern VirtualServiceStatusCode_INACTIVE = VirtualServiceStatusCode' "INACTIVE"++{-# COMPLETE+  VirtualServiceStatusCode_ACTIVE,+  VirtualServiceStatusCode_DELETED,+  VirtualServiceStatusCode_INACTIVE,+  VirtualServiceStatusCode'+  #-}
+ gen/Amazonka/AppMesh/Types/WeightedTarget.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.Types.WeightedTarget+-- 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.AppMesh.Types.WeightedTarget where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that represents a target and its relative weight. Traffic is+-- distributed across targets according to their relative weight. For+-- example, a weighted target with a relative weight of 50 receives five+-- times as much traffic as one with a relative weight of 10. The total+-- weight for all targets combined must be less than or equal to 100.+--+-- /See:/ 'newWeightedTarget' smart constructor.+data WeightedTarget = WeightedTarget'+  { -- | The targeted port of the weighted object.+    port :: Prelude.Maybe Prelude.Natural,+    -- | The virtual node to associate with the weighted target.+    virtualNode :: Prelude.Text,+    -- | The relative weight of the weighted target.+    weight :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'WeightedTarget' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'port', 'weightedTarget_port' - The targeted port of the weighted object.+--+-- 'virtualNode', 'weightedTarget_virtualNode' - The virtual node to associate with the weighted target.+--+-- 'weight', 'weightedTarget_weight' - The relative weight of the weighted target.+newWeightedTarget ::+  -- | 'virtualNode'+  Prelude.Text ->+  -- | 'weight'+  Prelude.Natural ->+  WeightedTarget+newWeightedTarget pVirtualNode_ pWeight_ =+  WeightedTarget'+    { port = Prelude.Nothing,+      virtualNode = pVirtualNode_,+      weight = pWeight_+    }++-- | The targeted port of the weighted object.+weightedTarget_port :: Lens.Lens' WeightedTarget (Prelude.Maybe Prelude.Natural)+weightedTarget_port = Lens.lens (\WeightedTarget' {port} -> port) (\s@WeightedTarget' {} a -> s {port = a} :: WeightedTarget)++-- | The virtual node to associate with the weighted target.+weightedTarget_virtualNode :: Lens.Lens' WeightedTarget Prelude.Text+weightedTarget_virtualNode = Lens.lens (\WeightedTarget' {virtualNode} -> virtualNode) (\s@WeightedTarget' {} a -> s {virtualNode = a} :: WeightedTarget)++-- | The relative weight of the weighted target.+weightedTarget_weight :: Lens.Lens' WeightedTarget Prelude.Natural+weightedTarget_weight = Lens.lens (\WeightedTarget' {weight} -> weight) (\s@WeightedTarget' {} a -> s {weight = a} :: WeightedTarget)++instance Data.FromJSON WeightedTarget where+  parseJSON =+    Data.withObject+      "WeightedTarget"+      ( \x ->+          WeightedTarget'+            Prelude.<$> (x Data..:? "port")+            Prelude.<*> (x Data..: "virtualNode")+            Prelude.<*> (x Data..: "weight")+      )++instance Prelude.Hashable WeightedTarget where+  hashWithSalt _salt WeightedTarget' {..} =+    _salt+      `Prelude.hashWithSalt` port+      `Prelude.hashWithSalt` virtualNode+      `Prelude.hashWithSalt` weight++instance Prelude.NFData WeightedTarget where+  rnf WeightedTarget' {..} =+    Prelude.rnf port+      `Prelude.seq` Prelude.rnf virtualNode+      `Prelude.seq` Prelude.rnf weight++instance Data.ToJSON WeightedTarget where+  toJSON WeightedTarget' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("port" Data..=) Prelude.<$> port,+            Prelude.Just ("virtualNode" Data..= virtualNode),+            Prelude.Just ("weight" Data..= weight)+          ]+      )
+ gen/Amazonka/AppMesh/UntagResource.hs view
@@ -0,0 +1,170 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.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)+--+-- Deletes specified tags from a resource.+module Amazonka.AppMesh.UntagResource+  ( -- * Creating a Request+    UntagResource (..),+    newUntagResource,++    -- * Request Lenses+    untagResource_resourceArn,+    untagResource_tagKeys,++    -- * Destructuring the Response+    UntagResourceResponse (..),+    newUntagResourceResponse,++    -- * Response Lenses+    untagResourceResponse_httpStatus,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The Amazon Resource Name (ARN) of the resource to delete tags from.+    resourceArn :: Prelude.Text,+    -- | The keys of the tags 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 delete tags from.+--+-- 'tagKeys', 'untagResource_tagKeys' - The keys of the tags 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 delete tags from.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The keys of the tags 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.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UntagResource where+  toJSON UntagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("tagKeys" Data..= tagKeys)]+      )++instance Data.ToPath UntagResource where+  toPath = Prelude.const "/v20190125/untag"++instance Data.ToQuery UntagResource where+  toQuery UntagResource' {..} =+    Prelude.mconcat ["resourceArn" Data.=: resourceArn]++-- |+--+-- /See:/ 'newUntagResourceResponse' smart constructor.+data UntagResourceResponse = UntagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.+newUntagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UntagResourceResponse+newUntagResourceResponse pHttpStatus_ =+  UntagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)++instance Prelude.NFData UntagResourceResponse where+  rnf UntagResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/AppMesh/UpdateGatewayRoute.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.AppMesh.UpdateGatewayRoute+-- 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 an existing gateway route that is associated to a specified+-- virtual gateway in a service mesh.+module Amazonka.AppMesh.UpdateGatewayRoute+  ( -- * Creating a Request+    UpdateGatewayRoute (..),+    newUpdateGatewayRoute,++    -- * Request Lenses+    updateGatewayRoute_clientToken,+    updateGatewayRoute_meshOwner,+    updateGatewayRoute_gatewayRouteName,+    updateGatewayRoute_meshName,+    updateGatewayRoute_spec,+    updateGatewayRoute_virtualGatewayName,++    -- * Destructuring the Response+    UpdateGatewayRouteResponse (..),+    newUpdateGatewayRouteResponse,++    -- * Response Lenses+    updateGatewayRouteResponse_httpStatus,+    updateGatewayRouteResponse_gatewayRoute,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateGatewayRoute' smart constructor.+data UpdateGatewayRoute = UpdateGatewayRoute'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the gateway route to update.+    gatewayRouteName :: Prelude.Text,+    -- | The name of the service mesh that the gateway route resides in.+    meshName :: Prelude.Text,+    -- | The new gateway route specification to apply. This overwrites the+    -- existing data.+    spec :: GatewayRouteSpec,+    -- | The name of the virtual gateway that the gateway route is associated+    -- with.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateGatewayRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateGatewayRoute_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'updateGatewayRoute_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'gatewayRouteName', 'updateGatewayRoute_gatewayRouteName' - The name of the gateway route to update.+--+-- 'meshName', 'updateGatewayRoute_meshName' - The name of the service mesh that the gateway route resides in.+--+-- 'spec', 'updateGatewayRoute_spec' - The new gateway route specification to apply. This overwrites the+-- existing data.+--+-- 'virtualGatewayName', 'updateGatewayRoute_virtualGatewayName' - The name of the virtual gateway that the gateway route is associated+-- with.+newUpdateGatewayRoute ::+  -- | 'gatewayRouteName'+  Prelude.Text ->+  -- | 'meshName'+  Prelude.Text ->+  -- | 'spec'+  GatewayRouteSpec ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  UpdateGatewayRoute+newUpdateGatewayRoute+  pGatewayRouteName_+  pMeshName_+  pSpec_+  pVirtualGatewayName_ =+    UpdateGatewayRoute'+      { clientToken = Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        gatewayRouteName = pGatewayRouteName_,+        meshName = pMeshName_,+        spec = pSpec_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+updateGatewayRoute_clientToken :: Lens.Lens' UpdateGatewayRoute (Prelude.Maybe Prelude.Text)+updateGatewayRoute_clientToken = Lens.lens (\UpdateGatewayRoute' {clientToken} -> clientToken) (\s@UpdateGatewayRoute' {} a -> s {clientToken = a} :: UpdateGatewayRoute)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+updateGatewayRoute_meshOwner :: Lens.Lens' UpdateGatewayRoute (Prelude.Maybe Prelude.Text)+updateGatewayRoute_meshOwner = Lens.lens (\UpdateGatewayRoute' {meshOwner} -> meshOwner) (\s@UpdateGatewayRoute' {} a -> s {meshOwner = a} :: UpdateGatewayRoute)++-- | The name of the gateway route to update.+updateGatewayRoute_gatewayRouteName :: Lens.Lens' UpdateGatewayRoute Prelude.Text+updateGatewayRoute_gatewayRouteName = Lens.lens (\UpdateGatewayRoute' {gatewayRouteName} -> gatewayRouteName) (\s@UpdateGatewayRoute' {} a -> s {gatewayRouteName = a} :: UpdateGatewayRoute)++-- | The name of the service mesh that the gateway route resides in.+updateGatewayRoute_meshName :: Lens.Lens' UpdateGatewayRoute Prelude.Text+updateGatewayRoute_meshName = Lens.lens (\UpdateGatewayRoute' {meshName} -> meshName) (\s@UpdateGatewayRoute' {} a -> s {meshName = a} :: UpdateGatewayRoute)++-- | The new gateway route specification to apply. This overwrites the+-- existing data.+updateGatewayRoute_spec :: Lens.Lens' UpdateGatewayRoute GatewayRouteSpec+updateGatewayRoute_spec = Lens.lens (\UpdateGatewayRoute' {spec} -> spec) (\s@UpdateGatewayRoute' {} a -> s {spec = a} :: UpdateGatewayRoute)++-- | The name of the virtual gateway that the gateway route is associated+-- with.+updateGatewayRoute_virtualGatewayName :: Lens.Lens' UpdateGatewayRoute Prelude.Text+updateGatewayRoute_virtualGatewayName = Lens.lens (\UpdateGatewayRoute' {virtualGatewayName} -> virtualGatewayName) (\s@UpdateGatewayRoute' {} a -> s {virtualGatewayName = a} :: UpdateGatewayRoute)++instance Core.AWSRequest UpdateGatewayRoute where+  type+    AWSResponse UpdateGatewayRoute =+      UpdateGatewayRouteResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateGatewayRouteResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable UpdateGatewayRoute where+  hashWithSalt _salt UpdateGatewayRoute' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` gatewayRouteName+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData UpdateGatewayRoute where+  rnf UpdateGatewayRoute' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf gatewayRouteName+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualGatewayName++instance Data.ToHeaders UpdateGatewayRoute where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateGatewayRoute where+  toJSON UpdateGatewayRoute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("spec" Data..= spec)+          ]+      )++instance Data.ToPath UpdateGatewayRoute where+  toPath UpdateGatewayRoute' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualGateway/",+        Data.toBS virtualGatewayName,+        "/gatewayRoutes/",+        Data.toBS gatewayRouteName+      ]++instance Data.ToQuery UpdateGatewayRoute where+  toQuery UpdateGatewayRoute' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- | /See:/ 'newUpdateGatewayRouteResponse' smart constructor.+data UpdateGatewayRouteResponse = UpdateGatewayRouteResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A full description of the gateway route that was updated.+    gatewayRoute :: GatewayRouteData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateGatewayRouteResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateGatewayRouteResponse_httpStatus' - The response's http status code.+--+-- 'gatewayRoute', 'updateGatewayRouteResponse_gatewayRoute' - A full description of the gateway route that was updated.+newUpdateGatewayRouteResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'gatewayRoute'+  GatewayRouteData ->+  UpdateGatewayRouteResponse+newUpdateGatewayRouteResponse+  pHttpStatus_+  pGatewayRoute_ =+    UpdateGatewayRouteResponse'+      { httpStatus =+          pHttpStatus_,+        gatewayRoute = pGatewayRoute_+      }++-- | The response's http status code.+updateGatewayRouteResponse_httpStatus :: Lens.Lens' UpdateGatewayRouteResponse Prelude.Int+updateGatewayRouteResponse_httpStatus = Lens.lens (\UpdateGatewayRouteResponse' {httpStatus} -> httpStatus) (\s@UpdateGatewayRouteResponse' {} a -> s {httpStatus = a} :: UpdateGatewayRouteResponse)++-- | A full description of the gateway route that was updated.+updateGatewayRouteResponse_gatewayRoute :: Lens.Lens' UpdateGatewayRouteResponse GatewayRouteData+updateGatewayRouteResponse_gatewayRoute = Lens.lens (\UpdateGatewayRouteResponse' {gatewayRoute} -> gatewayRoute) (\s@UpdateGatewayRouteResponse' {} a -> s {gatewayRoute = a} :: UpdateGatewayRouteResponse)++instance Prelude.NFData UpdateGatewayRouteResponse where+  rnf UpdateGatewayRouteResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf gatewayRoute
+ gen/Amazonka/AppMesh/UpdateMesh.hs view
@@ -0,0 +1,204 @@+{-# 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.AppMesh.UpdateMesh+-- 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 an existing service mesh.+module Amazonka.AppMesh.UpdateMesh+  ( -- * Creating a Request+    UpdateMesh (..),+    newUpdateMesh,++    -- * Request Lenses+    updateMesh_clientToken,+    updateMesh_spec,+    updateMesh_meshName,++    -- * Destructuring the Response+    UpdateMeshResponse (..),+    newUpdateMeshResponse,++    -- * Response Lenses+    updateMeshResponse_httpStatus,+    updateMeshResponse_mesh,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newUpdateMesh' smart constructor.+data UpdateMesh = UpdateMesh'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The service mesh specification to apply.+    spec :: Prelude.Maybe MeshSpec,+    -- | The name of the service mesh to update.+    meshName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateMesh' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateMesh_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'spec', 'updateMesh_spec' - The service mesh specification to apply.+--+-- 'meshName', 'updateMesh_meshName' - The name of the service mesh to update.+newUpdateMesh ::+  -- | 'meshName'+  Prelude.Text ->+  UpdateMesh+newUpdateMesh pMeshName_ =+  UpdateMesh'+    { clientToken = Prelude.Nothing,+      spec = Prelude.Nothing,+      meshName = pMeshName_+    }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+updateMesh_clientToken :: Lens.Lens' UpdateMesh (Prelude.Maybe Prelude.Text)+updateMesh_clientToken = Lens.lens (\UpdateMesh' {clientToken} -> clientToken) (\s@UpdateMesh' {} a -> s {clientToken = a} :: UpdateMesh)++-- | The service mesh specification to apply.+updateMesh_spec :: Lens.Lens' UpdateMesh (Prelude.Maybe MeshSpec)+updateMesh_spec = Lens.lens (\UpdateMesh' {spec} -> spec) (\s@UpdateMesh' {} a -> s {spec = a} :: UpdateMesh)++-- | The name of the service mesh to update.+updateMesh_meshName :: Lens.Lens' UpdateMesh Prelude.Text+updateMesh_meshName = Lens.lens (\UpdateMesh' {meshName} -> meshName) (\s@UpdateMesh' {} a -> s {meshName = a} :: UpdateMesh)++instance Core.AWSRequest UpdateMesh where+  type AWSResponse UpdateMesh = UpdateMeshResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateMeshResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable UpdateMesh where+  hashWithSalt _salt UpdateMesh' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` meshName++instance Prelude.NFData UpdateMesh where+  rnf UpdateMesh' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf meshName++instance Data.ToHeaders UpdateMesh where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateMesh where+  toJSON UpdateMesh' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("spec" Data..=) Prelude.<$> spec+          ]+      )++instance Data.ToPath UpdateMesh where+  toPath UpdateMesh' {..} =+    Prelude.mconcat+      ["/v20190125/meshes/", Data.toBS meshName]++instance Data.ToQuery UpdateMesh where+  toQuery = Prelude.const Prelude.mempty++-- |+--+-- /See:/ 'newUpdateMeshResponse' smart constructor.+data UpdateMeshResponse = UpdateMeshResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    mesh :: MeshData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateMeshResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateMeshResponse_httpStatus' - The response's http status code.+--+-- 'mesh', 'updateMeshResponse_mesh' - Undocumented member.+newUpdateMeshResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'mesh'+  MeshData ->+  UpdateMeshResponse+newUpdateMeshResponse pHttpStatus_ pMesh_ =+  UpdateMeshResponse'+    { httpStatus = pHttpStatus_,+      mesh = pMesh_+    }++-- | The response's http status code.+updateMeshResponse_httpStatus :: Lens.Lens' UpdateMeshResponse Prelude.Int+updateMeshResponse_httpStatus = Lens.lens (\UpdateMeshResponse' {httpStatus} -> httpStatus) (\s@UpdateMeshResponse' {} a -> s {httpStatus = a} :: UpdateMeshResponse)++-- | Undocumented member.+updateMeshResponse_mesh :: Lens.Lens' UpdateMeshResponse MeshData+updateMeshResponse_mesh = Lens.lens (\UpdateMeshResponse' {mesh} -> mesh) (\s@UpdateMeshResponse' {} a -> s {mesh = a} :: UpdateMeshResponse)++instance Prelude.NFData UpdateMeshResponse where+  rnf UpdateMeshResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf mesh
+ gen/Amazonka/AppMesh/UpdateRoute.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.AppMesh.UpdateRoute+-- 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 an existing route for a specified service mesh and virtual+-- router.+module Amazonka.AppMesh.UpdateRoute+  ( -- * Creating a Request+    UpdateRoute (..),+    newUpdateRoute,++    -- * Request Lenses+    updateRoute_clientToken,+    updateRoute_meshOwner,+    updateRoute_meshName,+    updateRoute_routeName,+    updateRoute_spec,+    updateRoute_virtualRouterName,++    -- * Destructuring the Response+    UpdateRouteResponse (..),+    newUpdateRouteResponse,++    -- * Response Lenses+    updateRouteResponse_httpStatus,+    updateRouteResponse_route,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newUpdateRoute' smart constructor.+data UpdateRoute = UpdateRoute'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh that the route resides in.+    meshName :: Prelude.Text,+    -- | The name of the route to update.+    routeName :: Prelude.Text,+    -- | The new route specification to apply. This overwrites the existing data.+    spec :: RouteSpec,+    -- | The name of the virtual router that the route is associated with.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateRoute_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'updateRoute_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'updateRoute_meshName' - The name of the service mesh that the route resides in.+--+-- 'routeName', 'updateRoute_routeName' - The name of the route to update.+--+-- 'spec', 'updateRoute_spec' - The new route specification to apply. This overwrites the existing data.+--+-- 'virtualRouterName', 'updateRoute_virtualRouterName' - The name of the virtual router that the route is associated with.+newUpdateRoute ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'routeName'+  Prelude.Text ->+  -- | 'spec'+  RouteSpec ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  UpdateRoute+newUpdateRoute+  pMeshName_+  pRouteName_+  pSpec_+  pVirtualRouterName_ =+    UpdateRoute'+      { clientToken = Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        meshName = pMeshName_,+        routeName = pRouteName_,+        spec = pSpec_,+        virtualRouterName = pVirtualRouterName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+updateRoute_clientToken :: Lens.Lens' UpdateRoute (Prelude.Maybe Prelude.Text)+updateRoute_clientToken = Lens.lens (\UpdateRoute' {clientToken} -> clientToken) (\s@UpdateRoute' {} a -> s {clientToken = a} :: UpdateRoute)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+updateRoute_meshOwner :: Lens.Lens' UpdateRoute (Prelude.Maybe Prelude.Text)+updateRoute_meshOwner = Lens.lens (\UpdateRoute' {meshOwner} -> meshOwner) (\s@UpdateRoute' {} a -> s {meshOwner = a} :: UpdateRoute)++-- | The name of the service mesh that the route resides in.+updateRoute_meshName :: Lens.Lens' UpdateRoute Prelude.Text+updateRoute_meshName = Lens.lens (\UpdateRoute' {meshName} -> meshName) (\s@UpdateRoute' {} a -> s {meshName = a} :: UpdateRoute)++-- | The name of the route to update.+updateRoute_routeName :: Lens.Lens' UpdateRoute Prelude.Text+updateRoute_routeName = Lens.lens (\UpdateRoute' {routeName} -> routeName) (\s@UpdateRoute' {} a -> s {routeName = a} :: UpdateRoute)++-- | The new route specification to apply. This overwrites the existing data.+updateRoute_spec :: Lens.Lens' UpdateRoute RouteSpec+updateRoute_spec = Lens.lens (\UpdateRoute' {spec} -> spec) (\s@UpdateRoute' {} a -> s {spec = a} :: UpdateRoute)++-- | The name of the virtual router that the route is associated with.+updateRoute_virtualRouterName :: Lens.Lens' UpdateRoute Prelude.Text+updateRoute_virtualRouterName = Lens.lens (\UpdateRoute' {virtualRouterName} -> virtualRouterName) (\s@UpdateRoute' {} a -> s {virtualRouterName = a} :: UpdateRoute)++instance Core.AWSRequest UpdateRoute where+  type AWSResponse UpdateRoute = UpdateRouteResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateRouteResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable UpdateRoute where+  hashWithSalt _salt UpdateRoute' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` routeName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData UpdateRoute where+  rnf UpdateRoute' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf routeName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualRouterName++instance Data.ToHeaders UpdateRoute where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateRoute where+  toJSON UpdateRoute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("spec" Data..= spec)+          ]+      )++instance Data.ToPath UpdateRoute where+  toPath UpdateRoute' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualRouter/",+        Data.toBS virtualRouterName,+        "/routes/",+        Data.toBS routeName+      ]++instance Data.ToQuery UpdateRoute where+  toQuery UpdateRoute' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newUpdateRouteResponse' smart constructor.+data UpdateRouteResponse = UpdateRouteResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A full description of the route that was updated.+    route :: RouteData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateRouteResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateRouteResponse_httpStatus' - The response's http status code.+--+-- 'route', 'updateRouteResponse_route' - A full description of the route that was updated.+newUpdateRouteResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'route'+  RouteData ->+  UpdateRouteResponse+newUpdateRouteResponse pHttpStatus_ pRoute_ =+  UpdateRouteResponse'+    { httpStatus = pHttpStatus_,+      route = pRoute_+    }++-- | The response's http status code.+updateRouteResponse_httpStatus :: Lens.Lens' UpdateRouteResponse Prelude.Int+updateRouteResponse_httpStatus = Lens.lens (\UpdateRouteResponse' {httpStatus} -> httpStatus) (\s@UpdateRouteResponse' {} a -> s {httpStatus = a} :: UpdateRouteResponse)++-- | A full description of the route that was updated.+updateRouteResponse_route :: Lens.Lens' UpdateRouteResponse RouteData+updateRouteResponse_route = Lens.lens (\UpdateRouteResponse' {route} -> route) (\s@UpdateRouteResponse' {} a -> s {route = a} :: UpdateRouteResponse)++instance Prelude.NFData UpdateRouteResponse where+  rnf UpdateRouteResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf route
+ gen/Amazonka/AppMesh/UpdateVirtualGateway.hs view
@@ -0,0 +1,255 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.AppMesh.UpdateVirtualGateway+-- 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 an existing virtual gateway in a specified service mesh.+module Amazonka.AppMesh.UpdateVirtualGateway+  ( -- * Creating a Request+    UpdateVirtualGateway (..),+    newUpdateVirtualGateway,++    -- * Request Lenses+    updateVirtualGateway_clientToken,+    updateVirtualGateway_meshOwner,+    updateVirtualGateway_meshName,+    updateVirtualGateway_spec,+    updateVirtualGateway_virtualGatewayName,++    -- * Destructuring the Response+    UpdateVirtualGatewayResponse (..),+    newUpdateVirtualGatewayResponse,++    -- * Response Lenses+    updateVirtualGatewayResponse_httpStatus,+    updateVirtualGatewayResponse_virtualGateway,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateVirtualGateway' smart constructor.+data UpdateVirtualGateway = UpdateVirtualGateway'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh that the virtual gateway resides in.+    meshName :: Prelude.Text,+    -- | The new virtual gateway specification to apply. This overwrites the+    -- existing data.+    spec :: VirtualGatewaySpec,+    -- | The name of the virtual gateway to update.+    virtualGatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateVirtualGateway' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateVirtualGateway_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'updateVirtualGateway_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'updateVirtualGateway_meshName' - The name of the service mesh that the virtual gateway resides in.+--+-- 'spec', 'updateVirtualGateway_spec' - The new virtual gateway specification to apply. This overwrites the+-- existing data.+--+-- 'virtualGatewayName', 'updateVirtualGateway_virtualGatewayName' - The name of the virtual gateway to update.+newUpdateVirtualGateway ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'spec'+  VirtualGatewaySpec ->+  -- | 'virtualGatewayName'+  Prelude.Text ->+  UpdateVirtualGateway+newUpdateVirtualGateway+  pMeshName_+  pSpec_+  pVirtualGatewayName_ =+    UpdateVirtualGateway'+      { clientToken =+          Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        meshName = pMeshName_,+        spec = pSpec_,+        virtualGatewayName = pVirtualGatewayName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+updateVirtualGateway_clientToken :: Lens.Lens' UpdateVirtualGateway (Prelude.Maybe Prelude.Text)+updateVirtualGateway_clientToken = Lens.lens (\UpdateVirtualGateway' {clientToken} -> clientToken) (\s@UpdateVirtualGateway' {} a -> s {clientToken = a} :: UpdateVirtualGateway)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+updateVirtualGateway_meshOwner :: Lens.Lens' UpdateVirtualGateway (Prelude.Maybe Prelude.Text)+updateVirtualGateway_meshOwner = Lens.lens (\UpdateVirtualGateway' {meshOwner} -> meshOwner) (\s@UpdateVirtualGateway' {} a -> s {meshOwner = a} :: UpdateVirtualGateway)++-- | The name of the service mesh that the virtual gateway resides in.+updateVirtualGateway_meshName :: Lens.Lens' UpdateVirtualGateway Prelude.Text+updateVirtualGateway_meshName = Lens.lens (\UpdateVirtualGateway' {meshName} -> meshName) (\s@UpdateVirtualGateway' {} a -> s {meshName = a} :: UpdateVirtualGateway)++-- | The new virtual gateway specification to apply. This overwrites the+-- existing data.+updateVirtualGateway_spec :: Lens.Lens' UpdateVirtualGateway VirtualGatewaySpec+updateVirtualGateway_spec = Lens.lens (\UpdateVirtualGateway' {spec} -> spec) (\s@UpdateVirtualGateway' {} a -> s {spec = a} :: UpdateVirtualGateway)++-- | The name of the virtual gateway to update.+updateVirtualGateway_virtualGatewayName :: Lens.Lens' UpdateVirtualGateway Prelude.Text+updateVirtualGateway_virtualGatewayName = Lens.lens (\UpdateVirtualGateway' {virtualGatewayName} -> virtualGatewayName) (\s@UpdateVirtualGateway' {} a -> s {virtualGatewayName = a} :: UpdateVirtualGateway)++instance Core.AWSRequest UpdateVirtualGateway where+  type+    AWSResponse UpdateVirtualGateway =+      UpdateVirtualGatewayResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateVirtualGatewayResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable UpdateVirtualGateway where+  hashWithSalt _salt UpdateVirtualGateway' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualGatewayName++instance Prelude.NFData UpdateVirtualGateway where+  rnf UpdateVirtualGateway' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualGatewayName++instance Data.ToHeaders UpdateVirtualGateway where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateVirtualGateway where+  toJSON UpdateVirtualGateway' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("spec" Data..= spec)+          ]+      )++instance Data.ToPath UpdateVirtualGateway where+  toPath UpdateVirtualGateway' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualGateways/",+        Data.toBS virtualGatewayName+      ]++instance Data.ToQuery UpdateVirtualGateway where+  toQuery UpdateVirtualGateway' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- | /See:/ 'newUpdateVirtualGatewayResponse' smart constructor.+data UpdateVirtualGatewayResponse = UpdateVirtualGatewayResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A full description of the virtual gateway that was updated.+    virtualGateway :: VirtualGatewayData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateVirtualGatewayResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateVirtualGatewayResponse_httpStatus' - The response's http status code.+--+-- 'virtualGateway', 'updateVirtualGatewayResponse_virtualGateway' - A full description of the virtual gateway that was updated.+newUpdateVirtualGatewayResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualGateway'+  VirtualGatewayData ->+  UpdateVirtualGatewayResponse+newUpdateVirtualGatewayResponse+  pHttpStatus_+  pVirtualGateway_ =+    UpdateVirtualGatewayResponse'+      { httpStatus =+          pHttpStatus_,+        virtualGateway = pVirtualGateway_+      }++-- | The response's http status code.+updateVirtualGatewayResponse_httpStatus :: Lens.Lens' UpdateVirtualGatewayResponse Prelude.Int+updateVirtualGatewayResponse_httpStatus = Lens.lens (\UpdateVirtualGatewayResponse' {httpStatus} -> httpStatus) (\s@UpdateVirtualGatewayResponse' {} a -> s {httpStatus = a} :: UpdateVirtualGatewayResponse)++-- | A full description of the virtual gateway that was updated.+updateVirtualGatewayResponse_virtualGateway :: Lens.Lens' UpdateVirtualGatewayResponse VirtualGatewayData+updateVirtualGatewayResponse_virtualGateway = Lens.lens (\UpdateVirtualGatewayResponse' {virtualGateway} -> virtualGateway) (\s@UpdateVirtualGatewayResponse' {} a -> s {virtualGateway = a} :: UpdateVirtualGatewayResponse)++instance Prelude.NFData UpdateVirtualGatewayResponse where+  rnf UpdateVirtualGatewayResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualGateway
+ gen/Amazonka/AppMesh/UpdateVirtualNode.hs view
@@ -0,0 +1,258 @@+{-# 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.AppMesh.UpdateVirtualNode+-- 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 an existing virtual node in a specified service mesh.+module Amazonka.AppMesh.UpdateVirtualNode+  ( -- * Creating a Request+    UpdateVirtualNode (..),+    newUpdateVirtualNode,++    -- * Request Lenses+    updateVirtualNode_clientToken,+    updateVirtualNode_meshOwner,+    updateVirtualNode_meshName,+    updateVirtualNode_spec,+    updateVirtualNode_virtualNodeName,++    -- * Destructuring the Response+    UpdateVirtualNodeResponse (..),+    newUpdateVirtualNodeResponse,++    -- * Response Lenses+    updateVirtualNodeResponse_httpStatus,+    updateVirtualNodeResponse_virtualNode,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newUpdateVirtualNode' smart constructor.+data UpdateVirtualNode = UpdateVirtualNode'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh that the virtual node resides in.+    meshName :: Prelude.Text,+    -- | The new virtual node specification to apply. This overwrites the+    -- existing data.+    spec :: VirtualNodeSpec,+    -- | The name of the virtual node to update.+    virtualNodeName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateVirtualNode' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateVirtualNode_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'updateVirtualNode_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'updateVirtualNode_meshName' - The name of the service mesh that the virtual node resides in.+--+-- 'spec', 'updateVirtualNode_spec' - The new virtual node specification to apply. This overwrites the+-- existing data.+--+-- 'virtualNodeName', 'updateVirtualNode_virtualNodeName' - The name of the virtual node to update.+newUpdateVirtualNode ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'spec'+  VirtualNodeSpec ->+  -- | 'virtualNodeName'+  Prelude.Text ->+  UpdateVirtualNode+newUpdateVirtualNode+  pMeshName_+  pSpec_+  pVirtualNodeName_ =+    UpdateVirtualNode'+      { clientToken = Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        meshName = pMeshName_,+        spec = pSpec_,+        virtualNodeName = pVirtualNodeName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+updateVirtualNode_clientToken :: Lens.Lens' UpdateVirtualNode (Prelude.Maybe Prelude.Text)+updateVirtualNode_clientToken = Lens.lens (\UpdateVirtualNode' {clientToken} -> clientToken) (\s@UpdateVirtualNode' {} a -> s {clientToken = a} :: UpdateVirtualNode)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+updateVirtualNode_meshOwner :: Lens.Lens' UpdateVirtualNode (Prelude.Maybe Prelude.Text)+updateVirtualNode_meshOwner = Lens.lens (\UpdateVirtualNode' {meshOwner} -> meshOwner) (\s@UpdateVirtualNode' {} a -> s {meshOwner = a} :: UpdateVirtualNode)++-- | The name of the service mesh that the virtual node resides in.+updateVirtualNode_meshName :: Lens.Lens' UpdateVirtualNode Prelude.Text+updateVirtualNode_meshName = Lens.lens (\UpdateVirtualNode' {meshName} -> meshName) (\s@UpdateVirtualNode' {} a -> s {meshName = a} :: UpdateVirtualNode)++-- | The new virtual node specification to apply. This overwrites the+-- existing data.+updateVirtualNode_spec :: Lens.Lens' UpdateVirtualNode VirtualNodeSpec+updateVirtualNode_spec = Lens.lens (\UpdateVirtualNode' {spec} -> spec) (\s@UpdateVirtualNode' {} a -> s {spec = a} :: UpdateVirtualNode)++-- | The name of the virtual node to update.+updateVirtualNode_virtualNodeName :: Lens.Lens' UpdateVirtualNode Prelude.Text+updateVirtualNode_virtualNodeName = Lens.lens (\UpdateVirtualNode' {virtualNodeName} -> virtualNodeName) (\s@UpdateVirtualNode' {} a -> s {virtualNodeName = a} :: UpdateVirtualNode)++instance Core.AWSRequest UpdateVirtualNode where+  type+    AWSResponse UpdateVirtualNode =+      UpdateVirtualNodeResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateVirtualNodeResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable UpdateVirtualNode where+  hashWithSalt _salt UpdateVirtualNode' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualNodeName++instance Prelude.NFData UpdateVirtualNode where+  rnf UpdateVirtualNode' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualNodeName++instance Data.ToHeaders UpdateVirtualNode where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateVirtualNode where+  toJSON UpdateVirtualNode' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("spec" Data..= spec)+          ]+      )++instance Data.ToPath UpdateVirtualNode where+  toPath UpdateVirtualNode' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualNodes/",+        Data.toBS virtualNodeName+      ]++instance Data.ToQuery UpdateVirtualNode where+  toQuery UpdateVirtualNode' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newUpdateVirtualNodeResponse' smart constructor.+data UpdateVirtualNodeResponse = UpdateVirtualNodeResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A full description of the virtual node that was updated.+    virtualNode :: VirtualNodeData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateVirtualNodeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateVirtualNodeResponse_httpStatus' - The response's http status code.+--+-- 'virtualNode', 'updateVirtualNodeResponse_virtualNode' - A full description of the virtual node that was updated.+newUpdateVirtualNodeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualNode'+  VirtualNodeData ->+  UpdateVirtualNodeResponse+newUpdateVirtualNodeResponse+  pHttpStatus_+  pVirtualNode_ =+    UpdateVirtualNodeResponse'+      { httpStatus =+          pHttpStatus_,+        virtualNode = pVirtualNode_+      }++-- | The response's http status code.+updateVirtualNodeResponse_httpStatus :: Lens.Lens' UpdateVirtualNodeResponse Prelude.Int+updateVirtualNodeResponse_httpStatus = Lens.lens (\UpdateVirtualNodeResponse' {httpStatus} -> httpStatus) (\s@UpdateVirtualNodeResponse' {} a -> s {httpStatus = a} :: UpdateVirtualNodeResponse)++-- | A full description of the virtual node that was updated.+updateVirtualNodeResponse_virtualNode :: Lens.Lens' UpdateVirtualNodeResponse VirtualNodeData+updateVirtualNodeResponse_virtualNode = Lens.lens (\UpdateVirtualNodeResponse' {virtualNode} -> virtualNode) (\s@UpdateVirtualNodeResponse' {} a -> s {virtualNode = a} :: UpdateVirtualNodeResponse)++instance Prelude.NFData UpdateVirtualNodeResponse where+  rnf UpdateVirtualNodeResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualNode
+ gen/Amazonka/AppMesh/UpdateVirtualRouter.hs view
@@ -0,0 +1,258 @@+{-# 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.AppMesh.UpdateVirtualRouter+-- 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 an existing virtual router in a specified service mesh.+module Amazonka.AppMesh.UpdateVirtualRouter+  ( -- * Creating a Request+    UpdateVirtualRouter (..),+    newUpdateVirtualRouter,++    -- * Request Lenses+    updateVirtualRouter_clientToken,+    updateVirtualRouter_meshOwner,+    updateVirtualRouter_meshName,+    updateVirtualRouter_spec,+    updateVirtualRouter_virtualRouterName,++    -- * Destructuring the Response+    UpdateVirtualRouterResponse (..),+    newUpdateVirtualRouterResponse,++    -- * Response Lenses+    updateVirtualRouterResponse_httpStatus,+    updateVirtualRouterResponse_virtualRouter,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newUpdateVirtualRouter' smart constructor.+data UpdateVirtualRouter = UpdateVirtualRouter'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh that the virtual router resides in.+    meshName :: Prelude.Text,+    -- | The new virtual router specification to apply. This overwrites the+    -- existing data.+    spec :: VirtualRouterSpec,+    -- | The name of the virtual router to update.+    virtualRouterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateVirtualRouter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateVirtualRouter_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'updateVirtualRouter_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'updateVirtualRouter_meshName' - The name of the service mesh that the virtual router resides in.+--+-- 'spec', 'updateVirtualRouter_spec' - The new virtual router specification to apply. This overwrites the+-- existing data.+--+-- 'virtualRouterName', 'updateVirtualRouter_virtualRouterName' - The name of the virtual router to update.+newUpdateVirtualRouter ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'spec'+  VirtualRouterSpec ->+  -- | 'virtualRouterName'+  Prelude.Text ->+  UpdateVirtualRouter+newUpdateVirtualRouter+  pMeshName_+  pSpec_+  pVirtualRouterName_ =+    UpdateVirtualRouter'+      { clientToken = Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        meshName = pMeshName_,+        spec = pSpec_,+        virtualRouterName = pVirtualRouterName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+updateVirtualRouter_clientToken :: Lens.Lens' UpdateVirtualRouter (Prelude.Maybe Prelude.Text)+updateVirtualRouter_clientToken = Lens.lens (\UpdateVirtualRouter' {clientToken} -> clientToken) (\s@UpdateVirtualRouter' {} a -> s {clientToken = a} :: UpdateVirtualRouter)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+updateVirtualRouter_meshOwner :: Lens.Lens' UpdateVirtualRouter (Prelude.Maybe Prelude.Text)+updateVirtualRouter_meshOwner = Lens.lens (\UpdateVirtualRouter' {meshOwner} -> meshOwner) (\s@UpdateVirtualRouter' {} a -> s {meshOwner = a} :: UpdateVirtualRouter)++-- | The name of the service mesh that the virtual router resides in.+updateVirtualRouter_meshName :: Lens.Lens' UpdateVirtualRouter Prelude.Text+updateVirtualRouter_meshName = Lens.lens (\UpdateVirtualRouter' {meshName} -> meshName) (\s@UpdateVirtualRouter' {} a -> s {meshName = a} :: UpdateVirtualRouter)++-- | The new virtual router specification to apply. This overwrites the+-- existing data.+updateVirtualRouter_spec :: Lens.Lens' UpdateVirtualRouter VirtualRouterSpec+updateVirtualRouter_spec = Lens.lens (\UpdateVirtualRouter' {spec} -> spec) (\s@UpdateVirtualRouter' {} a -> s {spec = a} :: UpdateVirtualRouter)++-- | The name of the virtual router to update.+updateVirtualRouter_virtualRouterName :: Lens.Lens' UpdateVirtualRouter Prelude.Text+updateVirtualRouter_virtualRouterName = Lens.lens (\UpdateVirtualRouter' {virtualRouterName} -> virtualRouterName) (\s@UpdateVirtualRouter' {} a -> s {virtualRouterName = a} :: UpdateVirtualRouter)++instance Core.AWSRequest UpdateVirtualRouter where+  type+    AWSResponse UpdateVirtualRouter =+      UpdateVirtualRouterResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateVirtualRouterResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable UpdateVirtualRouter where+  hashWithSalt _salt UpdateVirtualRouter' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualRouterName++instance Prelude.NFData UpdateVirtualRouter where+  rnf UpdateVirtualRouter' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualRouterName++instance Data.ToHeaders UpdateVirtualRouter where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateVirtualRouter where+  toJSON UpdateVirtualRouter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("spec" Data..= spec)+          ]+      )++instance Data.ToPath UpdateVirtualRouter where+  toPath UpdateVirtualRouter' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualRouters/",+        Data.toBS virtualRouterName+      ]++instance Data.ToQuery UpdateVirtualRouter where+  toQuery UpdateVirtualRouter' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newUpdateVirtualRouterResponse' smart constructor.+data UpdateVirtualRouterResponse = UpdateVirtualRouterResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A full description of the virtual router that was updated.+    virtualRouter :: VirtualRouterData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateVirtualRouterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateVirtualRouterResponse_httpStatus' - The response's http status code.+--+-- 'virtualRouter', 'updateVirtualRouterResponse_virtualRouter' - A full description of the virtual router that was updated.+newUpdateVirtualRouterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualRouter'+  VirtualRouterData ->+  UpdateVirtualRouterResponse+newUpdateVirtualRouterResponse+  pHttpStatus_+  pVirtualRouter_ =+    UpdateVirtualRouterResponse'+      { httpStatus =+          pHttpStatus_,+        virtualRouter = pVirtualRouter_+      }++-- | The response's http status code.+updateVirtualRouterResponse_httpStatus :: Lens.Lens' UpdateVirtualRouterResponse Prelude.Int+updateVirtualRouterResponse_httpStatus = Lens.lens (\UpdateVirtualRouterResponse' {httpStatus} -> httpStatus) (\s@UpdateVirtualRouterResponse' {} a -> s {httpStatus = a} :: UpdateVirtualRouterResponse)++-- | A full description of the virtual router that was updated.+updateVirtualRouterResponse_virtualRouter :: Lens.Lens' UpdateVirtualRouterResponse VirtualRouterData+updateVirtualRouterResponse_virtualRouter = Lens.lens (\UpdateVirtualRouterResponse' {virtualRouter} -> virtualRouter) (\s@UpdateVirtualRouterResponse' {} a -> s {virtualRouter = a} :: UpdateVirtualRouterResponse)++instance Prelude.NFData UpdateVirtualRouterResponse where+  rnf UpdateVirtualRouterResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualRouter
+ gen/Amazonka/AppMesh/UpdateVirtualService.hs view
@@ -0,0 +1,259 @@+{-# 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.AppMesh.UpdateVirtualService+-- 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 an existing virtual service in a specified service mesh.+module Amazonka.AppMesh.UpdateVirtualService+  ( -- * Creating a Request+    UpdateVirtualService (..),+    newUpdateVirtualService,++    -- * Request Lenses+    updateVirtualService_clientToken,+    updateVirtualService_meshOwner,+    updateVirtualService_meshName,+    updateVirtualService_spec,+    updateVirtualService_virtualServiceName,++    -- * Destructuring the Response+    UpdateVirtualServiceResponse (..),+    newUpdateVirtualServiceResponse,++    -- * Response Lenses+    updateVirtualServiceResponse_httpStatus,+    updateVirtualServiceResponse_virtualService,+  )+where++import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- |+--+-- /See:/ 'newUpdateVirtualService' smart constructor.+data UpdateVirtualService = UpdateVirtualService'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request. Up to 36 letters, numbers, hyphens, and+    -- underscores are allowed.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services IAM account ID of the service mesh owner. If the+    -- account ID is not your own, then it\'s the ID of the account that shared+    -- the mesh with your account. For more information about mesh sharing, see+    -- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+    meshOwner :: Prelude.Maybe Prelude.Text,+    -- | The name of the service mesh that the virtual service resides in.+    meshName :: Prelude.Text,+    -- | The new virtual service specification to apply. This overwrites the+    -- existing data.+    spec :: VirtualServiceSpec,+    -- | The name of the virtual service to update.+    virtualServiceName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateVirtualService' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateVirtualService_clientToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+--+-- 'meshOwner', 'updateVirtualService_meshOwner' - The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+--+-- 'meshName', 'updateVirtualService_meshName' - The name of the service mesh that the virtual service resides in.+--+-- 'spec', 'updateVirtualService_spec' - The new virtual service specification to apply. This overwrites the+-- existing data.+--+-- 'virtualServiceName', 'updateVirtualService_virtualServiceName' - The name of the virtual service to update.+newUpdateVirtualService ::+  -- | 'meshName'+  Prelude.Text ->+  -- | 'spec'+  VirtualServiceSpec ->+  -- | 'virtualServiceName'+  Prelude.Text ->+  UpdateVirtualService+newUpdateVirtualService+  pMeshName_+  pSpec_+  pVirtualServiceName_ =+    UpdateVirtualService'+      { clientToken =+          Prelude.Nothing,+        meshOwner = Prelude.Nothing,+        meshName = pMeshName_,+        spec = pSpec_,+        virtualServiceName = pVirtualServiceName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request. Up to 36 letters, numbers, hyphens, and+-- underscores are allowed.+updateVirtualService_clientToken :: Lens.Lens' UpdateVirtualService (Prelude.Maybe Prelude.Text)+updateVirtualService_clientToken = Lens.lens (\UpdateVirtualService' {clientToken} -> clientToken) (\s@UpdateVirtualService' {} a -> s {clientToken = a} :: UpdateVirtualService)++-- | The Amazon Web Services IAM account ID of the service mesh owner. If the+-- account ID is not your own, then it\'s the ID of the account that shared+-- the mesh with your account. For more information about mesh sharing, see+-- <https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html Working with shared meshes>.+updateVirtualService_meshOwner :: Lens.Lens' UpdateVirtualService (Prelude.Maybe Prelude.Text)+updateVirtualService_meshOwner = Lens.lens (\UpdateVirtualService' {meshOwner} -> meshOwner) (\s@UpdateVirtualService' {} a -> s {meshOwner = a} :: UpdateVirtualService)++-- | The name of the service mesh that the virtual service resides in.+updateVirtualService_meshName :: Lens.Lens' UpdateVirtualService Prelude.Text+updateVirtualService_meshName = Lens.lens (\UpdateVirtualService' {meshName} -> meshName) (\s@UpdateVirtualService' {} a -> s {meshName = a} :: UpdateVirtualService)++-- | The new virtual service specification to apply. This overwrites the+-- existing data.+updateVirtualService_spec :: Lens.Lens' UpdateVirtualService VirtualServiceSpec+updateVirtualService_spec = Lens.lens (\UpdateVirtualService' {spec} -> spec) (\s@UpdateVirtualService' {} a -> s {spec = a} :: UpdateVirtualService)++-- | The name of the virtual service to update.+updateVirtualService_virtualServiceName :: Lens.Lens' UpdateVirtualService Prelude.Text+updateVirtualService_virtualServiceName = Lens.lens (\UpdateVirtualService' {virtualServiceName} -> virtualServiceName) (\s@UpdateVirtualService' {} a -> s {virtualServiceName = a} :: UpdateVirtualService)++instance Core.AWSRequest UpdateVirtualService where+  type+    AWSResponse UpdateVirtualService =+      UpdateVirtualServiceResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateVirtualServiceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (Data.eitherParseJSON x)+      )++instance Prelude.Hashable UpdateVirtualService where+  hashWithSalt _salt UpdateVirtualService' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` meshOwner+      `Prelude.hashWithSalt` meshName+      `Prelude.hashWithSalt` spec+      `Prelude.hashWithSalt` virtualServiceName++instance Prelude.NFData UpdateVirtualService where+  rnf UpdateVirtualService' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf meshOwner+      `Prelude.seq` Prelude.rnf meshName+      `Prelude.seq` Prelude.rnf spec+      `Prelude.seq` Prelude.rnf virtualServiceName++instance Data.ToHeaders UpdateVirtualService where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateVirtualService where+  toJSON UpdateVirtualService' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("spec" Data..= spec)+          ]+      )++instance Data.ToPath UpdateVirtualService where+  toPath UpdateVirtualService' {..} =+    Prelude.mconcat+      [ "/v20190125/meshes/",+        Data.toBS meshName,+        "/virtualServices/",+        Data.toBS virtualServiceName+      ]++instance Data.ToQuery UpdateVirtualService where+  toQuery UpdateVirtualService' {..} =+    Prelude.mconcat ["meshOwner" Data.=: meshOwner]++-- |+--+-- /See:/ 'newUpdateVirtualServiceResponse' smart constructor.+data UpdateVirtualServiceResponse = UpdateVirtualServiceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A full description of the virtual service that was updated.+    virtualService :: VirtualServiceData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateVirtualServiceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateVirtualServiceResponse_httpStatus' - The response's http status code.+--+-- 'virtualService', 'updateVirtualServiceResponse_virtualService' - A full description of the virtual service that was updated.+newUpdateVirtualServiceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'virtualService'+  VirtualServiceData ->+  UpdateVirtualServiceResponse+newUpdateVirtualServiceResponse+  pHttpStatus_+  pVirtualService_ =+    UpdateVirtualServiceResponse'+      { httpStatus =+          pHttpStatus_,+        virtualService = pVirtualService_+      }++-- | The response's http status code.+updateVirtualServiceResponse_httpStatus :: Lens.Lens' UpdateVirtualServiceResponse Prelude.Int+updateVirtualServiceResponse_httpStatus = Lens.lens (\UpdateVirtualServiceResponse' {httpStatus} -> httpStatus) (\s@UpdateVirtualServiceResponse' {} a -> s {httpStatus = a} :: UpdateVirtualServiceResponse)++-- | A full description of the virtual service that was updated.+updateVirtualServiceResponse_virtualService :: Lens.Lens' UpdateVirtualServiceResponse VirtualServiceData+updateVirtualServiceResponse_virtualService = Lens.lens (\UpdateVirtualServiceResponse' {virtualService} -> virtualService) (\s@UpdateVirtualServiceResponse' {} a -> s {virtualService = a} :: UpdateVirtualServiceResponse)++instance Prelude.NFData UpdateVirtualServiceResponse where+  rnf UpdateVirtualServiceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf virtualService
+ gen/Amazonka/AppMesh/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.AppMesh.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.AppMesh.Waiters where++import Amazonka.AppMesh.Lens+import Amazonka.AppMesh.Types+import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude
+ 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.AppMesh+import Test.Amazonka.AppMesh.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "AppMesh"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/AppMesh.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.AppMesh+-- 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.AppMesh+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/AppMesh/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.AppMesh.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.AppMesh.Internal where
+ test/Test/Amazonka/Gen/AppMesh.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.AppMesh+-- 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.AppMesh where++import Amazonka.AppMesh+import qualified Data.Proxy as Proxy+import Test.Amazonka.AppMesh.Internal+import Test.Amazonka.Fixture+import Test.Amazonka.Prelude+import Test.Tasty++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+--     [ testGroup "request"+--         [ requestCreateGatewayRoute $+--             newCreateGatewayRoute+--+--         , requestCreateMesh $+--             newCreateMesh+--+--         , requestCreateRoute $+--             newCreateRoute+--+--         , requestCreateVirtualGateway $+--             newCreateVirtualGateway+--+--         , requestCreateVirtualNode $+--             newCreateVirtualNode+--+--         , requestCreateVirtualRouter $+--             newCreateVirtualRouter+--+--         , requestCreateVirtualService $+--             newCreateVirtualService+--+--         , requestDeleteGatewayRoute $+--             newDeleteGatewayRoute+--+--         , requestDeleteMesh $+--             newDeleteMesh+--+--         , requestDeleteRoute $+--             newDeleteRoute+--+--         , requestDeleteVirtualGateway $+--             newDeleteVirtualGateway+--+--         , requestDeleteVirtualNode $+--             newDeleteVirtualNode+--+--         , requestDeleteVirtualRouter $+--             newDeleteVirtualRouter+--+--         , requestDeleteVirtualService $+--             newDeleteVirtualService+--+--         , requestDescribeGatewayRoute $+--             newDescribeGatewayRoute+--+--         , requestDescribeMesh $+--             newDescribeMesh+--+--         , requestDescribeRoute $+--             newDescribeRoute+--+--         , requestDescribeVirtualGateway $+--             newDescribeVirtualGateway+--+--         , requestDescribeVirtualNode $+--             newDescribeVirtualNode+--+--         , requestDescribeVirtualRouter $+--             newDescribeVirtualRouter+--+--         , requestDescribeVirtualService $+--             newDescribeVirtualService+--+--         , requestListGatewayRoutes $+--             newListGatewayRoutes+--+--         , requestListMeshes $+--             newListMeshes+--+--         , requestListRoutes $+--             newListRoutes+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestListVirtualGateways $+--             newListVirtualGateways+--+--         , requestListVirtualNodes $+--             newListVirtualNodes+--+--         , requestListVirtualRouters $+--             newListVirtualRouters+--+--         , requestListVirtualServices $+--             newListVirtualServices+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateGatewayRoute $+--             newUpdateGatewayRoute+--+--         , requestUpdateMesh $+--             newUpdateMesh+--+--         , requestUpdateRoute $+--             newUpdateRoute+--+--         , requestUpdateVirtualGateway $+--             newUpdateVirtualGateway+--+--         , requestUpdateVirtualNode $+--             newUpdateVirtualNode+--+--         , requestUpdateVirtualRouter $+--             newUpdateVirtualRouter+--+--         , requestUpdateVirtualService $+--             newUpdateVirtualService+--+--           ]++--     , testGroup "response"+--         [ responseCreateGatewayRoute $+--             newCreateGatewayRouteResponse+--+--         , responseCreateMesh $+--             newCreateMeshResponse+--+--         , responseCreateRoute $+--             newCreateRouteResponse+--+--         , responseCreateVirtualGateway $+--             newCreateVirtualGatewayResponse+--+--         , responseCreateVirtualNode $+--             newCreateVirtualNodeResponse+--+--         , responseCreateVirtualRouter $+--             newCreateVirtualRouterResponse+--+--         , responseCreateVirtualService $+--             newCreateVirtualServiceResponse+--+--         , responseDeleteGatewayRoute $+--             newDeleteGatewayRouteResponse+--+--         , responseDeleteMesh $+--             newDeleteMeshResponse+--+--         , responseDeleteRoute $+--             newDeleteRouteResponse+--+--         , responseDeleteVirtualGateway $+--             newDeleteVirtualGatewayResponse+--+--         , responseDeleteVirtualNode $+--             newDeleteVirtualNodeResponse+--+--         , responseDeleteVirtualRouter $+--             newDeleteVirtualRouterResponse+--+--         , responseDeleteVirtualService $+--             newDeleteVirtualServiceResponse+--+--         , responseDescribeGatewayRoute $+--             newDescribeGatewayRouteResponse+--+--         , responseDescribeMesh $+--             newDescribeMeshResponse+--+--         , responseDescribeRoute $+--             newDescribeRouteResponse+--+--         , responseDescribeVirtualGateway $+--             newDescribeVirtualGatewayResponse+--+--         , responseDescribeVirtualNode $+--             newDescribeVirtualNodeResponse+--+--         , responseDescribeVirtualRouter $+--             newDescribeVirtualRouterResponse+--+--         , responseDescribeVirtualService $+--             newDescribeVirtualServiceResponse+--+--         , responseListGatewayRoutes $+--             newListGatewayRoutesResponse+--+--         , responseListMeshes $+--             newListMeshesResponse+--+--         , responseListRoutes $+--             newListRoutesResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responseListVirtualGateways $+--             newListVirtualGatewaysResponse+--+--         , responseListVirtualNodes $+--             newListVirtualNodesResponse+--+--         , responseListVirtualRouters $+--             newListVirtualRoutersResponse+--+--         , responseListVirtualServices $+--             newListVirtualServicesResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateGatewayRoute $+--             newUpdateGatewayRouteResponse+--+--         , responseUpdateMesh $+--             newUpdateMeshResponse+--+--         , responseUpdateRoute $+--             newUpdateRouteResponse+--+--         , responseUpdateVirtualGateway $+--             newUpdateVirtualGatewayResponse+--+--         , responseUpdateVirtualNode $+--             newUpdateVirtualNodeResponse+--+--         , responseUpdateVirtualRouter $+--             newUpdateVirtualRouterResponse+--+--         , responseUpdateVirtualService $+--             newUpdateVirtualServiceResponse+--+--           ]+--     ]++-- Requests++requestCreateGatewayRoute :: CreateGatewayRoute -> TestTree+requestCreateGatewayRoute =+  req+    "CreateGatewayRoute"+    "fixture/CreateGatewayRoute.yaml"++requestCreateMesh :: CreateMesh -> TestTree+requestCreateMesh =+  req+    "CreateMesh"+    "fixture/CreateMesh.yaml"++requestCreateRoute :: CreateRoute -> TestTree+requestCreateRoute =+  req+    "CreateRoute"+    "fixture/CreateRoute.yaml"++requestCreateVirtualGateway :: CreateVirtualGateway -> TestTree+requestCreateVirtualGateway =+  req+    "CreateVirtualGateway"+    "fixture/CreateVirtualGateway.yaml"++requestCreateVirtualNode :: CreateVirtualNode -> TestTree+requestCreateVirtualNode =+  req+    "CreateVirtualNode"+    "fixture/CreateVirtualNode.yaml"++requestCreateVirtualRouter :: CreateVirtualRouter -> TestTree+requestCreateVirtualRouter =+  req+    "CreateVirtualRouter"+    "fixture/CreateVirtualRouter.yaml"++requestCreateVirtualService :: CreateVirtualService -> TestTree+requestCreateVirtualService =+  req+    "CreateVirtualService"+    "fixture/CreateVirtualService.yaml"++requestDeleteGatewayRoute :: DeleteGatewayRoute -> TestTree+requestDeleteGatewayRoute =+  req+    "DeleteGatewayRoute"+    "fixture/DeleteGatewayRoute.yaml"++requestDeleteMesh :: DeleteMesh -> TestTree+requestDeleteMesh =+  req+    "DeleteMesh"+    "fixture/DeleteMesh.yaml"++requestDeleteRoute :: DeleteRoute -> TestTree+requestDeleteRoute =+  req+    "DeleteRoute"+    "fixture/DeleteRoute.yaml"++requestDeleteVirtualGateway :: DeleteVirtualGateway -> TestTree+requestDeleteVirtualGateway =+  req+    "DeleteVirtualGateway"+    "fixture/DeleteVirtualGateway.yaml"++requestDeleteVirtualNode :: DeleteVirtualNode -> TestTree+requestDeleteVirtualNode =+  req+    "DeleteVirtualNode"+    "fixture/DeleteVirtualNode.yaml"++requestDeleteVirtualRouter :: DeleteVirtualRouter -> TestTree+requestDeleteVirtualRouter =+  req+    "DeleteVirtualRouter"+    "fixture/DeleteVirtualRouter.yaml"++requestDeleteVirtualService :: DeleteVirtualService -> TestTree+requestDeleteVirtualService =+  req+    "DeleteVirtualService"+    "fixture/DeleteVirtualService.yaml"++requestDescribeGatewayRoute :: DescribeGatewayRoute -> TestTree+requestDescribeGatewayRoute =+  req+    "DescribeGatewayRoute"+    "fixture/DescribeGatewayRoute.yaml"++requestDescribeMesh :: DescribeMesh -> TestTree+requestDescribeMesh =+  req+    "DescribeMesh"+    "fixture/DescribeMesh.yaml"++requestDescribeRoute :: DescribeRoute -> TestTree+requestDescribeRoute =+  req+    "DescribeRoute"+    "fixture/DescribeRoute.yaml"++requestDescribeVirtualGateway :: DescribeVirtualGateway -> TestTree+requestDescribeVirtualGateway =+  req+    "DescribeVirtualGateway"+    "fixture/DescribeVirtualGateway.yaml"++requestDescribeVirtualNode :: DescribeVirtualNode -> TestTree+requestDescribeVirtualNode =+  req+    "DescribeVirtualNode"+    "fixture/DescribeVirtualNode.yaml"++requestDescribeVirtualRouter :: DescribeVirtualRouter -> TestTree+requestDescribeVirtualRouter =+  req+    "DescribeVirtualRouter"+    "fixture/DescribeVirtualRouter.yaml"++requestDescribeVirtualService :: DescribeVirtualService -> TestTree+requestDescribeVirtualService =+  req+    "DescribeVirtualService"+    "fixture/DescribeVirtualService.yaml"++requestListGatewayRoutes :: ListGatewayRoutes -> TestTree+requestListGatewayRoutes =+  req+    "ListGatewayRoutes"+    "fixture/ListGatewayRoutes.yaml"++requestListMeshes :: ListMeshes -> TestTree+requestListMeshes =+  req+    "ListMeshes"+    "fixture/ListMeshes.yaml"++requestListRoutes :: ListRoutes -> TestTree+requestListRoutes =+  req+    "ListRoutes"+    "fixture/ListRoutes.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestListVirtualGateways :: ListVirtualGateways -> TestTree+requestListVirtualGateways =+  req+    "ListVirtualGateways"+    "fixture/ListVirtualGateways.yaml"++requestListVirtualNodes :: ListVirtualNodes -> TestTree+requestListVirtualNodes =+  req+    "ListVirtualNodes"+    "fixture/ListVirtualNodes.yaml"++requestListVirtualRouters :: ListVirtualRouters -> TestTree+requestListVirtualRouters =+  req+    "ListVirtualRouters"+    "fixture/ListVirtualRouters.yaml"++requestListVirtualServices :: ListVirtualServices -> TestTree+requestListVirtualServices =+  req+    "ListVirtualServices"+    "fixture/ListVirtualServices.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateGatewayRoute :: UpdateGatewayRoute -> TestTree+requestUpdateGatewayRoute =+  req+    "UpdateGatewayRoute"+    "fixture/UpdateGatewayRoute.yaml"++requestUpdateMesh :: UpdateMesh -> TestTree+requestUpdateMesh =+  req+    "UpdateMesh"+    "fixture/UpdateMesh.yaml"++requestUpdateRoute :: UpdateRoute -> TestTree+requestUpdateRoute =+  req+    "UpdateRoute"+    "fixture/UpdateRoute.yaml"++requestUpdateVirtualGateway :: UpdateVirtualGateway -> TestTree+requestUpdateVirtualGateway =+  req+    "UpdateVirtualGateway"+    "fixture/UpdateVirtualGateway.yaml"++requestUpdateVirtualNode :: UpdateVirtualNode -> TestTree+requestUpdateVirtualNode =+  req+    "UpdateVirtualNode"+    "fixture/UpdateVirtualNode.yaml"++requestUpdateVirtualRouter :: UpdateVirtualRouter -> TestTree+requestUpdateVirtualRouter =+  req+    "UpdateVirtualRouter"+    "fixture/UpdateVirtualRouter.yaml"++requestUpdateVirtualService :: UpdateVirtualService -> TestTree+requestUpdateVirtualService =+  req+    "UpdateVirtualService"+    "fixture/UpdateVirtualService.yaml"++-- Responses++responseCreateGatewayRoute :: CreateGatewayRouteResponse -> TestTree+responseCreateGatewayRoute =+  res+    "CreateGatewayRouteResponse"+    "fixture/CreateGatewayRouteResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateGatewayRoute)++responseCreateMesh :: CreateMeshResponse -> TestTree+responseCreateMesh =+  res+    "CreateMeshResponse"+    "fixture/CreateMeshResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateMesh)++responseCreateRoute :: CreateRouteResponse -> TestTree+responseCreateRoute =+  res+    "CreateRouteResponse"+    "fixture/CreateRouteResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateRoute)++responseCreateVirtualGateway :: CreateVirtualGatewayResponse -> TestTree+responseCreateVirtualGateway =+  res+    "CreateVirtualGatewayResponse"+    "fixture/CreateVirtualGatewayResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateVirtualGateway)++responseCreateVirtualNode :: CreateVirtualNodeResponse -> TestTree+responseCreateVirtualNode =+  res+    "CreateVirtualNodeResponse"+    "fixture/CreateVirtualNodeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateVirtualNode)++responseCreateVirtualRouter :: CreateVirtualRouterResponse -> TestTree+responseCreateVirtualRouter =+  res+    "CreateVirtualRouterResponse"+    "fixture/CreateVirtualRouterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateVirtualRouter)++responseCreateVirtualService :: CreateVirtualServiceResponse -> TestTree+responseCreateVirtualService =+  res+    "CreateVirtualServiceResponse"+    "fixture/CreateVirtualServiceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateVirtualService)++responseDeleteGatewayRoute :: DeleteGatewayRouteResponse -> TestTree+responseDeleteGatewayRoute =+  res+    "DeleteGatewayRouteResponse"+    "fixture/DeleteGatewayRouteResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteGatewayRoute)++responseDeleteMesh :: DeleteMeshResponse -> TestTree+responseDeleteMesh =+  res+    "DeleteMeshResponse"+    "fixture/DeleteMeshResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteMesh)++responseDeleteRoute :: DeleteRouteResponse -> TestTree+responseDeleteRoute =+  res+    "DeleteRouteResponse"+    "fixture/DeleteRouteResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteRoute)++responseDeleteVirtualGateway :: DeleteVirtualGatewayResponse -> TestTree+responseDeleteVirtualGateway =+  res+    "DeleteVirtualGatewayResponse"+    "fixture/DeleteVirtualGatewayResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteVirtualGateway)++responseDeleteVirtualNode :: DeleteVirtualNodeResponse -> TestTree+responseDeleteVirtualNode =+  res+    "DeleteVirtualNodeResponse"+    "fixture/DeleteVirtualNodeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteVirtualNode)++responseDeleteVirtualRouter :: DeleteVirtualRouterResponse -> TestTree+responseDeleteVirtualRouter =+  res+    "DeleteVirtualRouterResponse"+    "fixture/DeleteVirtualRouterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteVirtualRouter)++responseDeleteVirtualService :: DeleteVirtualServiceResponse -> TestTree+responseDeleteVirtualService =+  res+    "DeleteVirtualServiceResponse"+    "fixture/DeleteVirtualServiceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteVirtualService)++responseDescribeGatewayRoute :: DescribeGatewayRouteResponse -> TestTree+responseDescribeGatewayRoute =+  res+    "DescribeGatewayRouteResponse"+    "fixture/DescribeGatewayRouteResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeGatewayRoute)++responseDescribeMesh :: DescribeMeshResponse -> TestTree+responseDescribeMesh =+  res+    "DescribeMeshResponse"+    "fixture/DescribeMeshResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeMesh)++responseDescribeRoute :: DescribeRouteResponse -> TestTree+responseDescribeRoute =+  res+    "DescribeRouteResponse"+    "fixture/DescribeRouteResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeRoute)++responseDescribeVirtualGateway :: DescribeVirtualGatewayResponse -> TestTree+responseDescribeVirtualGateway =+  res+    "DescribeVirtualGatewayResponse"+    "fixture/DescribeVirtualGatewayResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeVirtualGateway)++responseDescribeVirtualNode :: DescribeVirtualNodeResponse -> TestTree+responseDescribeVirtualNode =+  res+    "DescribeVirtualNodeResponse"+    "fixture/DescribeVirtualNodeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeVirtualNode)++responseDescribeVirtualRouter :: DescribeVirtualRouterResponse -> TestTree+responseDescribeVirtualRouter =+  res+    "DescribeVirtualRouterResponse"+    "fixture/DescribeVirtualRouterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeVirtualRouter)++responseDescribeVirtualService :: DescribeVirtualServiceResponse -> TestTree+responseDescribeVirtualService =+  res+    "DescribeVirtualServiceResponse"+    "fixture/DescribeVirtualServiceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeVirtualService)++responseListGatewayRoutes :: ListGatewayRoutesResponse -> TestTree+responseListGatewayRoutes =+  res+    "ListGatewayRoutesResponse"+    "fixture/ListGatewayRoutesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListGatewayRoutes)++responseListMeshes :: ListMeshesResponse -> TestTree+responseListMeshes =+  res+    "ListMeshesResponse"+    "fixture/ListMeshesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListMeshes)++responseListRoutes :: ListRoutesResponse -> TestTree+responseListRoutes =+  res+    "ListRoutesResponse"+    "fixture/ListRoutesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListRoutes)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responseListVirtualGateways :: ListVirtualGatewaysResponse -> TestTree+responseListVirtualGateways =+  res+    "ListVirtualGatewaysResponse"+    "fixture/ListVirtualGatewaysResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListVirtualGateways)++responseListVirtualNodes :: ListVirtualNodesResponse -> TestTree+responseListVirtualNodes =+  res+    "ListVirtualNodesResponse"+    "fixture/ListVirtualNodesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListVirtualNodes)++responseListVirtualRouters :: ListVirtualRoutersResponse -> TestTree+responseListVirtualRouters =+  res+    "ListVirtualRoutersResponse"+    "fixture/ListVirtualRoutersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListVirtualRouters)++responseListVirtualServices :: ListVirtualServicesResponse -> TestTree+responseListVirtualServices =+  res+    "ListVirtualServicesResponse"+    "fixture/ListVirtualServicesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListVirtualServices)++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)++responseUpdateGatewayRoute :: UpdateGatewayRouteResponse -> TestTree+responseUpdateGatewayRoute =+  res+    "UpdateGatewayRouteResponse"+    "fixture/UpdateGatewayRouteResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateGatewayRoute)++responseUpdateMesh :: UpdateMeshResponse -> TestTree+responseUpdateMesh =+  res+    "UpdateMeshResponse"+    "fixture/UpdateMeshResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateMesh)++responseUpdateRoute :: UpdateRouteResponse -> TestTree+responseUpdateRoute =+  res+    "UpdateRouteResponse"+    "fixture/UpdateRouteResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateRoute)++responseUpdateVirtualGateway :: UpdateVirtualGatewayResponse -> TestTree+responseUpdateVirtualGateway =+  res+    "UpdateVirtualGatewayResponse"+    "fixture/UpdateVirtualGatewayResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateVirtualGateway)++responseUpdateVirtualNode :: UpdateVirtualNodeResponse -> TestTree+responseUpdateVirtualNode =+  res+    "UpdateVirtualNodeResponse"+    "fixture/UpdateVirtualNodeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateVirtualNode)++responseUpdateVirtualRouter :: UpdateVirtualRouterResponse -> TestTree+responseUpdateVirtualRouter =+  res+    "UpdateVirtualRouterResponse"+    "fixture/UpdateVirtualRouterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateVirtualRouter)++responseUpdateVirtualService :: UpdateVirtualServiceResponse -> TestTree+responseUpdateVirtualService =+  res+    "UpdateVirtualServiceResponse"+    "fixture/UpdateVirtualServiceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateVirtualService)