packages feed

amazonka-globalaccelerator (empty) → 2.0

raw patch · 196 files changed

+19631/−0 lines, 196 filesdep +amazonka-coredep +amazonka-globalacceleratordep +amazonka-test

Dependencies added: amazonka-core, amazonka-globalaccelerator, 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 Global Accelerator SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2018-08-08@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-globalaccelerator)+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.GlobalAccelerator](http://hackage.haskell.org/package/amazonka-globalaccelerator/docs/Amazonka-GlobalAccelerator.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-globalaccelerator` 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-globalaccelerator.cabal view
@@ -0,0 +1,169 @@+cabal-version:      2.2+name:               amazonka-globalaccelerator+version:            2.0+synopsis:           Amazon Global Accelerator SDK.+homepage:           https://github.com/brendanhay/amazonka+bug-reports:        https://github.com/brendanhay/amazonka/issues+license:            MPL-2.0+license-file:       LICENSE+author:             Brendan Hay+maintainer:+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>++copyright:          Copyright (c) 2013-2023 Brendan Hay+category:           AWS+build-type:         Simple+extra-source-files:+  fixture/*.proto+  fixture/*.yaml+  README.md+  src/.gitkeep++description:+  Derived from API version @2018-08-08@ 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.GlobalAccelerator.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.GlobalAccelerator" 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-globalaccelerator++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.GlobalAccelerator+    Amazonka.GlobalAccelerator.AddCustomRoutingEndpoints+    Amazonka.GlobalAccelerator.AddEndpoints+    Amazonka.GlobalAccelerator.AdvertiseByoipCidr+    Amazonka.GlobalAccelerator.AllowCustomRoutingTraffic+    Amazonka.GlobalAccelerator.CreateAccelerator+    Amazonka.GlobalAccelerator.CreateCustomRoutingAccelerator+    Amazonka.GlobalAccelerator.CreateCustomRoutingEndpointGroup+    Amazonka.GlobalAccelerator.CreateCustomRoutingListener+    Amazonka.GlobalAccelerator.CreateEndpointGroup+    Amazonka.GlobalAccelerator.CreateListener+    Amazonka.GlobalAccelerator.DeleteAccelerator+    Amazonka.GlobalAccelerator.DeleteCustomRoutingAccelerator+    Amazonka.GlobalAccelerator.DeleteCustomRoutingEndpointGroup+    Amazonka.GlobalAccelerator.DeleteCustomRoutingListener+    Amazonka.GlobalAccelerator.DeleteEndpointGroup+    Amazonka.GlobalAccelerator.DeleteListener+    Amazonka.GlobalAccelerator.DenyCustomRoutingTraffic+    Amazonka.GlobalAccelerator.DeprovisionByoipCidr+    Amazonka.GlobalAccelerator.DescribeAccelerator+    Amazonka.GlobalAccelerator.DescribeAcceleratorAttributes+    Amazonka.GlobalAccelerator.DescribeCustomRoutingAccelerator+    Amazonka.GlobalAccelerator.DescribeCustomRoutingAcceleratorAttributes+    Amazonka.GlobalAccelerator.DescribeCustomRoutingEndpointGroup+    Amazonka.GlobalAccelerator.DescribeCustomRoutingListener+    Amazonka.GlobalAccelerator.DescribeEndpointGroup+    Amazonka.GlobalAccelerator.DescribeListener+    Amazonka.GlobalAccelerator.Lens+    Amazonka.GlobalAccelerator.ListAccelerators+    Amazonka.GlobalAccelerator.ListByoipCidrs+    Amazonka.GlobalAccelerator.ListCustomRoutingAccelerators+    Amazonka.GlobalAccelerator.ListCustomRoutingEndpointGroups+    Amazonka.GlobalAccelerator.ListCustomRoutingListeners+    Amazonka.GlobalAccelerator.ListCustomRoutingPortMappings+    Amazonka.GlobalAccelerator.ListCustomRoutingPortMappingsByDestination+    Amazonka.GlobalAccelerator.ListEndpointGroups+    Amazonka.GlobalAccelerator.ListListeners+    Amazonka.GlobalAccelerator.ListTagsForResource+    Amazonka.GlobalAccelerator.ProvisionByoipCidr+    Amazonka.GlobalAccelerator.RemoveCustomRoutingEndpoints+    Amazonka.GlobalAccelerator.RemoveEndpoints+    Amazonka.GlobalAccelerator.TagResource+    Amazonka.GlobalAccelerator.Types+    Amazonka.GlobalAccelerator.Types.Accelerator+    Amazonka.GlobalAccelerator.Types.AcceleratorAttributes+    Amazonka.GlobalAccelerator.Types.AcceleratorEvent+    Amazonka.GlobalAccelerator.Types.AcceleratorStatus+    Amazonka.GlobalAccelerator.Types.ByoipCidr+    Amazonka.GlobalAccelerator.Types.ByoipCidrEvent+    Amazonka.GlobalAccelerator.Types.ByoipCidrState+    Amazonka.GlobalAccelerator.Types.CidrAuthorizationContext+    Amazonka.GlobalAccelerator.Types.ClientAffinity+    Amazonka.GlobalAccelerator.Types.CustomRoutingAccelerator+    Amazonka.GlobalAccelerator.Types.CustomRoutingAcceleratorAttributes+    Amazonka.GlobalAccelerator.Types.CustomRoutingAcceleratorStatus+    Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationConfiguration+    Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationDescription+    Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationTrafficState+    Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointConfiguration+    Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointDescription+    Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointGroup+    Amazonka.GlobalAccelerator.Types.CustomRoutingListener+    Amazonka.GlobalAccelerator.Types.CustomRoutingProtocol+    Amazonka.GlobalAccelerator.Types.DestinationPortMapping+    Amazonka.GlobalAccelerator.Types.EndpointConfiguration+    Amazonka.GlobalAccelerator.Types.EndpointDescription+    Amazonka.GlobalAccelerator.Types.EndpointGroup+    Amazonka.GlobalAccelerator.Types.EndpointIdentifier+    Amazonka.GlobalAccelerator.Types.HealthCheckProtocol+    Amazonka.GlobalAccelerator.Types.HealthState+    Amazonka.GlobalAccelerator.Types.IpAddressFamily+    Amazonka.GlobalAccelerator.Types.IpAddressType+    Amazonka.GlobalAccelerator.Types.IpSet+    Amazonka.GlobalAccelerator.Types.Listener+    Amazonka.GlobalAccelerator.Types.PortMapping+    Amazonka.GlobalAccelerator.Types.PortOverride+    Amazonka.GlobalAccelerator.Types.PortRange+    Amazonka.GlobalAccelerator.Types.Protocol+    Amazonka.GlobalAccelerator.Types.SocketAddress+    Amazonka.GlobalAccelerator.Types.Tag+    Amazonka.GlobalAccelerator.UntagResource+    Amazonka.GlobalAccelerator.UpdateAccelerator+    Amazonka.GlobalAccelerator.UpdateAcceleratorAttributes+    Amazonka.GlobalAccelerator.UpdateCustomRoutingAccelerator+    Amazonka.GlobalAccelerator.UpdateCustomRoutingAcceleratorAttributes+    Amazonka.GlobalAccelerator.UpdateCustomRoutingListener+    Amazonka.GlobalAccelerator.UpdateEndpointGroup+    Amazonka.GlobalAccelerator.UpdateListener+    Amazonka.GlobalAccelerator.Waiters+    Amazonka.GlobalAccelerator.WithdrawByoipCidr++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-globalaccelerator-test+  type:             exitcode-stdio-1.0+  default-language: Haskell2010+  hs-source-dirs:   test+  main-is:          Main.hs+  ghc-options:      -Wall -threaded++  -- This section is encoded by the template and any modules added by+  -- hand outside these namespaces will not correctly be added to the+  -- distribution package.+  other-modules:+    Test.Amazonka.Gen.GlobalAccelerator+    Test.Amazonka.GlobalAccelerator+    Test.Amazonka.GlobalAccelerator.Internal++  build-depends:+    , amazonka-core               >=2.0 && <2.1+    , amazonka-globalaccelerator+    , amazonka-test               >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/AddCustomRoutingEndpoints.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/AddCustomRoutingEndpointsResponse.proto view
+ fixture/AddEndpoints.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/AddEndpointsResponse.proto view
+ fixture/AdvertiseByoipCidr.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/AdvertiseByoipCidrResponse.proto view
+ fixture/AllowCustomRoutingTraffic.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/AllowCustomRoutingTrafficResponse.proto view
+ fixture/CreateAccelerator.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/CreateAcceleratorResponse.proto view
+ fixture/CreateCustomRoutingAccelerator.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/CreateCustomRoutingAcceleratorResponse.proto view
+ fixture/CreateCustomRoutingEndpointGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/CreateCustomRoutingEndpointGroupResponse.proto view
+ fixture/CreateCustomRoutingListener.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/CreateCustomRoutingListenerResponse.proto view
+ fixture/CreateEndpointGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/CreateEndpointGroupResponse.proto view
+ fixture/CreateListener.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/CreateListenerResponse.proto view
+ fixture/DeleteAccelerator.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DeleteAcceleratorResponse.proto view
+ fixture/DeleteCustomRoutingAccelerator.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DeleteCustomRoutingAcceleratorResponse.proto view
+ fixture/DeleteCustomRoutingEndpointGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DeleteCustomRoutingEndpointGroupResponse.proto view
+ fixture/DeleteCustomRoutingListener.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DeleteCustomRoutingListenerResponse.proto view
+ fixture/DeleteEndpointGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DeleteEndpointGroupResponse.proto view
+ fixture/DeleteListener.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DeleteListenerResponse.proto view
+ fixture/DenyCustomRoutingTraffic.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DenyCustomRoutingTrafficResponse.proto view
+ fixture/DeprovisionByoipCidr.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DeprovisionByoipCidrResponse.proto view
+ fixture/DescribeAccelerator.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DescribeAcceleratorAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DescribeAcceleratorAttributesResponse.proto view
+ fixture/DescribeAcceleratorResponse.proto view
+ fixture/DescribeCustomRoutingAccelerator.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DescribeCustomRoutingAcceleratorAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DescribeCustomRoutingAcceleratorAttributesResponse.proto view
+ fixture/DescribeCustomRoutingAcceleratorResponse.proto view
+ fixture/DescribeCustomRoutingEndpointGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DescribeCustomRoutingEndpointGroupResponse.proto view
+ fixture/DescribeCustomRoutingListener.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DescribeCustomRoutingListenerResponse.proto view
+ fixture/DescribeEndpointGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DescribeEndpointGroupResponse.proto view
+ fixture/DescribeListener.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/DescribeListenerResponse.proto view
+ fixture/ListAccelerators.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ListAcceleratorsResponse.proto view
+ fixture/ListByoipCidrs.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ListByoipCidrsResponse.proto view
+ fixture/ListCustomRoutingAccelerators.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ListCustomRoutingAcceleratorsResponse.proto view
+ fixture/ListCustomRoutingEndpointGroups.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ListCustomRoutingEndpointGroupsResponse.proto view
+ fixture/ListCustomRoutingListeners.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ListCustomRoutingListenersResponse.proto view
+ fixture/ListCustomRoutingPortMappings.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ListCustomRoutingPortMappingsByDestination.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ListCustomRoutingPortMappingsByDestinationResponse.proto view
+ fixture/ListCustomRoutingPortMappingsResponse.proto view
+ fixture/ListEndpointGroups.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ListEndpointGroupsResponse.proto view
+ fixture/ListListeners.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ListListenersResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ProvisionByoipCidr.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/ProvisionByoipCidrResponse.proto view
+ fixture/RemoveCustomRoutingEndpoints.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/RemoveCustomRoutingEndpointsResponse.proto view
+ fixture/RemoveEndpoints.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/RemoveEndpointsResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/TagResourceResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/UpdateAccelerator.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/UpdateAcceleratorAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/UpdateAcceleratorAttributesResponse.proto view
+ fixture/UpdateAcceleratorResponse.proto view
+ fixture/UpdateCustomRoutingAccelerator.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/UpdateCustomRoutingAcceleratorAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/UpdateCustomRoutingAcceleratorAttributesResponse.proto view
+ fixture/UpdateCustomRoutingAcceleratorResponse.proto view
+ fixture/UpdateCustomRoutingListener.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/UpdateCustomRoutingListenerResponse.proto view
+ fixture/UpdateEndpointGroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/UpdateEndpointGroupResponse.proto view
+ fixture/UpdateListener.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/UpdateListenerResponse.proto view
+ fixture/WithdrawByoipCidr.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/globalaccelerator/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  globalaccelerator.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/WithdrawByoipCidrResponse.proto view
+ gen/Amazonka/GlobalAccelerator.hs view
@@ -0,0 +1,664 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.GlobalAccelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Derived from API version @2018-08-08@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Global Accelerator+--+-- This is the /Global Accelerator API Reference/. This guide is for+-- developers who need detailed information about Global Accelerator API+-- actions, data types, and errors. For more information about Global+-- Accelerator features, see the+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html Global Accelerator Developer Guide>.+--+-- Global Accelerator is a service in which you create /accelerators/ to+-- improve the performance of your applications for local and global users.+-- Depending on the type of accelerator you choose, you can gain additional+-- benefits.+--+-- -   By using a standard accelerator, you can improve availability of+--     your internet applications that are used by a global audience. With+--     a standard accelerator, Global Accelerator directs traffic to+--     optimal endpoints over the Amazon Web Services global network.+--+-- -   For other scenarios, you might choose a custom routing accelerator.+--     With a custom routing accelerator, you can use application logic to+--     directly map one or more users to a specific endpoint among many+--     endpoints.+--+-- Global Accelerator is a global service that supports endpoints in+-- multiple Amazon Web Services Regions but you must specify the US West+-- (Oregon) Region to create, update, or otherwise work with accelerators.+-- That is, for example, specify @--region us-west-2@ on AWS CLI commands.+--+-- By default, Global Accelerator provides you with static IP addresses+-- that you associate with your accelerator. The static IP addresses are+-- anycast from the Amazon Web Services edge network. For IPv4, Global+-- Accelerator provides two static IPv4 addresses. For dual-stack, Global+-- Accelerator provides a total of four addresses: two static IPv4+-- addresses and two static IPv6 addresses. With a standard accelerator for+-- IPv4, instead of using the addresses that Global Accelerator provides,+-- you can configure these entry points to be IPv4 addresses from your own+-- IP address ranges that you bring toGlobal Accelerator (BYOIP).+--+-- For a standard accelerator, they distribute incoming application traffic+-- across multiple endpoint resources in multiple Amazon Web Services+-- Regions , which increases the availability of your applications.+-- Endpoints for standard accelerators can be Network Load Balancers,+-- Application Load Balancers, Amazon EC2 instances, or Elastic IP+-- addresses that are located in one Amazon Web Services Region or multiple+-- Amazon Web Services Regions. For custom routing accelerators, you map+-- traffic that arrives to the static IP addresses to specific Amazon EC2+-- servers in endpoints that are virtual private cloud (VPC) subnets.+--+-- The static IP addresses remain assigned to your accelerator for as long+-- as it exists, even if you disable the accelerator and it no longer+-- accepts or routes traffic. However, when you /delete/ an accelerator,+-- you lose the static IP addresses that are assigned to it, so you can no+-- longer route traffic by using them. You can use IAM policies like+-- tag-based permissions with Global Accelerator to limit the users who+-- have permissions to delete an accelerator. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/access-control-manage-access-tag-policies.html Tag-based policies>.+--+-- For standard accelerators, Global Accelerator uses the Amazon Web+-- Services global network to route traffic to the optimal regional+-- endpoint based on health, client location, and policies that you+-- configure. The service reacts instantly to changes in health or+-- configuration to ensure that internet traffic from clients is always+-- directed to healthy endpoints.+--+-- For more information about understanding and using Global Accelerator,+-- see the+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html Global Accelerator Developer Guide>.+module Amazonka.GlobalAccelerator+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AcceleratorNotDisabledException+    _AcceleratorNotDisabledException,++    -- ** AcceleratorNotFoundException+    _AcceleratorNotFoundException,++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** AssociatedEndpointGroupFoundException+    _AssociatedEndpointGroupFoundException,++    -- ** AssociatedListenerFoundException+    _AssociatedListenerFoundException,++    -- ** ByoipCidrNotFoundException+    _ByoipCidrNotFoundException,++    -- ** ConflictException+    _ConflictException,++    -- ** EndpointAlreadyExistsException+    _EndpointAlreadyExistsException,++    -- ** EndpointGroupAlreadyExistsException+    _EndpointGroupAlreadyExistsException,++    -- ** EndpointGroupNotFoundException+    _EndpointGroupNotFoundException,++    -- ** EndpointNotFoundException+    _EndpointNotFoundException,++    -- ** IncorrectCidrStateException+    _IncorrectCidrStateException,++    -- ** InternalServiceErrorException+    _InternalServiceErrorException,++    -- ** InvalidArgumentException+    _InvalidArgumentException,++    -- ** InvalidNextTokenException+    _InvalidNextTokenException,++    -- ** InvalidPortRangeException+    _InvalidPortRangeException,++    -- ** LimitExceededException+    _LimitExceededException,++    -- ** ListenerNotFoundException+    _ListenerNotFoundException,++    -- ** TransactionInProgressException+    _TransactionInProgressException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** AddCustomRoutingEndpoints+    AddCustomRoutingEndpoints (AddCustomRoutingEndpoints'),+    newAddCustomRoutingEndpoints,+    AddCustomRoutingEndpointsResponse (AddCustomRoutingEndpointsResponse'),+    newAddCustomRoutingEndpointsResponse,++    -- ** AddEndpoints+    AddEndpoints (AddEndpoints'),+    newAddEndpoints,+    AddEndpointsResponse (AddEndpointsResponse'),+    newAddEndpointsResponse,++    -- ** AdvertiseByoipCidr+    AdvertiseByoipCidr (AdvertiseByoipCidr'),+    newAdvertiseByoipCidr,+    AdvertiseByoipCidrResponse (AdvertiseByoipCidrResponse'),+    newAdvertiseByoipCidrResponse,++    -- ** AllowCustomRoutingTraffic+    AllowCustomRoutingTraffic (AllowCustomRoutingTraffic'),+    newAllowCustomRoutingTraffic,+    AllowCustomRoutingTrafficResponse (AllowCustomRoutingTrafficResponse'),+    newAllowCustomRoutingTrafficResponse,++    -- ** CreateAccelerator+    CreateAccelerator (CreateAccelerator'),+    newCreateAccelerator,+    CreateAcceleratorResponse (CreateAcceleratorResponse'),+    newCreateAcceleratorResponse,++    -- ** CreateCustomRoutingAccelerator+    CreateCustomRoutingAccelerator (CreateCustomRoutingAccelerator'),+    newCreateCustomRoutingAccelerator,+    CreateCustomRoutingAcceleratorResponse (CreateCustomRoutingAcceleratorResponse'),+    newCreateCustomRoutingAcceleratorResponse,++    -- ** CreateCustomRoutingEndpointGroup+    CreateCustomRoutingEndpointGroup (CreateCustomRoutingEndpointGroup'),+    newCreateCustomRoutingEndpointGroup,+    CreateCustomRoutingEndpointGroupResponse (CreateCustomRoutingEndpointGroupResponse'),+    newCreateCustomRoutingEndpointGroupResponse,++    -- ** CreateCustomRoutingListener+    CreateCustomRoutingListener (CreateCustomRoutingListener'),+    newCreateCustomRoutingListener,+    CreateCustomRoutingListenerResponse (CreateCustomRoutingListenerResponse'),+    newCreateCustomRoutingListenerResponse,++    -- ** CreateEndpointGroup+    CreateEndpointGroup (CreateEndpointGroup'),+    newCreateEndpointGroup,+    CreateEndpointGroupResponse (CreateEndpointGroupResponse'),+    newCreateEndpointGroupResponse,++    -- ** CreateListener+    CreateListener (CreateListener'),+    newCreateListener,+    CreateListenerResponse (CreateListenerResponse'),+    newCreateListenerResponse,++    -- ** DeleteAccelerator+    DeleteAccelerator (DeleteAccelerator'),+    newDeleteAccelerator,+    DeleteAcceleratorResponse (DeleteAcceleratorResponse'),+    newDeleteAcceleratorResponse,++    -- ** DeleteCustomRoutingAccelerator+    DeleteCustomRoutingAccelerator (DeleteCustomRoutingAccelerator'),+    newDeleteCustomRoutingAccelerator,+    DeleteCustomRoutingAcceleratorResponse (DeleteCustomRoutingAcceleratorResponse'),+    newDeleteCustomRoutingAcceleratorResponse,++    -- ** DeleteCustomRoutingEndpointGroup+    DeleteCustomRoutingEndpointGroup (DeleteCustomRoutingEndpointGroup'),+    newDeleteCustomRoutingEndpointGroup,+    DeleteCustomRoutingEndpointGroupResponse (DeleteCustomRoutingEndpointGroupResponse'),+    newDeleteCustomRoutingEndpointGroupResponse,++    -- ** DeleteCustomRoutingListener+    DeleteCustomRoutingListener (DeleteCustomRoutingListener'),+    newDeleteCustomRoutingListener,+    DeleteCustomRoutingListenerResponse (DeleteCustomRoutingListenerResponse'),+    newDeleteCustomRoutingListenerResponse,++    -- ** DeleteEndpointGroup+    DeleteEndpointGroup (DeleteEndpointGroup'),+    newDeleteEndpointGroup,+    DeleteEndpointGroupResponse (DeleteEndpointGroupResponse'),+    newDeleteEndpointGroupResponse,++    -- ** DeleteListener+    DeleteListener (DeleteListener'),+    newDeleteListener,+    DeleteListenerResponse (DeleteListenerResponse'),+    newDeleteListenerResponse,++    -- ** DenyCustomRoutingTraffic+    DenyCustomRoutingTraffic (DenyCustomRoutingTraffic'),+    newDenyCustomRoutingTraffic,+    DenyCustomRoutingTrafficResponse (DenyCustomRoutingTrafficResponse'),+    newDenyCustomRoutingTrafficResponse,++    -- ** DeprovisionByoipCidr+    DeprovisionByoipCidr (DeprovisionByoipCidr'),+    newDeprovisionByoipCidr,+    DeprovisionByoipCidrResponse (DeprovisionByoipCidrResponse'),+    newDeprovisionByoipCidrResponse,++    -- ** DescribeAccelerator+    DescribeAccelerator (DescribeAccelerator'),+    newDescribeAccelerator,+    DescribeAcceleratorResponse (DescribeAcceleratorResponse'),+    newDescribeAcceleratorResponse,++    -- ** DescribeAcceleratorAttributes+    DescribeAcceleratorAttributes (DescribeAcceleratorAttributes'),+    newDescribeAcceleratorAttributes,+    DescribeAcceleratorAttributesResponse (DescribeAcceleratorAttributesResponse'),+    newDescribeAcceleratorAttributesResponse,++    -- ** DescribeCustomRoutingAccelerator+    DescribeCustomRoutingAccelerator (DescribeCustomRoutingAccelerator'),+    newDescribeCustomRoutingAccelerator,+    DescribeCustomRoutingAcceleratorResponse (DescribeCustomRoutingAcceleratorResponse'),+    newDescribeCustomRoutingAcceleratorResponse,++    -- ** DescribeCustomRoutingAcceleratorAttributes+    DescribeCustomRoutingAcceleratorAttributes (DescribeCustomRoutingAcceleratorAttributes'),+    newDescribeCustomRoutingAcceleratorAttributes,+    DescribeCustomRoutingAcceleratorAttributesResponse (DescribeCustomRoutingAcceleratorAttributesResponse'),+    newDescribeCustomRoutingAcceleratorAttributesResponse,++    -- ** DescribeCustomRoutingEndpointGroup+    DescribeCustomRoutingEndpointGroup (DescribeCustomRoutingEndpointGroup'),+    newDescribeCustomRoutingEndpointGroup,+    DescribeCustomRoutingEndpointGroupResponse (DescribeCustomRoutingEndpointGroupResponse'),+    newDescribeCustomRoutingEndpointGroupResponse,++    -- ** DescribeCustomRoutingListener+    DescribeCustomRoutingListener (DescribeCustomRoutingListener'),+    newDescribeCustomRoutingListener,+    DescribeCustomRoutingListenerResponse (DescribeCustomRoutingListenerResponse'),+    newDescribeCustomRoutingListenerResponse,++    -- ** DescribeEndpointGroup+    DescribeEndpointGroup (DescribeEndpointGroup'),+    newDescribeEndpointGroup,+    DescribeEndpointGroupResponse (DescribeEndpointGroupResponse'),+    newDescribeEndpointGroupResponse,++    -- ** DescribeListener+    DescribeListener (DescribeListener'),+    newDescribeListener,+    DescribeListenerResponse (DescribeListenerResponse'),+    newDescribeListenerResponse,++    -- ** ListAccelerators (Paginated)+    ListAccelerators (ListAccelerators'),+    newListAccelerators,+    ListAcceleratorsResponse (ListAcceleratorsResponse'),+    newListAcceleratorsResponse,++    -- ** ListByoipCidrs (Paginated)+    ListByoipCidrs (ListByoipCidrs'),+    newListByoipCidrs,+    ListByoipCidrsResponse (ListByoipCidrsResponse'),+    newListByoipCidrsResponse,++    -- ** ListCustomRoutingAccelerators (Paginated)+    ListCustomRoutingAccelerators (ListCustomRoutingAccelerators'),+    newListCustomRoutingAccelerators,+    ListCustomRoutingAcceleratorsResponse (ListCustomRoutingAcceleratorsResponse'),+    newListCustomRoutingAcceleratorsResponse,++    -- ** ListCustomRoutingEndpointGroups+    ListCustomRoutingEndpointGroups (ListCustomRoutingEndpointGroups'),+    newListCustomRoutingEndpointGroups,+    ListCustomRoutingEndpointGroupsResponse (ListCustomRoutingEndpointGroupsResponse'),+    newListCustomRoutingEndpointGroupsResponse,++    -- ** ListCustomRoutingListeners (Paginated)+    ListCustomRoutingListeners (ListCustomRoutingListeners'),+    newListCustomRoutingListeners,+    ListCustomRoutingListenersResponse (ListCustomRoutingListenersResponse'),+    newListCustomRoutingListenersResponse,++    -- ** ListCustomRoutingPortMappings (Paginated)+    ListCustomRoutingPortMappings (ListCustomRoutingPortMappings'),+    newListCustomRoutingPortMappings,+    ListCustomRoutingPortMappingsResponse (ListCustomRoutingPortMappingsResponse'),+    newListCustomRoutingPortMappingsResponse,++    -- ** ListCustomRoutingPortMappingsByDestination (Paginated)+    ListCustomRoutingPortMappingsByDestination (ListCustomRoutingPortMappingsByDestination'),+    newListCustomRoutingPortMappingsByDestination,+    ListCustomRoutingPortMappingsByDestinationResponse (ListCustomRoutingPortMappingsByDestinationResponse'),+    newListCustomRoutingPortMappingsByDestinationResponse,++    -- ** ListEndpointGroups (Paginated)+    ListEndpointGroups (ListEndpointGroups'),+    newListEndpointGroups,+    ListEndpointGroupsResponse (ListEndpointGroupsResponse'),+    newListEndpointGroupsResponse,++    -- ** ListListeners (Paginated)+    ListListeners (ListListeners'),+    newListListeners,+    ListListenersResponse (ListListenersResponse'),+    newListListenersResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** ProvisionByoipCidr+    ProvisionByoipCidr (ProvisionByoipCidr'),+    newProvisionByoipCidr,+    ProvisionByoipCidrResponse (ProvisionByoipCidrResponse'),+    newProvisionByoipCidrResponse,++    -- ** RemoveCustomRoutingEndpoints+    RemoveCustomRoutingEndpoints (RemoveCustomRoutingEndpoints'),+    newRemoveCustomRoutingEndpoints,+    RemoveCustomRoutingEndpointsResponse (RemoveCustomRoutingEndpointsResponse'),+    newRemoveCustomRoutingEndpointsResponse,++    -- ** RemoveEndpoints+    RemoveEndpoints (RemoveEndpoints'),+    newRemoveEndpoints,+    RemoveEndpointsResponse (RemoveEndpointsResponse'),+    newRemoveEndpointsResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateAccelerator+    UpdateAccelerator (UpdateAccelerator'),+    newUpdateAccelerator,+    UpdateAcceleratorResponse (UpdateAcceleratorResponse'),+    newUpdateAcceleratorResponse,++    -- ** UpdateAcceleratorAttributes+    UpdateAcceleratorAttributes (UpdateAcceleratorAttributes'),+    newUpdateAcceleratorAttributes,+    UpdateAcceleratorAttributesResponse (UpdateAcceleratorAttributesResponse'),+    newUpdateAcceleratorAttributesResponse,++    -- ** UpdateCustomRoutingAccelerator+    UpdateCustomRoutingAccelerator (UpdateCustomRoutingAccelerator'),+    newUpdateCustomRoutingAccelerator,+    UpdateCustomRoutingAcceleratorResponse (UpdateCustomRoutingAcceleratorResponse'),+    newUpdateCustomRoutingAcceleratorResponse,++    -- ** UpdateCustomRoutingAcceleratorAttributes+    UpdateCustomRoutingAcceleratorAttributes (UpdateCustomRoutingAcceleratorAttributes'),+    newUpdateCustomRoutingAcceleratorAttributes,+    UpdateCustomRoutingAcceleratorAttributesResponse (UpdateCustomRoutingAcceleratorAttributesResponse'),+    newUpdateCustomRoutingAcceleratorAttributesResponse,++    -- ** UpdateCustomRoutingListener+    UpdateCustomRoutingListener (UpdateCustomRoutingListener'),+    newUpdateCustomRoutingListener,+    UpdateCustomRoutingListenerResponse (UpdateCustomRoutingListenerResponse'),+    newUpdateCustomRoutingListenerResponse,++    -- ** UpdateEndpointGroup+    UpdateEndpointGroup (UpdateEndpointGroup'),+    newUpdateEndpointGroup,+    UpdateEndpointGroupResponse (UpdateEndpointGroupResponse'),+    newUpdateEndpointGroupResponse,++    -- ** UpdateListener+    UpdateListener (UpdateListener'),+    newUpdateListener,+    UpdateListenerResponse (UpdateListenerResponse'),+    newUpdateListenerResponse,++    -- ** WithdrawByoipCidr+    WithdrawByoipCidr (WithdrawByoipCidr'),+    newWithdrawByoipCidr,+    WithdrawByoipCidrResponse (WithdrawByoipCidrResponse'),+    newWithdrawByoipCidrResponse,++    -- * Types++    -- ** AcceleratorStatus+    AcceleratorStatus (..),++    -- ** ByoipCidrState+    ByoipCidrState (..),++    -- ** ClientAffinity+    ClientAffinity (..),++    -- ** CustomRoutingAcceleratorStatus+    CustomRoutingAcceleratorStatus (..),++    -- ** CustomRoutingDestinationTrafficState+    CustomRoutingDestinationTrafficState (..),++    -- ** CustomRoutingProtocol+    CustomRoutingProtocol (..),++    -- ** HealthCheckProtocol+    HealthCheckProtocol (..),++    -- ** HealthState+    HealthState (..),++    -- ** IpAddressFamily+    IpAddressFamily (..),++    -- ** IpAddressType+    IpAddressType (..),++    -- ** Protocol+    Protocol (..),++    -- ** Accelerator+    Accelerator (Accelerator'),+    newAccelerator,++    -- ** AcceleratorAttributes+    AcceleratorAttributes (AcceleratorAttributes'),+    newAcceleratorAttributes,++    -- ** AcceleratorEvent+    AcceleratorEvent (AcceleratorEvent'),+    newAcceleratorEvent,++    -- ** ByoipCidr+    ByoipCidr (ByoipCidr'),+    newByoipCidr,++    -- ** ByoipCidrEvent+    ByoipCidrEvent (ByoipCidrEvent'),+    newByoipCidrEvent,++    -- ** CidrAuthorizationContext+    CidrAuthorizationContext (CidrAuthorizationContext'),+    newCidrAuthorizationContext,++    -- ** CustomRoutingAccelerator+    CustomRoutingAccelerator (CustomRoutingAccelerator'),+    newCustomRoutingAccelerator,++    -- ** CustomRoutingAcceleratorAttributes+    CustomRoutingAcceleratorAttributes (CustomRoutingAcceleratorAttributes'),+    newCustomRoutingAcceleratorAttributes,++    -- ** CustomRoutingDestinationConfiguration+    CustomRoutingDestinationConfiguration (CustomRoutingDestinationConfiguration'),+    newCustomRoutingDestinationConfiguration,++    -- ** CustomRoutingDestinationDescription+    CustomRoutingDestinationDescription (CustomRoutingDestinationDescription'),+    newCustomRoutingDestinationDescription,++    -- ** CustomRoutingEndpointConfiguration+    CustomRoutingEndpointConfiguration (CustomRoutingEndpointConfiguration'),+    newCustomRoutingEndpointConfiguration,++    -- ** CustomRoutingEndpointDescription+    CustomRoutingEndpointDescription (CustomRoutingEndpointDescription'),+    newCustomRoutingEndpointDescription,++    -- ** CustomRoutingEndpointGroup+    CustomRoutingEndpointGroup (CustomRoutingEndpointGroup'),+    newCustomRoutingEndpointGroup,++    -- ** CustomRoutingListener+    CustomRoutingListener (CustomRoutingListener'),+    newCustomRoutingListener,++    -- ** DestinationPortMapping+    DestinationPortMapping (DestinationPortMapping'),+    newDestinationPortMapping,++    -- ** EndpointConfiguration+    EndpointConfiguration (EndpointConfiguration'),+    newEndpointConfiguration,++    -- ** EndpointDescription+    EndpointDescription (EndpointDescription'),+    newEndpointDescription,++    -- ** EndpointGroup+    EndpointGroup (EndpointGroup'),+    newEndpointGroup,++    -- ** EndpointIdentifier+    EndpointIdentifier (EndpointIdentifier'),+    newEndpointIdentifier,++    -- ** IpSet+    IpSet (IpSet'),+    newIpSet,++    -- ** Listener+    Listener (Listener'),+    newListener,++    -- ** PortMapping+    PortMapping (PortMapping'),+    newPortMapping,++    -- ** PortOverride+    PortOverride (PortOverride'),+    newPortOverride,++    -- ** PortRange+    PortRange (PortRange'),+    newPortRange,++    -- ** SocketAddress+    SocketAddress (SocketAddress'),+    newSocketAddress,++    -- ** Tag+    Tag (Tag'),+    newTag,+  )+where++import Amazonka.GlobalAccelerator.AddCustomRoutingEndpoints+import Amazonka.GlobalAccelerator.AddEndpoints+import Amazonka.GlobalAccelerator.AdvertiseByoipCidr+import Amazonka.GlobalAccelerator.AllowCustomRoutingTraffic+import Amazonka.GlobalAccelerator.CreateAccelerator+import Amazonka.GlobalAccelerator.CreateCustomRoutingAccelerator+import Amazonka.GlobalAccelerator.CreateCustomRoutingEndpointGroup+import Amazonka.GlobalAccelerator.CreateCustomRoutingListener+import Amazonka.GlobalAccelerator.CreateEndpointGroup+import Amazonka.GlobalAccelerator.CreateListener+import Amazonka.GlobalAccelerator.DeleteAccelerator+import Amazonka.GlobalAccelerator.DeleteCustomRoutingAccelerator+import Amazonka.GlobalAccelerator.DeleteCustomRoutingEndpointGroup+import Amazonka.GlobalAccelerator.DeleteCustomRoutingListener+import Amazonka.GlobalAccelerator.DeleteEndpointGroup+import Amazonka.GlobalAccelerator.DeleteListener+import Amazonka.GlobalAccelerator.DenyCustomRoutingTraffic+import Amazonka.GlobalAccelerator.DeprovisionByoipCidr+import Amazonka.GlobalAccelerator.DescribeAccelerator+import Amazonka.GlobalAccelerator.DescribeAcceleratorAttributes+import Amazonka.GlobalAccelerator.DescribeCustomRoutingAccelerator+import Amazonka.GlobalAccelerator.DescribeCustomRoutingAcceleratorAttributes+import Amazonka.GlobalAccelerator.DescribeCustomRoutingEndpointGroup+import Amazonka.GlobalAccelerator.DescribeCustomRoutingListener+import Amazonka.GlobalAccelerator.DescribeEndpointGroup+import Amazonka.GlobalAccelerator.DescribeListener+import Amazonka.GlobalAccelerator.Lens+import Amazonka.GlobalAccelerator.ListAccelerators+import Amazonka.GlobalAccelerator.ListByoipCidrs+import Amazonka.GlobalAccelerator.ListCustomRoutingAccelerators+import Amazonka.GlobalAccelerator.ListCustomRoutingEndpointGroups+import Amazonka.GlobalAccelerator.ListCustomRoutingListeners+import Amazonka.GlobalAccelerator.ListCustomRoutingPortMappings+import Amazonka.GlobalAccelerator.ListCustomRoutingPortMappingsByDestination+import Amazonka.GlobalAccelerator.ListEndpointGroups+import Amazonka.GlobalAccelerator.ListListeners+import Amazonka.GlobalAccelerator.ListTagsForResource+import Amazonka.GlobalAccelerator.ProvisionByoipCidr+import Amazonka.GlobalAccelerator.RemoveCustomRoutingEndpoints+import Amazonka.GlobalAccelerator.RemoveEndpoints+import Amazonka.GlobalAccelerator.TagResource+import Amazonka.GlobalAccelerator.Types+import Amazonka.GlobalAccelerator.UntagResource+import Amazonka.GlobalAccelerator.UpdateAccelerator+import Amazonka.GlobalAccelerator.UpdateAcceleratorAttributes+import Amazonka.GlobalAccelerator.UpdateCustomRoutingAccelerator+import Amazonka.GlobalAccelerator.UpdateCustomRoutingAcceleratorAttributes+import Amazonka.GlobalAccelerator.UpdateCustomRoutingListener+import Amazonka.GlobalAccelerator.UpdateEndpointGroup+import Amazonka.GlobalAccelerator.UpdateListener+import Amazonka.GlobalAccelerator.Waiters+import Amazonka.GlobalAccelerator.WithdrawByoipCidr++-- $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 'GlobalAccelerator'.++-- $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/GlobalAccelerator/AddCustomRoutingEndpoints.hs view
@@ -0,0 +1,235 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.AddCustomRoutingEndpoints+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Associate a virtual private cloud (VPC) subnet endpoint with your custom+-- routing accelerator.+--+-- The listener port range must be large enough to support the number of IP+-- addresses that can be specified in your subnet. The number of ports+-- required is: subnet size times the number of ports per destination EC2+-- instances. For example, a subnet defined as \/24 requires a listener+-- port range of at least 255 ports.+--+-- Note: You must have enough remaining listener ports available to map to+-- the subnet ports, or the call will fail with a LimitExceededException.+--+-- By default, all destinations in a subnet in a custom routing accelerator+-- cannot receive traffic. To enable all destinations to receive traffic,+-- or to specify individual port mappings that can receive traffic, see the+-- <https://docs.aws.amazon.com/global-accelerator/latest/api/API_AllowCustomRoutingTraffic.html AllowCustomRoutingTraffic>+-- operation.+module Amazonka.GlobalAccelerator.AddCustomRoutingEndpoints+  ( -- * Creating a Request+    AddCustomRoutingEndpoints (..),+    newAddCustomRoutingEndpoints,++    -- * Request Lenses+    addCustomRoutingEndpoints_endpointConfigurations,+    addCustomRoutingEndpoints_endpointGroupArn,++    -- * Destructuring the Response+    AddCustomRoutingEndpointsResponse (..),+    newAddCustomRoutingEndpointsResponse,++    -- * Response Lenses+    addCustomRoutingEndpointsResponse_endpointDescriptions,+    addCustomRoutingEndpointsResponse_endpointGroupArn,+    addCustomRoutingEndpointsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAddCustomRoutingEndpoints' smart constructor.+data AddCustomRoutingEndpoints = AddCustomRoutingEndpoints'+  { -- | The list of endpoint objects to add to a custom routing accelerator.+    endpointConfigurations :: Prelude.NonEmpty CustomRoutingEndpointConfiguration,+    -- | The Amazon Resource Name (ARN) of the endpoint group for the custom+    -- routing endpoint.+    endpointGroupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddCustomRoutingEndpoints' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointConfigurations', 'addCustomRoutingEndpoints_endpointConfigurations' - The list of endpoint objects to add to a custom routing accelerator.+--+-- 'endpointGroupArn', 'addCustomRoutingEndpoints_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group for the custom+-- routing endpoint.+newAddCustomRoutingEndpoints ::+  -- | 'endpointConfigurations'+  Prelude.NonEmpty CustomRoutingEndpointConfiguration ->+  -- | 'endpointGroupArn'+  Prelude.Text ->+  AddCustomRoutingEndpoints+newAddCustomRoutingEndpoints+  pEndpointConfigurations_+  pEndpointGroupArn_ =+    AddCustomRoutingEndpoints'+      { endpointConfigurations =+          Lens.coerced Lens.# pEndpointConfigurations_,+        endpointGroupArn = pEndpointGroupArn_+      }++-- | The list of endpoint objects to add to a custom routing accelerator.+addCustomRoutingEndpoints_endpointConfigurations :: Lens.Lens' AddCustomRoutingEndpoints (Prelude.NonEmpty CustomRoutingEndpointConfiguration)+addCustomRoutingEndpoints_endpointConfigurations = Lens.lens (\AddCustomRoutingEndpoints' {endpointConfigurations} -> endpointConfigurations) (\s@AddCustomRoutingEndpoints' {} a -> s {endpointConfigurations = a} :: AddCustomRoutingEndpoints) Prelude.. Lens.coerced++-- | The Amazon Resource Name (ARN) of the endpoint group for the custom+-- routing endpoint.+addCustomRoutingEndpoints_endpointGroupArn :: Lens.Lens' AddCustomRoutingEndpoints Prelude.Text+addCustomRoutingEndpoints_endpointGroupArn = Lens.lens (\AddCustomRoutingEndpoints' {endpointGroupArn} -> endpointGroupArn) (\s@AddCustomRoutingEndpoints' {} a -> s {endpointGroupArn = a} :: AddCustomRoutingEndpoints)++instance Core.AWSRequest AddCustomRoutingEndpoints where+  type+    AWSResponse AddCustomRoutingEndpoints =+      AddCustomRoutingEndpointsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AddCustomRoutingEndpointsResponse'+            Prelude.<$> ( x+                            Data..?> "EndpointDescriptions"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "EndpointGroupArn")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AddCustomRoutingEndpoints where+  hashWithSalt _salt AddCustomRoutingEndpoints' {..} =+    _salt+      `Prelude.hashWithSalt` endpointConfigurations+      `Prelude.hashWithSalt` endpointGroupArn++instance Prelude.NFData AddCustomRoutingEndpoints where+  rnf AddCustomRoutingEndpoints' {..} =+    Prelude.rnf endpointConfigurations+      `Prelude.seq` Prelude.rnf endpointGroupArn++instance Data.ToHeaders AddCustomRoutingEndpoints where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.AddCustomRoutingEndpoints" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AddCustomRoutingEndpoints where+  toJSON AddCustomRoutingEndpoints' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "EndpointConfigurations"+                  Data..= endpointConfigurations+              ),+            Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn)+          ]+      )++instance Data.ToPath AddCustomRoutingEndpoints where+  toPath = Prelude.const "/"++instance Data.ToQuery AddCustomRoutingEndpoints where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAddCustomRoutingEndpointsResponse' smart constructor.+data AddCustomRoutingEndpointsResponse = AddCustomRoutingEndpointsResponse'+  { -- | The endpoint objects added to the custom routing accelerator.+    endpointDescriptions :: Prelude.Maybe [CustomRoutingEndpointDescription],+    -- | The Amazon Resource Name (ARN) of the endpoint group for the custom+    -- routing endpoint.+    endpointGroupArn :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddCustomRoutingEndpointsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointDescriptions', 'addCustomRoutingEndpointsResponse_endpointDescriptions' - The endpoint objects added to the custom routing accelerator.+--+-- 'endpointGroupArn', 'addCustomRoutingEndpointsResponse_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group for the custom+-- routing endpoint.+--+-- 'httpStatus', 'addCustomRoutingEndpointsResponse_httpStatus' - The response's http status code.+newAddCustomRoutingEndpointsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AddCustomRoutingEndpointsResponse+newAddCustomRoutingEndpointsResponse pHttpStatus_ =+  AddCustomRoutingEndpointsResponse'+    { endpointDescriptions =+        Prelude.Nothing,+      endpointGroupArn = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The endpoint objects added to the custom routing accelerator.+addCustomRoutingEndpointsResponse_endpointDescriptions :: Lens.Lens' AddCustomRoutingEndpointsResponse (Prelude.Maybe [CustomRoutingEndpointDescription])+addCustomRoutingEndpointsResponse_endpointDescriptions = Lens.lens (\AddCustomRoutingEndpointsResponse' {endpointDescriptions} -> endpointDescriptions) (\s@AddCustomRoutingEndpointsResponse' {} a -> s {endpointDescriptions = a} :: AddCustomRoutingEndpointsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the endpoint group for the custom+-- routing endpoint.+addCustomRoutingEndpointsResponse_endpointGroupArn :: Lens.Lens' AddCustomRoutingEndpointsResponse (Prelude.Maybe Prelude.Text)+addCustomRoutingEndpointsResponse_endpointGroupArn = Lens.lens (\AddCustomRoutingEndpointsResponse' {endpointGroupArn} -> endpointGroupArn) (\s@AddCustomRoutingEndpointsResponse' {} a -> s {endpointGroupArn = a} :: AddCustomRoutingEndpointsResponse)++-- | The response's http status code.+addCustomRoutingEndpointsResponse_httpStatus :: Lens.Lens' AddCustomRoutingEndpointsResponse Prelude.Int+addCustomRoutingEndpointsResponse_httpStatus = Lens.lens (\AddCustomRoutingEndpointsResponse' {httpStatus} -> httpStatus) (\s@AddCustomRoutingEndpointsResponse' {} a -> s {httpStatus = a} :: AddCustomRoutingEndpointsResponse)++instance+  Prelude.NFData+    AddCustomRoutingEndpointsResponse+  where+  rnf AddCustomRoutingEndpointsResponse' {..} =+    Prelude.rnf endpointDescriptions+      `Prelude.seq` Prelude.rnf endpointGroupArn+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/AddEndpoints.hs view
@@ -0,0 +1,219 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.AddEndpoints+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Add endpoints to an endpoint group. The @AddEndpoints@ API operation is+-- the recommended option for adding endpoints. The alternative options are+-- to add endpoints when you create an endpoint group (with the+-- <https://docs.aws.amazon.com/global-accelerator/latest/api/API_CreateEndpointGroup.html CreateEndpointGroup>+-- API) or when you update an endpoint group (with the+-- <https://docs.aws.amazon.com/global-accelerator/latest/api/API_UpdateEndpointGroup.html UpdateEndpointGroup>+-- API).+--+-- There are two advantages to using @AddEndpoints@ to add endpoints:+--+-- -   It\'s faster, because Global Accelerator only has to resolve the new+--     endpoints that you\'re adding.+--+-- -   It\'s more convenient, because you don\'t need to specify all of the+--     current endpoints that are already in the endpoint group in addition+--     to the new endpoints that you want to add.+module Amazonka.GlobalAccelerator.AddEndpoints+  ( -- * Creating a Request+    AddEndpoints (..),+    newAddEndpoints,++    -- * Request Lenses+    addEndpoints_endpointConfigurations,+    addEndpoints_endpointGroupArn,++    -- * Destructuring the Response+    AddEndpointsResponse (..),+    newAddEndpointsResponse,++    -- * Response Lenses+    addEndpointsResponse_endpointDescriptions,+    addEndpointsResponse_endpointGroupArn,+    addEndpointsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAddEndpoints' smart constructor.+data AddEndpoints = AddEndpoints'+  { -- | The list of endpoint objects.+    endpointConfigurations :: [EndpointConfiguration],+    -- | The Amazon Resource Name (ARN) of the endpoint group.+    endpointGroupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddEndpoints' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointConfigurations', 'addEndpoints_endpointConfigurations' - The list of endpoint objects.+--+-- 'endpointGroupArn', 'addEndpoints_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group.+newAddEndpoints ::+  -- | 'endpointGroupArn'+  Prelude.Text ->+  AddEndpoints+newAddEndpoints pEndpointGroupArn_ =+  AddEndpoints'+    { endpointConfigurations =+        Prelude.mempty,+      endpointGroupArn = pEndpointGroupArn_+    }++-- | The list of endpoint objects.+addEndpoints_endpointConfigurations :: Lens.Lens' AddEndpoints [EndpointConfiguration]+addEndpoints_endpointConfigurations = Lens.lens (\AddEndpoints' {endpointConfigurations} -> endpointConfigurations) (\s@AddEndpoints' {} a -> s {endpointConfigurations = a} :: AddEndpoints) Prelude.. Lens.coerced++-- | The Amazon Resource Name (ARN) of the endpoint group.+addEndpoints_endpointGroupArn :: Lens.Lens' AddEndpoints Prelude.Text+addEndpoints_endpointGroupArn = Lens.lens (\AddEndpoints' {endpointGroupArn} -> endpointGroupArn) (\s@AddEndpoints' {} a -> s {endpointGroupArn = a} :: AddEndpoints)++instance Core.AWSRequest AddEndpoints where+  type AWSResponse AddEndpoints = AddEndpointsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AddEndpointsResponse'+            Prelude.<$> ( x+                            Data..?> "EndpointDescriptions"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "EndpointGroupArn")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AddEndpoints where+  hashWithSalt _salt AddEndpoints' {..} =+    _salt+      `Prelude.hashWithSalt` endpointConfigurations+      `Prelude.hashWithSalt` endpointGroupArn++instance Prelude.NFData AddEndpoints where+  rnf AddEndpoints' {..} =+    Prelude.rnf endpointConfigurations+      `Prelude.seq` Prelude.rnf endpointGroupArn++instance Data.ToHeaders AddEndpoints where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.AddEndpoints" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AddEndpoints where+  toJSON AddEndpoints' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "EndpointConfigurations"+                  Data..= endpointConfigurations+              ),+            Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn)+          ]+      )++instance Data.ToPath AddEndpoints where+  toPath = Prelude.const "/"++instance Data.ToQuery AddEndpoints where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAddEndpointsResponse' smart constructor.+data AddEndpointsResponse = AddEndpointsResponse'+  { -- | The list of endpoint objects.+    endpointDescriptions :: Prelude.Maybe [EndpointDescription],+    -- | The Amazon Resource Name (ARN) of the endpoint group.+    endpointGroupArn :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddEndpointsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointDescriptions', 'addEndpointsResponse_endpointDescriptions' - The list of endpoint objects.+--+-- 'endpointGroupArn', 'addEndpointsResponse_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group.+--+-- 'httpStatus', 'addEndpointsResponse_httpStatus' - The response's http status code.+newAddEndpointsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AddEndpointsResponse+newAddEndpointsResponse pHttpStatus_ =+  AddEndpointsResponse'+    { endpointDescriptions =+        Prelude.Nothing,+      endpointGroupArn = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of endpoint objects.+addEndpointsResponse_endpointDescriptions :: Lens.Lens' AddEndpointsResponse (Prelude.Maybe [EndpointDescription])+addEndpointsResponse_endpointDescriptions = Lens.lens (\AddEndpointsResponse' {endpointDescriptions} -> endpointDescriptions) (\s@AddEndpointsResponse' {} a -> s {endpointDescriptions = a} :: AddEndpointsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the endpoint group.+addEndpointsResponse_endpointGroupArn :: Lens.Lens' AddEndpointsResponse (Prelude.Maybe Prelude.Text)+addEndpointsResponse_endpointGroupArn = Lens.lens (\AddEndpointsResponse' {endpointGroupArn} -> endpointGroupArn) (\s@AddEndpointsResponse' {} a -> s {endpointGroupArn = a} :: AddEndpointsResponse)++-- | The response's http status code.+addEndpointsResponse_httpStatus :: Lens.Lens' AddEndpointsResponse Prelude.Int+addEndpointsResponse_httpStatus = Lens.lens (\AddEndpointsResponse' {httpStatus} -> httpStatus) (\s@AddEndpointsResponse' {} a -> s {httpStatus = a} :: AddEndpointsResponse)++instance Prelude.NFData AddEndpointsResponse where+  rnf AddEndpointsResponse' {..} =+    Prelude.rnf endpointDescriptions+      `Prelude.seq` Prelude.rnf endpointGroupArn+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/AdvertiseByoipCidr.hs view
@@ -0,0 +1,185 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.AdvertiseByoipCidr+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Advertises an IPv4 address range that is provisioned for use with your+-- Amazon Web Services resources through bring your own IP addresses+-- (BYOIP). It can take a few minutes before traffic to the specified+-- addresses starts routing to Amazon Web Services because of propagation+-- delays.+--+-- To stop advertising the BYOIP address range, use+-- <https://docs.aws.amazon.com/global-accelerator/latest/api/WithdrawByoipCidr.html WithdrawByoipCidr>.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+-- in the /Global Accelerator Developer Guide/.+module Amazonka.GlobalAccelerator.AdvertiseByoipCidr+  ( -- * Creating a Request+    AdvertiseByoipCidr (..),+    newAdvertiseByoipCidr,++    -- * Request Lenses+    advertiseByoipCidr_cidr,++    -- * Destructuring the Response+    AdvertiseByoipCidrResponse (..),+    newAdvertiseByoipCidrResponse,++    -- * Response Lenses+    advertiseByoipCidrResponse_byoipCidr,+    advertiseByoipCidrResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAdvertiseByoipCidr' smart constructor.+data AdvertiseByoipCidr = AdvertiseByoipCidr'+  { -- | The address range, in CIDR notation. This must be the exact range that+    -- you provisioned. You can\'t advertise only a portion of the provisioned+    -- range.+    cidr :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AdvertiseByoipCidr' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cidr', 'advertiseByoipCidr_cidr' - The address range, in CIDR notation. This must be the exact range that+-- you provisioned. You can\'t advertise only a portion of the provisioned+-- range.+newAdvertiseByoipCidr ::+  -- | 'cidr'+  Prelude.Text ->+  AdvertiseByoipCidr+newAdvertiseByoipCidr pCidr_ =+  AdvertiseByoipCidr' {cidr = pCidr_}++-- | The address range, in CIDR notation. This must be the exact range that+-- you provisioned. You can\'t advertise only a portion of the provisioned+-- range.+advertiseByoipCidr_cidr :: Lens.Lens' AdvertiseByoipCidr Prelude.Text+advertiseByoipCidr_cidr = Lens.lens (\AdvertiseByoipCidr' {cidr} -> cidr) (\s@AdvertiseByoipCidr' {} a -> s {cidr = a} :: AdvertiseByoipCidr)++instance Core.AWSRequest AdvertiseByoipCidr where+  type+    AWSResponse AdvertiseByoipCidr =+      AdvertiseByoipCidrResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AdvertiseByoipCidrResponse'+            Prelude.<$> (x Data..?> "ByoipCidr")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AdvertiseByoipCidr where+  hashWithSalt _salt AdvertiseByoipCidr' {..} =+    _salt `Prelude.hashWithSalt` cidr++instance Prelude.NFData AdvertiseByoipCidr where+  rnf AdvertiseByoipCidr' {..} = Prelude.rnf cidr++instance Data.ToHeaders AdvertiseByoipCidr where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.AdvertiseByoipCidr" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AdvertiseByoipCidr where+  toJSON AdvertiseByoipCidr' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Cidr" Data..= cidr)]+      )++instance Data.ToPath AdvertiseByoipCidr where+  toPath = Prelude.const "/"++instance Data.ToQuery AdvertiseByoipCidr where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAdvertiseByoipCidrResponse' smart constructor.+data AdvertiseByoipCidrResponse = AdvertiseByoipCidrResponse'+  { -- | Information about the address range.+    byoipCidr :: Prelude.Maybe ByoipCidr,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AdvertiseByoipCidrResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'byoipCidr', 'advertiseByoipCidrResponse_byoipCidr' - Information about the address range.+--+-- 'httpStatus', 'advertiseByoipCidrResponse_httpStatus' - The response's http status code.+newAdvertiseByoipCidrResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AdvertiseByoipCidrResponse+newAdvertiseByoipCidrResponse pHttpStatus_ =+  AdvertiseByoipCidrResponse'+    { byoipCidr =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the address range.+advertiseByoipCidrResponse_byoipCidr :: Lens.Lens' AdvertiseByoipCidrResponse (Prelude.Maybe ByoipCidr)+advertiseByoipCidrResponse_byoipCidr = Lens.lens (\AdvertiseByoipCidrResponse' {byoipCidr} -> byoipCidr) (\s@AdvertiseByoipCidrResponse' {} a -> s {byoipCidr = a} :: AdvertiseByoipCidrResponse)++-- | The response's http status code.+advertiseByoipCidrResponse_httpStatus :: Lens.Lens' AdvertiseByoipCidrResponse Prelude.Int+advertiseByoipCidrResponse_httpStatus = Lens.lens (\AdvertiseByoipCidrResponse' {httpStatus} -> httpStatus) (\s@AdvertiseByoipCidrResponse' {} a -> s {httpStatus = a} :: AdvertiseByoipCidrResponse)++instance Prelude.NFData AdvertiseByoipCidrResponse where+  rnf AdvertiseByoipCidrResponse' {..} =+    Prelude.rnf byoipCidr+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/AllowCustomRoutingTraffic.hs view
@@ -0,0 +1,279 @@+{-# 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.GlobalAccelerator.AllowCustomRoutingTraffic+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Specify the Amazon EC2 instance (destination) IP addresses and ports for+-- a VPC subnet endpoint that can receive traffic for a custom routing+-- accelerator. You can allow traffic to all destinations in the subnet+-- endpoint, or allow traffic to a specified list of destination IP+-- addresses and ports in the subnet. Note that you cannot specify IP+-- addresses or ports outside of the range that you configured for the+-- endpoint group.+--+-- After you make changes, you can verify that the updates are complete by+-- checking the status of your accelerator: the status changes from+-- IN_PROGRESS to DEPLOYED.+module Amazonka.GlobalAccelerator.AllowCustomRoutingTraffic+  ( -- * Creating a Request+    AllowCustomRoutingTraffic (..),+    newAllowCustomRoutingTraffic,++    -- * Request Lenses+    allowCustomRoutingTraffic_allowAllTrafficToEndpoint,+    allowCustomRoutingTraffic_destinationAddresses,+    allowCustomRoutingTraffic_destinationPorts,+    allowCustomRoutingTraffic_endpointGroupArn,+    allowCustomRoutingTraffic_endpointId,++    -- * Destructuring the Response+    AllowCustomRoutingTrafficResponse (..),+    newAllowCustomRoutingTrafficResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAllowCustomRoutingTraffic' smart constructor.+data AllowCustomRoutingTraffic = AllowCustomRoutingTraffic'+  { -- | Indicates whether all destination IP addresses and ports for a specified+    -- VPC subnet endpoint can receive traffic from a custom routing+    -- accelerator. The value is TRUE or FALSE.+    --+    -- When set to TRUE, /all/ destinations in the custom routing VPC subnet+    -- can receive traffic. Note that you cannot specify destination IP+    -- addresses and ports when the value is set to TRUE.+    --+    -- When set to FALSE (or not specified), you /must/ specify a list of+    -- destination IP addresses that are allowed to receive traffic. A list of+    -- ports is optional. If you don\'t specify a list of ports, the ports that+    -- can accept traffic is the same as the ports configured for the endpoint+    -- group.+    --+    -- The default value is FALSE.+    allowAllTrafficToEndpoint :: Prelude.Maybe Prelude.Bool,+    -- | A list of specific Amazon EC2 instance IP addresses (destination+    -- addresses) in a subnet that you want to allow to receive traffic. The IP+    -- addresses must be a subset of the IP addresses that you specified for+    -- the endpoint group.+    --+    -- @DestinationAddresses@ is required if @AllowAllTrafficToEndpoint@ is+    -- @FALSE@ or is not specified.+    destinationAddresses :: Prelude.Maybe [Prelude.Text],+    -- | A list of specific Amazon EC2 instance ports (destination ports) that+    -- you want to allow to receive traffic.+    destinationPorts :: Prelude.Maybe [Prelude.Natural],+    -- | The Amazon Resource Name (ARN) of the endpoint group.+    endpointGroupArn :: Prelude.Text,+    -- | An ID for the endpoint. For custom routing accelerators, this is the+    -- virtual private cloud (VPC) subnet ID.+    endpointId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AllowCustomRoutingTraffic' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'allowAllTrafficToEndpoint', 'allowCustomRoutingTraffic_allowAllTrafficToEndpoint' - Indicates whether all destination IP addresses and ports for a specified+-- VPC subnet endpoint can receive traffic from a custom routing+-- accelerator. The value is TRUE or FALSE.+--+-- When set to TRUE, /all/ destinations in the custom routing VPC subnet+-- can receive traffic. Note that you cannot specify destination IP+-- addresses and ports when the value is set to TRUE.+--+-- When set to FALSE (or not specified), you /must/ specify a list of+-- destination IP addresses that are allowed to receive traffic. A list of+-- ports is optional. If you don\'t specify a list of ports, the ports that+-- can accept traffic is the same as the ports configured for the endpoint+-- group.+--+-- The default value is FALSE.+--+-- 'destinationAddresses', 'allowCustomRoutingTraffic_destinationAddresses' - A list of specific Amazon EC2 instance IP addresses (destination+-- addresses) in a subnet that you want to allow to receive traffic. The IP+-- addresses must be a subset of the IP addresses that you specified for+-- the endpoint group.+--+-- @DestinationAddresses@ is required if @AllowAllTrafficToEndpoint@ is+-- @FALSE@ or is not specified.+--+-- 'destinationPorts', 'allowCustomRoutingTraffic_destinationPorts' - A list of specific Amazon EC2 instance ports (destination ports) that+-- you want to allow to receive traffic.+--+-- 'endpointGroupArn', 'allowCustomRoutingTraffic_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group.+--+-- 'endpointId', 'allowCustomRoutingTraffic_endpointId' - An ID for the endpoint. For custom routing accelerators, this is the+-- virtual private cloud (VPC) subnet ID.+newAllowCustomRoutingTraffic ::+  -- | 'endpointGroupArn'+  Prelude.Text ->+  -- | 'endpointId'+  Prelude.Text ->+  AllowCustomRoutingTraffic+newAllowCustomRoutingTraffic+  pEndpointGroupArn_+  pEndpointId_ =+    AllowCustomRoutingTraffic'+      { allowAllTrafficToEndpoint =+          Prelude.Nothing,+        destinationAddresses = Prelude.Nothing,+        destinationPorts = Prelude.Nothing,+        endpointGroupArn = pEndpointGroupArn_,+        endpointId = pEndpointId_+      }++-- | Indicates whether all destination IP addresses and ports for a specified+-- VPC subnet endpoint can receive traffic from a custom routing+-- accelerator. The value is TRUE or FALSE.+--+-- When set to TRUE, /all/ destinations in the custom routing VPC subnet+-- can receive traffic. Note that you cannot specify destination IP+-- addresses and ports when the value is set to TRUE.+--+-- When set to FALSE (or not specified), you /must/ specify a list of+-- destination IP addresses that are allowed to receive traffic. A list of+-- ports is optional. If you don\'t specify a list of ports, the ports that+-- can accept traffic is the same as the ports configured for the endpoint+-- group.+--+-- The default value is FALSE.+allowCustomRoutingTraffic_allowAllTrafficToEndpoint :: Lens.Lens' AllowCustomRoutingTraffic (Prelude.Maybe Prelude.Bool)+allowCustomRoutingTraffic_allowAllTrafficToEndpoint = Lens.lens (\AllowCustomRoutingTraffic' {allowAllTrafficToEndpoint} -> allowAllTrafficToEndpoint) (\s@AllowCustomRoutingTraffic' {} a -> s {allowAllTrafficToEndpoint = a} :: AllowCustomRoutingTraffic)++-- | A list of specific Amazon EC2 instance IP addresses (destination+-- addresses) in a subnet that you want to allow to receive traffic. The IP+-- addresses must be a subset of the IP addresses that you specified for+-- the endpoint group.+--+-- @DestinationAddresses@ is required if @AllowAllTrafficToEndpoint@ is+-- @FALSE@ or is not specified.+allowCustomRoutingTraffic_destinationAddresses :: Lens.Lens' AllowCustomRoutingTraffic (Prelude.Maybe [Prelude.Text])+allowCustomRoutingTraffic_destinationAddresses = Lens.lens (\AllowCustomRoutingTraffic' {destinationAddresses} -> destinationAddresses) (\s@AllowCustomRoutingTraffic' {} a -> s {destinationAddresses = a} :: AllowCustomRoutingTraffic) Prelude.. Lens.mapping Lens.coerced++-- | A list of specific Amazon EC2 instance ports (destination ports) that+-- you want to allow to receive traffic.+allowCustomRoutingTraffic_destinationPorts :: Lens.Lens' AllowCustomRoutingTraffic (Prelude.Maybe [Prelude.Natural])+allowCustomRoutingTraffic_destinationPorts = Lens.lens (\AllowCustomRoutingTraffic' {destinationPorts} -> destinationPorts) (\s@AllowCustomRoutingTraffic' {} a -> s {destinationPorts = a} :: AllowCustomRoutingTraffic) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the endpoint group.+allowCustomRoutingTraffic_endpointGroupArn :: Lens.Lens' AllowCustomRoutingTraffic Prelude.Text+allowCustomRoutingTraffic_endpointGroupArn = Lens.lens (\AllowCustomRoutingTraffic' {endpointGroupArn} -> endpointGroupArn) (\s@AllowCustomRoutingTraffic' {} a -> s {endpointGroupArn = a} :: AllowCustomRoutingTraffic)++-- | An ID for the endpoint. For custom routing accelerators, this is the+-- virtual private cloud (VPC) subnet ID.+allowCustomRoutingTraffic_endpointId :: Lens.Lens' AllowCustomRoutingTraffic Prelude.Text+allowCustomRoutingTraffic_endpointId = Lens.lens (\AllowCustomRoutingTraffic' {endpointId} -> endpointId) (\s@AllowCustomRoutingTraffic' {} a -> s {endpointId = a} :: AllowCustomRoutingTraffic)++instance Core.AWSRequest AllowCustomRoutingTraffic where+  type+    AWSResponse AllowCustomRoutingTraffic =+      AllowCustomRoutingTrafficResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      AllowCustomRoutingTrafficResponse'++instance Prelude.Hashable AllowCustomRoutingTraffic where+  hashWithSalt _salt AllowCustomRoutingTraffic' {..} =+    _salt+      `Prelude.hashWithSalt` allowAllTrafficToEndpoint+      `Prelude.hashWithSalt` destinationAddresses+      `Prelude.hashWithSalt` destinationPorts+      `Prelude.hashWithSalt` endpointGroupArn+      `Prelude.hashWithSalt` endpointId++instance Prelude.NFData AllowCustomRoutingTraffic where+  rnf AllowCustomRoutingTraffic' {..} =+    Prelude.rnf allowAllTrafficToEndpoint+      `Prelude.seq` Prelude.rnf destinationAddresses+      `Prelude.seq` Prelude.rnf destinationPorts+      `Prelude.seq` Prelude.rnf endpointGroupArn+      `Prelude.seq` Prelude.rnf endpointId++instance Data.ToHeaders AllowCustomRoutingTraffic where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.AllowCustomRoutingTraffic" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AllowCustomRoutingTraffic where+  toJSON AllowCustomRoutingTraffic' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AllowAllTrafficToEndpoint" Data..=)+              Prelude.<$> allowAllTrafficToEndpoint,+            ("DestinationAddresses" Data..=)+              Prelude.<$> destinationAddresses,+            ("DestinationPorts" Data..=)+              Prelude.<$> destinationPorts,+            Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn),+            Prelude.Just ("EndpointId" Data..= endpointId)+          ]+      )++instance Data.ToPath AllowCustomRoutingTraffic where+  toPath = Prelude.const "/"++instance Data.ToQuery AllowCustomRoutingTraffic where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAllowCustomRoutingTrafficResponse' smart constructor.+data AllowCustomRoutingTrafficResponse = AllowCustomRoutingTrafficResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AllowCustomRoutingTrafficResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newAllowCustomRoutingTrafficResponse ::+  AllowCustomRoutingTrafficResponse+newAllowCustomRoutingTrafficResponse =+  AllowCustomRoutingTrafficResponse'++instance+  Prelude.NFData+    AllowCustomRoutingTrafficResponse+  where+  rnf _ = ()
+ gen/Amazonka/GlobalAccelerator/CreateAccelerator.hs view
@@ -0,0 +1,354 @@+{-# 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.GlobalAccelerator.CreateAccelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Create an accelerator. An accelerator includes one or more listeners+-- that process inbound connections and direct traffic to one or more+-- endpoint groups, each of which includes endpoints, such as Network Load+-- Balancers.+--+-- Global Accelerator is a global service that supports endpoints in+-- multiple Amazon Web Services Regions but you must specify the US West+-- (Oregon) Region to create, update, or otherwise work with accelerators.+-- That is, for example, specify @--region us-west-2@ on AWS CLI commands.+module Amazonka.GlobalAccelerator.CreateAccelerator+  ( -- * Creating a Request+    CreateAccelerator (..),+    newCreateAccelerator,++    -- * Request Lenses+    createAccelerator_enabled,+    createAccelerator_ipAddressType,+    createAccelerator_ipAddresses,+    createAccelerator_tags,+    createAccelerator_name,+    createAccelerator_idempotencyToken,++    -- * Destructuring the Response+    CreateAcceleratorResponse (..),+    newCreateAcceleratorResponse,++    -- * Response Lenses+    createAcceleratorResponse_accelerator,+    createAcceleratorResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateAccelerator' smart constructor.+data CreateAccelerator = CreateAccelerator'+  { -- | Indicates whether an accelerator is enabled. The value is true or false.+    -- The default value is true.+    --+    -- If the value is set to true, an accelerator cannot be deleted. If set to+    -- false, the accelerator can be deleted.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | The IP address type that an accelerator supports. For a standard+    -- accelerator, the value can be IPV4 or DUAL_STACK.+    ipAddressType :: Prelude.Maybe IpAddressType,+    -- | Optionally, if you\'ve added your own IP address pool to Global+    -- Accelerator (BYOIP), you can choose an IPv4 address from your own pool+    -- to use for the accelerator\'s static IPv4 address when you create an+    -- accelerator.+    --+    -- After you bring an address range to Amazon Web Services, it appears in+    -- your account as an address pool. When you create an accelerator, you can+    -- assign one IPv4 address from your range to it. Global Accelerator+    -- assigns you a second static IPv4 address from an Amazon IP address+    -- range. If you bring two IPv4 address ranges to Amazon Web Services, you+    -- can assign one IPv4 address from each range to your accelerator. This+    -- restriction is because Global Accelerator assigns each address range to+    -- a different network zone, for high availability.+    --+    -- You can specify one or two addresses, separated by a space. Do not+    -- include the \/32 suffix.+    --+    -- Note that you can\'t update IP addresses for an existing accelerator. To+    -- change them, you must create a new accelerator with the new addresses.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+    -- in the /Global Accelerator Developer Guide/.+    ipAddresses :: Prelude.Maybe [Prelude.Text],+    -- | Create tags for an accelerator.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/tagging-in-global-accelerator.html Tagging in Global Accelerator>+    -- in the /Global Accelerator Developer Guide/.+    tags :: Prelude.Maybe [Tag],+    -- | The name of the accelerator. The name can have a maximum of 64+    -- characters, must contain only alphanumeric characters, periods (.), or+    -- hyphens (-), and must not begin or end with a hyphen or period.+    name :: Prelude.Text,+    -- | A unique, case-sensitive identifier that you provide to ensure the+    -- idempotency—that is, the uniqueness—of an accelerator.+    idempotencyToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateAccelerator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'enabled', 'createAccelerator_enabled' - Indicates whether an accelerator is enabled. The value is true or false.+-- The default value is true.+--+-- If the value is set to true, an accelerator cannot be deleted. If set to+-- false, the accelerator can be deleted.+--+-- 'ipAddressType', 'createAccelerator_ipAddressType' - The IP address type that an accelerator supports. For a standard+-- accelerator, the value can be IPV4 or DUAL_STACK.+--+-- 'ipAddresses', 'createAccelerator_ipAddresses' - Optionally, if you\'ve added your own IP address pool to Global+-- Accelerator (BYOIP), you can choose an IPv4 address from your own pool+-- to use for the accelerator\'s static IPv4 address when you create an+-- accelerator.+--+-- After you bring an address range to Amazon Web Services, it appears in+-- your account as an address pool. When you create an accelerator, you can+-- assign one IPv4 address from your range to it. Global Accelerator+-- assigns you a second static IPv4 address from an Amazon IP address+-- range. If you bring two IPv4 address ranges to Amazon Web Services, you+-- can assign one IPv4 address from each range to your accelerator. This+-- restriction is because Global Accelerator assigns each address range to+-- a different network zone, for high availability.+--+-- You can specify one or two addresses, separated by a space. Do not+-- include the \/32 suffix.+--+-- Note that you can\'t update IP addresses for an existing accelerator. To+-- change them, you must create a new accelerator with the new addresses.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+-- in the /Global Accelerator Developer Guide/.+--+-- 'tags', 'createAccelerator_tags' - Create tags for an accelerator.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/tagging-in-global-accelerator.html Tagging in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+--+-- 'name', 'createAccelerator_name' - The name of the accelerator. The name can have a maximum of 64+-- characters, must contain only alphanumeric characters, periods (.), or+-- hyphens (-), and must not begin or end with a hyphen or period.+--+-- 'idempotencyToken', 'createAccelerator_idempotencyToken' - A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of an accelerator.+newCreateAccelerator ::+  -- | 'name'+  Prelude.Text ->+  -- | 'idempotencyToken'+  Prelude.Text ->+  CreateAccelerator+newCreateAccelerator pName_ pIdempotencyToken_ =+  CreateAccelerator'+    { enabled = Prelude.Nothing,+      ipAddressType = Prelude.Nothing,+      ipAddresses = Prelude.Nothing,+      tags = Prelude.Nothing,+      name = pName_,+      idempotencyToken = pIdempotencyToken_+    }++-- | Indicates whether an accelerator is enabled. The value is true or false.+-- The default value is true.+--+-- If the value is set to true, an accelerator cannot be deleted. If set to+-- false, the accelerator can be deleted.+createAccelerator_enabled :: Lens.Lens' CreateAccelerator (Prelude.Maybe Prelude.Bool)+createAccelerator_enabled = Lens.lens (\CreateAccelerator' {enabled} -> enabled) (\s@CreateAccelerator' {} a -> s {enabled = a} :: CreateAccelerator)++-- | The IP address type that an accelerator supports. For a standard+-- accelerator, the value can be IPV4 or DUAL_STACK.+createAccelerator_ipAddressType :: Lens.Lens' CreateAccelerator (Prelude.Maybe IpAddressType)+createAccelerator_ipAddressType = Lens.lens (\CreateAccelerator' {ipAddressType} -> ipAddressType) (\s@CreateAccelerator' {} a -> s {ipAddressType = a} :: CreateAccelerator)++-- | Optionally, if you\'ve added your own IP address pool to Global+-- Accelerator (BYOIP), you can choose an IPv4 address from your own pool+-- to use for the accelerator\'s static IPv4 address when you create an+-- accelerator.+--+-- After you bring an address range to Amazon Web Services, it appears in+-- your account as an address pool. When you create an accelerator, you can+-- assign one IPv4 address from your range to it. Global Accelerator+-- assigns you a second static IPv4 address from an Amazon IP address+-- range. If you bring two IPv4 address ranges to Amazon Web Services, you+-- can assign one IPv4 address from each range to your accelerator. This+-- restriction is because Global Accelerator assigns each address range to+-- a different network zone, for high availability.+--+-- You can specify one or two addresses, separated by a space. Do not+-- include the \/32 suffix.+--+-- Note that you can\'t update IP addresses for an existing accelerator. To+-- change them, you must create a new accelerator with the new addresses.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+-- in the /Global Accelerator Developer Guide/.+createAccelerator_ipAddresses :: Lens.Lens' CreateAccelerator (Prelude.Maybe [Prelude.Text])+createAccelerator_ipAddresses = Lens.lens (\CreateAccelerator' {ipAddresses} -> ipAddresses) (\s@CreateAccelerator' {} a -> s {ipAddresses = a} :: CreateAccelerator) Prelude.. Lens.mapping Lens.coerced++-- | Create tags for an accelerator.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/tagging-in-global-accelerator.html Tagging in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+createAccelerator_tags :: Lens.Lens' CreateAccelerator (Prelude.Maybe [Tag])+createAccelerator_tags = Lens.lens (\CreateAccelerator' {tags} -> tags) (\s@CreateAccelerator' {} a -> s {tags = a} :: CreateAccelerator) Prelude.. Lens.mapping Lens.coerced++-- | The name of the accelerator. The name can have a maximum of 64+-- characters, must contain only alphanumeric characters, periods (.), or+-- hyphens (-), and must not begin or end with a hyphen or period.+createAccelerator_name :: Lens.Lens' CreateAccelerator Prelude.Text+createAccelerator_name = Lens.lens (\CreateAccelerator' {name} -> name) (\s@CreateAccelerator' {} a -> s {name = a} :: CreateAccelerator)++-- | A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of an accelerator.+createAccelerator_idempotencyToken :: Lens.Lens' CreateAccelerator Prelude.Text+createAccelerator_idempotencyToken = Lens.lens (\CreateAccelerator' {idempotencyToken} -> idempotencyToken) (\s@CreateAccelerator' {} a -> s {idempotencyToken = a} :: CreateAccelerator)++instance Core.AWSRequest CreateAccelerator where+  type+    AWSResponse CreateAccelerator =+      CreateAcceleratorResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateAcceleratorResponse'+            Prelude.<$> (x Data..?> "Accelerator")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateAccelerator where+  hashWithSalt _salt CreateAccelerator' {..} =+    _salt+      `Prelude.hashWithSalt` enabled+      `Prelude.hashWithSalt` ipAddressType+      `Prelude.hashWithSalt` ipAddresses+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` idempotencyToken++instance Prelude.NFData CreateAccelerator where+  rnf CreateAccelerator' {..} =+    Prelude.rnf enabled+      `Prelude.seq` Prelude.rnf ipAddressType+      `Prelude.seq` Prelude.rnf ipAddresses+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf idempotencyToken++instance Data.ToHeaders CreateAccelerator where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.CreateAccelerator" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateAccelerator where+  toJSON CreateAccelerator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Enabled" Data..=) Prelude.<$> enabled,+            ("IpAddressType" Data..=) Prelude.<$> ipAddressType,+            ("IpAddresses" Data..=) Prelude.<$> ipAddresses,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("Name" Data..= name),+            Prelude.Just+              ("IdempotencyToken" Data..= idempotencyToken)+          ]+      )++instance Data.ToPath CreateAccelerator where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateAccelerator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateAcceleratorResponse' smart constructor.+data CreateAcceleratorResponse = CreateAcceleratorResponse'+  { -- | The accelerator that is created by specifying a listener and the+    -- supported IP address types.+    accelerator :: Prelude.Maybe Accelerator,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateAcceleratorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accelerator', 'createAcceleratorResponse_accelerator' - The accelerator that is created by specifying a listener and the+-- supported IP address types.+--+-- 'httpStatus', 'createAcceleratorResponse_httpStatus' - The response's http status code.+newCreateAcceleratorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateAcceleratorResponse+newCreateAcceleratorResponse pHttpStatus_ =+  CreateAcceleratorResponse'+    { accelerator =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The accelerator that is created by specifying a listener and the+-- supported IP address types.+createAcceleratorResponse_accelerator :: Lens.Lens' CreateAcceleratorResponse (Prelude.Maybe Accelerator)+createAcceleratorResponse_accelerator = Lens.lens (\CreateAcceleratorResponse' {accelerator} -> accelerator) (\s@CreateAcceleratorResponse' {} a -> s {accelerator = a} :: CreateAcceleratorResponse)++-- | The response's http status code.+createAcceleratorResponse_httpStatus :: Lens.Lens' CreateAcceleratorResponse Prelude.Int+createAcceleratorResponse_httpStatus = Lens.lens (\CreateAcceleratorResponse' {httpStatus} -> httpStatus) (\s@CreateAcceleratorResponse' {} a -> s {httpStatus = a} :: CreateAcceleratorResponse)++instance Prelude.NFData CreateAcceleratorResponse where+  rnf CreateAcceleratorResponse' {..} =+    Prelude.rnf accelerator+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/CreateCustomRoutingAccelerator.hs view
@@ -0,0 +1,379 @@+{-# 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.GlobalAccelerator.CreateCustomRoutingAccelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Create a custom routing accelerator. A custom routing accelerator+-- directs traffic to one of possibly thousands of Amazon EC2 instance+-- destinations running in a single or multiple virtual private clouds+-- (VPC) subnet endpoints.+--+-- Be aware that, by default, all destination EC2 instances in a VPC subnet+-- endpoint cannot receive traffic. To enable all destinations to receive+-- traffic, or to specify individual port mappings that can receive+-- traffic, see the+-- <https://docs.aws.amazon.com/global-accelerator/latest/api/API_AllowCustomRoutingTraffic.html AllowCustomRoutingTraffic>+-- operation.+--+-- Global Accelerator is a global service that supports endpoints in+-- multiple Amazon Web Services Regions but you must specify the US West+-- (Oregon) Region to create, update, or otherwise work with accelerators.+-- That is, for example, specify @--region us-west-2@ on AWS CLI commands.+module Amazonka.GlobalAccelerator.CreateCustomRoutingAccelerator+  ( -- * Creating a Request+    CreateCustomRoutingAccelerator (..),+    newCreateCustomRoutingAccelerator,++    -- * Request Lenses+    createCustomRoutingAccelerator_enabled,+    createCustomRoutingAccelerator_ipAddressType,+    createCustomRoutingAccelerator_ipAddresses,+    createCustomRoutingAccelerator_tags,+    createCustomRoutingAccelerator_name,+    createCustomRoutingAccelerator_idempotencyToken,++    -- * Destructuring the Response+    CreateCustomRoutingAcceleratorResponse (..),+    newCreateCustomRoutingAcceleratorResponse,++    -- * Response Lenses+    createCustomRoutingAcceleratorResponse_accelerator,+    createCustomRoutingAcceleratorResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateCustomRoutingAccelerator' smart constructor.+data CreateCustomRoutingAccelerator = CreateCustomRoutingAccelerator'+  { -- | Indicates whether an accelerator is enabled. The value is true or false.+    -- The default value is true.+    --+    -- If the value is set to true, an accelerator cannot be deleted. If set to+    -- false, the accelerator can be deleted.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | The IP address type that an accelerator supports. For a custom routing+    -- accelerator, the value must be IPV4.+    ipAddressType :: Prelude.Maybe IpAddressType,+    -- | Optionally, if you\'ve added your own IP address pool to Global+    -- Accelerator (BYOIP), you can choose an IPv4 address from your own pool+    -- to use for the accelerator\'s static IPv4 address when you create an+    -- accelerator.+    --+    -- After you bring an address range to Amazon Web Services, it appears in+    -- your account as an address pool. When you create an accelerator, you can+    -- assign one IPv4 address from your range to it. Global Accelerator+    -- assigns you a second static IPv4 address from an Amazon IP address+    -- range. If you bring two IPv4 address ranges to Amazon Web Services, you+    -- can assign one IPv4 address from each range to your accelerator. This+    -- restriction is because Global Accelerator assigns each address range to+    -- a different network zone, for high availability.+    --+    -- You can specify one or two addresses, separated by a space. Do not+    -- include the \/32 suffix.+    --+    -- Note that you can\'t update IP addresses for an existing accelerator. To+    -- change them, you must create a new accelerator with the new addresses.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+    -- in the /Global Accelerator Developer Guide/.+    ipAddresses :: Prelude.Maybe [Prelude.Text],+    -- | Create tags for an accelerator.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/tagging-in-global-accelerator.html Tagging in Global Accelerator>+    -- in the /Global Accelerator Developer Guide/.+    tags :: Prelude.Maybe [Tag],+    -- | The name of a custom routing accelerator. The name can have a maximum of+    -- 64 characters, must contain only alphanumeric characters or hyphens (-),+    -- and must not begin or end with a hyphen.+    name :: Prelude.Text,+    -- | A unique, case-sensitive identifier that you provide to ensure the+    -- idempotency—that is, the uniqueness—of the request.+    idempotencyToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateCustomRoutingAccelerator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'enabled', 'createCustomRoutingAccelerator_enabled' - Indicates whether an accelerator is enabled. The value is true or false.+-- The default value is true.+--+-- If the value is set to true, an accelerator cannot be deleted. If set to+-- false, the accelerator can be deleted.+--+-- 'ipAddressType', 'createCustomRoutingAccelerator_ipAddressType' - The IP address type that an accelerator supports. For a custom routing+-- accelerator, the value must be IPV4.+--+-- 'ipAddresses', 'createCustomRoutingAccelerator_ipAddresses' - Optionally, if you\'ve added your own IP address pool to Global+-- Accelerator (BYOIP), you can choose an IPv4 address from your own pool+-- to use for the accelerator\'s static IPv4 address when you create an+-- accelerator.+--+-- After you bring an address range to Amazon Web Services, it appears in+-- your account as an address pool. When you create an accelerator, you can+-- assign one IPv4 address from your range to it. Global Accelerator+-- assigns you a second static IPv4 address from an Amazon IP address+-- range. If you bring two IPv4 address ranges to Amazon Web Services, you+-- can assign one IPv4 address from each range to your accelerator. This+-- restriction is because Global Accelerator assigns each address range to+-- a different network zone, for high availability.+--+-- You can specify one or two addresses, separated by a space. Do not+-- include the \/32 suffix.+--+-- Note that you can\'t update IP addresses for an existing accelerator. To+-- change them, you must create a new accelerator with the new addresses.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+-- in the /Global Accelerator Developer Guide/.+--+-- 'tags', 'createCustomRoutingAccelerator_tags' - Create tags for an accelerator.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/tagging-in-global-accelerator.html Tagging in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+--+-- 'name', 'createCustomRoutingAccelerator_name' - The name of a custom routing accelerator. The name can have a maximum of+-- 64 characters, must contain only alphanumeric characters or hyphens (-),+-- and must not begin or end with a hyphen.+--+-- 'idempotencyToken', 'createCustomRoutingAccelerator_idempotencyToken' - A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of the request.+newCreateCustomRoutingAccelerator ::+  -- | 'name'+  Prelude.Text ->+  -- | 'idempotencyToken'+  Prelude.Text ->+  CreateCustomRoutingAccelerator+newCreateCustomRoutingAccelerator+  pName_+  pIdempotencyToken_ =+    CreateCustomRoutingAccelerator'+      { enabled =+          Prelude.Nothing,+        ipAddressType = Prelude.Nothing,+        ipAddresses = Prelude.Nothing,+        tags = Prelude.Nothing,+        name = pName_,+        idempotencyToken = pIdempotencyToken_+      }++-- | Indicates whether an accelerator is enabled. The value is true or false.+-- The default value is true.+--+-- If the value is set to true, an accelerator cannot be deleted. If set to+-- false, the accelerator can be deleted.+createCustomRoutingAccelerator_enabled :: Lens.Lens' CreateCustomRoutingAccelerator (Prelude.Maybe Prelude.Bool)+createCustomRoutingAccelerator_enabled = Lens.lens (\CreateCustomRoutingAccelerator' {enabled} -> enabled) (\s@CreateCustomRoutingAccelerator' {} a -> s {enabled = a} :: CreateCustomRoutingAccelerator)++-- | The IP address type that an accelerator supports. For a custom routing+-- accelerator, the value must be IPV4.+createCustomRoutingAccelerator_ipAddressType :: Lens.Lens' CreateCustomRoutingAccelerator (Prelude.Maybe IpAddressType)+createCustomRoutingAccelerator_ipAddressType = Lens.lens (\CreateCustomRoutingAccelerator' {ipAddressType} -> ipAddressType) (\s@CreateCustomRoutingAccelerator' {} a -> s {ipAddressType = a} :: CreateCustomRoutingAccelerator)++-- | Optionally, if you\'ve added your own IP address pool to Global+-- Accelerator (BYOIP), you can choose an IPv4 address from your own pool+-- to use for the accelerator\'s static IPv4 address when you create an+-- accelerator.+--+-- After you bring an address range to Amazon Web Services, it appears in+-- your account as an address pool. When you create an accelerator, you can+-- assign one IPv4 address from your range to it. Global Accelerator+-- assigns you a second static IPv4 address from an Amazon IP address+-- range. If you bring two IPv4 address ranges to Amazon Web Services, you+-- can assign one IPv4 address from each range to your accelerator. This+-- restriction is because Global Accelerator assigns each address range to+-- a different network zone, for high availability.+--+-- You can specify one or two addresses, separated by a space. Do not+-- include the \/32 suffix.+--+-- Note that you can\'t update IP addresses for an existing accelerator. To+-- change them, you must create a new accelerator with the new addresses.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+-- in the /Global Accelerator Developer Guide/.+createCustomRoutingAccelerator_ipAddresses :: Lens.Lens' CreateCustomRoutingAccelerator (Prelude.Maybe [Prelude.Text])+createCustomRoutingAccelerator_ipAddresses = Lens.lens (\CreateCustomRoutingAccelerator' {ipAddresses} -> ipAddresses) (\s@CreateCustomRoutingAccelerator' {} a -> s {ipAddresses = a} :: CreateCustomRoutingAccelerator) Prelude.. Lens.mapping Lens.coerced++-- | Create tags for an accelerator.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/tagging-in-global-accelerator.html Tagging in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+createCustomRoutingAccelerator_tags :: Lens.Lens' CreateCustomRoutingAccelerator (Prelude.Maybe [Tag])+createCustomRoutingAccelerator_tags = Lens.lens (\CreateCustomRoutingAccelerator' {tags} -> tags) (\s@CreateCustomRoutingAccelerator' {} a -> s {tags = a} :: CreateCustomRoutingAccelerator) Prelude.. Lens.mapping Lens.coerced++-- | The name of a custom routing accelerator. The name can have a maximum of+-- 64 characters, must contain only alphanumeric characters or hyphens (-),+-- and must not begin or end with a hyphen.+createCustomRoutingAccelerator_name :: Lens.Lens' CreateCustomRoutingAccelerator Prelude.Text+createCustomRoutingAccelerator_name = Lens.lens (\CreateCustomRoutingAccelerator' {name} -> name) (\s@CreateCustomRoutingAccelerator' {} a -> s {name = a} :: CreateCustomRoutingAccelerator)++-- | A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of the request.+createCustomRoutingAccelerator_idempotencyToken :: Lens.Lens' CreateCustomRoutingAccelerator Prelude.Text+createCustomRoutingAccelerator_idempotencyToken = Lens.lens (\CreateCustomRoutingAccelerator' {idempotencyToken} -> idempotencyToken) (\s@CreateCustomRoutingAccelerator' {} a -> s {idempotencyToken = a} :: CreateCustomRoutingAccelerator)++instance+  Core.AWSRequest+    CreateCustomRoutingAccelerator+  where+  type+    AWSResponse CreateCustomRoutingAccelerator =+      CreateCustomRoutingAcceleratorResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateCustomRoutingAcceleratorResponse'+            Prelude.<$> (x Data..?> "Accelerator")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    CreateCustomRoutingAccelerator+  where+  hashWithSalt+    _salt+    CreateCustomRoutingAccelerator' {..} =+      _salt+        `Prelude.hashWithSalt` enabled+        `Prelude.hashWithSalt` ipAddressType+        `Prelude.hashWithSalt` ipAddresses+        `Prelude.hashWithSalt` tags+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` idempotencyToken++instance+  Prelude.NFData+    CreateCustomRoutingAccelerator+  where+  rnf CreateCustomRoutingAccelerator' {..} =+    Prelude.rnf enabled+      `Prelude.seq` Prelude.rnf ipAddressType+      `Prelude.seq` Prelude.rnf ipAddresses+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf idempotencyToken++instance+  Data.ToHeaders+    CreateCustomRoutingAccelerator+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.CreateCustomRoutingAccelerator" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateCustomRoutingAccelerator where+  toJSON CreateCustomRoutingAccelerator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Enabled" Data..=) Prelude.<$> enabled,+            ("IpAddressType" Data..=) Prelude.<$> ipAddressType,+            ("IpAddresses" Data..=) Prelude.<$> ipAddresses,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("Name" Data..= name),+            Prelude.Just+              ("IdempotencyToken" Data..= idempotencyToken)+          ]+      )++instance Data.ToPath CreateCustomRoutingAccelerator where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateCustomRoutingAccelerator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateCustomRoutingAcceleratorResponse' smart constructor.+data CreateCustomRoutingAcceleratorResponse = CreateCustomRoutingAcceleratorResponse'+  { -- | The accelerator that is created.+    accelerator :: Prelude.Maybe CustomRoutingAccelerator,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateCustomRoutingAcceleratorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accelerator', 'createCustomRoutingAcceleratorResponse_accelerator' - The accelerator that is created.+--+-- 'httpStatus', 'createCustomRoutingAcceleratorResponse_httpStatus' - The response's http status code.+newCreateCustomRoutingAcceleratorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateCustomRoutingAcceleratorResponse+newCreateCustomRoutingAcceleratorResponse+  pHttpStatus_ =+    CreateCustomRoutingAcceleratorResponse'+      { accelerator =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The accelerator that is created.+createCustomRoutingAcceleratorResponse_accelerator :: Lens.Lens' CreateCustomRoutingAcceleratorResponse (Prelude.Maybe CustomRoutingAccelerator)+createCustomRoutingAcceleratorResponse_accelerator = Lens.lens (\CreateCustomRoutingAcceleratorResponse' {accelerator} -> accelerator) (\s@CreateCustomRoutingAcceleratorResponse' {} a -> s {accelerator = a} :: CreateCustomRoutingAcceleratorResponse)++-- | The response's http status code.+createCustomRoutingAcceleratorResponse_httpStatus :: Lens.Lens' CreateCustomRoutingAcceleratorResponse Prelude.Int+createCustomRoutingAcceleratorResponse_httpStatus = Lens.lens (\CreateCustomRoutingAcceleratorResponse' {httpStatus} -> httpStatus) (\s@CreateCustomRoutingAcceleratorResponse' {} a -> s {httpStatus = a} :: CreateCustomRoutingAcceleratorResponse)++instance+  Prelude.NFData+    CreateCustomRoutingAcceleratorResponse+  where+  rnf CreateCustomRoutingAcceleratorResponse' {..} =+    Prelude.rnf accelerator+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/CreateCustomRoutingEndpointGroup.hs view
@@ -0,0 +1,272 @@+{-# 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.GlobalAccelerator.CreateCustomRoutingEndpointGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Create an endpoint group for the specified listener for a custom routing+-- accelerator. An endpoint group is a collection of endpoints in one+-- Amazon Web Services Region.+module Amazonka.GlobalAccelerator.CreateCustomRoutingEndpointGroup+  ( -- * Creating a Request+    CreateCustomRoutingEndpointGroup (..),+    newCreateCustomRoutingEndpointGroup,++    -- * Request Lenses+    createCustomRoutingEndpointGroup_listenerArn,+    createCustomRoutingEndpointGroup_endpointGroupRegion,+    createCustomRoutingEndpointGroup_destinationConfigurations,+    createCustomRoutingEndpointGroup_idempotencyToken,++    -- * Destructuring the Response+    CreateCustomRoutingEndpointGroupResponse (..),+    newCreateCustomRoutingEndpointGroupResponse,++    -- * Response Lenses+    createCustomRoutingEndpointGroupResponse_endpointGroup,+    createCustomRoutingEndpointGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateCustomRoutingEndpointGroup' smart constructor.+data CreateCustomRoutingEndpointGroup = CreateCustomRoutingEndpointGroup'+  { -- | The Amazon Resource Name (ARN) of the listener for a custom routing+    -- endpoint.+    listenerArn :: Prelude.Text,+    -- | The Amazon Web Services Region where the endpoint group is located. A+    -- listener can have only one endpoint group in a specific Region.+    endpointGroupRegion :: Prelude.Text,+    -- | Sets the port range and protocol for all endpoints (virtual private+    -- cloud subnets) in a custom routing endpoint group to accept client+    -- traffic on.+    destinationConfigurations :: Prelude.NonEmpty CustomRoutingDestinationConfiguration,+    -- | A unique, case-sensitive identifier that you provide to ensure the+    -- idempotency—that is, the uniqueness—of the request.+    idempotencyToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateCustomRoutingEndpointGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listenerArn', 'createCustomRoutingEndpointGroup_listenerArn' - The Amazon Resource Name (ARN) of the listener for a custom routing+-- endpoint.+--+-- 'endpointGroupRegion', 'createCustomRoutingEndpointGroup_endpointGroupRegion' - The Amazon Web Services Region where the endpoint group is located. A+-- listener can have only one endpoint group in a specific Region.+--+-- 'destinationConfigurations', 'createCustomRoutingEndpointGroup_destinationConfigurations' - Sets the port range and protocol for all endpoints (virtual private+-- cloud subnets) in a custom routing endpoint group to accept client+-- traffic on.+--+-- 'idempotencyToken', 'createCustomRoutingEndpointGroup_idempotencyToken' - A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of the request.+newCreateCustomRoutingEndpointGroup ::+  -- | 'listenerArn'+  Prelude.Text ->+  -- | 'endpointGroupRegion'+  Prelude.Text ->+  -- | 'destinationConfigurations'+  Prelude.NonEmpty CustomRoutingDestinationConfiguration ->+  -- | 'idempotencyToken'+  Prelude.Text ->+  CreateCustomRoutingEndpointGroup+newCreateCustomRoutingEndpointGroup+  pListenerArn_+  pEndpointGroupRegion_+  pDestinationConfigurations_+  pIdempotencyToken_ =+    CreateCustomRoutingEndpointGroup'+      { listenerArn =+          pListenerArn_,+        endpointGroupRegion =+          pEndpointGroupRegion_,+        destinationConfigurations =+          Lens.coerced+            Lens.# pDestinationConfigurations_,+        idempotencyToken = pIdempotencyToken_+      }++-- | The Amazon Resource Name (ARN) of the listener for a custom routing+-- endpoint.+createCustomRoutingEndpointGroup_listenerArn :: Lens.Lens' CreateCustomRoutingEndpointGroup Prelude.Text+createCustomRoutingEndpointGroup_listenerArn = Lens.lens (\CreateCustomRoutingEndpointGroup' {listenerArn} -> listenerArn) (\s@CreateCustomRoutingEndpointGroup' {} a -> s {listenerArn = a} :: CreateCustomRoutingEndpointGroup)++-- | The Amazon Web Services Region where the endpoint group is located. A+-- listener can have only one endpoint group in a specific Region.+createCustomRoutingEndpointGroup_endpointGroupRegion :: Lens.Lens' CreateCustomRoutingEndpointGroup Prelude.Text+createCustomRoutingEndpointGroup_endpointGroupRegion = Lens.lens (\CreateCustomRoutingEndpointGroup' {endpointGroupRegion} -> endpointGroupRegion) (\s@CreateCustomRoutingEndpointGroup' {} a -> s {endpointGroupRegion = a} :: CreateCustomRoutingEndpointGroup)++-- | Sets the port range and protocol for all endpoints (virtual private+-- cloud subnets) in a custom routing endpoint group to accept client+-- traffic on.+createCustomRoutingEndpointGroup_destinationConfigurations :: Lens.Lens' CreateCustomRoutingEndpointGroup (Prelude.NonEmpty CustomRoutingDestinationConfiguration)+createCustomRoutingEndpointGroup_destinationConfigurations = Lens.lens (\CreateCustomRoutingEndpointGroup' {destinationConfigurations} -> destinationConfigurations) (\s@CreateCustomRoutingEndpointGroup' {} a -> s {destinationConfigurations = a} :: CreateCustomRoutingEndpointGroup) Prelude.. Lens.coerced++-- | A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of the request.+createCustomRoutingEndpointGroup_idempotencyToken :: Lens.Lens' CreateCustomRoutingEndpointGroup Prelude.Text+createCustomRoutingEndpointGroup_idempotencyToken = Lens.lens (\CreateCustomRoutingEndpointGroup' {idempotencyToken} -> idempotencyToken) (\s@CreateCustomRoutingEndpointGroup' {} a -> s {idempotencyToken = a} :: CreateCustomRoutingEndpointGroup)++instance+  Core.AWSRequest+    CreateCustomRoutingEndpointGroup+  where+  type+    AWSResponse CreateCustomRoutingEndpointGroup =+      CreateCustomRoutingEndpointGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateCustomRoutingEndpointGroupResponse'+            Prelude.<$> (x Data..?> "EndpointGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    CreateCustomRoutingEndpointGroup+  where+  hashWithSalt+    _salt+    CreateCustomRoutingEndpointGroup' {..} =+      _salt+        `Prelude.hashWithSalt` listenerArn+        `Prelude.hashWithSalt` endpointGroupRegion+        `Prelude.hashWithSalt` destinationConfigurations+        `Prelude.hashWithSalt` idempotencyToken++instance+  Prelude.NFData+    CreateCustomRoutingEndpointGroup+  where+  rnf CreateCustomRoutingEndpointGroup' {..} =+    Prelude.rnf listenerArn+      `Prelude.seq` Prelude.rnf endpointGroupRegion+      `Prelude.seq` Prelude.rnf destinationConfigurations+      `Prelude.seq` Prelude.rnf idempotencyToken++instance+  Data.ToHeaders+    CreateCustomRoutingEndpointGroup+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.CreateCustomRoutingEndpointGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateCustomRoutingEndpointGroup where+  toJSON CreateCustomRoutingEndpointGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ListenerArn" Data..= listenerArn),+            Prelude.Just+              ("EndpointGroupRegion" Data..= endpointGroupRegion),+            Prelude.Just+              ( "DestinationConfigurations"+                  Data..= destinationConfigurations+              ),+            Prelude.Just+              ("IdempotencyToken" Data..= idempotencyToken)+          ]+      )++instance Data.ToPath CreateCustomRoutingEndpointGroup where+  toPath = Prelude.const "/"++instance+  Data.ToQuery+    CreateCustomRoutingEndpointGroup+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateCustomRoutingEndpointGroupResponse' smart constructor.+data CreateCustomRoutingEndpointGroupResponse = CreateCustomRoutingEndpointGroupResponse'+  { -- | The information about the endpoint group created for a custom routing+    -- accelerator.+    endpointGroup :: Prelude.Maybe CustomRoutingEndpointGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateCustomRoutingEndpointGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroup', 'createCustomRoutingEndpointGroupResponse_endpointGroup' - The information about the endpoint group created for a custom routing+-- accelerator.+--+-- 'httpStatus', 'createCustomRoutingEndpointGroupResponse_httpStatus' - The response's http status code.+newCreateCustomRoutingEndpointGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateCustomRoutingEndpointGroupResponse+newCreateCustomRoutingEndpointGroupResponse+  pHttpStatus_ =+    CreateCustomRoutingEndpointGroupResponse'+      { endpointGroup =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The information about the endpoint group created for a custom routing+-- accelerator.+createCustomRoutingEndpointGroupResponse_endpointGroup :: Lens.Lens' CreateCustomRoutingEndpointGroupResponse (Prelude.Maybe CustomRoutingEndpointGroup)+createCustomRoutingEndpointGroupResponse_endpointGroup = Lens.lens (\CreateCustomRoutingEndpointGroupResponse' {endpointGroup} -> endpointGroup) (\s@CreateCustomRoutingEndpointGroupResponse' {} a -> s {endpointGroup = a} :: CreateCustomRoutingEndpointGroupResponse)++-- | The response's http status code.+createCustomRoutingEndpointGroupResponse_httpStatus :: Lens.Lens' CreateCustomRoutingEndpointGroupResponse Prelude.Int+createCustomRoutingEndpointGroupResponse_httpStatus = Lens.lens (\CreateCustomRoutingEndpointGroupResponse' {httpStatus} -> httpStatus) (\s@CreateCustomRoutingEndpointGroupResponse' {} a -> s {httpStatus = a} :: CreateCustomRoutingEndpointGroupResponse)++instance+  Prelude.NFData+    CreateCustomRoutingEndpointGroupResponse+  where+  rnf CreateCustomRoutingEndpointGroupResponse' {..} =+    Prelude.rnf endpointGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/CreateCustomRoutingListener.hs view
@@ -0,0 +1,232 @@+{-# 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.GlobalAccelerator.CreateCustomRoutingListener+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Create a listener to process inbound connections from clients to a+-- custom routing accelerator. Connections arrive to assigned static IP+-- addresses on the port range that you specify.+module Amazonka.GlobalAccelerator.CreateCustomRoutingListener+  ( -- * Creating a Request+    CreateCustomRoutingListener (..),+    newCreateCustomRoutingListener,++    -- * Request Lenses+    createCustomRoutingListener_acceleratorArn,+    createCustomRoutingListener_portRanges,+    createCustomRoutingListener_idempotencyToken,++    -- * Destructuring the Response+    CreateCustomRoutingListenerResponse (..),+    newCreateCustomRoutingListenerResponse,++    -- * Response Lenses+    createCustomRoutingListenerResponse_listener,+    createCustomRoutingListenerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateCustomRoutingListener' smart constructor.+data CreateCustomRoutingListener = CreateCustomRoutingListener'+  { -- | The Amazon Resource Name (ARN) of the accelerator for a custom routing+    -- listener.+    acceleratorArn :: Prelude.Text,+    -- | The port range to support for connections from clients to your+    -- accelerator.+    --+    -- Separately, you set port ranges for endpoints. For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-custom-routing-endpoints.html About endpoints for custom routing accelerators>.+    portRanges :: Prelude.NonEmpty PortRange,+    -- | A unique, case-sensitive identifier that you provide to ensure the+    -- idempotency—that is, the uniqueness—of the request.+    idempotencyToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateCustomRoutingListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorArn', 'createCustomRoutingListener_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator for a custom routing+-- listener.+--+-- 'portRanges', 'createCustomRoutingListener_portRanges' - The port range to support for connections from clients to your+-- accelerator.+--+-- Separately, you set port ranges for endpoints. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-custom-routing-endpoints.html About endpoints for custom routing accelerators>.+--+-- 'idempotencyToken', 'createCustomRoutingListener_idempotencyToken' - A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of the request.+newCreateCustomRoutingListener ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  -- | 'portRanges'+  Prelude.NonEmpty PortRange ->+  -- | 'idempotencyToken'+  Prelude.Text ->+  CreateCustomRoutingListener+newCreateCustomRoutingListener+  pAcceleratorArn_+  pPortRanges_+  pIdempotencyToken_ =+    CreateCustomRoutingListener'+      { acceleratorArn =+          pAcceleratorArn_,+        portRanges = Lens.coerced Lens.# pPortRanges_,+        idempotencyToken = pIdempotencyToken_+      }++-- | The Amazon Resource Name (ARN) of the accelerator for a custom routing+-- listener.+createCustomRoutingListener_acceleratorArn :: Lens.Lens' CreateCustomRoutingListener Prelude.Text+createCustomRoutingListener_acceleratorArn = Lens.lens (\CreateCustomRoutingListener' {acceleratorArn} -> acceleratorArn) (\s@CreateCustomRoutingListener' {} a -> s {acceleratorArn = a} :: CreateCustomRoutingListener)++-- | The port range to support for connections from clients to your+-- accelerator.+--+-- Separately, you set port ranges for endpoints. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-custom-routing-endpoints.html About endpoints for custom routing accelerators>.+createCustomRoutingListener_portRanges :: Lens.Lens' CreateCustomRoutingListener (Prelude.NonEmpty PortRange)+createCustomRoutingListener_portRanges = Lens.lens (\CreateCustomRoutingListener' {portRanges} -> portRanges) (\s@CreateCustomRoutingListener' {} a -> s {portRanges = a} :: CreateCustomRoutingListener) Prelude.. Lens.coerced++-- | A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of the request.+createCustomRoutingListener_idempotencyToken :: Lens.Lens' CreateCustomRoutingListener Prelude.Text+createCustomRoutingListener_idempotencyToken = Lens.lens (\CreateCustomRoutingListener' {idempotencyToken} -> idempotencyToken) (\s@CreateCustomRoutingListener' {} a -> s {idempotencyToken = a} :: CreateCustomRoutingListener)++instance Core.AWSRequest CreateCustomRoutingListener where+  type+    AWSResponse CreateCustomRoutingListener =+      CreateCustomRoutingListenerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateCustomRoutingListenerResponse'+            Prelude.<$> (x Data..?> "Listener")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateCustomRoutingListener where+  hashWithSalt _salt CreateCustomRoutingListener' {..} =+    _salt+      `Prelude.hashWithSalt` acceleratorArn+      `Prelude.hashWithSalt` portRanges+      `Prelude.hashWithSalt` idempotencyToken++instance Prelude.NFData CreateCustomRoutingListener where+  rnf CreateCustomRoutingListener' {..} =+    Prelude.rnf acceleratorArn+      `Prelude.seq` Prelude.rnf portRanges+      `Prelude.seq` Prelude.rnf idempotencyToken++instance Data.ToHeaders CreateCustomRoutingListener where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.CreateCustomRoutingListener" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateCustomRoutingListener where+  toJSON CreateCustomRoutingListener' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn),+            Prelude.Just ("PortRanges" Data..= portRanges),+            Prelude.Just+              ("IdempotencyToken" Data..= idempotencyToken)+          ]+      )++instance Data.ToPath CreateCustomRoutingListener where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateCustomRoutingListener where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateCustomRoutingListenerResponse' smart constructor.+data CreateCustomRoutingListenerResponse = CreateCustomRoutingListenerResponse'+  { -- | The listener that you\'ve created for a custom routing accelerator.+    listener :: Prelude.Maybe CustomRoutingListener,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateCustomRoutingListenerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listener', 'createCustomRoutingListenerResponse_listener' - The listener that you\'ve created for a custom routing accelerator.+--+-- 'httpStatus', 'createCustomRoutingListenerResponse_httpStatus' - The response's http status code.+newCreateCustomRoutingListenerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateCustomRoutingListenerResponse+newCreateCustomRoutingListenerResponse pHttpStatus_ =+  CreateCustomRoutingListenerResponse'+    { listener =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The listener that you\'ve created for a custom routing accelerator.+createCustomRoutingListenerResponse_listener :: Lens.Lens' CreateCustomRoutingListenerResponse (Prelude.Maybe CustomRoutingListener)+createCustomRoutingListenerResponse_listener = Lens.lens (\CreateCustomRoutingListenerResponse' {listener} -> listener) (\s@CreateCustomRoutingListenerResponse' {} a -> s {listener = a} :: CreateCustomRoutingListenerResponse)++-- | The response's http status code.+createCustomRoutingListenerResponse_httpStatus :: Lens.Lens' CreateCustomRoutingListenerResponse Prelude.Int+createCustomRoutingListenerResponse_httpStatus = Lens.lens (\CreateCustomRoutingListenerResponse' {httpStatus} -> httpStatus) (\s@CreateCustomRoutingListenerResponse' {} a -> s {httpStatus = a} :: CreateCustomRoutingListenerResponse)++instance+  Prelude.NFData+    CreateCustomRoutingListenerResponse+  where+  rnf CreateCustomRoutingListenerResponse' {..} =+    Prelude.rnf listener+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/CreateEndpointGroup.hs view
@@ -0,0 +1,403 @@+{-# 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.GlobalAccelerator.CreateEndpointGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Create an endpoint group for the specified listener. An endpoint group+-- is a collection of endpoints in one Amazon Web Services Region. A+-- resource must be valid and active when you add it as an endpoint.+module Amazonka.GlobalAccelerator.CreateEndpointGroup+  ( -- * Creating a Request+    CreateEndpointGroup (..),+    newCreateEndpointGroup,++    -- * Request Lenses+    createEndpointGroup_endpointConfigurations,+    createEndpointGroup_healthCheckIntervalSeconds,+    createEndpointGroup_healthCheckPath,+    createEndpointGroup_healthCheckPort,+    createEndpointGroup_healthCheckProtocol,+    createEndpointGroup_portOverrides,+    createEndpointGroup_thresholdCount,+    createEndpointGroup_trafficDialPercentage,+    createEndpointGroup_listenerArn,+    createEndpointGroup_endpointGroupRegion,+    createEndpointGroup_idempotencyToken,++    -- * Destructuring the Response+    CreateEndpointGroupResponse (..),+    newCreateEndpointGroupResponse,++    -- * Response Lenses+    createEndpointGroupResponse_endpointGroup,+    createEndpointGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateEndpointGroup' smart constructor.+data CreateEndpointGroup = CreateEndpointGroup'+  { -- | The list of endpoint objects.+    endpointConfigurations :: Prelude.Maybe [EndpointConfiguration],+    -- | The time—10 seconds or 30 seconds—between each health check for an+    -- endpoint. The default value is 30.+    healthCheckIntervalSeconds :: Prelude.Maybe Prelude.Natural,+    -- | If the protocol is HTTP\/S, then this specifies the path that is the+    -- destination for health check targets. The default value is slash (\/).+    healthCheckPath :: Prelude.Maybe Prelude.Text,+    -- | The port that Global Accelerator uses to check the health of endpoints+    -- that are part of this endpoint group. The default port is the listener+    -- port that this endpoint group is associated with. If listener port is a+    -- list of ports, Global Accelerator uses the first port in the list.+    healthCheckPort :: Prelude.Maybe Prelude.Natural,+    -- | The protocol that Global Accelerator uses to check the health of+    -- endpoints that are part of this endpoint group. The default value is+    -- TCP.+    healthCheckProtocol :: Prelude.Maybe HealthCheckProtocol,+    -- | Override specific listener ports used to route traffic to endpoints that+    -- are part of this endpoint group. For example, you can create a port+    -- override in which the listener receives user traffic on ports 80 and+    -- 443, but your accelerator routes that traffic to ports 1080 and 1443,+    -- respectively, on the endpoints.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoint-groups-port-override.html Overriding listener ports>+    -- in the /Global Accelerator Developer Guide/.+    portOverrides :: Prelude.Maybe [PortOverride],+    -- | The number of consecutive health checks required to set the state of a+    -- healthy endpoint to unhealthy, or to set an unhealthy endpoint to+    -- healthy. The default value is 3.+    thresholdCount :: Prelude.Maybe Prelude.Natural,+    -- | The percentage of traffic to send to an Amazon Web Services Region.+    -- Additional traffic is distributed to other endpoint groups for this+    -- listener.+    --+    -- Use this action to increase (dial up) or decrease (dial down) traffic to+    -- a specific Region. The percentage is applied to the traffic that would+    -- otherwise have been routed to the Region based on optimal routing.+    --+    -- The default value is 100.+    trafficDialPercentage :: Prelude.Maybe Prelude.Double,+    -- | The Amazon Resource Name (ARN) of the listener.+    listenerArn :: Prelude.Text,+    -- | The Amazon Web Services Region where the endpoint group is located. A+    -- listener can have only one endpoint group in a specific Region.+    endpointGroupRegion :: Prelude.Text,+    -- | A unique, case-sensitive identifier that you provide to ensure the+    -- idempotency—that is, the uniqueness—of the request.+    idempotencyToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateEndpointGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointConfigurations', 'createEndpointGroup_endpointConfigurations' - The list of endpoint objects.+--+-- 'healthCheckIntervalSeconds', 'createEndpointGroup_healthCheckIntervalSeconds' - The time—10 seconds or 30 seconds—between each health check for an+-- endpoint. The default value is 30.+--+-- 'healthCheckPath', 'createEndpointGroup_healthCheckPath' - If the protocol is HTTP\/S, then this specifies the path that is the+-- destination for health check targets. The default value is slash (\/).+--+-- 'healthCheckPort', 'createEndpointGroup_healthCheckPort' - The port that Global Accelerator uses to check the health of endpoints+-- that are part of this endpoint group. The default port is the listener+-- port that this endpoint group is associated with. If listener port is a+-- list of ports, Global Accelerator uses the first port in the list.+--+-- 'healthCheckProtocol', 'createEndpointGroup_healthCheckProtocol' - The protocol that Global Accelerator uses to check the health of+-- endpoints that are part of this endpoint group. The default value is+-- TCP.+--+-- 'portOverrides', 'createEndpointGroup_portOverrides' - Override specific listener ports used to route traffic to endpoints that+-- are part of this endpoint group. For example, you can create a port+-- override in which the listener receives user traffic on ports 80 and+-- 443, but your accelerator routes that traffic to ports 1080 and 1443,+-- respectively, on the endpoints.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoint-groups-port-override.html Overriding listener ports>+-- in the /Global Accelerator Developer Guide/.+--+-- 'thresholdCount', 'createEndpointGroup_thresholdCount' - The number of consecutive health checks required to set the state of a+-- healthy endpoint to unhealthy, or to set an unhealthy endpoint to+-- healthy. The default value is 3.+--+-- 'trafficDialPercentage', 'createEndpointGroup_trafficDialPercentage' - The percentage of traffic to send to an Amazon Web Services Region.+-- Additional traffic is distributed to other endpoint groups for this+-- listener.+--+-- Use this action to increase (dial up) or decrease (dial down) traffic to+-- a specific Region. The percentage is applied to the traffic that would+-- otherwise have been routed to the Region based on optimal routing.+--+-- The default value is 100.+--+-- 'listenerArn', 'createEndpointGroup_listenerArn' - The Amazon Resource Name (ARN) of the listener.+--+-- 'endpointGroupRegion', 'createEndpointGroup_endpointGroupRegion' - The Amazon Web Services Region where the endpoint group is located. A+-- listener can have only one endpoint group in a specific Region.+--+-- 'idempotencyToken', 'createEndpointGroup_idempotencyToken' - A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of the request.+newCreateEndpointGroup ::+  -- | 'listenerArn'+  Prelude.Text ->+  -- | 'endpointGroupRegion'+  Prelude.Text ->+  -- | 'idempotencyToken'+  Prelude.Text ->+  CreateEndpointGroup+newCreateEndpointGroup+  pListenerArn_+  pEndpointGroupRegion_+  pIdempotencyToken_ =+    CreateEndpointGroup'+      { endpointConfigurations =+          Prelude.Nothing,+        healthCheckIntervalSeconds = Prelude.Nothing,+        healthCheckPath = Prelude.Nothing,+        healthCheckPort = Prelude.Nothing,+        healthCheckProtocol = Prelude.Nothing,+        portOverrides = Prelude.Nothing,+        thresholdCount = Prelude.Nothing,+        trafficDialPercentage = Prelude.Nothing,+        listenerArn = pListenerArn_,+        endpointGroupRegion = pEndpointGroupRegion_,+        idempotencyToken = pIdempotencyToken_+      }++-- | The list of endpoint objects.+createEndpointGroup_endpointConfigurations :: Lens.Lens' CreateEndpointGroup (Prelude.Maybe [EndpointConfiguration])+createEndpointGroup_endpointConfigurations = Lens.lens (\CreateEndpointGroup' {endpointConfigurations} -> endpointConfigurations) (\s@CreateEndpointGroup' {} a -> s {endpointConfigurations = a} :: CreateEndpointGroup) Prelude.. Lens.mapping Lens.coerced++-- | The time—10 seconds or 30 seconds—between each health check for an+-- endpoint. The default value is 30.+createEndpointGroup_healthCheckIntervalSeconds :: Lens.Lens' CreateEndpointGroup (Prelude.Maybe Prelude.Natural)+createEndpointGroup_healthCheckIntervalSeconds = Lens.lens (\CreateEndpointGroup' {healthCheckIntervalSeconds} -> healthCheckIntervalSeconds) (\s@CreateEndpointGroup' {} a -> s {healthCheckIntervalSeconds = a} :: CreateEndpointGroup)++-- | If the protocol is HTTP\/S, then this specifies the path that is the+-- destination for health check targets. The default value is slash (\/).+createEndpointGroup_healthCheckPath :: Lens.Lens' CreateEndpointGroup (Prelude.Maybe Prelude.Text)+createEndpointGroup_healthCheckPath = Lens.lens (\CreateEndpointGroup' {healthCheckPath} -> healthCheckPath) (\s@CreateEndpointGroup' {} a -> s {healthCheckPath = a} :: CreateEndpointGroup)++-- | The port that Global Accelerator uses to check the health of endpoints+-- that are part of this endpoint group. The default port is the listener+-- port that this endpoint group is associated with. If listener port is a+-- list of ports, Global Accelerator uses the first port in the list.+createEndpointGroup_healthCheckPort :: Lens.Lens' CreateEndpointGroup (Prelude.Maybe Prelude.Natural)+createEndpointGroup_healthCheckPort = Lens.lens (\CreateEndpointGroup' {healthCheckPort} -> healthCheckPort) (\s@CreateEndpointGroup' {} a -> s {healthCheckPort = a} :: CreateEndpointGroup)++-- | The protocol that Global Accelerator uses to check the health of+-- endpoints that are part of this endpoint group. The default value is+-- TCP.+createEndpointGroup_healthCheckProtocol :: Lens.Lens' CreateEndpointGroup (Prelude.Maybe HealthCheckProtocol)+createEndpointGroup_healthCheckProtocol = Lens.lens (\CreateEndpointGroup' {healthCheckProtocol} -> healthCheckProtocol) (\s@CreateEndpointGroup' {} a -> s {healthCheckProtocol = a} :: CreateEndpointGroup)++-- | Override specific listener ports used to route traffic to endpoints that+-- are part of this endpoint group. For example, you can create a port+-- override in which the listener receives user traffic on ports 80 and+-- 443, but your accelerator routes that traffic to ports 1080 and 1443,+-- respectively, on the endpoints.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoint-groups-port-override.html Overriding listener ports>+-- in the /Global Accelerator Developer Guide/.+createEndpointGroup_portOverrides :: Lens.Lens' CreateEndpointGroup (Prelude.Maybe [PortOverride])+createEndpointGroup_portOverrides = Lens.lens (\CreateEndpointGroup' {portOverrides} -> portOverrides) (\s@CreateEndpointGroup' {} a -> s {portOverrides = a} :: CreateEndpointGroup) Prelude.. Lens.mapping Lens.coerced++-- | The number of consecutive health checks required to set the state of a+-- healthy endpoint to unhealthy, or to set an unhealthy endpoint to+-- healthy. The default value is 3.+createEndpointGroup_thresholdCount :: Lens.Lens' CreateEndpointGroup (Prelude.Maybe Prelude.Natural)+createEndpointGroup_thresholdCount = Lens.lens (\CreateEndpointGroup' {thresholdCount} -> thresholdCount) (\s@CreateEndpointGroup' {} a -> s {thresholdCount = a} :: CreateEndpointGroup)++-- | The percentage of traffic to send to an Amazon Web Services Region.+-- Additional traffic is distributed to other endpoint groups for this+-- listener.+--+-- Use this action to increase (dial up) or decrease (dial down) traffic to+-- a specific Region. The percentage is applied to the traffic that would+-- otherwise have been routed to the Region based on optimal routing.+--+-- The default value is 100.+createEndpointGroup_trafficDialPercentage :: Lens.Lens' CreateEndpointGroup (Prelude.Maybe Prelude.Double)+createEndpointGroup_trafficDialPercentage = Lens.lens (\CreateEndpointGroup' {trafficDialPercentage} -> trafficDialPercentage) (\s@CreateEndpointGroup' {} a -> s {trafficDialPercentage = a} :: CreateEndpointGroup)++-- | The Amazon Resource Name (ARN) of the listener.+createEndpointGroup_listenerArn :: Lens.Lens' CreateEndpointGroup Prelude.Text+createEndpointGroup_listenerArn = Lens.lens (\CreateEndpointGroup' {listenerArn} -> listenerArn) (\s@CreateEndpointGroup' {} a -> s {listenerArn = a} :: CreateEndpointGroup)++-- | The Amazon Web Services Region where the endpoint group is located. A+-- listener can have only one endpoint group in a specific Region.+createEndpointGroup_endpointGroupRegion :: Lens.Lens' CreateEndpointGroup Prelude.Text+createEndpointGroup_endpointGroupRegion = Lens.lens (\CreateEndpointGroup' {endpointGroupRegion} -> endpointGroupRegion) (\s@CreateEndpointGroup' {} a -> s {endpointGroupRegion = a} :: CreateEndpointGroup)++-- | A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of the request.+createEndpointGroup_idempotencyToken :: Lens.Lens' CreateEndpointGroup Prelude.Text+createEndpointGroup_idempotencyToken = Lens.lens (\CreateEndpointGroup' {idempotencyToken} -> idempotencyToken) (\s@CreateEndpointGroup' {} a -> s {idempotencyToken = a} :: CreateEndpointGroup)++instance Core.AWSRequest CreateEndpointGroup where+  type+    AWSResponse CreateEndpointGroup =+      CreateEndpointGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateEndpointGroupResponse'+            Prelude.<$> (x Data..?> "EndpointGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateEndpointGroup where+  hashWithSalt _salt CreateEndpointGroup' {..} =+    _salt+      `Prelude.hashWithSalt` endpointConfigurations+      `Prelude.hashWithSalt` healthCheckIntervalSeconds+      `Prelude.hashWithSalt` healthCheckPath+      `Prelude.hashWithSalt` healthCheckPort+      `Prelude.hashWithSalt` healthCheckProtocol+      `Prelude.hashWithSalt` portOverrides+      `Prelude.hashWithSalt` thresholdCount+      `Prelude.hashWithSalt` trafficDialPercentage+      `Prelude.hashWithSalt` listenerArn+      `Prelude.hashWithSalt` endpointGroupRegion+      `Prelude.hashWithSalt` idempotencyToken++instance Prelude.NFData CreateEndpointGroup where+  rnf CreateEndpointGroup' {..} =+    Prelude.rnf endpointConfigurations+      `Prelude.seq` Prelude.rnf healthCheckIntervalSeconds+      `Prelude.seq` Prelude.rnf healthCheckPath+      `Prelude.seq` Prelude.rnf healthCheckPort+      `Prelude.seq` Prelude.rnf healthCheckProtocol+      `Prelude.seq` Prelude.rnf portOverrides+      `Prelude.seq` Prelude.rnf thresholdCount+      `Prelude.seq` Prelude.rnf trafficDialPercentage+      `Prelude.seq` Prelude.rnf listenerArn+      `Prelude.seq` Prelude.rnf endpointGroupRegion+      `Prelude.seq` Prelude.rnf idempotencyToken++instance Data.ToHeaders CreateEndpointGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.CreateEndpointGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateEndpointGroup where+  toJSON CreateEndpointGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("EndpointConfigurations" Data..=)+              Prelude.<$> endpointConfigurations,+            ("HealthCheckIntervalSeconds" Data..=)+              Prelude.<$> healthCheckIntervalSeconds,+            ("HealthCheckPath" Data..=)+              Prelude.<$> healthCheckPath,+            ("HealthCheckPort" Data..=)+              Prelude.<$> healthCheckPort,+            ("HealthCheckProtocol" Data..=)+              Prelude.<$> healthCheckProtocol,+            ("PortOverrides" Data..=) Prelude.<$> portOverrides,+            ("ThresholdCount" Data..=)+              Prelude.<$> thresholdCount,+            ("TrafficDialPercentage" Data..=)+              Prelude.<$> trafficDialPercentage,+            Prelude.Just ("ListenerArn" Data..= listenerArn),+            Prelude.Just+              ("EndpointGroupRegion" Data..= endpointGroupRegion),+            Prelude.Just+              ("IdempotencyToken" Data..= idempotencyToken)+          ]+      )++instance Data.ToPath CreateEndpointGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateEndpointGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateEndpointGroupResponse' smart constructor.+data CreateEndpointGroupResponse = CreateEndpointGroupResponse'+  { -- | The information about the endpoint group that was created.+    endpointGroup :: Prelude.Maybe EndpointGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateEndpointGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroup', 'createEndpointGroupResponse_endpointGroup' - The information about the endpoint group that was created.+--+-- 'httpStatus', 'createEndpointGroupResponse_httpStatus' - The response's http status code.+newCreateEndpointGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateEndpointGroupResponse+newCreateEndpointGroupResponse pHttpStatus_ =+  CreateEndpointGroupResponse'+    { endpointGroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The information about the endpoint group that was created.+createEndpointGroupResponse_endpointGroup :: Lens.Lens' CreateEndpointGroupResponse (Prelude.Maybe EndpointGroup)+createEndpointGroupResponse_endpointGroup = Lens.lens (\CreateEndpointGroupResponse' {endpointGroup} -> endpointGroup) (\s@CreateEndpointGroupResponse' {} a -> s {endpointGroup = a} :: CreateEndpointGroupResponse)++-- | The response's http status code.+createEndpointGroupResponse_httpStatus :: Lens.Lens' CreateEndpointGroupResponse Prelude.Int+createEndpointGroupResponse_httpStatus = Lens.lens (\CreateEndpointGroupResponse' {httpStatus} -> httpStatus) (\s@CreateEndpointGroupResponse' {} a -> s {httpStatus = a} :: CreateEndpointGroupResponse)++instance Prelude.NFData CreateEndpointGroupResponse where+  rnf CreateEndpointGroupResponse' {..} =+    Prelude.rnf endpointGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/CreateListener.hs view
@@ -0,0 +1,305 @@+{-# 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.GlobalAccelerator.CreateListener+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Create a listener to process inbound connections from clients to an+-- accelerator. Connections arrive to assigned static IP addresses on a+-- port, port range, or list of port ranges that you specify.+module Amazonka.GlobalAccelerator.CreateListener+  ( -- * Creating a Request+    CreateListener (..),+    newCreateListener,++    -- * Request Lenses+    createListener_clientAffinity,+    createListener_acceleratorArn,+    createListener_portRanges,+    createListener_protocol,+    createListener_idempotencyToken,++    -- * Destructuring the Response+    CreateListenerResponse (..),+    newCreateListenerResponse,++    -- * Response Lenses+    createListenerResponse_listener,+    createListenerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateListener' smart constructor.+data CreateListener = CreateListener'+  { -- | Client affinity lets you direct all requests from a user to the same+    -- endpoint, if you have stateful applications, regardless of the port and+    -- protocol of the client request. Client affinity gives you control over+    -- whether to always route each client to the same specific endpoint.+    --+    -- Global Accelerator uses a consistent-flow hashing algorithm to choose+    -- the optimal endpoint for a connection. If client affinity is @NONE@,+    -- Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source+    -- IP address, source port, destination IP address, destination port, and+    -- protocol—to select the hash value, and then chooses the best endpoint.+    -- However, with this setting, if someone uses different ports to connect+    -- to Global Accelerator, their connections might not be always routed to+    -- the same endpoint because the hash value changes.+    --+    -- If you want a given client to always be routed to the same endpoint, set+    -- client affinity to @SOURCE_IP@ instead. When you use the @SOURCE_IP@+    -- setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties—+    -- source (client) IP address and destination IP address—to select the hash+    -- value.+    --+    -- The default value is @NONE@.+    clientAffinity :: Prelude.Maybe ClientAffinity,+    -- | The Amazon Resource Name (ARN) of your accelerator.+    acceleratorArn :: Prelude.Text,+    -- | The list of port ranges to support for connections from clients to your+    -- accelerator.+    portRanges :: Prelude.NonEmpty PortRange,+    -- | The protocol for connections from clients to your accelerator.+    protocol :: Protocol,+    -- | A unique, case-sensitive identifier that you provide to ensure the+    -- idempotency—that is, the uniqueness—of the request.+    idempotencyToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientAffinity', 'createListener_clientAffinity' - Client affinity lets you direct all requests from a user to the same+-- endpoint, if you have stateful applications, regardless of the port and+-- protocol of the client request. Client affinity gives you control over+-- whether to always route each client to the same specific endpoint.+--+-- Global Accelerator uses a consistent-flow hashing algorithm to choose+-- the optimal endpoint for a connection. If client affinity is @NONE@,+-- Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source+-- IP address, source port, destination IP address, destination port, and+-- protocol—to select the hash value, and then chooses the best endpoint.+-- However, with this setting, if someone uses different ports to connect+-- to Global Accelerator, their connections might not be always routed to+-- the same endpoint because the hash value changes.+--+-- If you want a given client to always be routed to the same endpoint, set+-- client affinity to @SOURCE_IP@ instead. When you use the @SOURCE_IP@+-- setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties—+-- source (client) IP address and destination IP address—to select the hash+-- value.+--+-- The default value is @NONE@.+--+-- 'acceleratorArn', 'createListener_acceleratorArn' - The Amazon Resource Name (ARN) of your accelerator.+--+-- 'portRanges', 'createListener_portRanges' - The list of port ranges to support for connections from clients to your+-- accelerator.+--+-- 'protocol', 'createListener_protocol' - The protocol for connections from clients to your accelerator.+--+-- 'idempotencyToken', 'createListener_idempotencyToken' - A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of the request.+newCreateListener ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  -- | 'portRanges'+  Prelude.NonEmpty PortRange ->+  -- | 'protocol'+  Protocol ->+  -- | 'idempotencyToken'+  Prelude.Text ->+  CreateListener+newCreateListener+  pAcceleratorArn_+  pPortRanges_+  pProtocol_+  pIdempotencyToken_ =+    CreateListener'+      { clientAffinity = Prelude.Nothing,+        acceleratorArn = pAcceleratorArn_,+        portRanges = Lens.coerced Lens.# pPortRanges_,+        protocol = pProtocol_,+        idempotencyToken = pIdempotencyToken_+      }++-- | Client affinity lets you direct all requests from a user to the same+-- endpoint, if you have stateful applications, regardless of the port and+-- protocol of the client request. Client affinity gives you control over+-- whether to always route each client to the same specific endpoint.+--+-- Global Accelerator uses a consistent-flow hashing algorithm to choose+-- the optimal endpoint for a connection. If client affinity is @NONE@,+-- Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source+-- IP address, source port, destination IP address, destination port, and+-- protocol—to select the hash value, and then chooses the best endpoint.+-- However, with this setting, if someone uses different ports to connect+-- to Global Accelerator, their connections might not be always routed to+-- the same endpoint because the hash value changes.+--+-- If you want a given client to always be routed to the same endpoint, set+-- client affinity to @SOURCE_IP@ instead. When you use the @SOURCE_IP@+-- setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties—+-- source (client) IP address and destination IP address—to select the hash+-- value.+--+-- The default value is @NONE@.+createListener_clientAffinity :: Lens.Lens' CreateListener (Prelude.Maybe ClientAffinity)+createListener_clientAffinity = Lens.lens (\CreateListener' {clientAffinity} -> clientAffinity) (\s@CreateListener' {} a -> s {clientAffinity = a} :: CreateListener)++-- | The Amazon Resource Name (ARN) of your accelerator.+createListener_acceleratorArn :: Lens.Lens' CreateListener Prelude.Text+createListener_acceleratorArn = Lens.lens (\CreateListener' {acceleratorArn} -> acceleratorArn) (\s@CreateListener' {} a -> s {acceleratorArn = a} :: CreateListener)++-- | The list of port ranges to support for connections from clients to your+-- accelerator.+createListener_portRanges :: Lens.Lens' CreateListener (Prelude.NonEmpty PortRange)+createListener_portRanges = Lens.lens (\CreateListener' {portRanges} -> portRanges) (\s@CreateListener' {} a -> s {portRanges = a} :: CreateListener) Prelude.. Lens.coerced++-- | The protocol for connections from clients to your accelerator.+createListener_protocol :: Lens.Lens' CreateListener Protocol+createListener_protocol = Lens.lens (\CreateListener' {protocol} -> protocol) (\s@CreateListener' {} a -> s {protocol = a} :: CreateListener)++-- | A unique, case-sensitive identifier that you provide to ensure the+-- idempotency—that is, the uniqueness—of the request.+createListener_idempotencyToken :: Lens.Lens' CreateListener Prelude.Text+createListener_idempotencyToken = Lens.lens (\CreateListener' {idempotencyToken} -> idempotencyToken) (\s@CreateListener' {} a -> s {idempotencyToken = a} :: CreateListener)++instance Core.AWSRequest CreateListener where+  type+    AWSResponse CreateListener =+      CreateListenerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateListenerResponse'+            Prelude.<$> (x Data..?> "Listener")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateListener where+  hashWithSalt _salt CreateListener' {..} =+    _salt+      `Prelude.hashWithSalt` clientAffinity+      `Prelude.hashWithSalt` acceleratorArn+      `Prelude.hashWithSalt` portRanges+      `Prelude.hashWithSalt` protocol+      `Prelude.hashWithSalt` idempotencyToken++instance Prelude.NFData CreateListener where+  rnf CreateListener' {..} =+    Prelude.rnf clientAffinity+      `Prelude.seq` Prelude.rnf acceleratorArn+      `Prelude.seq` Prelude.rnf portRanges+      `Prelude.seq` Prelude.rnf protocol+      `Prelude.seq` Prelude.rnf idempotencyToken++instance Data.ToHeaders CreateListener where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.CreateListener" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateListener where+  toJSON CreateListener' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientAffinity" Data..=)+              Prelude.<$> clientAffinity,+            Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn),+            Prelude.Just ("PortRanges" Data..= portRanges),+            Prelude.Just ("Protocol" Data..= protocol),+            Prelude.Just+              ("IdempotencyToken" Data..= idempotencyToken)+          ]+      )++instance Data.ToPath CreateListener where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateListener where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateListenerResponse' smart constructor.+data CreateListenerResponse = CreateListenerResponse'+  { -- | The listener that you\'ve created.+    listener :: Prelude.Maybe Listener,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateListenerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listener', 'createListenerResponse_listener' - The listener that you\'ve created.+--+-- 'httpStatus', 'createListenerResponse_httpStatus' - The response's http status code.+newCreateListenerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateListenerResponse+newCreateListenerResponse pHttpStatus_ =+  CreateListenerResponse'+    { listener = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The listener that you\'ve created.+createListenerResponse_listener :: Lens.Lens' CreateListenerResponse (Prelude.Maybe Listener)+createListenerResponse_listener = Lens.lens (\CreateListenerResponse' {listener} -> listener) (\s@CreateListenerResponse' {} a -> s {listener = a} :: CreateListenerResponse)++-- | The response's http status code.+createListenerResponse_httpStatus :: Lens.Lens' CreateListenerResponse Prelude.Int+createListenerResponse_httpStatus = Lens.lens (\CreateListenerResponse' {httpStatus} -> httpStatus) (\s@CreateListenerResponse' {} a -> s {httpStatus = a} :: CreateListenerResponse)++instance Prelude.NFData CreateListenerResponse where+  rnf CreateListenerResponse' {..} =+    Prelude.rnf listener+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/DeleteAccelerator.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.DeleteAccelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Delete an accelerator. Before you can delete an accelerator, you must+-- disable it and remove all dependent resources (listeners and endpoint+-- groups). To disable the accelerator, update the accelerator to set+-- @Enabled@ to false.+--+-- When you create an accelerator, by default, Global Accelerator provides+-- you with a set of two static IP addresses. Alternatively, you can bring+-- your own IP address ranges to Global Accelerator and assign IP addresses+-- from those ranges.+--+-- The IP addresses are assigned to your accelerator for as long as it+-- exists, even if you disable the accelerator and it no longer accepts or+-- routes traffic. However, when you /delete/ an accelerator, you lose the+-- static IP addresses that are assigned to the accelerator, so you can no+-- longer route traffic by using them. As a best practice, ensure that you+-- have permissions in place to avoid inadvertently deleting accelerators.+-- You can use IAM policies with Global Accelerator to limit the users who+-- have permissions to delete an accelerator. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/auth-and-access-control.html Identity and access management>+-- in the /Global Accelerator Developer Guide/.+module Amazonka.GlobalAccelerator.DeleteAccelerator+  ( -- * Creating a Request+    DeleteAccelerator (..),+    newDeleteAccelerator,++    -- * Request Lenses+    deleteAccelerator_acceleratorArn,++    -- * Destructuring the Response+    DeleteAcceleratorResponse (..),+    newDeleteAcceleratorResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteAccelerator' smart constructor.+data DeleteAccelerator = DeleteAccelerator'+  { -- | The Amazon Resource Name (ARN) of an accelerator.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteAccelerator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorArn', 'deleteAccelerator_acceleratorArn' - The Amazon Resource Name (ARN) of an accelerator.+newDeleteAccelerator ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  DeleteAccelerator+newDeleteAccelerator pAcceleratorArn_ =+  DeleteAccelerator'+    { acceleratorArn =+        pAcceleratorArn_+    }++-- | The Amazon Resource Name (ARN) of an accelerator.+deleteAccelerator_acceleratorArn :: Lens.Lens' DeleteAccelerator Prelude.Text+deleteAccelerator_acceleratorArn = Lens.lens (\DeleteAccelerator' {acceleratorArn} -> acceleratorArn) (\s@DeleteAccelerator' {} a -> s {acceleratorArn = a} :: DeleteAccelerator)++instance Core.AWSRequest DeleteAccelerator where+  type+    AWSResponse DeleteAccelerator =+      DeleteAcceleratorResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull DeleteAcceleratorResponse'++instance Prelude.Hashable DeleteAccelerator where+  hashWithSalt _salt DeleteAccelerator' {..} =+    _salt `Prelude.hashWithSalt` acceleratorArn++instance Prelude.NFData DeleteAccelerator where+  rnf DeleteAccelerator' {..} =+    Prelude.rnf acceleratorArn++instance Data.ToHeaders DeleteAccelerator where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DeleteAccelerator" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteAccelerator where+  toJSON DeleteAccelerator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath DeleteAccelerator where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteAccelerator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteAcceleratorResponse' smart constructor.+data DeleteAcceleratorResponse = DeleteAcceleratorResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteAcceleratorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteAcceleratorResponse ::+  DeleteAcceleratorResponse+newDeleteAcceleratorResponse =+  DeleteAcceleratorResponse'++instance Prelude.NFData DeleteAcceleratorResponse where+  rnf _ = ()
+ gen/Amazonka/GlobalAccelerator/DeleteCustomRoutingAccelerator.hs view
@@ -0,0 +1,177 @@+{-# 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.GlobalAccelerator.DeleteCustomRoutingAccelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Delete a custom routing accelerator. Before you can delete an+-- accelerator, you must disable it and remove all dependent resources+-- (listeners and endpoint groups). To disable the accelerator, update the+-- accelerator to set @Enabled@ to false.+--+-- When you create a custom routing accelerator, by default, Global+-- Accelerator provides you with a set of two static IP addresses.+--+-- The IP addresses are assigned to your accelerator for as long as it+-- exists, even if you disable the accelerator and it no longer accepts or+-- routes traffic. However, when you /delete/ an accelerator, you lose the+-- static IP addresses that are assigned to the accelerator, so you can no+-- longer route traffic by using them. As a best practice, ensure that you+-- have permissions in place to avoid inadvertently deleting accelerators.+-- You can use IAM policies with Global Accelerator to limit the users who+-- have permissions to delete an accelerator. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/auth-and-access-control.html Identity and access management>+-- in the /Global Accelerator Developer Guide/.+module Amazonka.GlobalAccelerator.DeleteCustomRoutingAccelerator+  ( -- * Creating a Request+    DeleteCustomRoutingAccelerator (..),+    newDeleteCustomRoutingAccelerator,++    -- * Request Lenses+    deleteCustomRoutingAccelerator_acceleratorArn,++    -- * Destructuring the Response+    DeleteCustomRoutingAcceleratorResponse (..),+    newDeleteCustomRoutingAcceleratorResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteCustomRoutingAccelerator' smart constructor.+data DeleteCustomRoutingAccelerator = DeleteCustomRoutingAccelerator'+  { -- | The Amazon Resource Name (ARN) of the custom routing accelerator to+    -- delete.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteCustomRoutingAccelerator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorArn', 'deleteCustomRoutingAccelerator_acceleratorArn' - The Amazon Resource Name (ARN) of the custom routing accelerator to+-- delete.+newDeleteCustomRoutingAccelerator ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  DeleteCustomRoutingAccelerator+newDeleteCustomRoutingAccelerator pAcceleratorArn_ =+  DeleteCustomRoutingAccelerator'+    { acceleratorArn =+        pAcceleratorArn_+    }++-- | The Amazon Resource Name (ARN) of the custom routing accelerator to+-- delete.+deleteCustomRoutingAccelerator_acceleratorArn :: Lens.Lens' DeleteCustomRoutingAccelerator Prelude.Text+deleteCustomRoutingAccelerator_acceleratorArn = Lens.lens (\DeleteCustomRoutingAccelerator' {acceleratorArn} -> acceleratorArn) (\s@DeleteCustomRoutingAccelerator' {} a -> s {acceleratorArn = a} :: DeleteCustomRoutingAccelerator)++instance+  Core.AWSRequest+    DeleteCustomRoutingAccelerator+  where+  type+    AWSResponse DeleteCustomRoutingAccelerator =+      DeleteCustomRoutingAcceleratorResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      DeleteCustomRoutingAcceleratorResponse'++instance+  Prelude.Hashable+    DeleteCustomRoutingAccelerator+  where+  hashWithSalt+    _salt+    DeleteCustomRoutingAccelerator' {..} =+      _salt `Prelude.hashWithSalt` acceleratorArn++instance+  Prelude.NFData+    DeleteCustomRoutingAccelerator+  where+  rnf DeleteCustomRoutingAccelerator' {..} =+    Prelude.rnf acceleratorArn++instance+  Data.ToHeaders+    DeleteCustomRoutingAccelerator+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DeleteCustomRoutingAccelerator" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteCustomRoutingAccelerator where+  toJSON DeleteCustomRoutingAccelerator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath DeleteCustomRoutingAccelerator where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteCustomRoutingAccelerator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteCustomRoutingAcceleratorResponse' smart constructor.+data DeleteCustomRoutingAcceleratorResponse = DeleteCustomRoutingAcceleratorResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteCustomRoutingAcceleratorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteCustomRoutingAcceleratorResponse ::+  DeleteCustomRoutingAcceleratorResponse+newDeleteCustomRoutingAcceleratorResponse =+  DeleteCustomRoutingAcceleratorResponse'++instance+  Prelude.NFData+    DeleteCustomRoutingAcceleratorResponse+  where+  rnf _ = ()
+ gen/Amazonka/GlobalAccelerator/DeleteCustomRoutingEndpointGroup.hs view
@@ -0,0 +1,162 @@+{-# 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.GlobalAccelerator.DeleteCustomRoutingEndpointGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Delete an endpoint group from a listener for a custom routing+-- accelerator.+module Amazonka.GlobalAccelerator.DeleteCustomRoutingEndpointGroup+  ( -- * Creating a Request+    DeleteCustomRoutingEndpointGroup (..),+    newDeleteCustomRoutingEndpointGroup,++    -- * Request Lenses+    deleteCustomRoutingEndpointGroup_endpointGroupArn,++    -- * Destructuring the Response+    DeleteCustomRoutingEndpointGroupResponse (..),+    newDeleteCustomRoutingEndpointGroupResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteCustomRoutingEndpointGroup' smart constructor.+data DeleteCustomRoutingEndpointGroup = DeleteCustomRoutingEndpointGroup'+  { -- | The Amazon Resource Name (ARN) of the endpoint group to delete.+    endpointGroupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteCustomRoutingEndpointGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroupArn', 'deleteCustomRoutingEndpointGroup_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group to delete.+newDeleteCustomRoutingEndpointGroup ::+  -- | 'endpointGroupArn'+  Prelude.Text ->+  DeleteCustomRoutingEndpointGroup+newDeleteCustomRoutingEndpointGroup+  pEndpointGroupArn_ =+    DeleteCustomRoutingEndpointGroup'+      { endpointGroupArn =+          pEndpointGroupArn_+      }++-- | The Amazon Resource Name (ARN) of the endpoint group to delete.+deleteCustomRoutingEndpointGroup_endpointGroupArn :: Lens.Lens' DeleteCustomRoutingEndpointGroup Prelude.Text+deleteCustomRoutingEndpointGroup_endpointGroupArn = Lens.lens (\DeleteCustomRoutingEndpointGroup' {endpointGroupArn} -> endpointGroupArn) (\s@DeleteCustomRoutingEndpointGroup' {} a -> s {endpointGroupArn = a} :: DeleteCustomRoutingEndpointGroup)++instance+  Core.AWSRequest+    DeleteCustomRoutingEndpointGroup+  where+  type+    AWSResponse DeleteCustomRoutingEndpointGroup =+      DeleteCustomRoutingEndpointGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      DeleteCustomRoutingEndpointGroupResponse'++instance+  Prelude.Hashable+    DeleteCustomRoutingEndpointGroup+  where+  hashWithSalt+    _salt+    DeleteCustomRoutingEndpointGroup' {..} =+      _salt `Prelude.hashWithSalt` endpointGroupArn++instance+  Prelude.NFData+    DeleteCustomRoutingEndpointGroup+  where+  rnf DeleteCustomRoutingEndpointGroup' {..} =+    Prelude.rnf endpointGroupArn++instance+  Data.ToHeaders+    DeleteCustomRoutingEndpointGroup+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DeleteCustomRoutingEndpointGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteCustomRoutingEndpointGroup where+  toJSON DeleteCustomRoutingEndpointGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn)+          ]+      )++instance Data.ToPath DeleteCustomRoutingEndpointGroup where+  toPath = Prelude.const "/"++instance+  Data.ToQuery+    DeleteCustomRoutingEndpointGroup+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteCustomRoutingEndpointGroupResponse' smart constructor.+data DeleteCustomRoutingEndpointGroupResponse = DeleteCustomRoutingEndpointGroupResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteCustomRoutingEndpointGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteCustomRoutingEndpointGroupResponse ::+  DeleteCustomRoutingEndpointGroupResponse+newDeleteCustomRoutingEndpointGroupResponse =+  DeleteCustomRoutingEndpointGroupResponse'++instance+  Prelude.NFData+    DeleteCustomRoutingEndpointGroupResponse+  where+  rnf _ = ()
+ gen/Amazonka/GlobalAccelerator/DeleteCustomRoutingListener.hs view
@@ -0,0 +1,141 @@+{-# 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.GlobalAccelerator.DeleteCustomRoutingListener+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Delete a listener for a custom routing accelerator.+module Amazonka.GlobalAccelerator.DeleteCustomRoutingListener+  ( -- * Creating a Request+    DeleteCustomRoutingListener (..),+    newDeleteCustomRoutingListener,++    -- * Request Lenses+    deleteCustomRoutingListener_listenerArn,++    -- * Destructuring the Response+    DeleteCustomRoutingListenerResponse (..),+    newDeleteCustomRoutingListenerResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteCustomRoutingListener' smart constructor.+data DeleteCustomRoutingListener = DeleteCustomRoutingListener'+  { -- | The Amazon Resource Name (ARN) of the listener to delete.+    listenerArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteCustomRoutingListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listenerArn', 'deleteCustomRoutingListener_listenerArn' - The Amazon Resource Name (ARN) of the listener to delete.+newDeleteCustomRoutingListener ::+  -- | 'listenerArn'+  Prelude.Text ->+  DeleteCustomRoutingListener+newDeleteCustomRoutingListener pListenerArn_ =+  DeleteCustomRoutingListener'+    { listenerArn =+        pListenerArn_+    }++-- | The Amazon Resource Name (ARN) of the listener to delete.+deleteCustomRoutingListener_listenerArn :: Lens.Lens' DeleteCustomRoutingListener Prelude.Text+deleteCustomRoutingListener_listenerArn = Lens.lens (\DeleteCustomRoutingListener' {listenerArn} -> listenerArn) (\s@DeleteCustomRoutingListener' {} a -> s {listenerArn = a} :: DeleteCustomRoutingListener)++instance Core.AWSRequest DeleteCustomRoutingListener where+  type+    AWSResponse DeleteCustomRoutingListener =+      DeleteCustomRoutingListenerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      DeleteCustomRoutingListenerResponse'++instance Prelude.Hashable DeleteCustomRoutingListener where+  hashWithSalt _salt DeleteCustomRoutingListener' {..} =+    _salt `Prelude.hashWithSalt` listenerArn++instance Prelude.NFData DeleteCustomRoutingListener where+  rnf DeleteCustomRoutingListener' {..} =+    Prelude.rnf listenerArn++instance Data.ToHeaders DeleteCustomRoutingListener where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DeleteCustomRoutingListener" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteCustomRoutingListener where+  toJSON DeleteCustomRoutingListener' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ListenerArn" Data..= listenerArn)]+      )++instance Data.ToPath DeleteCustomRoutingListener where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteCustomRoutingListener where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteCustomRoutingListenerResponse' smart constructor.+data DeleteCustomRoutingListenerResponse = DeleteCustomRoutingListenerResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteCustomRoutingListenerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteCustomRoutingListenerResponse ::+  DeleteCustomRoutingListenerResponse+newDeleteCustomRoutingListenerResponse =+  DeleteCustomRoutingListenerResponse'++instance+  Prelude.NFData+    DeleteCustomRoutingListenerResponse+  where+  rnf _ = ()
+ gen/Amazonka/GlobalAccelerator/DeleteEndpointGroup.hs view
@@ -0,0 +1,139 @@+{-# 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.GlobalAccelerator.DeleteEndpointGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Delete an endpoint group from a listener.+module Amazonka.GlobalAccelerator.DeleteEndpointGroup+  ( -- * Creating a Request+    DeleteEndpointGroup (..),+    newDeleteEndpointGroup,++    -- * Request Lenses+    deleteEndpointGroup_endpointGroupArn,++    -- * Destructuring the Response+    DeleteEndpointGroupResponse (..),+    newDeleteEndpointGroupResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteEndpointGroup' smart constructor.+data DeleteEndpointGroup = DeleteEndpointGroup'+  { -- | The Amazon Resource Name (ARN) of the endpoint group to delete.+    endpointGroupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteEndpointGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroupArn', 'deleteEndpointGroup_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group to delete.+newDeleteEndpointGroup ::+  -- | 'endpointGroupArn'+  Prelude.Text ->+  DeleteEndpointGroup+newDeleteEndpointGroup pEndpointGroupArn_ =+  DeleteEndpointGroup'+    { endpointGroupArn =+        pEndpointGroupArn_+    }++-- | The Amazon Resource Name (ARN) of the endpoint group to delete.+deleteEndpointGroup_endpointGroupArn :: Lens.Lens' DeleteEndpointGroup Prelude.Text+deleteEndpointGroup_endpointGroupArn = Lens.lens (\DeleteEndpointGroup' {endpointGroupArn} -> endpointGroupArn) (\s@DeleteEndpointGroup' {} a -> s {endpointGroupArn = a} :: DeleteEndpointGroup)++instance Core.AWSRequest DeleteEndpointGroup where+  type+    AWSResponse DeleteEndpointGroup =+      DeleteEndpointGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull DeleteEndpointGroupResponse'++instance Prelude.Hashable DeleteEndpointGroup where+  hashWithSalt _salt DeleteEndpointGroup' {..} =+    _salt `Prelude.hashWithSalt` endpointGroupArn++instance Prelude.NFData DeleteEndpointGroup where+  rnf DeleteEndpointGroup' {..} =+    Prelude.rnf endpointGroupArn++instance Data.ToHeaders DeleteEndpointGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DeleteEndpointGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteEndpointGroup where+  toJSON DeleteEndpointGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn)+          ]+      )++instance Data.ToPath DeleteEndpointGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteEndpointGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteEndpointGroupResponse' smart constructor.+data DeleteEndpointGroupResponse = DeleteEndpointGroupResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteEndpointGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteEndpointGroupResponse ::+  DeleteEndpointGroupResponse+newDeleteEndpointGroupResponse =+  DeleteEndpointGroupResponse'++instance Prelude.NFData DeleteEndpointGroupResponse where+  rnf _ = ()
+ gen/Amazonka/GlobalAccelerator/DeleteListener.hs view
@@ -0,0 +1,132 @@+{-# 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.GlobalAccelerator.DeleteListener+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Delete a listener from an accelerator.+module Amazonka.GlobalAccelerator.DeleteListener+  ( -- * Creating a Request+    DeleteListener (..),+    newDeleteListener,++    -- * Request Lenses+    deleteListener_listenerArn,++    -- * Destructuring the Response+    DeleteListenerResponse (..),+    newDeleteListenerResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteListener' smart constructor.+data DeleteListener = DeleteListener'+  { -- | The Amazon Resource Name (ARN) of the listener.+    listenerArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listenerArn', 'deleteListener_listenerArn' - The Amazon Resource Name (ARN) of the listener.+newDeleteListener ::+  -- | 'listenerArn'+  Prelude.Text ->+  DeleteListener+newDeleteListener pListenerArn_ =+  DeleteListener' {listenerArn = pListenerArn_}++-- | The Amazon Resource Name (ARN) of the listener.+deleteListener_listenerArn :: Lens.Lens' DeleteListener Prelude.Text+deleteListener_listenerArn = Lens.lens (\DeleteListener' {listenerArn} -> listenerArn) (\s@DeleteListener' {} a -> s {listenerArn = a} :: DeleteListener)++instance Core.AWSRequest DeleteListener where+  type+    AWSResponse DeleteListener =+      DeleteListenerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull DeleteListenerResponse'++instance Prelude.Hashable DeleteListener where+  hashWithSalt _salt DeleteListener' {..} =+    _salt `Prelude.hashWithSalt` listenerArn++instance Prelude.NFData DeleteListener where+  rnf DeleteListener' {..} = Prelude.rnf listenerArn++instance Data.ToHeaders DeleteListener where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DeleteListener" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteListener where+  toJSON DeleteListener' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ListenerArn" Data..= listenerArn)]+      )++instance Data.ToPath DeleteListener where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteListener where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteListenerResponse' smart constructor.+data DeleteListenerResponse = DeleteListenerResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteListenerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteListenerResponse ::+  DeleteListenerResponse+newDeleteListenerResponse = DeleteListenerResponse'++instance Prelude.NFData DeleteListenerResponse where+  rnf _ = ()
+ gen/Amazonka/GlobalAccelerator/DenyCustomRoutingTraffic.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.GlobalAccelerator.DenyCustomRoutingTraffic+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Specify the Amazon EC2 instance (destination) IP addresses and ports for+-- a VPC subnet endpoint that cannot receive traffic for a custom routing+-- accelerator. You can deny traffic to all destinations in the VPC+-- endpoint, or deny traffic to a specified list of destination IP+-- addresses and ports. Note that you cannot specify IP addresses or ports+-- outside of the range that you configured for the endpoint group.+--+-- After you make changes, you can verify that the updates are complete by+-- checking the status of your accelerator: the status changes from+-- IN_PROGRESS to DEPLOYED.+module Amazonka.GlobalAccelerator.DenyCustomRoutingTraffic+  ( -- * Creating a Request+    DenyCustomRoutingTraffic (..),+    newDenyCustomRoutingTraffic,++    -- * Request Lenses+    denyCustomRoutingTraffic_denyAllTrafficToEndpoint,+    denyCustomRoutingTraffic_destinationAddresses,+    denyCustomRoutingTraffic_destinationPorts,+    denyCustomRoutingTraffic_endpointGroupArn,+    denyCustomRoutingTraffic_endpointId,++    -- * Destructuring the Response+    DenyCustomRoutingTrafficResponse (..),+    newDenyCustomRoutingTrafficResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDenyCustomRoutingTraffic' smart constructor.+data DenyCustomRoutingTraffic = DenyCustomRoutingTraffic'+  { -- | Indicates whether all destination IP addresses and ports for a specified+    -- VPC subnet endpoint /cannot/ receive traffic from a custom routing+    -- accelerator. The value is TRUE or FALSE.+    --+    -- When set to TRUE, /no/ destinations in the custom routing VPC subnet can+    -- receive traffic. Note that you cannot specify destination IP addresses+    -- and ports when the value is set to TRUE.+    --+    -- When set to FALSE (or not specified), you /must/ specify a list of+    -- destination IP addresses that cannot receive traffic. A list of ports is+    -- optional. If you don\'t specify a list of ports, the ports that can+    -- accept traffic is the same as the ports configured for the endpoint+    -- group.+    --+    -- The default value is FALSE.+    denyAllTrafficToEndpoint :: Prelude.Maybe Prelude.Bool,+    -- | A list of specific Amazon EC2 instance IP addresses (destination+    -- addresses) in a subnet that you want to prevent from receiving traffic.+    -- The IP addresses must be a subset of the IP addresses allowed for the+    -- VPC subnet associated with the endpoint group.+    destinationAddresses :: Prelude.Maybe [Prelude.Text],+    -- | A list of specific Amazon EC2 instance ports (destination ports) in a+    -- subnet endpoint that you want to prevent from receiving traffic.+    destinationPorts :: Prelude.Maybe [Prelude.Natural],+    -- | The Amazon Resource Name (ARN) of the endpoint group.+    endpointGroupArn :: Prelude.Text,+    -- | An ID for the endpoint. For custom routing accelerators, this is the+    -- virtual private cloud (VPC) subnet ID.+    endpointId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DenyCustomRoutingTraffic' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'denyAllTrafficToEndpoint', 'denyCustomRoutingTraffic_denyAllTrafficToEndpoint' - Indicates whether all destination IP addresses and ports for a specified+-- VPC subnet endpoint /cannot/ receive traffic from a custom routing+-- accelerator. The value is TRUE or FALSE.+--+-- When set to TRUE, /no/ destinations in the custom routing VPC subnet can+-- receive traffic. Note that you cannot specify destination IP addresses+-- and ports when the value is set to TRUE.+--+-- When set to FALSE (or not specified), you /must/ specify a list of+-- destination IP addresses that cannot receive traffic. A list of ports is+-- optional. If you don\'t specify a list of ports, the ports that can+-- accept traffic is the same as the ports configured for the endpoint+-- group.+--+-- The default value is FALSE.+--+-- 'destinationAddresses', 'denyCustomRoutingTraffic_destinationAddresses' - A list of specific Amazon EC2 instance IP addresses (destination+-- addresses) in a subnet that you want to prevent from receiving traffic.+-- The IP addresses must be a subset of the IP addresses allowed for the+-- VPC subnet associated with the endpoint group.+--+-- 'destinationPorts', 'denyCustomRoutingTraffic_destinationPorts' - A list of specific Amazon EC2 instance ports (destination ports) in a+-- subnet endpoint that you want to prevent from receiving traffic.+--+-- 'endpointGroupArn', 'denyCustomRoutingTraffic_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group.+--+-- 'endpointId', 'denyCustomRoutingTraffic_endpointId' - An ID for the endpoint. For custom routing accelerators, this is the+-- virtual private cloud (VPC) subnet ID.+newDenyCustomRoutingTraffic ::+  -- | 'endpointGroupArn'+  Prelude.Text ->+  -- | 'endpointId'+  Prelude.Text ->+  DenyCustomRoutingTraffic+newDenyCustomRoutingTraffic+  pEndpointGroupArn_+  pEndpointId_ =+    DenyCustomRoutingTraffic'+      { denyAllTrafficToEndpoint =+          Prelude.Nothing,+        destinationAddresses = Prelude.Nothing,+        destinationPorts = Prelude.Nothing,+        endpointGroupArn = pEndpointGroupArn_,+        endpointId = pEndpointId_+      }++-- | Indicates whether all destination IP addresses and ports for a specified+-- VPC subnet endpoint /cannot/ receive traffic from a custom routing+-- accelerator. The value is TRUE or FALSE.+--+-- When set to TRUE, /no/ destinations in the custom routing VPC subnet can+-- receive traffic. Note that you cannot specify destination IP addresses+-- and ports when the value is set to TRUE.+--+-- When set to FALSE (or not specified), you /must/ specify a list of+-- destination IP addresses that cannot receive traffic. A list of ports is+-- optional. If you don\'t specify a list of ports, the ports that can+-- accept traffic is the same as the ports configured for the endpoint+-- group.+--+-- The default value is FALSE.+denyCustomRoutingTraffic_denyAllTrafficToEndpoint :: Lens.Lens' DenyCustomRoutingTraffic (Prelude.Maybe Prelude.Bool)+denyCustomRoutingTraffic_denyAllTrafficToEndpoint = Lens.lens (\DenyCustomRoutingTraffic' {denyAllTrafficToEndpoint} -> denyAllTrafficToEndpoint) (\s@DenyCustomRoutingTraffic' {} a -> s {denyAllTrafficToEndpoint = a} :: DenyCustomRoutingTraffic)++-- | A list of specific Amazon EC2 instance IP addresses (destination+-- addresses) in a subnet that you want to prevent from receiving traffic.+-- The IP addresses must be a subset of the IP addresses allowed for the+-- VPC subnet associated with the endpoint group.+denyCustomRoutingTraffic_destinationAddresses :: Lens.Lens' DenyCustomRoutingTraffic (Prelude.Maybe [Prelude.Text])+denyCustomRoutingTraffic_destinationAddresses = Lens.lens (\DenyCustomRoutingTraffic' {destinationAddresses} -> destinationAddresses) (\s@DenyCustomRoutingTraffic' {} a -> s {destinationAddresses = a} :: DenyCustomRoutingTraffic) Prelude.. Lens.mapping Lens.coerced++-- | A list of specific Amazon EC2 instance ports (destination ports) in a+-- subnet endpoint that you want to prevent from receiving traffic.+denyCustomRoutingTraffic_destinationPorts :: Lens.Lens' DenyCustomRoutingTraffic (Prelude.Maybe [Prelude.Natural])+denyCustomRoutingTraffic_destinationPorts = Lens.lens (\DenyCustomRoutingTraffic' {destinationPorts} -> destinationPorts) (\s@DenyCustomRoutingTraffic' {} a -> s {destinationPorts = a} :: DenyCustomRoutingTraffic) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the endpoint group.+denyCustomRoutingTraffic_endpointGroupArn :: Lens.Lens' DenyCustomRoutingTraffic Prelude.Text+denyCustomRoutingTraffic_endpointGroupArn = Lens.lens (\DenyCustomRoutingTraffic' {endpointGroupArn} -> endpointGroupArn) (\s@DenyCustomRoutingTraffic' {} a -> s {endpointGroupArn = a} :: DenyCustomRoutingTraffic)++-- | An ID for the endpoint. For custom routing accelerators, this is the+-- virtual private cloud (VPC) subnet ID.+denyCustomRoutingTraffic_endpointId :: Lens.Lens' DenyCustomRoutingTraffic Prelude.Text+denyCustomRoutingTraffic_endpointId = Lens.lens (\DenyCustomRoutingTraffic' {endpointId} -> endpointId) (\s@DenyCustomRoutingTraffic' {} a -> s {endpointId = a} :: DenyCustomRoutingTraffic)++instance Core.AWSRequest DenyCustomRoutingTraffic where+  type+    AWSResponse DenyCustomRoutingTraffic =+      DenyCustomRoutingTrafficResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      DenyCustomRoutingTrafficResponse'++instance Prelude.Hashable DenyCustomRoutingTraffic where+  hashWithSalt _salt DenyCustomRoutingTraffic' {..} =+    _salt+      `Prelude.hashWithSalt` denyAllTrafficToEndpoint+      `Prelude.hashWithSalt` destinationAddresses+      `Prelude.hashWithSalt` destinationPorts+      `Prelude.hashWithSalt` endpointGroupArn+      `Prelude.hashWithSalt` endpointId++instance Prelude.NFData DenyCustomRoutingTraffic where+  rnf DenyCustomRoutingTraffic' {..} =+    Prelude.rnf denyAllTrafficToEndpoint+      `Prelude.seq` Prelude.rnf destinationAddresses+      `Prelude.seq` Prelude.rnf destinationPorts+      `Prelude.seq` Prelude.rnf endpointGroupArn+      `Prelude.seq` Prelude.rnf endpointId++instance Data.ToHeaders DenyCustomRoutingTraffic where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DenyCustomRoutingTraffic" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DenyCustomRoutingTraffic where+  toJSON DenyCustomRoutingTraffic' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DenyAllTrafficToEndpoint" Data..=)+              Prelude.<$> denyAllTrafficToEndpoint,+            ("DestinationAddresses" Data..=)+              Prelude.<$> destinationAddresses,+            ("DestinationPorts" Data..=)+              Prelude.<$> destinationPorts,+            Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn),+            Prelude.Just ("EndpointId" Data..= endpointId)+          ]+      )++instance Data.ToPath DenyCustomRoutingTraffic where+  toPath = Prelude.const "/"++instance Data.ToQuery DenyCustomRoutingTraffic where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDenyCustomRoutingTrafficResponse' smart constructor.+data DenyCustomRoutingTrafficResponse = DenyCustomRoutingTrafficResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DenyCustomRoutingTrafficResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDenyCustomRoutingTrafficResponse ::+  DenyCustomRoutingTrafficResponse+newDenyCustomRoutingTrafficResponse =+  DenyCustomRoutingTrafficResponse'++instance+  Prelude.NFData+    DenyCustomRoutingTrafficResponse+  where+  rnf _ = ()
+ gen/Amazonka/GlobalAccelerator/DeprovisionByoipCidr.hs view
@@ -0,0 +1,183 @@+{-# 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.GlobalAccelerator.DeprovisionByoipCidr+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Releases the specified address range that you provisioned to use with+-- your Amazon Web Services resources through bring your own IP addresses+-- (BYOIP) and deletes the corresponding address pool.+--+-- Before you can release an address range, you must stop advertising it by+-- using+-- <https://docs.aws.amazon.com/global-accelerator/latest/api/WithdrawByoipCidr.html WithdrawByoipCidr>+-- and you must not have any accelerators that are using static IP+-- addresses allocated from its address range.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+-- in the /Global Accelerator Developer Guide/.+module Amazonka.GlobalAccelerator.DeprovisionByoipCidr+  ( -- * Creating a Request+    DeprovisionByoipCidr (..),+    newDeprovisionByoipCidr,++    -- * Request Lenses+    deprovisionByoipCidr_cidr,++    -- * Destructuring the Response+    DeprovisionByoipCidrResponse (..),+    newDeprovisionByoipCidrResponse,++    -- * Response Lenses+    deprovisionByoipCidrResponse_byoipCidr,+    deprovisionByoipCidrResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeprovisionByoipCidr' smart constructor.+data DeprovisionByoipCidr = DeprovisionByoipCidr'+  { -- | The address range, in CIDR notation. The prefix must be the same prefix+    -- that you specified when you provisioned the address range.+    cidr :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeprovisionByoipCidr' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cidr', 'deprovisionByoipCidr_cidr' - The address range, in CIDR notation. The prefix must be the same prefix+-- that you specified when you provisioned the address range.+newDeprovisionByoipCidr ::+  -- | 'cidr'+  Prelude.Text ->+  DeprovisionByoipCidr+newDeprovisionByoipCidr pCidr_ =+  DeprovisionByoipCidr' {cidr = pCidr_}++-- | The address range, in CIDR notation. The prefix must be the same prefix+-- that you specified when you provisioned the address range.+deprovisionByoipCidr_cidr :: Lens.Lens' DeprovisionByoipCidr Prelude.Text+deprovisionByoipCidr_cidr = Lens.lens (\DeprovisionByoipCidr' {cidr} -> cidr) (\s@DeprovisionByoipCidr' {} a -> s {cidr = a} :: DeprovisionByoipCidr)++instance Core.AWSRequest DeprovisionByoipCidr where+  type+    AWSResponse DeprovisionByoipCidr =+      DeprovisionByoipCidrResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeprovisionByoipCidrResponse'+            Prelude.<$> (x Data..?> "ByoipCidr")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeprovisionByoipCidr where+  hashWithSalt _salt DeprovisionByoipCidr' {..} =+    _salt `Prelude.hashWithSalt` cidr++instance Prelude.NFData DeprovisionByoipCidr where+  rnf DeprovisionByoipCidr' {..} = Prelude.rnf cidr++instance Data.ToHeaders DeprovisionByoipCidr where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DeprovisionByoipCidr" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeprovisionByoipCidr where+  toJSON DeprovisionByoipCidr' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Cidr" Data..= cidr)]+      )++instance Data.ToPath DeprovisionByoipCidr where+  toPath = Prelude.const "/"++instance Data.ToQuery DeprovisionByoipCidr where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeprovisionByoipCidrResponse' smart constructor.+data DeprovisionByoipCidrResponse = DeprovisionByoipCidrResponse'+  { -- | Information about the address range.+    byoipCidr :: Prelude.Maybe ByoipCidr,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeprovisionByoipCidrResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'byoipCidr', 'deprovisionByoipCidrResponse_byoipCidr' - Information about the address range.+--+-- 'httpStatus', 'deprovisionByoipCidrResponse_httpStatus' - The response's http status code.+newDeprovisionByoipCidrResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeprovisionByoipCidrResponse+newDeprovisionByoipCidrResponse pHttpStatus_ =+  DeprovisionByoipCidrResponse'+    { byoipCidr =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the address range.+deprovisionByoipCidrResponse_byoipCidr :: Lens.Lens' DeprovisionByoipCidrResponse (Prelude.Maybe ByoipCidr)+deprovisionByoipCidrResponse_byoipCidr = Lens.lens (\DeprovisionByoipCidrResponse' {byoipCidr} -> byoipCidr) (\s@DeprovisionByoipCidrResponse' {} a -> s {byoipCidr = a} :: DeprovisionByoipCidrResponse)++-- | The response's http status code.+deprovisionByoipCidrResponse_httpStatus :: Lens.Lens' DeprovisionByoipCidrResponse Prelude.Int+deprovisionByoipCidrResponse_httpStatus = Lens.lens (\DeprovisionByoipCidrResponse' {httpStatus} -> httpStatus) (\s@DeprovisionByoipCidrResponse' {} a -> s {httpStatus = a} :: DeprovisionByoipCidrResponse)++instance Prelude.NFData DeprovisionByoipCidrResponse where+  rnf DeprovisionByoipCidrResponse' {..} =+    Prelude.rnf byoipCidr+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/DescribeAccelerator.hs view
@@ -0,0 +1,174 @@+{-# 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.GlobalAccelerator.DescribeAccelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describe an accelerator.+module Amazonka.GlobalAccelerator.DescribeAccelerator+  ( -- * Creating a Request+    DescribeAccelerator (..),+    newDescribeAccelerator,++    -- * Request Lenses+    describeAccelerator_acceleratorArn,++    -- * Destructuring the Response+    DescribeAcceleratorResponse (..),+    newDescribeAcceleratorResponse,++    -- * Response Lenses+    describeAcceleratorResponse_accelerator,+    describeAcceleratorResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAccelerator' smart constructor.+data DescribeAccelerator = DescribeAccelerator'+  { -- | The Amazon Resource Name (ARN) of the accelerator to describe.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAccelerator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorArn', 'describeAccelerator_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator to describe.+newDescribeAccelerator ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  DescribeAccelerator+newDescribeAccelerator pAcceleratorArn_ =+  DescribeAccelerator'+    { acceleratorArn =+        pAcceleratorArn_+    }++-- | The Amazon Resource Name (ARN) of the accelerator to describe.+describeAccelerator_acceleratorArn :: Lens.Lens' DescribeAccelerator Prelude.Text+describeAccelerator_acceleratorArn = Lens.lens (\DescribeAccelerator' {acceleratorArn} -> acceleratorArn) (\s@DescribeAccelerator' {} a -> s {acceleratorArn = a} :: DescribeAccelerator)++instance Core.AWSRequest DescribeAccelerator where+  type+    AWSResponse DescribeAccelerator =+      DescribeAcceleratorResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAcceleratorResponse'+            Prelude.<$> (x Data..?> "Accelerator")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeAccelerator where+  hashWithSalt _salt DescribeAccelerator' {..} =+    _salt `Prelude.hashWithSalt` acceleratorArn++instance Prelude.NFData DescribeAccelerator where+  rnf DescribeAccelerator' {..} =+    Prelude.rnf acceleratorArn++instance Data.ToHeaders DescribeAccelerator where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DescribeAccelerator" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeAccelerator where+  toJSON DescribeAccelerator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath DescribeAccelerator where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeAccelerator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeAcceleratorResponse' smart constructor.+data DescribeAcceleratorResponse = DescribeAcceleratorResponse'+  { -- | The description of the accelerator.+    accelerator :: Prelude.Maybe Accelerator,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAcceleratorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accelerator', 'describeAcceleratorResponse_accelerator' - The description of the accelerator.+--+-- 'httpStatus', 'describeAcceleratorResponse_httpStatus' - The response's http status code.+newDescribeAcceleratorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeAcceleratorResponse+newDescribeAcceleratorResponse pHttpStatus_ =+  DescribeAcceleratorResponse'+    { accelerator =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The description of the accelerator.+describeAcceleratorResponse_accelerator :: Lens.Lens' DescribeAcceleratorResponse (Prelude.Maybe Accelerator)+describeAcceleratorResponse_accelerator = Lens.lens (\DescribeAcceleratorResponse' {accelerator} -> accelerator) (\s@DescribeAcceleratorResponse' {} a -> s {accelerator = a} :: DescribeAcceleratorResponse)++-- | The response's http status code.+describeAcceleratorResponse_httpStatus :: Lens.Lens' DescribeAcceleratorResponse Prelude.Int+describeAcceleratorResponse_httpStatus = Lens.lens (\DescribeAcceleratorResponse' {httpStatus} -> httpStatus) (\s@DescribeAcceleratorResponse' {} a -> s {httpStatus = a} :: DescribeAcceleratorResponse)++instance Prelude.NFData DescribeAcceleratorResponse where+  rnf DescribeAcceleratorResponse' {..} =+    Prelude.rnf accelerator+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/DescribeAcceleratorAttributes.hs view
@@ -0,0 +1,186 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.DescribeAcceleratorAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describe the attributes of an accelerator.+module Amazonka.GlobalAccelerator.DescribeAcceleratorAttributes+  ( -- * Creating a Request+    DescribeAcceleratorAttributes (..),+    newDescribeAcceleratorAttributes,++    -- * Request Lenses+    describeAcceleratorAttributes_acceleratorArn,++    -- * Destructuring the Response+    DescribeAcceleratorAttributesResponse (..),+    newDescribeAcceleratorAttributesResponse,++    -- * Response Lenses+    describeAcceleratorAttributesResponse_acceleratorAttributes,+    describeAcceleratorAttributesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAcceleratorAttributes' smart constructor.+data DescribeAcceleratorAttributes = DescribeAcceleratorAttributes'+  { -- | The Amazon Resource Name (ARN) of the accelerator with the attributes+    -- that you want to describe.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAcceleratorAttributes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorArn', 'describeAcceleratorAttributes_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator with the attributes+-- that you want to describe.+newDescribeAcceleratorAttributes ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  DescribeAcceleratorAttributes+newDescribeAcceleratorAttributes pAcceleratorArn_ =+  DescribeAcceleratorAttributes'+    { acceleratorArn =+        pAcceleratorArn_+    }++-- | The Amazon Resource Name (ARN) of the accelerator with the attributes+-- that you want to describe.+describeAcceleratorAttributes_acceleratorArn :: Lens.Lens' DescribeAcceleratorAttributes Prelude.Text+describeAcceleratorAttributes_acceleratorArn = Lens.lens (\DescribeAcceleratorAttributes' {acceleratorArn} -> acceleratorArn) (\s@DescribeAcceleratorAttributes' {} a -> s {acceleratorArn = a} :: DescribeAcceleratorAttributes)++instance+  Core.AWSRequest+    DescribeAcceleratorAttributes+  where+  type+    AWSResponse DescribeAcceleratorAttributes =+      DescribeAcceleratorAttributesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAcceleratorAttributesResponse'+            Prelude.<$> (x Data..?> "AcceleratorAttributes")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeAcceleratorAttributes+  where+  hashWithSalt _salt DescribeAcceleratorAttributes' {..} =+    _salt `Prelude.hashWithSalt` acceleratorArn++instance Prelude.NFData DescribeAcceleratorAttributes where+  rnf DescribeAcceleratorAttributes' {..} =+    Prelude.rnf acceleratorArn++instance Data.ToHeaders DescribeAcceleratorAttributes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DescribeAcceleratorAttributes" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeAcceleratorAttributes where+  toJSON DescribeAcceleratorAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath DescribeAcceleratorAttributes where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeAcceleratorAttributes where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeAcceleratorAttributesResponse' smart constructor.+data DescribeAcceleratorAttributesResponse = DescribeAcceleratorAttributesResponse'+  { -- | The attributes of the accelerator.+    acceleratorAttributes :: Prelude.Maybe AcceleratorAttributes,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAcceleratorAttributesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorAttributes', 'describeAcceleratorAttributesResponse_acceleratorAttributes' - The attributes of the accelerator.+--+-- 'httpStatus', 'describeAcceleratorAttributesResponse_httpStatus' - The response's http status code.+newDescribeAcceleratorAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeAcceleratorAttributesResponse+newDescribeAcceleratorAttributesResponse pHttpStatus_ =+  DescribeAcceleratorAttributesResponse'+    { acceleratorAttributes =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The attributes of the accelerator.+describeAcceleratorAttributesResponse_acceleratorAttributes :: Lens.Lens' DescribeAcceleratorAttributesResponse (Prelude.Maybe AcceleratorAttributes)+describeAcceleratorAttributesResponse_acceleratorAttributes = Lens.lens (\DescribeAcceleratorAttributesResponse' {acceleratorAttributes} -> acceleratorAttributes) (\s@DescribeAcceleratorAttributesResponse' {} a -> s {acceleratorAttributes = a} :: DescribeAcceleratorAttributesResponse)++-- | The response's http status code.+describeAcceleratorAttributesResponse_httpStatus :: Lens.Lens' DescribeAcceleratorAttributesResponse Prelude.Int+describeAcceleratorAttributesResponse_httpStatus = Lens.lens (\DescribeAcceleratorAttributesResponse' {httpStatus} -> httpStatus) (\s@DescribeAcceleratorAttributesResponse' {} a -> s {httpStatus = a} :: DescribeAcceleratorAttributesResponse)++instance+  Prelude.NFData+    DescribeAcceleratorAttributesResponse+  where+  rnf DescribeAcceleratorAttributesResponse' {..} =+    Prelude.rnf acceleratorAttributes+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/DescribeCustomRoutingAccelerator.hs view
@@ -0,0 +1,195 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.DescribeCustomRoutingAccelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describe a custom routing accelerator.+module Amazonka.GlobalAccelerator.DescribeCustomRoutingAccelerator+  ( -- * Creating a Request+    DescribeCustomRoutingAccelerator (..),+    newDescribeCustomRoutingAccelerator,++    -- * Request Lenses+    describeCustomRoutingAccelerator_acceleratorArn,++    -- * Destructuring the Response+    DescribeCustomRoutingAcceleratorResponse (..),+    newDescribeCustomRoutingAcceleratorResponse,++    -- * Response Lenses+    describeCustomRoutingAcceleratorResponse_accelerator,+    describeCustomRoutingAcceleratorResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeCustomRoutingAccelerator' smart constructor.+data DescribeCustomRoutingAccelerator = DescribeCustomRoutingAccelerator'+  { -- | The Amazon Resource Name (ARN) of the accelerator to describe.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeCustomRoutingAccelerator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorArn', 'describeCustomRoutingAccelerator_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator to describe.+newDescribeCustomRoutingAccelerator ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  DescribeCustomRoutingAccelerator+newDescribeCustomRoutingAccelerator pAcceleratorArn_ =+  DescribeCustomRoutingAccelerator'+    { acceleratorArn =+        pAcceleratorArn_+    }++-- | The Amazon Resource Name (ARN) of the accelerator to describe.+describeCustomRoutingAccelerator_acceleratorArn :: Lens.Lens' DescribeCustomRoutingAccelerator Prelude.Text+describeCustomRoutingAccelerator_acceleratorArn = Lens.lens (\DescribeCustomRoutingAccelerator' {acceleratorArn} -> acceleratorArn) (\s@DescribeCustomRoutingAccelerator' {} a -> s {acceleratorArn = a} :: DescribeCustomRoutingAccelerator)++instance+  Core.AWSRequest+    DescribeCustomRoutingAccelerator+  where+  type+    AWSResponse DescribeCustomRoutingAccelerator =+      DescribeCustomRoutingAcceleratorResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeCustomRoutingAcceleratorResponse'+            Prelude.<$> (x Data..?> "Accelerator")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeCustomRoutingAccelerator+  where+  hashWithSalt+    _salt+    DescribeCustomRoutingAccelerator' {..} =+      _salt `Prelude.hashWithSalt` acceleratorArn++instance+  Prelude.NFData+    DescribeCustomRoutingAccelerator+  where+  rnf DescribeCustomRoutingAccelerator' {..} =+    Prelude.rnf acceleratorArn++instance+  Data.ToHeaders+    DescribeCustomRoutingAccelerator+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DescribeCustomRoutingAccelerator" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeCustomRoutingAccelerator where+  toJSON DescribeCustomRoutingAccelerator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath DescribeCustomRoutingAccelerator where+  toPath = Prelude.const "/"++instance+  Data.ToQuery+    DescribeCustomRoutingAccelerator+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeCustomRoutingAcceleratorResponse' smart constructor.+data DescribeCustomRoutingAcceleratorResponse = DescribeCustomRoutingAcceleratorResponse'+  { -- | The description of the custom routing accelerator.+    accelerator :: Prelude.Maybe CustomRoutingAccelerator,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeCustomRoutingAcceleratorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accelerator', 'describeCustomRoutingAcceleratorResponse_accelerator' - The description of the custom routing accelerator.+--+-- 'httpStatus', 'describeCustomRoutingAcceleratorResponse_httpStatus' - The response's http status code.+newDescribeCustomRoutingAcceleratorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeCustomRoutingAcceleratorResponse+newDescribeCustomRoutingAcceleratorResponse+  pHttpStatus_ =+    DescribeCustomRoutingAcceleratorResponse'+      { accelerator =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The description of the custom routing accelerator.+describeCustomRoutingAcceleratorResponse_accelerator :: Lens.Lens' DescribeCustomRoutingAcceleratorResponse (Prelude.Maybe CustomRoutingAccelerator)+describeCustomRoutingAcceleratorResponse_accelerator = Lens.lens (\DescribeCustomRoutingAcceleratorResponse' {accelerator} -> accelerator) (\s@DescribeCustomRoutingAcceleratorResponse' {} a -> s {accelerator = a} :: DescribeCustomRoutingAcceleratorResponse)++-- | The response's http status code.+describeCustomRoutingAcceleratorResponse_httpStatus :: Lens.Lens' DescribeCustomRoutingAcceleratorResponse Prelude.Int+describeCustomRoutingAcceleratorResponse_httpStatus = Lens.lens (\DescribeCustomRoutingAcceleratorResponse' {httpStatus} -> httpStatus) (\s@DescribeCustomRoutingAcceleratorResponse' {} a -> s {httpStatus = a} :: DescribeCustomRoutingAcceleratorResponse)++instance+  Prelude.NFData+    DescribeCustomRoutingAcceleratorResponse+  where+  rnf DescribeCustomRoutingAcceleratorResponse' {..} =+    Prelude.rnf accelerator+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/DescribeCustomRoutingAcceleratorAttributes.hs view
@@ -0,0 +1,209 @@+{-# 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.GlobalAccelerator.DescribeCustomRoutingAcceleratorAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describe the attributes of a custom routing accelerator.+module Amazonka.GlobalAccelerator.DescribeCustomRoutingAcceleratorAttributes+  ( -- * Creating a Request+    DescribeCustomRoutingAcceleratorAttributes (..),+    newDescribeCustomRoutingAcceleratorAttributes,++    -- * Request Lenses+    describeCustomRoutingAcceleratorAttributes_acceleratorArn,++    -- * Destructuring the Response+    DescribeCustomRoutingAcceleratorAttributesResponse (..),+    newDescribeCustomRoutingAcceleratorAttributesResponse,++    -- * Response Lenses+    describeCustomRoutingAcceleratorAttributesResponse_acceleratorAttributes,+    describeCustomRoutingAcceleratorAttributesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeCustomRoutingAcceleratorAttributes' smart constructor.+data DescribeCustomRoutingAcceleratorAttributes = DescribeCustomRoutingAcceleratorAttributes'+  { -- | The Amazon Resource Name (ARN) of the custom routing accelerator to+    -- describe the attributes for.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeCustomRoutingAcceleratorAttributes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorArn', 'describeCustomRoutingAcceleratorAttributes_acceleratorArn' - The Amazon Resource Name (ARN) of the custom routing accelerator to+-- describe the attributes for.+newDescribeCustomRoutingAcceleratorAttributes ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  DescribeCustomRoutingAcceleratorAttributes+newDescribeCustomRoutingAcceleratorAttributes+  pAcceleratorArn_ =+    DescribeCustomRoutingAcceleratorAttributes'+      { acceleratorArn =+          pAcceleratorArn_+      }++-- | The Amazon Resource Name (ARN) of the custom routing accelerator to+-- describe the attributes for.+describeCustomRoutingAcceleratorAttributes_acceleratorArn :: Lens.Lens' DescribeCustomRoutingAcceleratorAttributes Prelude.Text+describeCustomRoutingAcceleratorAttributes_acceleratorArn = Lens.lens (\DescribeCustomRoutingAcceleratorAttributes' {acceleratorArn} -> acceleratorArn) (\s@DescribeCustomRoutingAcceleratorAttributes' {} a -> s {acceleratorArn = a} :: DescribeCustomRoutingAcceleratorAttributes)++instance+  Core.AWSRequest+    DescribeCustomRoutingAcceleratorAttributes+  where+  type+    AWSResponse+      DescribeCustomRoutingAcceleratorAttributes =+      DescribeCustomRoutingAcceleratorAttributesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeCustomRoutingAcceleratorAttributesResponse'+            Prelude.<$> (x Data..?> "AcceleratorAttributes")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeCustomRoutingAcceleratorAttributes+  where+  hashWithSalt+    _salt+    DescribeCustomRoutingAcceleratorAttributes' {..} =+      _salt `Prelude.hashWithSalt` acceleratorArn++instance+  Prelude.NFData+    DescribeCustomRoutingAcceleratorAttributes+  where+  rnf DescribeCustomRoutingAcceleratorAttributes' {..} =+    Prelude.rnf acceleratorArn++instance+  Data.ToHeaders+    DescribeCustomRoutingAcceleratorAttributes+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DescribeCustomRoutingAcceleratorAttributes" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    DescribeCustomRoutingAcceleratorAttributes+  where+  toJSON+    DescribeCustomRoutingAcceleratorAttributes' {..} =+      Data.object+        ( Prelude.catMaybes+            [ Prelude.Just+                ("AcceleratorArn" Data..= acceleratorArn)+            ]+        )++instance+  Data.ToPath+    DescribeCustomRoutingAcceleratorAttributes+  where+  toPath = Prelude.const "/"++instance+  Data.ToQuery+    DescribeCustomRoutingAcceleratorAttributes+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeCustomRoutingAcceleratorAttributesResponse' smart constructor.+data DescribeCustomRoutingAcceleratorAttributesResponse = DescribeCustomRoutingAcceleratorAttributesResponse'+  { -- | The attributes of the custom routing accelerator.+    acceleratorAttributes :: Prelude.Maybe CustomRoutingAcceleratorAttributes,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeCustomRoutingAcceleratorAttributesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorAttributes', 'describeCustomRoutingAcceleratorAttributesResponse_acceleratorAttributes' - The attributes of the custom routing accelerator.+--+-- 'httpStatus', 'describeCustomRoutingAcceleratorAttributesResponse_httpStatus' - The response's http status code.+newDescribeCustomRoutingAcceleratorAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeCustomRoutingAcceleratorAttributesResponse+newDescribeCustomRoutingAcceleratorAttributesResponse+  pHttpStatus_ =+    DescribeCustomRoutingAcceleratorAttributesResponse'+      { acceleratorAttributes =+          Prelude.Nothing,+        httpStatus =+          pHttpStatus_+      }++-- | The attributes of the custom routing accelerator.+describeCustomRoutingAcceleratorAttributesResponse_acceleratorAttributes :: Lens.Lens' DescribeCustomRoutingAcceleratorAttributesResponse (Prelude.Maybe CustomRoutingAcceleratorAttributes)+describeCustomRoutingAcceleratorAttributesResponse_acceleratorAttributes = Lens.lens (\DescribeCustomRoutingAcceleratorAttributesResponse' {acceleratorAttributes} -> acceleratorAttributes) (\s@DescribeCustomRoutingAcceleratorAttributesResponse' {} a -> s {acceleratorAttributes = a} :: DescribeCustomRoutingAcceleratorAttributesResponse)++-- | The response's http status code.+describeCustomRoutingAcceleratorAttributesResponse_httpStatus :: Lens.Lens' DescribeCustomRoutingAcceleratorAttributesResponse Prelude.Int+describeCustomRoutingAcceleratorAttributesResponse_httpStatus = Lens.lens (\DescribeCustomRoutingAcceleratorAttributesResponse' {httpStatus} -> httpStatus) (\s@DescribeCustomRoutingAcceleratorAttributesResponse' {} a -> s {httpStatus = a} :: DescribeCustomRoutingAcceleratorAttributesResponse)++instance+  Prelude.NFData+    DescribeCustomRoutingAcceleratorAttributesResponse+  where+  rnf+    DescribeCustomRoutingAcceleratorAttributesResponse' {..} =+      Prelude.rnf acceleratorAttributes+        `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/DescribeCustomRoutingEndpointGroup.hs view
@@ -0,0 +1,202 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.DescribeCustomRoutingEndpointGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describe an endpoint group for a custom routing accelerator.+module Amazonka.GlobalAccelerator.DescribeCustomRoutingEndpointGroup+  ( -- * Creating a Request+    DescribeCustomRoutingEndpointGroup (..),+    newDescribeCustomRoutingEndpointGroup,++    -- * Request Lenses+    describeCustomRoutingEndpointGroup_endpointGroupArn,++    -- * Destructuring the Response+    DescribeCustomRoutingEndpointGroupResponse (..),+    newDescribeCustomRoutingEndpointGroupResponse,++    -- * Response Lenses+    describeCustomRoutingEndpointGroupResponse_endpointGroup,+    describeCustomRoutingEndpointGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeCustomRoutingEndpointGroup' smart constructor.+data DescribeCustomRoutingEndpointGroup = DescribeCustomRoutingEndpointGroup'+  { -- | The Amazon Resource Name (ARN) of the endpoint group to describe.+    endpointGroupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeCustomRoutingEndpointGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroupArn', 'describeCustomRoutingEndpointGroup_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group to describe.+newDescribeCustomRoutingEndpointGroup ::+  -- | 'endpointGroupArn'+  Prelude.Text ->+  DescribeCustomRoutingEndpointGroup+newDescribeCustomRoutingEndpointGroup+  pEndpointGroupArn_ =+    DescribeCustomRoutingEndpointGroup'+      { endpointGroupArn =+          pEndpointGroupArn_+      }++-- | The Amazon Resource Name (ARN) of the endpoint group to describe.+describeCustomRoutingEndpointGroup_endpointGroupArn :: Lens.Lens' DescribeCustomRoutingEndpointGroup Prelude.Text+describeCustomRoutingEndpointGroup_endpointGroupArn = Lens.lens (\DescribeCustomRoutingEndpointGroup' {endpointGroupArn} -> endpointGroupArn) (\s@DescribeCustomRoutingEndpointGroup' {} a -> s {endpointGroupArn = a} :: DescribeCustomRoutingEndpointGroup)++instance+  Core.AWSRequest+    DescribeCustomRoutingEndpointGroup+  where+  type+    AWSResponse DescribeCustomRoutingEndpointGroup =+      DescribeCustomRoutingEndpointGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeCustomRoutingEndpointGroupResponse'+            Prelude.<$> (x Data..?> "EndpointGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeCustomRoutingEndpointGroup+  where+  hashWithSalt+    _salt+    DescribeCustomRoutingEndpointGroup' {..} =+      _salt `Prelude.hashWithSalt` endpointGroupArn++instance+  Prelude.NFData+    DescribeCustomRoutingEndpointGroup+  where+  rnf DescribeCustomRoutingEndpointGroup' {..} =+    Prelude.rnf endpointGroupArn++instance+  Data.ToHeaders+    DescribeCustomRoutingEndpointGroup+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DescribeCustomRoutingEndpointGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    DescribeCustomRoutingEndpointGroup+  where+  toJSON DescribeCustomRoutingEndpointGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn)+          ]+      )++instance+  Data.ToPath+    DescribeCustomRoutingEndpointGroup+  where+  toPath = Prelude.const "/"++instance+  Data.ToQuery+    DescribeCustomRoutingEndpointGroup+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeCustomRoutingEndpointGroupResponse' smart constructor.+data DescribeCustomRoutingEndpointGroupResponse = DescribeCustomRoutingEndpointGroupResponse'+  { -- | The description of an endpoint group for a custom routing accelerator.+    endpointGroup :: Prelude.Maybe CustomRoutingEndpointGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeCustomRoutingEndpointGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroup', 'describeCustomRoutingEndpointGroupResponse_endpointGroup' - The description of an endpoint group for a custom routing accelerator.+--+-- 'httpStatus', 'describeCustomRoutingEndpointGroupResponse_httpStatus' - The response's http status code.+newDescribeCustomRoutingEndpointGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeCustomRoutingEndpointGroupResponse+newDescribeCustomRoutingEndpointGroupResponse+  pHttpStatus_ =+    DescribeCustomRoutingEndpointGroupResponse'+      { endpointGroup =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The description of an endpoint group for a custom routing accelerator.+describeCustomRoutingEndpointGroupResponse_endpointGroup :: Lens.Lens' DescribeCustomRoutingEndpointGroupResponse (Prelude.Maybe CustomRoutingEndpointGroup)+describeCustomRoutingEndpointGroupResponse_endpointGroup = Lens.lens (\DescribeCustomRoutingEndpointGroupResponse' {endpointGroup} -> endpointGroup) (\s@DescribeCustomRoutingEndpointGroupResponse' {} a -> s {endpointGroup = a} :: DescribeCustomRoutingEndpointGroupResponse)++-- | The response's http status code.+describeCustomRoutingEndpointGroupResponse_httpStatus :: Lens.Lens' DescribeCustomRoutingEndpointGroupResponse Prelude.Int+describeCustomRoutingEndpointGroupResponse_httpStatus = Lens.lens (\DescribeCustomRoutingEndpointGroupResponse' {httpStatus} -> httpStatus) (\s@DescribeCustomRoutingEndpointGroupResponse' {} a -> s {httpStatus = a} :: DescribeCustomRoutingEndpointGroupResponse)++instance+  Prelude.NFData+    DescribeCustomRoutingEndpointGroupResponse+  where+  rnf DescribeCustomRoutingEndpointGroupResponse' {..} =+    Prelude.rnf endpointGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/DescribeCustomRoutingListener.hs view
@@ -0,0 +1,181 @@+{-# 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.GlobalAccelerator.DescribeCustomRoutingListener+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- The description of a listener for a custom routing accelerator.+module Amazonka.GlobalAccelerator.DescribeCustomRoutingListener+  ( -- * Creating a Request+    DescribeCustomRoutingListener (..),+    newDescribeCustomRoutingListener,++    -- * Request Lenses+    describeCustomRoutingListener_listenerArn,++    -- * Destructuring the Response+    DescribeCustomRoutingListenerResponse (..),+    newDescribeCustomRoutingListenerResponse,++    -- * Response Lenses+    describeCustomRoutingListenerResponse_listener,+    describeCustomRoutingListenerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeCustomRoutingListener' smart constructor.+data DescribeCustomRoutingListener = DescribeCustomRoutingListener'+  { -- | The Amazon Resource Name (ARN) of the listener to describe.+    listenerArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeCustomRoutingListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listenerArn', 'describeCustomRoutingListener_listenerArn' - The Amazon Resource Name (ARN) of the listener to describe.+newDescribeCustomRoutingListener ::+  -- | 'listenerArn'+  Prelude.Text ->+  DescribeCustomRoutingListener+newDescribeCustomRoutingListener pListenerArn_ =+  DescribeCustomRoutingListener'+    { listenerArn =+        pListenerArn_+    }++-- | The Amazon Resource Name (ARN) of the listener to describe.+describeCustomRoutingListener_listenerArn :: Lens.Lens' DescribeCustomRoutingListener Prelude.Text+describeCustomRoutingListener_listenerArn = Lens.lens (\DescribeCustomRoutingListener' {listenerArn} -> listenerArn) (\s@DescribeCustomRoutingListener' {} a -> s {listenerArn = a} :: DescribeCustomRoutingListener)++instance+  Core.AWSRequest+    DescribeCustomRoutingListener+  where+  type+    AWSResponse DescribeCustomRoutingListener =+      DescribeCustomRoutingListenerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeCustomRoutingListenerResponse'+            Prelude.<$> (x Data..?> "Listener")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeCustomRoutingListener+  where+  hashWithSalt _salt DescribeCustomRoutingListener' {..} =+    _salt `Prelude.hashWithSalt` listenerArn++instance Prelude.NFData DescribeCustomRoutingListener where+  rnf DescribeCustomRoutingListener' {..} =+    Prelude.rnf listenerArn++instance Data.ToHeaders DescribeCustomRoutingListener where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DescribeCustomRoutingListener" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeCustomRoutingListener where+  toJSON DescribeCustomRoutingListener' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ListenerArn" Data..= listenerArn)]+      )++instance Data.ToPath DescribeCustomRoutingListener where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeCustomRoutingListener where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeCustomRoutingListenerResponse' smart constructor.+data DescribeCustomRoutingListenerResponse = DescribeCustomRoutingListenerResponse'+  { -- | The description of a listener for a custom routing accelerator.+    listener :: Prelude.Maybe CustomRoutingListener,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeCustomRoutingListenerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listener', 'describeCustomRoutingListenerResponse_listener' - The description of a listener for a custom routing accelerator.+--+-- 'httpStatus', 'describeCustomRoutingListenerResponse_httpStatus' - The response's http status code.+newDescribeCustomRoutingListenerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeCustomRoutingListenerResponse+newDescribeCustomRoutingListenerResponse pHttpStatus_ =+  DescribeCustomRoutingListenerResponse'+    { listener =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The description of a listener for a custom routing accelerator.+describeCustomRoutingListenerResponse_listener :: Lens.Lens' DescribeCustomRoutingListenerResponse (Prelude.Maybe CustomRoutingListener)+describeCustomRoutingListenerResponse_listener = Lens.lens (\DescribeCustomRoutingListenerResponse' {listener} -> listener) (\s@DescribeCustomRoutingListenerResponse' {} a -> s {listener = a} :: DescribeCustomRoutingListenerResponse)++-- | The response's http status code.+describeCustomRoutingListenerResponse_httpStatus :: Lens.Lens' DescribeCustomRoutingListenerResponse Prelude.Int+describeCustomRoutingListenerResponse_httpStatus = Lens.lens (\DescribeCustomRoutingListenerResponse' {httpStatus} -> httpStatus) (\s@DescribeCustomRoutingListenerResponse' {} a -> s {httpStatus = a} :: DescribeCustomRoutingListenerResponse)++instance+  Prelude.NFData+    DescribeCustomRoutingListenerResponse+  where+  rnf DescribeCustomRoutingListenerResponse' {..} =+    Prelude.rnf listener+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/DescribeEndpointGroup.hs view
@@ -0,0 +1,174 @@+{-# 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.GlobalAccelerator.DescribeEndpointGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describe an endpoint group.+module Amazonka.GlobalAccelerator.DescribeEndpointGroup+  ( -- * Creating a Request+    DescribeEndpointGroup (..),+    newDescribeEndpointGroup,++    -- * Request Lenses+    describeEndpointGroup_endpointGroupArn,++    -- * Destructuring the Response+    DescribeEndpointGroupResponse (..),+    newDescribeEndpointGroupResponse,++    -- * Response Lenses+    describeEndpointGroupResponse_endpointGroup,+    describeEndpointGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeEndpointGroup' smart constructor.+data DescribeEndpointGroup = DescribeEndpointGroup'+  { -- | The Amazon Resource Name (ARN) of the endpoint group to describe.+    endpointGroupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeEndpointGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroupArn', 'describeEndpointGroup_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group to describe.+newDescribeEndpointGroup ::+  -- | 'endpointGroupArn'+  Prelude.Text ->+  DescribeEndpointGroup+newDescribeEndpointGroup pEndpointGroupArn_ =+  DescribeEndpointGroup'+    { endpointGroupArn =+        pEndpointGroupArn_+    }++-- | The Amazon Resource Name (ARN) of the endpoint group to describe.+describeEndpointGroup_endpointGroupArn :: Lens.Lens' DescribeEndpointGroup Prelude.Text+describeEndpointGroup_endpointGroupArn = Lens.lens (\DescribeEndpointGroup' {endpointGroupArn} -> endpointGroupArn) (\s@DescribeEndpointGroup' {} a -> s {endpointGroupArn = a} :: DescribeEndpointGroup)++instance Core.AWSRequest DescribeEndpointGroup where+  type+    AWSResponse DescribeEndpointGroup =+      DescribeEndpointGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeEndpointGroupResponse'+            Prelude.<$> (x Data..?> "EndpointGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeEndpointGroup where+  hashWithSalt _salt DescribeEndpointGroup' {..} =+    _salt `Prelude.hashWithSalt` endpointGroupArn++instance Prelude.NFData DescribeEndpointGroup where+  rnf DescribeEndpointGroup' {..} =+    Prelude.rnf endpointGroupArn++instance Data.ToHeaders DescribeEndpointGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DescribeEndpointGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeEndpointGroup where+  toJSON DescribeEndpointGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn)+          ]+      )++instance Data.ToPath DescribeEndpointGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeEndpointGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeEndpointGroupResponse' smart constructor.+data DescribeEndpointGroupResponse = DescribeEndpointGroupResponse'+  { -- | The description of an endpoint group.+    endpointGroup :: Prelude.Maybe EndpointGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeEndpointGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroup', 'describeEndpointGroupResponse_endpointGroup' - The description of an endpoint group.+--+-- 'httpStatus', 'describeEndpointGroupResponse_httpStatus' - The response's http status code.+newDescribeEndpointGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeEndpointGroupResponse+newDescribeEndpointGroupResponse pHttpStatus_ =+  DescribeEndpointGroupResponse'+    { endpointGroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The description of an endpoint group.+describeEndpointGroupResponse_endpointGroup :: Lens.Lens' DescribeEndpointGroupResponse (Prelude.Maybe EndpointGroup)+describeEndpointGroupResponse_endpointGroup = Lens.lens (\DescribeEndpointGroupResponse' {endpointGroup} -> endpointGroup) (\s@DescribeEndpointGroupResponse' {} a -> s {endpointGroup = a} :: DescribeEndpointGroupResponse)++-- | The response's http status code.+describeEndpointGroupResponse_httpStatus :: Lens.Lens' DescribeEndpointGroupResponse Prelude.Int+describeEndpointGroupResponse_httpStatus = Lens.lens (\DescribeEndpointGroupResponse' {httpStatus} -> httpStatus) (\s@DescribeEndpointGroupResponse' {} a -> s {httpStatus = a} :: DescribeEndpointGroupResponse)++instance Prelude.NFData DescribeEndpointGroupResponse where+  rnf DescribeEndpointGroupResponse' {..} =+    Prelude.rnf endpointGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/DescribeListener.hs view
@@ -0,0 +1,168 @@+{-# 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.GlobalAccelerator.DescribeListener+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describe a listener.+module Amazonka.GlobalAccelerator.DescribeListener+  ( -- * Creating a Request+    DescribeListener (..),+    newDescribeListener,++    -- * Request Lenses+    describeListener_listenerArn,++    -- * Destructuring the Response+    DescribeListenerResponse (..),+    newDescribeListenerResponse,++    -- * Response Lenses+    describeListenerResponse_listener,+    describeListenerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeListener' smart constructor.+data DescribeListener = DescribeListener'+  { -- | The Amazon Resource Name (ARN) of the listener to describe.+    listenerArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listenerArn', 'describeListener_listenerArn' - The Amazon Resource Name (ARN) of the listener to describe.+newDescribeListener ::+  -- | 'listenerArn'+  Prelude.Text ->+  DescribeListener+newDescribeListener pListenerArn_ =+  DescribeListener' {listenerArn = pListenerArn_}++-- | The Amazon Resource Name (ARN) of the listener to describe.+describeListener_listenerArn :: Lens.Lens' DescribeListener Prelude.Text+describeListener_listenerArn = Lens.lens (\DescribeListener' {listenerArn} -> listenerArn) (\s@DescribeListener' {} a -> s {listenerArn = a} :: DescribeListener)++instance Core.AWSRequest DescribeListener where+  type+    AWSResponse DescribeListener =+      DescribeListenerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeListenerResponse'+            Prelude.<$> (x Data..?> "Listener")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeListener where+  hashWithSalt _salt DescribeListener' {..} =+    _salt `Prelude.hashWithSalt` listenerArn++instance Prelude.NFData DescribeListener where+  rnf DescribeListener' {..} = Prelude.rnf listenerArn++instance Data.ToHeaders DescribeListener where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.DescribeListener" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeListener where+  toJSON DescribeListener' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ListenerArn" Data..= listenerArn)]+      )++instance Data.ToPath DescribeListener where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeListener where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeListenerResponse' smart constructor.+data DescribeListenerResponse = DescribeListenerResponse'+  { -- | The description of a listener.+    listener :: Prelude.Maybe Listener,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeListenerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listener', 'describeListenerResponse_listener' - The description of a listener.+--+-- 'httpStatus', 'describeListenerResponse_httpStatus' - The response's http status code.+newDescribeListenerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeListenerResponse+newDescribeListenerResponse pHttpStatus_ =+  DescribeListenerResponse'+    { listener =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The description of a listener.+describeListenerResponse_listener :: Lens.Lens' DescribeListenerResponse (Prelude.Maybe Listener)+describeListenerResponse_listener = Lens.lens (\DescribeListenerResponse' {listener} -> listener) (\s@DescribeListenerResponse' {} a -> s {listener = a} :: DescribeListenerResponse)++-- | The response's http status code.+describeListenerResponse_httpStatus :: Lens.Lens' DescribeListenerResponse Prelude.Int+describeListenerResponse_httpStatus = Lens.lens (\DescribeListenerResponse' {httpStatus} -> httpStatus) (\s@DescribeListenerResponse' {} a -> s {httpStatus = a} :: DescribeListenerResponse)++instance Prelude.NFData DescribeListenerResponse where+  rnf DescribeListenerResponse' {..} =+    Prelude.rnf listener+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/Lens.hs view
@@ -0,0 +1,564 @@+{-# 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.GlobalAccelerator.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.GlobalAccelerator.Lens+  ( -- * Operations++    -- ** AddCustomRoutingEndpoints+    addCustomRoutingEndpoints_endpointConfigurations,+    addCustomRoutingEndpoints_endpointGroupArn,+    addCustomRoutingEndpointsResponse_endpointDescriptions,+    addCustomRoutingEndpointsResponse_endpointGroupArn,+    addCustomRoutingEndpointsResponse_httpStatus,++    -- ** AddEndpoints+    addEndpoints_endpointConfigurations,+    addEndpoints_endpointGroupArn,+    addEndpointsResponse_endpointDescriptions,+    addEndpointsResponse_endpointGroupArn,+    addEndpointsResponse_httpStatus,++    -- ** AdvertiseByoipCidr+    advertiseByoipCidr_cidr,+    advertiseByoipCidrResponse_byoipCidr,+    advertiseByoipCidrResponse_httpStatus,++    -- ** AllowCustomRoutingTraffic+    allowCustomRoutingTraffic_allowAllTrafficToEndpoint,+    allowCustomRoutingTraffic_destinationAddresses,+    allowCustomRoutingTraffic_destinationPorts,+    allowCustomRoutingTraffic_endpointGroupArn,+    allowCustomRoutingTraffic_endpointId,++    -- ** CreateAccelerator+    createAccelerator_enabled,+    createAccelerator_ipAddressType,+    createAccelerator_ipAddresses,+    createAccelerator_tags,+    createAccelerator_name,+    createAccelerator_idempotencyToken,+    createAcceleratorResponse_accelerator,+    createAcceleratorResponse_httpStatus,++    -- ** CreateCustomRoutingAccelerator+    createCustomRoutingAccelerator_enabled,+    createCustomRoutingAccelerator_ipAddressType,+    createCustomRoutingAccelerator_ipAddresses,+    createCustomRoutingAccelerator_tags,+    createCustomRoutingAccelerator_name,+    createCustomRoutingAccelerator_idempotencyToken,+    createCustomRoutingAcceleratorResponse_accelerator,+    createCustomRoutingAcceleratorResponse_httpStatus,++    -- ** CreateCustomRoutingEndpointGroup+    createCustomRoutingEndpointGroup_listenerArn,+    createCustomRoutingEndpointGroup_endpointGroupRegion,+    createCustomRoutingEndpointGroup_destinationConfigurations,+    createCustomRoutingEndpointGroup_idempotencyToken,+    createCustomRoutingEndpointGroupResponse_endpointGroup,+    createCustomRoutingEndpointGroupResponse_httpStatus,++    -- ** CreateCustomRoutingListener+    createCustomRoutingListener_acceleratorArn,+    createCustomRoutingListener_portRanges,+    createCustomRoutingListener_idempotencyToken,+    createCustomRoutingListenerResponse_listener,+    createCustomRoutingListenerResponse_httpStatus,++    -- ** CreateEndpointGroup+    createEndpointGroup_endpointConfigurations,+    createEndpointGroup_healthCheckIntervalSeconds,+    createEndpointGroup_healthCheckPath,+    createEndpointGroup_healthCheckPort,+    createEndpointGroup_healthCheckProtocol,+    createEndpointGroup_portOverrides,+    createEndpointGroup_thresholdCount,+    createEndpointGroup_trafficDialPercentage,+    createEndpointGroup_listenerArn,+    createEndpointGroup_endpointGroupRegion,+    createEndpointGroup_idempotencyToken,+    createEndpointGroupResponse_endpointGroup,+    createEndpointGroupResponse_httpStatus,++    -- ** CreateListener+    createListener_clientAffinity,+    createListener_acceleratorArn,+    createListener_portRanges,+    createListener_protocol,+    createListener_idempotencyToken,+    createListenerResponse_listener,+    createListenerResponse_httpStatus,++    -- ** DeleteAccelerator+    deleteAccelerator_acceleratorArn,++    -- ** DeleteCustomRoutingAccelerator+    deleteCustomRoutingAccelerator_acceleratorArn,++    -- ** DeleteCustomRoutingEndpointGroup+    deleteCustomRoutingEndpointGroup_endpointGroupArn,++    -- ** DeleteCustomRoutingListener+    deleteCustomRoutingListener_listenerArn,++    -- ** DeleteEndpointGroup+    deleteEndpointGroup_endpointGroupArn,++    -- ** DeleteListener+    deleteListener_listenerArn,++    -- ** DenyCustomRoutingTraffic+    denyCustomRoutingTraffic_denyAllTrafficToEndpoint,+    denyCustomRoutingTraffic_destinationAddresses,+    denyCustomRoutingTraffic_destinationPorts,+    denyCustomRoutingTraffic_endpointGroupArn,+    denyCustomRoutingTraffic_endpointId,++    -- ** DeprovisionByoipCidr+    deprovisionByoipCidr_cidr,+    deprovisionByoipCidrResponse_byoipCidr,+    deprovisionByoipCidrResponse_httpStatus,++    -- ** DescribeAccelerator+    describeAccelerator_acceleratorArn,+    describeAcceleratorResponse_accelerator,+    describeAcceleratorResponse_httpStatus,++    -- ** DescribeAcceleratorAttributes+    describeAcceleratorAttributes_acceleratorArn,+    describeAcceleratorAttributesResponse_acceleratorAttributes,+    describeAcceleratorAttributesResponse_httpStatus,++    -- ** DescribeCustomRoutingAccelerator+    describeCustomRoutingAccelerator_acceleratorArn,+    describeCustomRoutingAcceleratorResponse_accelerator,+    describeCustomRoutingAcceleratorResponse_httpStatus,++    -- ** DescribeCustomRoutingAcceleratorAttributes+    describeCustomRoutingAcceleratorAttributes_acceleratorArn,+    describeCustomRoutingAcceleratorAttributesResponse_acceleratorAttributes,+    describeCustomRoutingAcceleratorAttributesResponse_httpStatus,++    -- ** DescribeCustomRoutingEndpointGroup+    describeCustomRoutingEndpointGroup_endpointGroupArn,+    describeCustomRoutingEndpointGroupResponse_endpointGroup,+    describeCustomRoutingEndpointGroupResponse_httpStatus,++    -- ** DescribeCustomRoutingListener+    describeCustomRoutingListener_listenerArn,+    describeCustomRoutingListenerResponse_listener,+    describeCustomRoutingListenerResponse_httpStatus,++    -- ** DescribeEndpointGroup+    describeEndpointGroup_endpointGroupArn,+    describeEndpointGroupResponse_endpointGroup,+    describeEndpointGroupResponse_httpStatus,++    -- ** DescribeListener+    describeListener_listenerArn,+    describeListenerResponse_listener,+    describeListenerResponse_httpStatus,++    -- ** ListAccelerators+    listAccelerators_maxResults,+    listAccelerators_nextToken,+    listAcceleratorsResponse_accelerators,+    listAcceleratorsResponse_nextToken,+    listAcceleratorsResponse_httpStatus,++    -- ** ListByoipCidrs+    listByoipCidrs_maxResults,+    listByoipCidrs_nextToken,+    listByoipCidrsResponse_byoipCidrs,+    listByoipCidrsResponse_nextToken,+    listByoipCidrsResponse_httpStatus,++    -- ** ListCustomRoutingAccelerators+    listCustomRoutingAccelerators_maxResults,+    listCustomRoutingAccelerators_nextToken,+    listCustomRoutingAcceleratorsResponse_accelerators,+    listCustomRoutingAcceleratorsResponse_nextToken,+    listCustomRoutingAcceleratorsResponse_httpStatus,++    -- ** ListCustomRoutingEndpointGroups+    listCustomRoutingEndpointGroups_maxResults,+    listCustomRoutingEndpointGroups_nextToken,+    listCustomRoutingEndpointGroups_listenerArn,+    listCustomRoutingEndpointGroupsResponse_endpointGroups,+    listCustomRoutingEndpointGroupsResponse_nextToken,+    listCustomRoutingEndpointGroupsResponse_httpStatus,++    -- ** ListCustomRoutingListeners+    listCustomRoutingListeners_maxResults,+    listCustomRoutingListeners_nextToken,+    listCustomRoutingListeners_acceleratorArn,+    listCustomRoutingListenersResponse_listeners,+    listCustomRoutingListenersResponse_nextToken,+    listCustomRoutingListenersResponse_httpStatus,++    -- ** ListCustomRoutingPortMappings+    listCustomRoutingPortMappings_endpointGroupArn,+    listCustomRoutingPortMappings_maxResults,+    listCustomRoutingPortMappings_nextToken,+    listCustomRoutingPortMappings_acceleratorArn,+    listCustomRoutingPortMappingsResponse_nextToken,+    listCustomRoutingPortMappingsResponse_portMappings,+    listCustomRoutingPortMappingsResponse_httpStatus,++    -- ** ListCustomRoutingPortMappingsByDestination+    listCustomRoutingPortMappingsByDestination_maxResults,+    listCustomRoutingPortMappingsByDestination_nextToken,+    listCustomRoutingPortMappingsByDestination_endpointId,+    listCustomRoutingPortMappingsByDestination_destinationAddress,+    listCustomRoutingPortMappingsByDestinationResponse_destinationPortMappings,+    listCustomRoutingPortMappingsByDestinationResponse_nextToken,+    listCustomRoutingPortMappingsByDestinationResponse_httpStatus,++    -- ** ListEndpointGroups+    listEndpointGroups_maxResults,+    listEndpointGroups_nextToken,+    listEndpointGroups_listenerArn,+    listEndpointGroupsResponse_endpointGroups,+    listEndpointGroupsResponse_nextToken,+    listEndpointGroupsResponse_httpStatus,++    -- ** ListListeners+    listListeners_maxResults,+    listListeners_nextToken,+    listListeners_acceleratorArn,+    listListenersResponse_listeners,+    listListenersResponse_nextToken,+    listListenersResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** ProvisionByoipCidr+    provisionByoipCidr_cidr,+    provisionByoipCidr_cidrAuthorizationContext,+    provisionByoipCidrResponse_byoipCidr,+    provisionByoipCidrResponse_httpStatus,++    -- ** RemoveCustomRoutingEndpoints+    removeCustomRoutingEndpoints_endpointIds,+    removeCustomRoutingEndpoints_endpointGroupArn,++    -- ** RemoveEndpoints+    removeEndpoints_endpointIdentifiers,+    removeEndpoints_endpointGroupArn,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateAccelerator+    updateAccelerator_enabled,+    updateAccelerator_ipAddressType,+    updateAccelerator_name,+    updateAccelerator_acceleratorArn,+    updateAcceleratorResponse_accelerator,+    updateAcceleratorResponse_httpStatus,++    -- ** UpdateAcceleratorAttributes+    updateAcceleratorAttributes_flowLogsEnabled,+    updateAcceleratorAttributes_flowLogsS3Bucket,+    updateAcceleratorAttributes_flowLogsS3Prefix,+    updateAcceleratorAttributes_acceleratorArn,+    updateAcceleratorAttributesResponse_acceleratorAttributes,+    updateAcceleratorAttributesResponse_httpStatus,++    -- ** UpdateCustomRoutingAccelerator+    updateCustomRoutingAccelerator_enabled,+    updateCustomRoutingAccelerator_ipAddressType,+    updateCustomRoutingAccelerator_name,+    updateCustomRoutingAccelerator_acceleratorArn,+    updateCustomRoutingAcceleratorResponse_accelerator,+    updateCustomRoutingAcceleratorResponse_httpStatus,++    -- ** UpdateCustomRoutingAcceleratorAttributes+    updateCustomRoutingAcceleratorAttributes_flowLogsEnabled,+    updateCustomRoutingAcceleratorAttributes_flowLogsS3Bucket,+    updateCustomRoutingAcceleratorAttributes_flowLogsS3Prefix,+    updateCustomRoutingAcceleratorAttributes_acceleratorArn,+    updateCustomRoutingAcceleratorAttributesResponse_acceleratorAttributes,+    updateCustomRoutingAcceleratorAttributesResponse_httpStatus,++    -- ** UpdateCustomRoutingListener+    updateCustomRoutingListener_listenerArn,+    updateCustomRoutingListener_portRanges,+    updateCustomRoutingListenerResponse_listener,+    updateCustomRoutingListenerResponse_httpStatus,++    -- ** UpdateEndpointGroup+    updateEndpointGroup_endpointConfigurations,+    updateEndpointGroup_healthCheckIntervalSeconds,+    updateEndpointGroup_healthCheckPath,+    updateEndpointGroup_healthCheckPort,+    updateEndpointGroup_healthCheckProtocol,+    updateEndpointGroup_portOverrides,+    updateEndpointGroup_thresholdCount,+    updateEndpointGroup_trafficDialPercentage,+    updateEndpointGroup_endpointGroupArn,+    updateEndpointGroupResponse_endpointGroup,+    updateEndpointGroupResponse_httpStatus,++    -- ** UpdateListener+    updateListener_clientAffinity,+    updateListener_portRanges,+    updateListener_protocol,+    updateListener_listenerArn,+    updateListenerResponse_listener,+    updateListenerResponse_httpStatus,++    -- ** WithdrawByoipCidr+    withdrawByoipCidr_cidr,+    withdrawByoipCidrResponse_byoipCidr,+    withdrawByoipCidrResponse_httpStatus,++    -- * Types++    -- ** Accelerator+    accelerator_acceleratorArn,+    accelerator_createdTime,+    accelerator_dnsName,+    accelerator_dualStackDnsName,+    accelerator_enabled,+    accelerator_events,+    accelerator_ipAddressType,+    accelerator_ipSets,+    accelerator_lastModifiedTime,+    accelerator_name,+    accelerator_status,++    -- ** AcceleratorAttributes+    acceleratorAttributes_flowLogsEnabled,+    acceleratorAttributes_flowLogsS3Bucket,+    acceleratorAttributes_flowLogsS3Prefix,++    -- ** AcceleratorEvent+    acceleratorEvent_message,+    acceleratorEvent_timestamp,++    -- ** ByoipCidr+    byoipCidr_cidr,+    byoipCidr_events,+    byoipCidr_state,++    -- ** ByoipCidrEvent+    byoipCidrEvent_message,+    byoipCidrEvent_timestamp,++    -- ** CidrAuthorizationContext+    cidrAuthorizationContext_message,+    cidrAuthorizationContext_signature,++    -- ** CustomRoutingAccelerator+    customRoutingAccelerator_acceleratorArn,+    customRoutingAccelerator_createdTime,+    customRoutingAccelerator_dnsName,+    customRoutingAccelerator_enabled,+    customRoutingAccelerator_ipAddressType,+    customRoutingAccelerator_ipSets,+    customRoutingAccelerator_lastModifiedTime,+    customRoutingAccelerator_name,+    customRoutingAccelerator_status,++    -- ** CustomRoutingAcceleratorAttributes+    customRoutingAcceleratorAttributes_flowLogsEnabled,+    customRoutingAcceleratorAttributes_flowLogsS3Bucket,+    customRoutingAcceleratorAttributes_flowLogsS3Prefix,++    -- ** CustomRoutingDestinationConfiguration+    customRoutingDestinationConfiguration_fromPort,+    customRoutingDestinationConfiguration_toPort,+    customRoutingDestinationConfiguration_protocols,++    -- ** CustomRoutingDestinationDescription+    customRoutingDestinationDescription_fromPort,+    customRoutingDestinationDescription_protocols,+    customRoutingDestinationDescription_toPort,++    -- ** CustomRoutingEndpointConfiguration+    customRoutingEndpointConfiguration_endpointId,++    -- ** CustomRoutingEndpointDescription+    customRoutingEndpointDescription_endpointId,++    -- ** CustomRoutingEndpointGroup+    customRoutingEndpointGroup_destinationDescriptions,+    customRoutingEndpointGroup_endpointDescriptions,+    customRoutingEndpointGroup_endpointGroupArn,+    customRoutingEndpointGroup_endpointGroupRegion,++    -- ** CustomRoutingListener+    customRoutingListener_listenerArn,+    customRoutingListener_portRanges,++    -- ** DestinationPortMapping+    destinationPortMapping_acceleratorArn,+    destinationPortMapping_acceleratorSocketAddresses,+    destinationPortMapping_destinationSocketAddress,+    destinationPortMapping_destinationTrafficState,+    destinationPortMapping_endpointGroupArn,+    destinationPortMapping_endpointGroupRegion,+    destinationPortMapping_endpointId,+    destinationPortMapping_ipAddressType,++    -- ** EndpointConfiguration+    endpointConfiguration_clientIPPreservationEnabled,+    endpointConfiguration_endpointId,+    endpointConfiguration_weight,++    -- ** EndpointDescription+    endpointDescription_clientIPPreservationEnabled,+    endpointDescription_endpointId,+    endpointDescription_healthReason,+    endpointDescription_healthState,+    endpointDescription_weight,++    -- ** EndpointGroup+    endpointGroup_endpointDescriptions,+    endpointGroup_endpointGroupArn,+    endpointGroup_endpointGroupRegion,+    endpointGroup_healthCheckIntervalSeconds,+    endpointGroup_healthCheckPath,+    endpointGroup_healthCheckPort,+    endpointGroup_healthCheckProtocol,+    endpointGroup_portOverrides,+    endpointGroup_thresholdCount,+    endpointGroup_trafficDialPercentage,++    -- ** EndpointIdentifier+    endpointIdentifier_clientIPPreservationEnabled,+    endpointIdentifier_endpointId,++    -- ** IpSet+    ipSet_ipAddressFamily,+    ipSet_ipAddresses,+    ipSet_ipFamily,++    -- ** Listener+    listener_clientAffinity,+    listener_listenerArn,+    listener_portRanges,+    listener_protocol,++    -- ** PortMapping+    portMapping_acceleratorPort,+    portMapping_destinationSocketAddress,+    portMapping_destinationTrafficState,+    portMapping_endpointGroupArn,+    portMapping_endpointId,+    portMapping_protocols,++    -- ** PortOverride+    portOverride_endpointPort,+    portOverride_listenerPort,++    -- ** PortRange+    portRange_fromPort,+    portRange_toPort,++    -- ** SocketAddress+    socketAddress_ipAddress,+    socketAddress_port,++    -- ** Tag+    tag_key,+    tag_value,+  )+where++import Amazonka.GlobalAccelerator.AddCustomRoutingEndpoints+import Amazonka.GlobalAccelerator.AddEndpoints+import Amazonka.GlobalAccelerator.AdvertiseByoipCidr+import Amazonka.GlobalAccelerator.AllowCustomRoutingTraffic+import Amazonka.GlobalAccelerator.CreateAccelerator+import Amazonka.GlobalAccelerator.CreateCustomRoutingAccelerator+import Amazonka.GlobalAccelerator.CreateCustomRoutingEndpointGroup+import Amazonka.GlobalAccelerator.CreateCustomRoutingListener+import Amazonka.GlobalAccelerator.CreateEndpointGroup+import Amazonka.GlobalAccelerator.CreateListener+import Amazonka.GlobalAccelerator.DeleteAccelerator+import Amazonka.GlobalAccelerator.DeleteCustomRoutingAccelerator+import Amazonka.GlobalAccelerator.DeleteCustomRoutingEndpointGroup+import Amazonka.GlobalAccelerator.DeleteCustomRoutingListener+import Amazonka.GlobalAccelerator.DeleteEndpointGroup+import Amazonka.GlobalAccelerator.DeleteListener+import Amazonka.GlobalAccelerator.DenyCustomRoutingTraffic+import Amazonka.GlobalAccelerator.DeprovisionByoipCidr+import Amazonka.GlobalAccelerator.DescribeAccelerator+import Amazonka.GlobalAccelerator.DescribeAcceleratorAttributes+import Amazonka.GlobalAccelerator.DescribeCustomRoutingAccelerator+import Amazonka.GlobalAccelerator.DescribeCustomRoutingAcceleratorAttributes+import Amazonka.GlobalAccelerator.DescribeCustomRoutingEndpointGroup+import Amazonka.GlobalAccelerator.DescribeCustomRoutingListener+import Amazonka.GlobalAccelerator.DescribeEndpointGroup+import Amazonka.GlobalAccelerator.DescribeListener+import Amazonka.GlobalAccelerator.ListAccelerators+import Amazonka.GlobalAccelerator.ListByoipCidrs+import Amazonka.GlobalAccelerator.ListCustomRoutingAccelerators+import Amazonka.GlobalAccelerator.ListCustomRoutingEndpointGroups+import Amazonka.GlobalAccelerator.ListCustomRoutingListeners+import Amazonka.GlobalAccelerator.ListCustomRoutingPortMappings+import Amazonka.GlobalAccelerator.ListCustomRoutingPortMappingsByDestination+import Amazonka.GlobalAccelerator.ListEndpointGroups+import Amazonka.GlobalAccelerator.ListListeners+import Amazonka.GlobalAccelerator.ListTagsForResource+import Amazonka.GlobalAccelerator.ProvisionByoipCidr+import Amazonka.GlobalAccelerator.RemoveCustomRoutingEndpoints+import Amazonka.GlobalAccelerator.RemoveEndpoints+import Amazonka.GlobalAccelerator.TagResource+import Amazonka.GlobalAccelerator.Types.Accelerator+import Amazonka.GlobalAccelerator.Types.AcceleratorAttributes+import Amazonka.GlobalAccelerator.Types.AcceleratorEvent+import Amazonka.GlobalAccelerator.Types.ByoipCidr+import Amazonka.GlobalAccelerator.Types.ByoipCidrEvent+import Amazonka.GlobalAccelerator.Types.CidrAuthorizationContext+import Amazonka.GlobalAccelerator.Types.CustomRoutingAccelerator+import Amazonka.GlobalAccelerator.Types.CustomRoutingAcceleratorAttributes+import Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationConfiguration+import Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationDescription+import Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointConfiguration+import Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointDescription+import Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointGroup+import Amazonka.GlobalAccelerator.Types.CustomRoutingListener+import Amazonka.GlobalAccelerator.Types.DestinationPortMapping+import Amazonka.GlobalAccelerator.Types.EndpointConfiguration+import Amazonka.GlobalAccelerator.Types.EndpointDescription+import Amazonka.GlobalAccelerator.Types.EndpointGroup+import Amazonka.GlobalAccelerator.Types.EndpointIdentifier+import Amazonka.GlobalAccelerator.Types.IpSet+import Amazonka.GlobalAccelerator.Types.Listener+import Amazonka.GlobalAccelerator.Types.PortMapping+import Amazonka.GlobalAccelerator.Types.PortOverride+import Amazonka.GlobalAccelerator.Types.PortRange+import Amazonka.GlobalAccelerator.Types.SocketAddress+import Amazonka.GlobalAccelerator.Types.Tag+import Amazonka.GlobalAccelerator.UntagResource+import Amazonka.GlobalAccelerator.UpdateAccelerator+import Amazonka.GlobalAccelerator.UpdateAcceleratorAttributes+import Amazonka.GlobalAccelerator.UpdateCustomRoutingAccelerator+import Amazonka.GlobalAccelerator.UpdateCustomRoutingAcceleratorAttributes+import Amazonka.GlobalAccelerator.UpdateCustomRoutingListener+import Amazonka.GlobalAccelerator.UpdateEndpointGroup+import Amazonka.GlobalAccelerator.UpdateListener+import Amazonka.GlobalAccelerator.WithdrawByoipCidr
+ gen/Amazonka/GlobalAccelerator/ListAccelerators.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.GlobalAccelerator.ListAccelerators+-- 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 accelerators for an Amazon Web Services account.+--+-- This operation returns paginated results.+module Amazonka.GlobalAccelerator.ListAccelerators+  ( -- * Creating a Request+    ListAccelerators (..),+    newListAccelerators,++    -- * Request Lenses+    listAccelerators_maxResults,+    listAccelerators_nextToken,++    -- * Destructuring the Response+    ListAcceleratorsResponse (..),+    newListAcceleratorsResponse,++    -- * Response Lenses+    listAcceleratorsResponse_accelerators,+    listAcceleratorsResponse_nextToken,+    listAcceleratorsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAccelerators' smart constructor.+data ListAccelerators = ListAccelerators'+  { -- | The number of Global Accelerator objects that you want to return with+    -- this call. The default value is 10.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAccelerators' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listAccelerators_maxResults' - The number of Global Accelerator objects that you want to return with+-- this call. The default value is 10.+--+-- 'nextToken', 'listAccelerators_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+newListAccelerators ::+  ListAccelerators+newListAccelerators =+  ListAccelerators'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The number of Global Accelerator objects that you want to return with+-- this call. The default value is 10.+listAccelerators_maxResults :: Lens.Lens' ListAccelerators (Prelude.Maybe Prelude.Natural)+listAccelerators_maxResults = Lens.lens (\ListAccelerators' {maxResults} -> maxResults) (\s@ListAccelerators' {} a -> s {maxResults = a} :: ListAccelerators)++-- | The token for the next set of results. You receive this token from a+-- previous call.+listAccelerators_nextToken :: Lens.Lens' ListAccelerators (Prelude.Maybe Prelude.Text)+listAccelerators_nextToken = Lens.lens (\ListAccelerators' {nextToken} -> nextToken) (\s@ListAccelerators' {} a -> s {nextToken = a} :: ListAccelerators)++instance Core.AWSPager ListAccelerators where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAcceleratorsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listAcceleratorsResponse_accelerators+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAccelerators_nextToken+          Lens..~ rs+          Lens.^? listAcceleratorsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAccelerators where+  type+    AWSResponse ListAccelerators =+      ListAcceleratorsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAcceleratorsResponse'+            Prelude.<$> (x Data..?> "Accelerators" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListAccelerators where+  hashWithSalt _salt ListAccelerators' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListAccelerators where+  rnf ListAccelerators' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListAccelerators where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ListAccelerators" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListAccelerators where+  toJSON ListAccelerators' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListAccelerators where+  toPath = Prelude.const "/"++instance Data.ToQuery ListAccelerators where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListAcceleratorsResponse' smart constructor.+data ListAcceleratorsResponse = ListAcceleratorsResponse'+  { -- | The list of accelerators for a customer account.+    accelerators :: Prelude.Maybe [Accelerator],+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAcceleratorsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accelerators', 'listAcceleratorsResponse_accelerators' - The list of accelerators for a customer account.+--+-- 'nextToken', 'listAcceleratorsResponse_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'httpStatus', 'listAcceleratorsResponse_httpStatus' - The response's http status code.+newListAcceleratorsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAcceleratorsResponse+newListAcceleratorsResponse pHttpStatus_ =+  ListAcceleratorsResponse'+    { accelerators =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of accelerators for a customer account.+listAcceleratorsResponse_accelerators :: Lens.Lens' ListAcceleratorsResponse (Prelude.Maybe [Accelerator])+listAcceleratorsResponse_accelerators = Lens.lens (\ListAcceleratorsResponse' {accelerators} -> accelerators) (\s@ListAcceleratorsResponse' {} a -> s {accelerators = a} :: ListAcceleratorsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results. You receive this token from a+-- previous call.+listAcceleratorsResponse_nextToken :: Lens.Lens' ListAcceleratorsResponse (Prelude.Maybe Prelude.Text)+listAcceleratorsResponse_nextToken = Lens.lens (\ListAcceleratorsResponse' {nextToken} -> nextToken) (\s@ListAcceleratorsResponse' {} a -> s {nextToken = a} :: ListAcceleratorsResponse)++-- | The response's http status code.+listAcceleratorsResponse_httpStatus :: Lens.Lens' ListAcceleratorsResponse Prelude.Int+listAcceleratorsResponse_httpStatus = Lens.lens (\ListAcceleratorsResponse' {httpStatus} -> httpStatus) (\s@ListAcceleratorsResponse' {} a -> s {httpStatus = a} :: ListAcceleratorsResponse)++instance Prelude.NFData ListAcceleratorsResponse where+  rnf ListAcceleratorsResponse' {..} =+    Prelude.rnf accelerators+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/ListByoipCidrs.hs view
@@ -0,0 +1,228 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.ListByoipCidrs+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists the IP address ranges that were specified in calls to+-- <https://docs.aws.amazon.com/global-accelerator/latest/api/ProvisionByoipCidr.html ProvisionByoipCidr>,+-- including the current state and a history of state changes.+--+-- This operation returns paginated results.+module Amazonka.GlobalAccelerator.ListByoipCidrs+  ( -- * Creating a Request+    ListByoipCidrs (..),+    newListByoipCidrs,++    -- * Request Lenses+    listByoipCidrs_maxResults,+    listByoipCidrs_nextToken,++    -- * Destructuring the Response+    ListByoipCidrsResponse (..),+    newListByoipCidrsResponse,++    -- * Response Lenses+    listByoipCidrsResponse_byoipCidrs,+    listByoipCidrsResponse_nextToken,+    listByoipCidrsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListByoipCidrs' smart constructor.+data ListByoipCidrs = ListByoipCidrs'+  { -- | The maximum number of results to return with a single call. To retrieve+    -- the remaining results, make another call with the returned @nextToken@+    -- value.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next page of results.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListByoipCidrs' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listByoipCidrs_maxResults' - The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+--+-- 'nextToken', 'listByoipCidrs_nextToken' - The token for the next page of results.+newListByoipCidrs ::+  ListByoipCidrs+newListByoipCidrs =+  ListByoipCidrs'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results to return with a single call. To retrieve+-- the remaining results, make another call with the returned @nextToken@+-- value.+listByoipCidrs_maxResults :: Lens.Lens' ListByoipCidrs (Prelude.Maybe Prelude.Natural)+listByoipCidrs_maxResults = Lens.lens (\ListByoipCidrs' {maxResults} -> maxResults) (\s@ListByoipCidrs' {} a -> s {maxResults = a} :: ListByoipCidrs)++-- | The token for the next page of results.+listByoipCidrs_nextToken :: Lens.Lens' ListByoipCidrs (Prelude.Maybe Prelude.Text)+listByoipCidrs_nextToken = Lens.lens (\ListByoipCidrs' {nextToken} -> nextToken) (\s@ListByoipCidrs' {} a -> s {nextToken = a} :: ListByoipCidrs)++instance Core.AWSPager ListByoipCidrs where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listByoipCidrsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listByoipCidrsResponse_byoipCidrs+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listByoipCidrs_nextToken+          Lens..~ rs+          Lens.^? listByoipCidrsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListByoipCidrs where+  type+    AWSResponse ListByoipCidrs =+      ListByoipCidrsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListByoipCidrsResponse'+            Prelude.<$> (x Data..?> "ByoipCidrs" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListByoipCidrs where+  hashWithSalt _salt ListByoipCidrs' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListByoipCidrs where+  rnf ListByoipCidrs' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListByoipCidrs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ListByoipCidrs" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListByoipCidrs where+  toJSON ListByoipCidrs' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListByoipCidrs where+  toPath = Prelude.const "/"++instance Data.ToQuery ListByoipCidrs where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListByoipCidrsResponse' smart constructor.+data ListByoipCidrsResponse = ListByoipCidrsResponse'+  { -- | Information about your address ranges.+    byoipCidrs :: Prelude.Maybe [ByoipCidr],+    -- | The token for the next page of results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListByoipCidrsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'byoipCidrs', 'listByoipCidrsResponse_byoipCidrs' - Information about your address ranges.+--+-- 'nextToken', 'listByoipCidrsResponse_nextToken' - The token for the next page of results.+--+-- 'httpStatus', 'listByoipCidrsResponse_httpStatus' - The response's http status code.+newListByoipCidrsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListByoipCidrsResponse+newListByoipCidrsResponse pHttpStatus_ =+  ListByoipCidrsResponse'+    { byoipCidrs =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about your address ranges.+listByoipCidrsResponse_byoipCidrs :: Lens.Lens' ListByoipCidrsResponse (Prelude.Maybe [ByoipCidr])+listByoipCidrsResponse_byoipCidrs = Lens.lens (\ListByoipCidrsResponse' {byoipCidrs} -> byoipCidrs) (\s@ListByoipCidrsResponse' {} a -> s {byoipCidrs = a} :: ListByoipCidrsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next page of results.+listByoipCidrsResponse_nextToken :: Lens.Lens' ListByoipCidrsResponse (Prelude.Maybe Prelude.Text)+listByoipCidrsResponse_nextToken = Lens.lens (\ListByoipCidrsResponse' {nextToken} -> nextToken) (\s@ListByoipCidrsResponse' {} a -> s {nextToken = a} :: ListByoipCidrsResponse)++-- | The response's http status code.+listByoipCidrsResponse_httpStatus :: Lens.Lens' ListByoipCidrsResponse Prelude.Int+listByoipCidrsResponse_httpStatus = Lens.lens (\ListByoipCidrsResponse' {httpStatus} -> httpStatus) (\s@ListByoipCidrsResponse' {} a -> s {httpStatus = a} :: ListByoipCidrsResponse)++instance Prelude.NFData ListByoipCidrsResponse where+  rnf ListByoipCidrsResponse' {..} =+    Prelude.rnf byoipCidrs+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/ListCustomRoutingAccelerators.hs view
@@ -0,0 +1,239 @@+{-# 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.GlobalAccelerator.ListCustomRoutingAccelerators+-- 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 custom routing accelerators for an Amazon Web Services account.+--+-- This operation returns paginated results.+module Amazonka.GlobalAccelerator.ListCustomRoutingAccelerators+  ( -- * Creating a Request+    ListCustomRoutingAccelerators (..),+    newListCustomRoutingAccelerators,++    -- * Request Lenses+    listCustomRoutingAccelerators_maxResults,+    listCustomRoutingAccelerators_nextToken,++    -- * Destructuring the Response+    ListCustomRoutingAcceleratorsResponse (..),+    newListCustomRoutingAcceleratorsResponse,++    -- * Response Lenses+    listCustomRoutingAcceleratorsResponse_accelerators,+    listCustomRoutingAcceleratorsResponse_nextToken,+    listCustomRoutingAcceleratorsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListCustomRoutingAccelerators' smart constructor.+data ListCustomRoutingAccelerators = ListCustomRoutingAccelerators'+  { -- | The number of custom routing Global Accelerator objects that you want to+    -- return with this call. The default value is 10.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCustomRoutingAccelerators' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listCustomRoutingAccelerators_maxResults' - The number of custom routing Global Accelerator objects that you want to+-- return with this call. The default value is 10.+--+-- 'nextToken', 'listCustomRoutingAccelerators_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+newListCustomRoutingAccelerators ::+  ListCustomRoutingAccelerators+newListCustomRoutingAccelerators =+  ListCustomRoutingAccelerators'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The number of custom routing Global Accelerator objects that you want to+-- return with this call. The default value is 10.+listCustomRoutingAccelerators_maxResults :: Lens.Lens' ListCustomRoutingAccelerators (Prelude.Maybe Prelude.Natural)+listCustomRoutingAccelerators_maxResults = Lens.lens (\ListCustomRoutingAccelerators' {maxResults} -> maxResults) (\s@ListCustomRoutingAccelerators' {} a -> s {maxResults = a} :: ListCustomRoutingAccelerators)++-- | The token for the next set of results. You receive this token from a+-- previous call.+listCustomRoutingAccelerators_nextToken :: Lens.Lens' ListCustomRoutingAccelerators (Prelude.Maybe Prelude.Text)+listCustomRoutingAccelerators_nextToken = Lens.lens (\ListCustomRoutingAccelerators' {nextToken} -> nextToken) (\s@ListCustomRoutingAccelerators' {} a -> s {nextToken = a} :: ListCustomRoutingAccelerators)++instance Core.AWSPager ListCustomRoutingAccelerators where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listCustomRoutingAcceleratorsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listCustomRoutingAcceleratorsResponse_accelerators+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listCustomRoutingAccelerators_nextToken+          Lens..~ rs+          Lens.^? listCustomRoutingAcceleratorsResponse_nextToken+          Prelude.. Lens._Just++instance+  Core.AWSRequest+    ListCustomRoutingAccelerators+  where+  type+    AWSResponse ListCustomRoutingAccelerators =+      ListCustomRoutingAcceleratorsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListCustomRoutingAcceleratorsResponse'+            Prelude.<$> (x Data..?> "Accelerators" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    ListCustomRoutingAccelerators+  where+  hashWithSalt _salt ListCustomRoutingAccelerators' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListCustomRoutingAccelerators where+  rnf ListCustomRoutingAccelerators' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListCustomRoutingAccelerators where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ListCustomRoutingAccelerators" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListCustomRoutingAccelerators where+  toJSON ListCustomRoutingAccelerators' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListCustomRoutingAccelerators where+  toPath = Prelude.const "/"++instance Data.ToQuery ListCustomRoutingAccelerators where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListCustomRoutingAcceleratorsResponse' smart constructor.+data ListCustomRoutingAcceleratorsResponse = ListCustomRoutingAcceleratorsResponse'+  { -- | The list of custom routing accelerators for a customer account.+    accelerators :: Prelude.Maybe [CustomRoutingAccelerator],+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCustomRoutingAcceleratorsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accelerators', 'listCustomRoutingAcceleratorsResponse_accelerators' - The list of custom routing accelerators for a customer account.+--+-- 'nextToken', 'listCustomRoutingAcceleratorsResponse_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'httpStatus', 'listCustomRoutingAcceleratorsResponse_httpStatus' - The response's http status code.+newListCustomRoutingAcceleratorsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListCustomRoutingAcceleratorsResponse+newListCustomRoutingAcceleratorsResponse pHttpStatus_ =+  ListCustomRoutingAcceleratorsResponse'+    { accelerators =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of custom routing accelerators for a customer account.+listCustomRoutingAcceleratorsResponse_accelerators :: Lens.Lens' ListCustomRoutingAcceleratorsResponse (Prelude.Maybe [CustomRoutingAccelerator])+listCustomRoutingAcceleratorsResponse_accelerators = Lens.lens (\ListCustomRoutingAcceleratorsResponse' {accelerators} -> accelerators) (\s@ListCustomRoutingAcceleratorsResponse' {} a -> s {accelerators = a} :: ListCustomRoutingAcceleratorsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results. You receive this token from a+-- previous call.+listCustomRoutingAcceleratorsResponse_nextToken :: Lens.Lens' ListCustomRoutingAcceleratorsResponse (Prelude.Maybe Prelude.Text)+listCustomRoutingAcceleratorsResponse_nextToken = Lens.lens (\ListCustomRoutingAcceleratorsResponse' {nextToken} -> nextToken) (\s@ListCustomRoutingAcceleratorsResponse' {} a -> s {nextToken = a} :: ListCustomRoutingAcceleratorsResponse)++-- | The response's http status code.+listCustomRoutingAcceleratorsResponse_httpStatus :: Lens.Lens' ListCustomRoutingAcceleratorsResponse Prelude.Int+listCustomRoutingAcceleratorsResponse_httpStatus = Lens.lens (\ListCustomRoutingAcceleratorsResponse' {httpStatus} -> httpStatus) (\s@ListCustomRoutingAcceleratorsResponse' {} a -> s {httpStatus = a} :: ListCustomRoutingAcceleratorsResponse)++instance+  Prelude.NFData+    ListCustomRoutingAcceleratorsResponse+  where+  rnf ListCustomRoutingAcceleratorsResponse' {..} =+    Prelude.rnf accelerators+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/ListCustomRoutingEndpointGroups.hs view
@@ -0,0 +1,246 @@+{-# 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.GlobalAccelerator.ListCustomRoutingEndpointGroups+-- 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 endpoint groups that are associated with a listener for a+-- custom routing accelerator.+module Amazonka.GlobalAccelerator.ListCustomRoutingEndpointGroups+  ( -- * Creating a Request+    ListCustomRoutingEndpointGroups (..),+    newListCustomRoutingEndpointGroups,++    -- * Request Lenses+    listCustomRoutingEndpointGroups_maxResults,+    listCustomRoutingEndpointGroups_nextToken,+    listCustomRoutingEndpointGroups_listenerArn,++    -- * Destructuring the Response+    ListCustomRoutingEndpointGroupsResponse (..),+    newListCustomRoutingEndpointGroupsResponse,++    -- * Response Lenses+    listCustomRoutingEndpointGroupsResponse_endpointGroups,+    listCustomRoutingEndpointGroupsResponse_nextToken,+    listCustomRoutingEndpointGroupsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListCustomRoutingEndpointGroups' smart constructor.+data ListCustomRoutingEndpointGroups = ListCustomRoutingEndpointGroups'+  { -- | The number of endpoint group objects that you want to return with this+    -- call. The default value is 10.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the listener to list endpoint groups+    -- for.+    listenerArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCustomRoutingEndpointGroups' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listCustomRoutingEndpointGroups_maxResults' - The number of endpoint group objects that you want to return with this+-- call. The default value is 10.+--+-- 'nextToken', 'listCustomRoutingEndpointGroups_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'listenerArn', 'listCustomRoutingEndpointGroups_listenerArn' - The Amazon Resource Name (ARN) of the listener to list endpoint groups+-- for.+newListCustomRoutingEndpointGroups ::+  -- | 'listenerArn'+  Prelude.Text ->+  ListCustomRoutingEndpointGroups+newListCustomRoutingEndpointGroups pListenerArn_ =+  ListCustomRoutingEndpointGroups'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      listenerArn = pListenerArn_+    }++-- | The number of endpoint group objects that you want to return with this+-- call. The default value is 10.+listCustomRoutingEndpointGroups_maxResults :: Lens.Lens' ListCustomRoutingEndpointGroups (Prelude.Maybe Prelude.Natural)+listCustomRoutingEndpointGroups_maxResults = Lens.lens (\ListCustomRoutingEndpointGroups' {maxResults} -> maxResults) (\s@ListCustomRoutingEndpointGroups' {} a -> s {maxResults = a} :: ListCustomRoutingEndpointGroups)++-- | The token for the next set of results. You receive this token from a+-- previous call.+listCustomRoutingEndpointGroups_nextToken :: Lens.Lens' ListCustomRoutingEndpointGroups (Prelude.Maybe Prelude.Text)+listCustomRoutingEndpointGroups_nextToken = Lens.lens (\ListCustomRoutingEndpointGroups' {nextToken} -> nextToken) (\s@ListCustomRoutingEndpointGroups' {} a -> s {nextToken = a} :: ListCustomRoutingEndpointGroups)++-- | The Amazon Resource Name (ARN) of the listener to list endpoint groups+-- for.+listCustomRoutingEndpointGroups_listenerArn :: Lens.Lens' ListCustomRoutingEndpointGroups Prelude.Text+listCustomRoutingEndpointGroups_listenerArn = Lens.lens (\ListCustomRoutingEndpointGroups' {listenerArn} -> listenerArn) (\s@ListCustomRoutingEndpointGroups' {} a -> s {listenerArn = a} :: ListCustomRoutingEndpointGroups)++instance+  Core.AWSRequest+    ListCustomRoutingEndpointGroups+  where+  type+    AWSResponse ListCustomRoutingEndpointGroups =+      ListCustomRoutingEndpointGroupsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListCustomRoutingEndpointGroupsResponse'+            Prelude.<$> (x Data..?> "EndpointGroups" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    ListCustomRoutingEndpointGroups+  where+  hashWithSalt+    _salt+    ListCustomRoutingEndpointGroups' {..} =+      _salt+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` listenerArn++instance+  Prelude.NFData+    ListCustomRoutingEndpointGroups+  where+  rnf ListCustomRoutingEndpointGroups' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf listenerArn++instance+  Data.ToHeaders+    ListCustomRoutingEndpointGroups+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ListCustomRoutingEndpointGroups" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListCustomRoutingEndpointGroups where+  toJSON ListCustomRoutingEndpointGroups' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("ListenerArn" Data..= listenerArn)+          ]+      )++instance Data.ToPath ListCustomRoutingEndpointGroups where+  toPath = Prelude.const "/"++instance Data.ToQuery ListCustomRoutingEndpointGroups where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListCustomRoutingEndpointGroupsResponse' smart constructor.+data ListCustomRoutingEndpointGroupsResponse = ListCustomRoutingEndpointGroupsResponse'+  { -- | The list of the endpoint groups associated with a listener for a custom+    -- routing accelerator.+    endpointGroups :: Prelude.Maybe [CustomRoutingEndpointGroup],+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCustomRoutingEndpointGroupsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroups', 'listCustomRoutingEndpointGroupsResponse_endpointGroups' - The list of the endpoint groups associated with a listener for a custom+-- routing accelerator.+--+-- 'nextToken', 'listCustomRoutingEndpointGroupsResponse_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'httpStatus', 'listCustomRoutingEndpointGroupsResponse_httpStatus' - The response's http status code.+newListCustomRoutingEndpointGroupsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListCustomRoutingEndpointGroupsResponse+newListCustomRoutingEndpointGroupsResponse+  pHttpStatus_ =+    ListCustomRoutingEndpointGroupsResponse'+      { endpointGroups =+          Prelude.Nothing,+        nextToken = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The list of the endpoint groups associated with a listener for a custom+-- routing accelerator.+listCustomRoutingEndpointGroupsResponse_endpointGroups :: Lens.Lens' ListCustomRoutingEndpointGroupsResponse (Prelude.Maybe [CustomRoutingEndpointGroup])+listCustomRoutingEndpointGroupsResponse_endpointGroups = Lens.lens (\ListCustomRoutingEndpointGroupsResponse' {endpointGroups} -> endpointGroups) (\s@ListCustomRoutingEndpointGroupsResponse' {} a -> s {endpointGroups = a} :: ListCustomRoutingEndpointGroupsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results. You receive this token from a+-- previous call.+listCustomRoutingEndpointGroupsResponse_nextToken :: Lens.Lens' ListCustomRoutingEndpointGroupsResponse (Prelude.Maybe Prelude.Text)+listCustomRoutingEndpointGroupsResponse_nextToken = Lens.lens (\ListCustomRoutingEndpointGroupsResponse' {nextToken} -> nextToken) (\s@ListCustomRoutingEndpointGroupsResponse' {} a -> s {nextToken = a} :: ListCustomRoutingEndpointGroupsResponse)++-- | The response's http status code.+listCustomRoutingEndpointGroupsResponse_httpStatus :: Lens.Lens' ListCustomRoutingEndpointGroupsResponse Prelude.Int+listCustomRoutingEndpointGroupsResponse_httpStatus = Lens.lens (\ListCustomRoutingEndpointGroupsResponse' {httpStatus} -> httpStatus) (\s@ListCustomRoutingEndpointGroupsResponse' {} a -> s {httpStatus = a} :: ListCustomRoutingEndpointGroupsResponse)++instance+  Prelude.NFData+    ListCustomRoutingEndpointGroupsResponse+  where+  rnf ListCustomRoutingEndpointGroupsResponse' {..} =+    Prelude.rnf endpointGroups+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/ListCustomRoutingListeners.hs view
@@ -0,0 +1,249 @@+{-# 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.GlobalAccelerator.ListCustomRoutingListeners+-- 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 listeners for a custom routing accelerator.+--+-- This operation returns paginated results.+module Amazonka.GlobalAccelerator.ListCustomRoutingListeners+  ( -- * Creating a Request+    ListCustomRoutingListeners (..),+    newListCustomRoutingListeners,++    -- * Request Lenses+    listCustomRoutingListeners_maxResults,+    listCustomRoutingListeners_nextToken,+    listCustomRoutingListeners_acceleratorArn,++    -- * Destructuring the Response+    ListCustomRoutingListenersResponse (..),+    newListCustomRoutingListenersResponse,++    -- * Response Lenses+    listCustomRoutingListenersResponse_listeners,+    listCustomRoutingListenersResponse_nextToken,+    listCustomRoutingListenersResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListCustomRoutingListeners' smart constructor.+data ListCustomRoutingListeners = ListCustomRoutingListeners'+  { -- | The number of listener objects that you want to return with this call.+    -- The default value is 10.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the accelerator to list listeners for.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCustomRoutingListeners' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listCustomRoutingListeners_maxResults' - The number of listener objects that you want to return with this call.+-- The default value is 10.+--+-- 'nextToken', 'listCustomRoutingListeners_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'acceleratorArn', 'listCustomRoutingListeners_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator to list listeners for.+newListCustomRoutingListeners ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  ListCustomRoutingListeners+newListCustomRoutingListeners pAcceleratorArn_ =+  ListCustomRoutingListeners'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      acceleratorArn = pAcceleratorArn_+    }++-- | The number of listener objects that you want to return with this call.+-- The default value is 10.+listCustomRoutingListeners_maxResults :: Lens.Lens' ListCustomRoutingListeners (Prelude.Maybe Prelude.Natural)+listCustomRoutingListeners_maxResults = Lens.lens (\ListCustomRoutingListeners' {maxResults} -> maxResults) (\s@ListCustomRoutingListeners' {} a -> s {maxResults = a} :: ListCustomRoutingListeners)++-- | The token for the next set of results. You receive this token from a+-- previous call.+listCustomRoutingListeners_nextToken :: Lens.Lens' ListCustomRoutingListeners (Prelude.Maybe Prelude.Text)+listCustomRoutingListeners_nextToken = Lens.lens (\ListCustomRoutingListeners' {nextToken} -> nextToken) (\s@ListCustomRoutingListeners' {} a -> s {nextToken = a} :: ListCustomRoutingListeners)++-- | The Amazon Resource Name (ARN) of the accelerator to list listeners for.+listCustomRoutingListeners_acceleratorArn :: Lens.Lens' ListCustomRoutingListeners Prelude.Text+listCustomRoutingListeners_acceleratorArn = Lens.lens (\ListCustomRoutingListeners' {acceleratorArn} -> acceleratorArn) (\s@ListCustomRoutingListeners' {} a -> s {acceleratorArn = a} :: ListCustomRoutingListeners)++instance Core.AWSPager ListCustomRoutingListeners where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listCustomRoutingListenersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listCustomRoutingListenersResponse_listeners+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listCustomRoutingListeners_nextToken+          Lens..~ rs+          Lens.^? listCustomRoutingListenersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListCustomRoutingListeners where+  type+    AWSResponse ListCustomRoutingListeners =+      ListCustomRoutingListenersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListCustomRoutingListenersResponse'+            Prelude.<$> (x Data..?> "Listeners" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListCustomRoutingListeners where+  hashWithSalt _salt ListCustomRoutingListeners' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` acceleratorArn++instance Prelude.NFData ListCustomRoutingListeners where+  rnf ListCustomRoutingListeners' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf acceleratorArn++instance Data.ToHeaders ListCustomRoutingListeners where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ListCustomRoutingListeners" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListCustomRoutingListeners where+  toJSON ListCustomRoutingListeners' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath ListCustomRoutingListeners where+  toPath = Prelude.const "/"++instance Data.ToQuery ListCustomRoutingListeners where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListCustomRoutingListenersResponse' smart constructor.+data ListCustomRoutingListenersResponse = ListCustomRoutingListenersResponse'+  { -- | The list of listeners for a custom routing accelerator.+    listeners :: Prelude.Maybe [CustomRoutingListener],+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCustomRoutingListenersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listCustomRoutingListenersResponse_listeners' - The list of listeners for a custom routing accelerator.+--+-- 'nextToken', 'listCustomRoutingListenersResponse_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'httpStatus', 'listCustomRoutingListenersResponse_httpStatus' - The response's http status code.+newListCustomRoutingListenersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListCustomRoutingListenersResponse+newListCustomRoutingListenersResponse pHttpStatus_ =+  ListCustomRoutingListenersResponse'+    { listeners =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of listeners for a custom routing accelerator.+listCustomRoutingListenersResponse_listeners :: Lens.Lens' ListCustomRoutingListenersResponse (Prelude.Maybe [CustomRoutingListener])+listCustomRoutingListenersResponse_listeners = Lens.lens (\ListCustomRoutingListenersResponse' {listeners} -> listeners) (\s@ListCustomRoutingListenersResponse' {} a -> s {listeners = a} :: ListCustomRoutingListenersResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results. You receive this token from a+-- previous call.+listCustomRoutingListenersResponse_nextToken :: Lens.Lens' ListCustomRoutingListenersResponse (Prelude.Maybe Prelude.Text)+listCustomRoutingListenersResponse_nextToken = Lens.lens (\ListCustomRoutingListenersResponse' {nextToken} -> nextToken) (\s@ListCustomRoutingListenersResponse' {} a -> s {nextToken = a} :: ListCustomRoutingListenersResponse)++-- | The response's http status code.+listCustomRoutingListenersResponse_httpStatus :: Lens.Lens' ListCustomRoutingListenersResponse Prelude.Int+listCustomRoutingListenersResponse_httpStatus = Lens.lens (\ListCustomRoutingListenersResponse' {httpStatus} -> httpStatus) (\s@ListCustomRoutingListenersResponse' {} a -> s {httpStatus = a} :: ListCustomRoutingListenersResponse)++instance+  Prelude.NFData+    ListCustomRoutingListenersResponse+  where+  rnf ListCustomRoutingListenersResponse' {..} =+    Prelude.rnf listeners+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/ListCustomRoutingPortMappings.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.GlobalAccelerator.ListCustomRoutingPortMappings+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Provides a complete mapping from the public accelerator IP address and+-- port to destination EC2 instance IP addresses and ports in the virtual+-- public cloud (VPC) subnet endpoint for a custom routing accelerator. For+-- each subnet endpoint that you add, Global Accelerator creates a new+-- static port mapping for the accelerator. The port mappings don\'t change+-- after Global Accelerator generates them, so you can retrieve and cache+-- the full mapping on your servers.+--+-- If you remove a subnet from your accelerator, Global Accelerator removes+-- (reclaims) the port mappings. If you add a subnet to your accelerator,+-- Global Accelerator creates new port mappings (the existing ones don\'t+-- change). If you add or remove EC2 instances in your subnet, the port+-- mappings don\'t change, because the mappings are created when you add+-- the subnet to Global Accelerator.+--+-- The mappings also include a flag for each destination denoting which+-- destination IP addresses and ports are allowed or denied traffic.+--+-- This operation returns paginated results.+module Amazonka.GlobalAccelerator.ListCustomRoutingPortMappings+  ( -- * Creating a Request+    ListCustomRoutingPortMappings (..),+    newListCustomRoutingPortMappings,++    -- * Request Lenses+    listCustomRoutingPortMappings_endpointGroupArn,+    listCustomRoutingPortMappings_maxResults,+    listCustomRoutingPortMappings_nextToken,+    listCustomRoutingPortMappings_acceleratorArn,++    -- * Destructuring the Response+    ListCustomRoutingPortMappingsResponse (..),+    newListCustomRoutingPortMappingsResponse,++    -- * Response Lenses+    listCustomRoutingPortMappingsResponse_nextToken,+    listCustomRoutingPortMappingsResponse_portMappings,+    listCustomRoutingPortMappingsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListCustomRoutingPortMappings' smart constructor.+data ListCustomRoutingPortMappings = ListCustomRoutingPortMappings'+  { -- | The Amazon Resource Name (ARN) of the endpoint group to list the custom+    -- routing port mappings for.+    endpointGroupArn :: Prelude.Maybe Prelude.Text,+    -- | The number of destination port mappings that you want to return with+    -- this call. The default value is 10.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the accelerator to list the custom+    -- routing port mappings for.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCustomRoutingPortMappings' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroupArn', 'listCustomRoutingPortMappings_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group to list the custom+-- routing port mappings for.+--+-- 'maxResults', 'listCustomRoutingPortMappings_maxResults' - The number of destination port mappings that you want to return with+-- this call. The default value is 10.+--+-- 'nextToken', 'listCustomRoutingPortMappings_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'acceleratorArn', 'listCustomRoutingPortMappings_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator to list the custom+-- routing port mappings for.+newListCustomRoutingPortMappings ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  ListCustomRoutingPortMappings+newListCustomRoutingPortMappings pAcceleratorArn_ =+  ListCustomRoutingPortMappings'+    { endpointGroupArn =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      acceleratorArn = pAcceleratorArn_+    }++-- | The Amazon Resource Name (ARN) of the endpoint group to list the custom+-- routing port mappings for.+listCustomRoutingPortMappings_endpointGroupArn :: Lens.Lens' ListCustomRoutingPortMappings (Prelude.Maybe Prelude.Text)+listCustomRoutingPortMappings_endpointGroupArn = Lens.lens (\ListCustomRoutingPortMappings' {endpointGroupArn} -> endpointGroupArn) (\s@ListCustomRoutingPortMappings' {} a -> s {endpointGroupArn = a} :: ListCustomRoutingPortMappings)++-- | The number of destination port mappings that you want to return with+-- this call. The default value is 10.+listCustomRoutingPortMappings_maxResults :: Lens.Lens' ListCustomRoutingPortMappings (Prelude.Maybe Prelude.Natural)+listCustomRoutingPortMappings_maxResults = Lens.lens (\ListCustomRoutingPortMappings' {maxResults} -> maxResults) (\s@ListCustomRoutingPortMappings' {} a -> s {maxResults = a} :: ListCustomRoutingPortMappings)++-- | The token for the next set of results. You receive this token from a+-- previous call.+listCustomRoutingPortMappings_nextToken :: Lens.Lens' ListCustomRoutingPortMappings (Prelude.Maybe Prelude.Text)+listCustomRoutingPortMappings_nextToken = Lens.lens (\ListCustomRoutingPortMappings' {nextToken} -> nextToken) (\s@ListCustomRoutingPortMappings' {} a -> s {nextToken = a} :: ListCustomRoutingPortMappings)++-- | The Amazon Resource Name (ARN) of the accelerator to list the custom+-- routing port mappings for.+listCustomRoutingPortMappings_acceleratorArn :: Lens.Lens' ListCustomRoutingPortMappings Prelude.Text+listCustomRoutingPortMappings_acceleratorArn = Lens.lens (\ListCustomRoutingPortMappings' {acceleratorArn} -> acceleratorArn) (\s@ListCustomRoutingPortMappings' {} a -> s {acceleratorArn = a} :: ListCustomRoutingPortMappings)++instance Core.AWSPager ListCustomRoutingPortMappings where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listCustomRoutingPortMappingsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listCustomRoutingPortMappingsResponse_portMappings+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listCustomRoutingPortMappings_nextToken+          Lens..~ rs+          Lens.^? listCustomRoutingPortMappingsResponse_nextToken+          Prelude.. Lens._Just++instance+  Core.AWSRequest+    ListCustomRoutingPortMappings+  where+  type+    AWSResponse ListCustomRoutingPortMappings =+      ListCustomRoutingPortMappingsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListCustomRoutingPortMappingsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (x Data..?> "PortMappings" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    ListCustomRoutingPortMappings+  where+  hashWithSalt _salt ListCustomRoutingPortMappings' {..} =+    _salt+      `Prelude.hashWithSalt` endpointGroupArn+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` acceleratorArn++instance Prelude.NFData ListCustomRoutingPortMappings where+  rnf ListCustomRoutingPortMappings' {..} =+    Prelude.rnf endpointGroupArn+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf acceleratorArn++instance Data.ToHeaders ListCustomRoutingPortMappings where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ListCustomRoutingPortMappings" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListCustomRoutingPortMappings where+  toJSON ListCustomRoutingPortMappings' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("EndpointGroupArn" Data..=)+              Prelude.<$> endpointGroupArn,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath ListCustomRoutingPortMappings where+  toPath = Prelude.const "/"++instance Data.ToQuery ListCustomRoutingPortMappings where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListCustomRoutingPortMappingsResponse' smart constructor.+data ListCustomRoutingPortMappingsResponse = ListCustomRoutingPortMappingsResponse'+  { -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The port mappings for a custom routing accelerator.+    portMappings :: Prelude.Maybe [PortMapping],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCustomRoutingPortMappingsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listCustomRoutingPortMappingsResponse_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'portMappings', 'listCustomRoutingPortMappingsResponse_portMappings' - The port mappings for a custom routing accelerator.+--+-- 'httpStatus', 'listCustomRoutingPortMappingsResponse_httpStatus' - The response's http status code.+newListCustomRoutingPortMappingsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListCustomRoutingPortMappingsResponse+newListCustomRoutingPortMappingsResponse pHttpStatus_ =+  ListCustomRoutingPortMappingsResponse'+    { nextToken =+        Prelude.Nothing,+      portMappings = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The token for the next set of results. You receive this token from a+-- previous call.+listCustomRoutingPortMappingsResponse_nextToken :: Lens.Lens' ListCustomRoutingPortMappingsResponse (Prelude.Maybe Prelude.Text)+listCustomRoutingPortMappingsResponse_nextToken = Lens.lens (\ListCustomRoutingPortMappingsResponse' {nextToken} -> nextToken) (\s@ListCustomRoutingPortMappingsResponse' {} a -> s {nextToken = a} :: ListCustomRoutingPortMappingsResponse)++-- | The port mappings for a custom routing accelerator.+listCustomRoutingPortMappingsResponse_portMappings :: Lens.Lens' ListCustomRoutingPortMappingsResponse (Prelude.Maybe [PortMapping])+listCustomRoutingPortMappingsResponse_portMappings = Lens.lens (\ListCustomRoutingPortMappingsResponse' {portMappings} -> portMappings) (\s@ListCustomRoutingPortMappingsResponse' {} a -> s {portMappings = a} :: ListCustomRoutingPortMappingsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listCustomRoutingPortMappingsResponse_httpStatus :: Lens.Lens' ListCustomRoutingPortMappingsResponse Prelude.Int+listCustomRoutingPortMappingsResponse_httpStatus = Lens.lens (\ListCustomRoutingPortMappingsResponse' {httpStatus} -> httpStatus) (\s@ListCustomRoutingPortMappingsResponse' {} a -> s {httpStatus = a} :: ListCustomRoutingPortMappingsResponse)++instance+  Prelude.NFData+    ListCustomRoutingPortMappingsResponse+  where+  rnf ListCustomRoutingPortMappingsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf portMappings+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/ListCustomRoutingPortMappingsByDestination.hs view
@@ -0,0 +1,313 @@+{-# 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.GlobalAccelerator.ListCustomRoutingPortMappingsByDestination+-- 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 port mappings for a specific EC2 instance (destination) in a+-- VPC subnet endpoint. The response is the mappings for one destination IP+-- address. This is useful when your subnet endpoint has mappings that span+-- multiple custom routing accelerators in your account, or for scenarios+-- where you only want to list the port mappings for a specific destination+-- instance.+--+-- This operation returns paginated results.+module Amazonka.GlobalAccelerator.ListCustomRoutingPortMappingsByDestination+  ( -- * Creating a Request+    ListCustomRoutingPortMappingsByDestination (..),+    newListCustomRoutingPortMappingsByDestination,++    -- * Request Lenses+    listCustomRoutingPortMappingsByDestination_maxResults,+    listCustomRoutingPortMappingsByDestination_nextToken,+    listCustomRoutingPortMappingsByDestination_endpointId,+    listCustomRoutingPortMappingsByDestination_destinationAddress,++    -- * Destructuring the Response+    ListCustomRoutingPortMappingsByDestinationResponse (..),+    newListCustomRoutingPortMappingsByDestinationResponse,++    -- * Response Lenses+    listCustomRoutingPortMappingsByDestinationResponse_destinationPortMappings,+    listCustomRoutingPortMappingsByDestinationResponse_nextToken,+    listCustomRoutingPortMappingsByDestinationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListCustomRoutingPortMappingsByDestination' smart constructor.+data ListCustomRoutingPortMappingsByDestination = ListCustomRoutingPortMappingsByDestination'+  { -- | The number of destination port mappings that you want to return with+    -- this call. The default value is 10.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID for the virtual private cloud (VPC) subnet.+    endpointId :: Prelude.Text,+    -- | The endpoint IP address in a virtual private cloud (VPC) subnet for+    -- which you want to receive back port mappings.+    destinationAddress :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCustomRoutingPortMappingsByDestination' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listCustomRoutingPortMappingsByDestination_maxResults' - The number of destination port mappings that you want to return with+-- this call. The default value is 10.+--+-- 'nextToken', 'listCustomRoutingPortMappingsByDestination_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'endpointId', 'listCustomRoutingPortMappingsByDestination_endpointId' - The ID for the virtual private cloud (VPC) subnet.+--+-- 'destinationAddress', 'listCustomRoutingPortMappingsByDestination_destinationAddress' - The endpoint IP address in a virtual private cloud (VPC) subnet for+-- which you want to receive back port mappings.+newListCustomRoutingPortMappingsByDestination ::+  -- | 'endpointId'+  Prelude.Text ->+  -- | 'destinationAddress'+  Prelude.Text ->+  ListCustomRoutingPortMappingsByDestination+newListCustomRoutingPortMappingsByDestination+  pEndpointId_+  pDestinationAddress_ =+    ListCustomRoutingPortMappingsByDestination'+      { maxResults =+          Prelude.Nothing,+        nextToken = Prelude.Nothing,+        endpointId = pEndpointId_,+        destinationAddress =+          pDestinationAddress_+      }++-- | The number of destination port mappings that you want to return with+-- this call. The default value is 10.+listCustomRoutingPortMappingsByDestination_maxResults :: Lens.Lens' ListCustomRoutingPortMappingsByDestination (Prelude.Maybe Prelude.Natural)+listCustomRoutingPortMappingsByDestination_maxResults = Lens.lens (\ListCustomRoutingPortMappingsByDestination' {maxResults} -> maxResults) (\s@ListCustomRoutingPortMappingsByDestination' {} a -> s {maxResults = a} :: ListCustomRoutingPortMappingsByDestination)++-- | The token for the next set of results. You receive this token from a+-- previous call.+listCustomRoutingPortMappingsByDestination_nextToken :: Lens.Lens' ListCustomRoutingPortMappingsByDestination (Prelude.Maybe Prelude.Text)+listCustomRoutingPortMappingsByDestination_nextToken = Lens.lens (\ListCustomRoutingPortMappingsByDestination' {nextToken} -> nextToken) (\s@ListCustomRoutingPortMappingsByDestination' {} a -> s {nextToken = a} :: ListCustomRoutingPortMappingsByDestination)++-- | The ID for the virtual private cloud (VPC) subnet.+listCustomRoutingPortMappingsByDestination_endpointId :: Lens.Lens' ListCustomRoutingPortMappingsByDestination Prelude.Text+listCustomRoutingPortMappingsByDestination_endpointId = Lens.lens (\ListCustomRoutingPortMappingsByDestination' {endpointId} -> endpointId) (\s@ListCustomRoutingPortMappingsByDestination' {} a -> s {endpointId = a} :: ListCustomRoutingPortMappingsByDestination)++-- | The endpoint IP address in a virtual private cloud (VPC) subnet for+-- which you want to receive back port mappings.+listCustomRoutingPortMappingsByDestination_destinationAddress :: Lens.Lens' ListCustomRoutingPortMappingsByDestination Prelude.Text+listCustomRoutingPortMappingsByDestination_destinationAddress = Lens.lens (\ListCustomRoutingPortMappingsByDestination' {destinationAddress} -> destinationAddress) (\s@ListCustomRoutingPortMappingsByDestination' {} a -> s {destinationAddress = a} :: ListCustomRoutingPortMappingsByDestination)++instance+  Core.AWSPager+    ListCustomRoutingPortMappingsByDestination+  where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listCustomRoutingPortMappingsByDestinationResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listCustomRoutingPortMappingsByDestinationResponse_destinationPortMappings+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listCustomRoutingPortMappingsByDestination_nextToken+          Lens..~ rs+          Lens.^? listCustomRoutingPortMappingsByDestinationResponse_nextToken+          Prelude.. Lens._Just++instance+  Core.AWSRequest+    ListCustomRoutingPortMappingsByDestination+  where+  type+    AWSResponse+      ListCustomRoutingPortMappingsByDestination =+      ListCustomRoutingPortMappingsByDestinationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListCustomRoutingPortMappingsByDestinationResponse'+            Prelude.<$> ( x+                            Data..?> "DestinationPortMappings"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    ListCustomRoutingPortMappingsByDestination+  where+  hashWithSalt+    _salt+    ListCustomRoutingPortMappingsByDestination' {..} =+      _salt+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` endpointId+        `Prelude.hashWithSalt` destinationAddress++instance+  Prelude.NFData+    ListCustomRoutingPortMappingsByDestination+  where+  rnf ListCustomRoutingPortMappingsByDestination' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf endpointId+      `Prelude.seq` Prelude.rnf destinationAddress++instance+  Data.ToHeaders+    ListCustomRoutingPortMappingsByDestination+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ListCustomRoutingPortMappingsByDestination" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    ListCustomRoutingPortMappingsByDestination+  where+  toJSON+    ListCustomRoutingPortMappingsByDestination' {..} =+      Data.object+        ( Prelude.catMaybes+            [ ("MaxResults" Data..=) Prelude.<$> maxResults,+              ("NextToken" Data..=) Prelude.<$> nextToken,+              Prelude.Just ("EndpointId" Data..= endpointId),+              Prelude.Just+                ("DestinationAddress" Data..= destinationAddress)+            ]+        )++instance+  Data.ToPath+    ListCustomRoutingPortMappingsByDestination+  where+  toPath = Prelude.const "/"++instance+  Data.ToQuery+    ListCustomRoutingPortMappingsByDestination+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListCustomRoutingPortMappingsByDestinationResponse' smart constructor.+data ListCustomRoutingPortMappingsByDestinationResponse = ListCustomRoutingPortMappingsByDestinationResponse'+  { -- | The port mappings for the endpoint IP address that you specified in the+    -- request.+    destinationPortMappings :: Prelude.Maybe [DestinationPortMapping],+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCustomRoutingPortMappingsByDestinationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'destinationPortMappings', 'listCustomRoutingPortMappingsByDestinationResponse_destinationPortMappings' - The port mappings for the endpoint IP address that you specified in the+-- request.+--+-- 'nextToken', 'listCustomRoutingPortMappingsByDestinationResponse_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'httpStatus', 'listCustomRoutingPortMappingsByDestinationResponse_httpStatus' - The response's http status code.+newListCustomRoutingPortMappingsByDestinationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListCustomRoutingPortMappingsByDestinationResponse+newListCustomRoutingPortMappingsByDestinationResponse+  pHttpStatus_ =+    ListCustomRoutingPortMappingsByDestinationResponse'+      { destinationPortMappings =+          Prelude.Nothing,+        nextToken =+          Prelude.Nothing,+        httpStatus =+          pHttpStatus_+      }++-- | The port mappings for the endpoint IP address that you specified in the+-- request.+listCustomRoutingPortMappingsByDestinationResponse_destinationPortMappings :: Lens.Lens' ListCustomRoutingPortMappingsByDestinationResponse (Prelude.Maybe [DestinationPortMapping])+listCustomRoutingPortMappingsByDestinationResponse_destinationPortMappings = Lens.lens (\ListCustomRoutingPortMappingsByDestinationResponse' {destinationPortMappings} -> destinationPortMappings) (\s@ListCustomRoutingPortMappingsByDestinationResponse' {} a -> s {destinationPortMappings = a} :: ListCustomRoutingPortMappingsByDestinationResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results. You receive this token from a+-- previous call.+listCustomRoutingPortMappingsByDestinationResponse_nextToken :: Lens.Lens' ListCustomRoutingPortMappingsByDestinationResponse (Prelude.Maybe Prelude.Text)+listCustomRoutingPortMappingsByDestinationResponse_nextToken = Lens.lens (\ListCustomRoutingPortMappingsByDestinationResponse' {nextToken} -> nextToken) (\s@ListCustomRoutingPortMappingsByDestinationResponse' {} a -> s {nextToken = a} :: ListCustomRoutingPortMappingsByDestinationResponse)++-- | The response's http status code.+listCustomRoutingPortMappingsByDestinationResponse_httpStatus :: Lens.Lens' ListCustomRoutingPortMappingsByDestinationResponse Prelude.Int+listCustomRoutingPortMappingsByDestinationResponse_httpStatus = Lens.lens (\ListCustomRoutingPortMappingsByDestinationResponse' {httpStatus} -> httpStatus) (\s@ListCustomRoutingPortMappingsByDestinationResponse' {} a -> s {httpStatus = a} :: ListCustomRoutingPortMappingsByDestinationResponse)++instance+  Prelude.NFData+    ListCustomRoutingPortMappingsByDestinationResponse+  where+  rnf+    ListCustomRoutingPortMappingsByDestinationResponse' {..} =+      Prelude.rnf destinationPortMappings+        `Prelude.seq` Prelude.rnf nextToken+        `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/ListEndpointGroups.hs view
@@ -0,0 +1,244 @@+{-# 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.GlobalAccelerator.ListEndpointGroups+-- 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 endpoint groups that are associated with a listener.+--+-- This operation returns paginated results.+module Amazonka.GlobalAccelerator.ListEndpointGroups+  ( -- * Creating a Request+    ListEndpointGroups (..),+    newListEndpointGroups,++    -- * Request Lenses+    listEndpointGroups_maxResults,+    listEndpointGroups_nextToken,+    listEndpointGroups_listenerArn,++    -- * Destructuring the Response+    ListEndpointGroupsResponse (..),+    newListEndpointGroupsResponse,++    -- * Response Lenses+    listEndpointGroupsResponse_endpointGroups,+    listEndpointGroupsResponse_nextToken,+    listEndpointGroupsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListEndpointGroups' smart constructor.+data ListEndpointGroups = ListEndpointGroups'+  { -- | The number of endpoint group objects that you want to return with this+    -- call. The default value is 10.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the listener.+    listenerArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListEndpointGroups' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listEndpointGroups_maxResults' - The number of endpoint group objects that you want to return with this+-- call. The default value is 10.+--+-- 'nextToken', 'listEndpointGroups_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'listenerArn', 'listEndpointGroups_listenerArn' - The Amazon Resource Name (ARN) of the listener.+newListEndpointGroups ::+  -- | 'listenerArn'+  Prelude.Text ->+  ListEndpointGroups+newListEndpointGroups pListenerArn_ =+  ListEndpointGroups'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      listenerArn = pListenerArn_+    }++-- | The number of endpoint group objects that you want to return with this+-- call. The default value is 10.+listEndpointGroups_maxResults :: Lens.Lens' ListEndpointGroups (Prelude.Maybe Prelude.Natural)+listEndpointGroups_maxResults = Lens.lens (\ListEndpointGroups' {maxResults} -> maxResults) (\s@ListEndpointGroups' {} a -> s {maxResults = a} :: ListEndpointGroups)++-- | The token for the next set of results. You receive this token from a+-- previous call.+listEndpointGroups_nextToken :: Lens.Lens' ListEndpointGroups (Prelude.Maybe Prelude.Text)+listEndpointGroups_nextToken = Lens.lens (\ListEndpointGroups' {nextToken} -> nextToken) (\s@ListEndpointGroups' {} a -> s {nextToken = a} :: ListEndpointGroups)++-- | The Amazon Resource Name (ARN) of the listener.+listEndpointGroups_listenerArn :: Lens.Lens' ListEndpointGroups Prelude.Text+listEndpointGroups_listenerArn = Lens.lens (\ListEndpointGroups' {listenerArn} -> listenerArn) (\s@ListEndpointGroups' {} a -> s {listenerArn = a} :: ListEndpointGroups)++instance Core.AWSPager ListEndpointGroups where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listEndpointGroupsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listEndpointGroupsResponse_endpointGroups+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listEndpointGroups_nextToken+          Lens..~ rs+          Lens.^? listEndpointGroupsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListEndpointGroups where+  type+    AWSResponse ListEndpointGroups =+      ListEndpointGroupsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListEndpointGroupsResponse'+            Prelude.<$> (x Data..?> "EndpointGroups" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListEndpointGroups where+  hashWithSalt _salt ListEndpointGroups' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` listenerArn++instance Prelude.NFData ListEndpointGroups where+  rnf ListEndpointGroups' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf listenerArn++instance Data.ToHeaders ListEndpointGroups where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ListEndpointGroups" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListEndpointGroups where+  toJSON ListEndpointGroups' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("ListenerArn" Data..= listenerArn)+          ]+      )++instance Data.ToPath ListEndpointGroups where+  toPath = Prelude.const "/"++instance Data.ToQuery ListEndpointGroups where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListEndpointGroupsResponse' smart constructor.+data ListEndpointGroupsResponse = ListEndpointGroupsResponse'+  { -- | The list of the endpoint groups associated with a listener.+    endpointGroups :: Prelude.Maybe [EndpointGroup],+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListEndpointGroupsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroups', 'listEndpointGroupsResponse_endpointGroups' - The list of the endpoint groups associated with a listener.+--+-- 'nextToken', 'listEndpointGroupsResponse_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'httpStatus', 'listEndpointGroupsResponse_httpStatus' - The response's http status code.+newListEndpointGroupsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListEndpointGroupsResponse+newListEndpointGroupsResponse pHttpStatus_ =+  ListEndpointGroupsResponse'+    { endpointGroups =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of the endpoint groups associated with a listener.+listEndpointGroupsResponse_endpointGroups :: Lens.Lens' ListEndpointGroupsResponse (Prelude.Maybe [EndpointGroup])+listEndpointGroupsResponse_endpointGroups = Lens.lens (\ListEndpointGroupsResponse' {endpointGroups} -> endpointGroups) (\s@ListEndpointGroupsResponse' {} a -> s {endpointGroups = a} :: ListEndpointGroupsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results. You receive this token from a+-- previous call.+listEndpointGroupsResponse_nextToken :: Lens.Lens' ListEndpointGroupsResponse (Prelude.Maybe Prelude.Text)+listEndpointGroupsResponse_nextToken = Lens.lens (\ListEndpointGroupsResponse' {nextToken} -> nextToken) (\s@ListEndpointGroupsResponse' {} a -> s {nextToken = a} :: ListEndpointGroupsResponse)++-- | The response's http status code.+listEndpointGroupsResponse_httpStatus :: Lens.Lens' ListEndpointGroupsResponse Prelude.Int+listEndpointGroupsResponse_httpStatus = Lens.lens (\ListEndpointGroupsResponse' {httpStatus} -> httpStatus) (\s@ListEndpointGroupsResponse' {} a -> s {httpStatus = a} :: ListEndpointGroupsResponse)++instance Prelude.NFData ListEndpointGroupsResponse where+  rnf ListEndpointGroupsResponse' {..} =+    Prelude.rnf endpointGroups+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/ListListeners.hs view
@@ -0,0 +1,247 @@+{-# 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.GlobalAccelerator.ListListeners+-- 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 listeners for an accelerator.+--+-- This operation returns paginated results.+module Amazonka.GlobalAccelerator.ListListeners+  ( -- * Creating a Request+    ListListeners (..),+    newListListeners,++    -- * Request Lenses+    listListeners_maxResults,+    listListeners_nextToken,+    listListeners_acceleratorArn,++    -- * Destructuring the Response+    ListListenersResponse (..),+    newListListenersResponse,++    -- * Response Lenses+    listListenersResponse_listeners,+    listListenersResponse_nextToken,+    listListenersResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListListeners' smart constructor.+data ListListeners = ListListeners'+  { -- | The number of listener objects that you want to return with this call.+    -- The default value is 10.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the accelerator for which you want to+    -- list listener objects.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListListeners' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listListeners_maxResults' - The number of listener objects that you want to return with this call.+-- The default value is 10.+--+-- 'nextToken', 'listListeners_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'acceleratorArn', 'listListeners_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator for which you want to+-- list listener objects.+newListListeners ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  ListListeners+newListListeners pAcceleratorArn_ =+  ListListeners'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      acceleratorArn = pAcceleratorArn_+    }++-- | The number of listener objects that you want to return with this call.+-- The default value is 10.+listListeners_maxResults :: Lens.Lens' ListListeners (Prelude.Maybe Prelude.Natural)+listListeners_maxResults = Lens.lens (\ListListeners' {maxResults} -> maxResults) (\s@ListListeners' {} a -> s {maxResults = a} :: ListListeners)++-- | The token for the next set of results. You receive this token from a+-- previous call.+listListeners_nextToken :: Lens.Lens' ListListeners (Prelude.Maybe Prelude.Text)+listListeners_nextToken = Lens.lens (\ListListeners' {nextToken} -> nextToken) (\s@ListListeners' {} a -> s {nextToken = a} :: ListListeners)++-- | The Amazon Resource Name (ARN) of the accelerator for which you want to+-- list listener objects.+listListeners_acceleratorArn :: Lens.Lens' ListListeners Prelude.Text+listListeners_acceleratorArn = Lens.lens (\ListListeners' {acceleratorArn} -> acceleratorArn) (\s@ListListeners' {} a -> s {acceleratorArn = a} :: ListListeners)++instance Core.AWSPager ListListeners where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listListenersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listListenersResponse_listeners+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listListeners_nextToken+          Lens..~ rs+          Lens.^? listListenersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListListeners where+  type+    AWSResponse ListListeners =+      ListListenersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListListenersResponse'+            Prelude.<$> (x Data..?> "Listeners" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListListeners where+  hashWithSalt _salt ListListeners' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` acceleratorArn++instance Prelude.NFData ListListeners where+  rnf ListListeners' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf acceleratorArn++instance Data.ToHeaders ListListeners where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ListListeners" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListListeners where+  toJSON ListListeners' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath ListListeners where+  toPath = Prelude.const "/"++instance Data.ToQuery ListListeners where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListListenersResponse' smart constructor.+data ListListenersResponse = ListListenersResponse'+  { -- | The list of listeners for an accelerator.+    listeners :: Prelude.Maybe [Listener],+    -- | The token for the next set of results. You receive this token from a+    -- previous call.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListListenersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listListenersResponse_listeners' - The list of listeners for an accelerator.+--+-- 'nextToken', 'listListenersResponse_nextToken' - The token for the next set of results. You receive this token from a+-- previous call.+--+-- 'httpStatus', 'listListenersResponse_httpStatus' - The response's http status code.+newListListenersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListListenersResponse+newListListenersResponse pHttpStatus_ =+  ListListenersResponse'+    { listeners = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of listeners for an accelerator.+listListenersResponse_listeners :: Lens.Lens' ListListenersResponse (Prelude.Maybe [Listener])+listListenersResponse_listeners = Lens.lens (\ListListenersResponse' {listeners} -> listeners) (\s@ListListenersResponse' {} a -> s {listeners = a} :: ListListenersResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results. You receive this token from a+-- previous call.+listListenersResponse_nextToken :: Lens.Lens' ListListenersResponse (Prelude.Maybe Prelude.Text)+listListenersResponse_nextToken = Lens.lens (\ListListenersResponse' {nextToken} -> nextToken) (\s@ListListenersResponse' {} a -> s {nextToken = a} :: ListListenersResponse)++-- | The response's http status code.+listListenersResponse_httpStatus :: Lens.Lens' ListListenersResponse Prelude.Int+listListenersResponse_httpStatus = Lens.lens (\ListListenersResponse' {httpStatus} -> httpStatus) (\s@ListListenersResponse' {} a -> s {httpStatus = a} :: ListListenersResponse)++instance Prelude.NFData ListListenersResponse where+  rnf ListListenersResponse' {..} =+    Prelude.rnf listeners+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/ListTagsForResource.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.GlobalAccelerator.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 all tags for an accelerator.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/tagging-in-global-accelerator.html Tagging in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+module Amazonka.GlobalAccelerator.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+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 Amazon Resource Name (ARN) of the accelerator to list tags for. An+    -- ARN uniquely identifies an accelerator.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the accelerator to list tags for. An+-- ARN uniquely identifies an accelerator.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) of the accelerator to list tags for. An+-- ARN uniquely identifies an accelerator.+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)++instance Core.AWSRequest ListTagsForResource where+  type+    AWSResponse ListTagsForResource =+      ListTagsForResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTagsForResourceResponse'+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTagsForResource where+  hashWithSalt _salt ListTagsForResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTagsForResource where+  rnf ListTagsForResource' {..} =+    Prelude.rnf resourceArn++instance Data.ToHeaders ListTagsForResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ListTagsForResource" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListTagsForResource where+  toJSON ListTagsForResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ResourceArn" Data..= resourceArn)]+      )++instance Data.ToPath ListTagsForResource where+  toPath = Prelude.const "/"++instance Data.ToQuery ListTagsForResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | Root level tag for the Tags parameters.+    tags :: Prelude.Maybe [Tag],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tags', 'listTagsForResourceResponse_tags' - Root level tag for the Tags parameters.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Root level tag for the Tags parameters.+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe [Tag])+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/ProvisionByoipCidr.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.GlobalAccelerator.ProvisionByoipCidr+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Provisions an IP address range to use with your Amazon Web Services+-- resources through bring your own IP addresses (BYOIP) and creates a+-- corresponding address pool. After the address range is provisioned, it+-- is ready to be advertised using+-- <https://docs.aws.amazon.com/global-accelerator/latest/api/AdvertiseByoipCidr.html AdvertiseByoipCidr>.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+-- in the /Global Accelerator Developer Guide/.+module Amazonka.GlobalAccelerator.ProvisionByoipCidr+  ( -- * Creating a Request+    ProvisionByoipCidr (..),+    newProvisionByoipCidr,++    -- * Request Lenses+    provisionByoipCidr_cidr,+    provisionByoipCidr_cidrAuthorizationContext,++    -- * Destructuring the Response+    ProvisionByoipCidrResponse (..),+    newProvisionByoipCidrResponse,++    -- * Response Lenses+    provisionByoipCidrResponse_byoipCidr,+    provisionByoipCidrResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newProvisionByoipCidr' smart constructor.+data ProvisionByoipCidr = ProvisionByoipCidr'+  { -- | The public IPv4 address range, in CIDR notation. The most specific IP+    -- prefix that you can specify is \/24. The address range cannot overlap+    -- with another address range that you\'ve brought to this or another+    -- Region.+    cidr :: Prelude.Text,+    -- | A signed document that proves that you are authorized to bring the+    -- specified IP address range to Amazon using BYOIP.+    cidrAuthorizationContext :: CidrAuthorizationContext+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProvisionByoipCidr' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cidr', 'provisionByoipCidr_cidr' - The public IPv4 address range, in CIDR notation. The most specific IP+-- prefix that you can specify is \/24. The address range cannot overlap+-- with another address range that you\'ve brought to this or another+-- Region.+--+-- 'cidrAuthorizationContext', 'provisionByoipCidr_cidrAuthorizationContext' - A signed document that proves that you are authorized to bring the+-- specified IP address range to Amazon using BYOIP.+newProvisionByoipCidr ::+  -- | 'cidr'+  Prelude.Text ->+  -- | 'cidrAuthorizationContext'+  CidrAuthorizationContext ->+  ProvisionByoipCidr+newProvisionByoipCidr+  pCidr_+  pCidrAuthorizationContext_ =+    ProvisionByoipCidr'+      { cidr = pCidr_,+        cidrAuthorizationContext =+          pCidrAuthorizationContext_+      }++-- | The public IPv4 address range, in CIDR notation. The most specific IP+-- prefix that you can specify is \/24. The address range cannot overlap+-- with another address range that you\'ve brought to this or another+-- Region.+provisionByoipCidr_cidr :: Lens.Lens' ProvisionByoipCidr Prelude.Text+provisionByoipCidr_cidr = Lens.lens (\ProvisionByoipCidr' {cidr} -> cidr) (\s@ProvisionByoipCidr' {} a -> s {cidr = a} :: ProvisionByoipCidr)++-- | A signed document that proves that you are authorized to bring the+-- specified IP address range to Amazon using BYOIP.+provisionByoipCidr_cidrAuthorizationContext :: Lens.Lens' ProvisionByoipCidr CidrAuthorizationContext+provisionByoipCidr_cidrAuthorizationContext = Lens.lens (\ProvisionByoipCidr' {cidrAuthorizationContext} -> cidrAuthorizationContext) (\s@ProvisionByoipCidr' {} a -> s {cidrAuthorizationContext = a} :: ProvisionByoipCidr)++instance Core.AWSRequest ProvisionByoipCidr where+  type+    AWSResponse ProvisionByoipCidr =+      ProvisionByoipCidrResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ProvisionByoipCidrResponse'+            Prelude.<$> (x Data..?> "ByoipCidr")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ProvisionByoipCidr where+  hashWithSalt _salt ProvisionByoipCidr' {..} =+    _salt+      `Prelude.hashWithSalt` cidr+      `Prelude.hashWithSalt` cidrAuthorizationContext++instance Prelude.NFData ProvisionByoipCidr where+  rnf ProvisionByoipCidr' {..} =+    Prelude.rnf cidr+      `Prelude.seq` Prelude.rnf cidrAuthorizationContext++instance Data.ToHeaders ProvisionByoipCidr where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.ProvisionByoipCidr" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ProvisionByoipCidr where+  toJSON ProvisionByoipCidr' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Cidr" Data..= cidr),+            Prelude.Just+              ( "CidrAuthorizationContext"+                  Data..= cidrAuthorizationContext+              )+          ]+      )++instance Data.ToPath ProvisionByoipCidr where+  toPath = Prelude.const "/"++instance Data.ToQuery ProvisionByoipCidr where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newProvisionByoipCidrResponse' smart constructor.+data ProvisionByoipCidrResponse = ProvisionByoipCidrResponse'+  { -- | Information about the address range.+    byoipCidr :: Prelude.Maybe ByoipCidr,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProvisionByoipCidrResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'byoipCidr', 'provisionByoipCidrResponse_byoipCidr' - Information about the address range.+--+-- 'httpStatus', 'provisionByoipCidrResponse_httpStatus' - The response's http status code.+newProvisionByoipCidrResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ProvisionByoipCidrResponse+newProvisionByoipCidrResponse pHttpStatus_ =+  ProvisionByoipCidrResponse'+    { byoipCidr =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the address range.+provisionByoipCidrResponse_byoipCidr :: Lens.Lens' ProvisionByoipCidrResponse (Prelude.Maybe ByoipCidr)+provisionByoipCidrResponse_byoipCidr = Lens.lens (\ProvisionByoipCidrResponse' {byoipCidr} -> byoipCidr) (\s@ProvisionByoipCidrResponse' {} a -> s {byoipCidr = a} :: ProvisionByoipCidrResponse)++-- | The response's http status code.+provisionByoipCidrResponse_httpStatus :: Lens.Lens' ProvisionByoipCidrResponse Prelude.Int+provisionByoipCidrResponse_httpStatus = Lens.lens (\ProvisionByoipCidrResponse' {httpStatus} -> httpStatus) (\s@ProvisionByoipCidrResponse' {} a -> s {httpStatus = a} :: ProvisionByoipCidrResponse)++instance Prelude.NFData ProvisionByoipCidrResponse where+  rnf ProvisionByoipCidrResponse' {..} =+    Prelude.rnf byoipCidr+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/RemoveCustomRoutingEndpoints.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.GlobalAccelerator.RemoveCustomRoutingEndpoints+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Remove endpoints from a custom routing accelerator.+module Amazonka.GlobalAccelerator.RemoveCustomRoutingEndpoints+  ( -- * Creating a Request+    RemoveCustomRoutingEndpoints (..),+    newRemoveCustomRoutingEndpoints,++    -- * Request Lenses+    removeCustomRoutingEndpoints_endpointIds,+    removeCustomRoutingEndpoints_endpointGroupArn,++    -- * Destructuring the Response+    RemoveCustomRoutingEndpointsResponse (..),+    newRemoveCustomRoutingEndpointsResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newRemoveCustomRoutingEndpoints' smart constructor.+data RemoveCustomRoutingEndpoints = RemoveCustomRoutingEndpoints'+  { -- | The IDs for the endpoints. For custom routing accelerators, endpoint IDs+    -- are the virtual private cloud (VPC) subnet IDs.+    endpointIds :: [Prelude.Text],+    -- | The Amazon Resource Name (ARN) of the endpoint group to remove endpoints+    -- from.+    endpointGroupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemoveCustomRoutingEndpoints' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointIds', 'removeCustomRoutingEndpoints_endpointIds' - The IDs for the endpoints. For custom routing accelerators, endpoint IDs+-- are the virtual private cloud (VPC) subnet IDs.+--+-- 'endpointGroupArn', 'removeCustomRoutingEndpoints_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group to remove endpoints+-- from.+newRemoveCustomRoutingEndpoints ::+  -- | 'endpointGroupArn'+  Prelude.Text ->+  RemoveCustomRoutingEndpoints+newRemoveCustomRoutingEndpoints pEndpointGroupArn_ =+  RemoveCustomRoutingEndpoints'+    { endpointIds =+        Prelude.mempty,+      endpointGroupArn = pEndpointGroupArn_+    }++-- | The IDs for the endpoints. For custom routing accelerators, endpoint IDs+-- are the virtual private cloud (VPC) subnet IDs.+removeCustomRoutingEndpoints_endpointIds :: Lens.Lens' RemoveCustomRoutingEndpoints [Prelude.Text]+removeCustomRoutingEndpoints_endpointIds = Lens.lens (\RemoveCustomRoutingEndpoints' {endpointIds} -> endpointIds) (\s@RemoveCustomRoutingEndpoints' {} a -> s {endpointIds = a} :: RemoveCustomRoutingEndpoints) Prelude.. Lens.coerced++-- | The Amazon Resource Name (ARN) of the endpoint group to remove endpoints+-- from.+removeCustomRoutingEndpoints_endpointGroupArn :: Lens.Lens' RemoveCustomRoutingEndpoints Prelude.Text+removeCustomRoutingEndpoints_endpointGroupArn = Lens.lens (\RemoveCustomRoutingEndpoints' {endpointGroupArn} -> endpointGroupArn) (\s@RemoveCustomRoutingEndpoints' {} a -> s {endpointGroupArn = a} :: RemoveCustomRoutingEndpoints)++instance Core.AWSRequest RemoveCustomRoutingEndpoints where+  type+    AWSResponse RemoveCustomRoutingEndpoints =+      RemoveCustomRoutingEndpointsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      RemoveCustomRoutingEndpointsResponse'++instance+  Prelude.Hashable+    RemoveCustomRoutingEndpoints+  where+  hashWithSalt _salt RemoveCustomRoutingEndpoints' {..} =+    _salt+      `Prelude.hashWithSalt` endpointIds+      `Prelude.hashWithSalt` endpointGroupArn++instance Prelude.NFData RemoveCustomRoutingEndpoints where+  rnf RemoveCustomRoutingEndpoints' {..} =+    Prelude.rnf endpointIds+      `Prelude.seq` Prelude.rnf endpointGroupArn++instance Data.ToHeaders RemoveCustomRoutingEndpoints where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.RemoveCustomRoutingEndpoints" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON RemoveCustomRoutingEndpoints where+  toJSON RemoveCustomRoutingEndpoints' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("EndpointIds" Data..= endpointIds),+            Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn)+          ]+      )++instance Data.ToPath RemoveCustomRoutingEndpoints where+  toPath = Prelude.const "/"++instance Data.ToQuery RemoveCustomRoutingEndpoints where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newRemoveCustomRoutingEndpointsResponse' smart constructor.+data RemoveCustomRoutingEndpointsResponse = RemoveCustomRoutingEndpointsResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemoveCustomRoutingEndpointsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newRemoveCustomRoutingEndpointsResponse ::+  RemoveCustomRoutingEndpointsResponse+newRemoveCustomRoutingEndpointsResponse =+  RemoveCustomRoutingEndpointsResponse'++instance+  Prelude.NFData+    RemoveCustomRoutingEndpointsResponse+  where+  rnf _ = ()
+ gen/Amazonka/GlobalAccelerator/RemoveEndpoints.hs view
@@ -0,0 +1,174 @@+{-# 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.GlobalAccelerator.RemoveEndpoints+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Remove endpoints from an endpoint group.+--+-- The @RemoveEndpoints@ API operation is the recommended option for+-- removing endpoints. The alternative is to remove endpoints by updating+-- an endpoint group by using the+-- <https://docs.aws.amazon.com/global-accelerator/latest/api/API_UpdateEndpointGroup.html UpdateEndpointGroup>+-- API operation. There are two advantages to using @AddEndpoints@ to+-- remove endpoints instead:+--+-- -   It\'s more convenient, because you only need to specify the+--     endpoints that you want to remove. With the @UpdateEndpointGroup@+--     API operation, you must specify all of the endpoints in the endpoint+--     group except the ones that you want to remove from the group.+--+-- -   It\'s faster, because Global Accelerator doesn\'t need to resolve+--     any endpoints. With the @UpdateEndpointGroup@ API operation, Global+--     Accelerator must resolve all of the endpoints that remain in the+--     group.+module Amazonka.GlobalAccelerator.RemoveEndpoints+  ( -- * Creating a Request+    RemoveEndpoints (..),+    newRemoveEndpoints,++    -- * Request Lenses+    removeEndpoints_endpointIdentifiers,+    removeEndpoints_endpointGroupArn,++    -- * Destructuring the Response+    RemoveEndpointsResponse (..),+    newRemoveEndpointsResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newRemoveEndpoints' smart constructor.+data RemoveEndpoints = RemoveEndpoints'+  { -- | The identifiers of the endpoints that you want to remove.+    endpointIdentifiers :: Prelude.NonEmpty EndpointIdentifier,+    -- | The Amazon Resource Name (ARN) of the endpoint group.+    endpointGroupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemoveEndpoints' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointIdentifiers', 'removeEndpoints_endpointIdentifiers' - The identifiers of the endpoints that you want to remove.+--+-- 'endpointGroupArn', 'removeEndpoints_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group.+newRemoveEndpoints ::+  -- | 'endpointIdentifiers'+  Prelude.NonEmpty EndpointIdentifier ->+  -- | 'endpointGroupArn'+  Prelude.Text ->+  RemoveEndpoints+newRemoveEndpoints+  pEndpointIdentifiers_+  pEndpointGroupArn_ =+    RemoveEndpoints'+      { endpointIdentifiers =+          Lens.coerced Lens.# pEndpointIdentifiers_,+        endpointGroupArn = pEndpointGroupArn_+      }++-- | The identifiers of the endpoints that you want to remove.+removeEndpoints_endpointIdentifiers :: Lens.Lens' RemoveEndpoints (Prelude.NonEmpty EndpointIdentifier)+removeEndpoints_endpointIdentifiers = Lens.lens (\RemoveEndpoints' {endpointIdentifiers} -> endpointIdentifiers) (\s@RemoveEndpoints' {} a -> s {endpointIdentifiers = a} :: RemoveEndpoints) Prelude.. Lens.coerced++-- | The Amazon Resource Name (ARN) of the endpoint group.+removeEndpoints_endpointGroupArn :: Lens.Lens' RemoveEndpoints Prelude.Text+removeEndpoints_endpointGroupArn = Lens.lens (\RemoveEndpoints' {endpointGroupArn} -> endpointGroupArn) (\s@RemoveEndpoints' {} a -> s {endpointGroupArn = a} :: RemoveEndpoints)++instance Core.AWSRequest RemoveEndpoints where+  type+    AWSResponse RemoveEndpoints =+      RemoveEndpointsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull RemoveEndpointsResponse'++instance Prelude.Hashable RemoveEndpoints where+  hashWithSalt _salt RemoveEndpoints' {..} =+    _salt+      `Prelude.hashWithSalt` endpointIdentifiers+      `Prelude.hashWithSalt` endpointGroupArn++instance Prelude.NFData RemoveEndpoints where+  rnf RemoveEndpoints' {..} =+    Prelude.rnf endpointIdentifiers+      `Prelude.seq` Prelude.rnf endpointGroupArn++instance Data.ToHeaders RemoveEndpoints where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.RemoveEndpoints" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON RemoveEndpoints where+  toJSON RemoveEndpoints' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("EndpointIdentifiers" Data..= endpointIdentifiers),+            Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn)+          ]+      )++instance Data.ToPath RemoveEndpoints where+  toPath = Prelude.const "/"++instance Data.ToQuery RemoveEndpoints where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newRemoveEndpointsResponse' smart constructor.+data RemoveEndpointsResponse = RemoveEndpointsResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemoveEndpointsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newRemoveEndpointsResponse ::+  RemoveEndpointsResponse+newRemoveEndpointsResponse = RemoveEndpointsResponse'++instance Prelude.NFData RemoveEndpointsResponse where+  rnf _ = ()
+ gen/Amazonka/GlobalAccelerator/TagResource.hs view
@@ -0,0 +1,178 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.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)+--+-- Add tags to an accelerator resource.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/tagging-in-global-accelerator.html Tagging in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+module Amazonka.GlobalAccelerator.TagResource+  ( -- * Creating a Request+    TagResource (..),+    newTagResource,++    -- * Request Lenses+    tagResource_resourceArn,+    tagResource_tags,++    -- * Destructuring the Response+    TagResourceResponse (..),+    newTagResourceResponse,++    -- * Response Lenses+    tagResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the Global Accelerator resource to add+    -- tags to. An ARN uniquely identifies a resource.+    resourceArn :: Prelude.Text,+    -- | The tags to add to a resource. A tag consists of a key and a value that+    -- you define.+    tags :: [Tag]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the Global Accelerator resource to add+-- tags to. An ARN uniquely identifies a resource.+--+-- 'tags', 'tagResource_tags' - The tags to add to a resource. A tag consists of a key and a value that+-- you define.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the Global Accelerator resource to add+-- tags to. An ARN uniquely identifies a resource.+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 a resource. A tag consists of a key and a value that+-- you define.+tagResource_tags :: Lens.Lens' TagResource [Tag]+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced++instance Core.AWSRequest TagResource where+  type AWSResponse TagResource = TagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          TagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TagResource where+  hashWithSalt _salt TagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData TagResource where+  rnf TagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders TagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.TagResource" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),+            Prelude.Just ("Tags" Data..= tags)+          ]+      )++instance Data.ToPath TagResource where+  toPath = Prelude.const "/"++instance Data.ToQuery TagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | 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/GlobalAccelerator/Types.hs view
@@ -0,0 +1,529 @@+{-# 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.GlobalAccelerator.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.GlobalAccelerator.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AcceleratorNotDisabledException,+    _AcceleratorNotFoundException,+    _AccessDeniedException,+    _AssociatedEndpointGroupFoundException,+    _AssociatedListenerFoundException,+    _ByoipCidrNotFoundException,+    _ConflictException,+    _EndpointAlreadyExistsException,+    _EndpointGroupAlreadyExistsException,+    _EndpointGroupNotFoundException,+    _EndpointNotFoundException,+    _IncorrectCidrStateException,+    _InternalServiceErrorException,+    _InvalidArgumentException,+    _InvalidNextTokenException,+    _InvalidPortRangeException,+    _LimitExceededException,+    _ListenerNotFoundException,+    _TransactionInProgressException,++    -- * AcceleratorStatus+    AcceleratorStatus (..),++    -- * ByoipCidrState+    ByoipCidrState (..),++    -- * ClientAffinity+    ClientAffinity (..),++    -- * CustomRoutingAcceleratorStatus+    CustomRoutingAcceleratorStatus (..),++    -- * CustomRoutingDestinationTrafficState+    CustomRoutingDestinationTrafficState (..),++    -- * CustomRoutingProtocol+    CustomRoutingProtocol (..),++    -- * HealthCheckProtocol+    HealthCheckProtocol (..),++    -- * HealthState+    HealthState (..),++    -- * IpAddressFamily+    IpAddressFamily (..),++    -- * IpAddressType+    IpAddressType (..),++    -- * Protocol+    Protocol (..),++    -- * Accelerator+    Accelerator (..),+    newAccelerator,+    accelerator_acceleratorArn,+    accelerator_createdTime,+    accelerator_dnsName,+    accelerator_dualStackDnsName,+    accelerator_enabled,+    accelerator_events,+    accelerator_ipAddressType,+    accelerator_ipSets,+    accelerator_lastModifiedTime,+    accelerator_name,+    accelerator_status,++    -- * AcceleratorAttributes+    AcceleratorAttributes (..),+    newAcceleratorAttributes,+    acceleratorAttributes_flowLogsEnabled,+    acceleratorAttributes_flowLogsS3Bucket,+    acceleratorAttributes_flowLogsS3Prefix,++    -- * AcceleratorEvent+    AcceleratorEvent (..),+    newAcceleratorEvent,+    acceleratorEvent_message,+    acceleratorEvent_timestamp,++    -- * ByoipCidr+    ByoipCidr (..),+    newByoipCidr,+    byoipCidr_cidr,+    byoipCidr_events,+    byoipCidr_state,++    -- * ByoipCidrEvent+    ByoipCidrEvent (..),+    newByoipCidrEvent,+    byoipCidrEvent_message,+    byoipCidrEvent_timestamp,++    -- * CidrAuthorizationContext+    CidrAuthorizationContext (..),+    newCidrAuthorizationContext,+    cidrAuthorizationContext_message,+    cidrAuthorizationContext_signature,++    -- * CustomRoutingAccelerator+    CustomRoutingAccelerator (..),+    newCustomRoutingAccelerator,+    customRoutingAccelerator_acceleratorArn,+    customRoutingAccelerator_createdTime,+    customRoutingAccelerator_dnsName,+    customRoutingAccelerator_enabled,+    customRoutingAccelerator_ipAddressType,+    customRoutingAccelerator_ipSets,+    customRoutingAccelerator_lastModifiedTime,+    customRoutingAccelerator_name,+    customRoutingAccelerator_status,++    -- * CustomRoutingAcceleratorAttributes+    CustomRoutingAcceleratorAttributes (..),+    newCustomRoutingAcceleratorAttributes,+    customRoutingAcceleratorAttributes_flowLogsEnabled,+    customRoutingAcceleratorAttributes_flowLogsS3Bucket,+    customRoutingAcceleratorAttributes_flowLogsS3Prefix,++    -- * CustomRoutingDestinationConfiguration+    CustomRoutingDestinationConfiguration (..),+    newCustomRoutingDestinationConfiguration,+    customRoutingDestinationConfiguration_fromPort,+    customRoutingDestinationConfiguration_toPort,+    customRoutingDestinationConfiguration_protocols,++    -- * CustomRoutingDestinationDescription+    CustomRoutingDestinationDescription (..),+    newCustomRoutingDestinationDescription,+    customRoutingDestinationDescription_fromPort,+    customRoutingDestinationDescription_protocols,+    customRoutingDestinationDescription_toPort,++    -- * CustomRoutingEndpointConfiguration+    CustomRoutingEndpointConfiguration (..),+    newCustomRoutingEndpointConfiguration,+    customRoutingEndpointConfiguration_endpointId,++    -- * CustomRoutingEndpointDescription+    CustomRoutingEndpointDescription (..),+    newCustomRoutingEndpointDescription,+    customRoutingEndpointDescription_endpointId,++    -- * CustomRoutingEndpointGroup+    CustomRoutingEndpointGroup (..),+    newCustomRoutingEndpointGroup,+    customRoutingEndpointGroup_destinationDescriptions,+    customRoutingEndpointGroup_endpointDescriptions,+    customRoutingEndpointGroup_endpointGroupArn,+    customRoutingEndpointGroup_endpointGroupRegion,++    -- * CustomRoutingListener+    CustomRoutingListener (..),+    newCustomRoutingListener,+    customRoutingListener_listenerArn,+    customRoutingListener_portRanges,++    -- * DestinationPortMapping+    DestinationPortMapping (..),+    newDestinationPortMapping,+    destinationPortMapping_acceleratorArn,+    destinationPortMapping_acceleratorSocketAddresses,+    destinationPortMapping_destinationSocketAddress,+    destinationPortMapping_destinationTrafficState,+    destinationPortMapping_endpointGroupArn,+    destinationPortMapping_endpointGroupRegion,+    destinationPortMapping_endpointId,+    destinationPortMapping_ipAddressType,++    -- * EndpointConfiguration+    EndpointConfiguration (..),+    newEndpointConfiguration,+    endpointConfiguration_clientIPPreservationEnabled,+    endpointConfiguration_endpointId,+    endpointConfiguration_weight,++    -- * EndpointDescription+    EndpointDescription (..),+    newEndpointDescription,+    endpointDescription_clientIPPreservationEnabled,+    endpointDescription_endpointId,+    endpointDescription_healthReason,+    endpointDescription_healthState,+    endpointDescription_weight,++    -- * EndpointGroup+    EndpointGroup (..),+    newEndpointGroup,+    endpointGroup_endpointDescriptions,+    endpointGroup_endpointGroupArn,+    endpointGroup_endpointGroupRegion,+    endpointGroup_healthCheckIntervalSeconds,+    endpointGroup_healthCheckPath,+    endpointGroup_healthCheckPort,+    endpointGroup_healthCheckProtocol,+    endpointGroup_portOverrides,+    endpointGroup_thresholdCount,+    endpointGroup_trafficDialPercentage,++    -- * EndpointIdentifier+    EndpointIdentifier (..),+    newEndpointIdentifier,+    endpointIdentifier_clientIPPreservationEnabled,+    endpointIdentifier_endpointId,++    -- * IpSet+    IpSet (..),+    newIpSet,+    ipSet_ipAddressFamily,+    ipSet_ipAddresses,+    ipSet_ipFamily,++    -- * Listener+    Listener (..),+    newListener,+    listener_clientAffinity,+    listener_listenerArn,+    listener_portRanges,+    listener_protocol,++    -- * PortMapping+    PortMapping (..),+    newPortMapping,+    portMapping_acceleratorPort,+    portMapping_destinationSocketAddress,+    portMapping_destinationTrafficState,+    portMapping_endpointGroupArn,+    portMapping_endpointId,+    portMapping_protocols,++    -- * PortOverride+    PortOverride (..),+    newPortOverride,+    portOverride_endpointPort,+    portOverride_listenerPort,++    -- * PortRange+    PortRange (..),+    newPortRange,+    portRange_fromPort,+    portRange_toPort,++    -- * SocketAddress+    SocketAddress (..),+    newSocketAddress,+    socketAddress_ipAddress,+    socketAddress_port,++    -- * Tag+    Tag (..),+    newTag,+    tag_key,+    tag_value,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.GlobalAccelerator.Types.Accelerator+import Amazonka.GlobalAccelerator.Types.AcceleratorAttributes+import Amazonka.GlobalAccelerator.Types.AcceleratorEvent+import Amazonka.GlobalAccelerator.Types.AcceleratorStatus+import Amazonka.GlobalAccelerator.Types.ByoipCidr+import Amazonka.GlobalAccelerator.Types.ByoipCidrEvent+import Amazonka.GlobalAccelerator.Types.ByoipCidrState+import Amazonka.GlobalAccelerator.Types.CidrAuthorizationContext+import Amazonka.GlobalAccelerator.Types.ClientAffinity+import Amazonka.GlobalAccelerator.Types.CustomRoutingAccelerator+import Amazonka.GlobalAccelerator.Types.CustomRoutingAcceleratorAttributes+import Amazonka.GlobalAccelerator.Types.CustomRoutingAcceleratorStatus+import Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationConfiguration+import Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationDescription+import Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationTrafficState+import Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointConfiguration+import Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointDescription+import Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointGroup+import Amazonka.GlobalAccelerator.Types.CustomRoutingListener+import Amazonka.GlobalAccelerator.Types.CustomRoutingProtocol+import Amazonka.GlobalAccelerator.Types.DestinationPortMapping+import Amazonka.GlobalAccelerator.Types.EndpointConfiguration+import Amazonka.GlobalAccelerator.Types.EndpointDescription+import Amazonka.GlobalAccelerator.Types.EndpointGroup+import Amazonka.GlobalAccelerator.Types.EndpointIdentifier+import Amazonka.GlobalAccelerator.Types.HealthCheckProtocol+import Amazonka.GlobalAccelerator.Types.HealthState+import Amazonka.GlobalAccelerator.Types.IpAddressFamily+import Amazonka.GlobalAccelerator.Types.IpAddressType+import Amazonka.GlobalAccelerator.Types.IpSet+import Amazonka.GlobalAccelerator.Types.Listener+import Amazonka.GlobalAccelerator.Types.PortMapping+import Amazonka.GlobalAccelerator.Types.PortOverride+import Amazonka.GlobalAccelerator.Types.PortRange+import Amazonka.GlobalAccelerator.Types.Protocol+import Amazonka.GlobalAccelerator.Types.SocketAddress+import Amazonka.GlobalAccelerator.Types.Tag+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2018-08-08@ of the Amazon Global Accelerator SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "GlobalAccelerator",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "globalaccelerator",+      Core.signingName = "globalaccelerator",+      Core.version = "2018-08-08",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "GlobalAccelerator",+      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 accelerator that you specified could not be disabled.+_AcceleratorNotDisabledException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AcceleratorNotDisabledException =+  Core._MatchServiceError+    defaultService+    "AcceleratorNotDisabledException"++-- | The accelerator that you specified doesn\'t exist.+_AcceleratorNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AcceleratorNotFoundException =+  Core._MatchServiceError+    defaultService+    "AcceleratorNotFoundException"++-- | You don\'t have access permission.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"++-- | The listener that you specified has an endpoint group associated with+-- it. You must remove all dependent resources from a listener before you+-- can delete it.+_AssociatedEndpointGroupFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AssociatedEndpointGroupFoundException =+  Core._MatchServiceError+    defaultService+    "AssociatedEndpointGroupFoundException"++-- | The accelerator that you specified has a listener associated with it.+-- You must remove all dependent resources from an accelerator before you+-- can delete it.+_AssociatedListenerFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AssociatedListenerFoundException =+  Core._MatchServiceError+    defaultService+    "AssociatedListenerFoundException"++-- | The CIDR that you specified was not found or is incorrect.+_ByoipCidrNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ByoipCidrNotFoundException =+  Core._MatchServiceError+    defaultService+    "ByoipCidrNotFoundException"++-- | You can\'t use both of those options.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"++-- | The endpoint that you specified doesn\'t exist.+_EndpointAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_EndpointAlreadyExistsException =+  Core._MatchServiceError+    defaultService+    "EndpointAlreadyExistsException"++-- | The endpoint group that you specified already exists.+_EndpointGroupAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_EndpointGroupAlreadyExistsException =+  Core._MatchServiceError+    defaultService+    "EndpointGroupAlreadyExistsException"++-- | The endpoint group that you specified doesn\'t exist.+_EndpointGroupNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_EndpointGroupNotFoundException =+  Core._MatchServiceError+    defaultService+    "EndpointGroupNotFoundException"++-- | The endpoint that you specified doesn\'t exist.+_EndpointNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_EndpointNotFoundException =+  Core._MatchServiceError+    defaultService+    "EndpointNotFoundException"++-- | The CIDR that you specified is not valid for this action. For example,+-- the state of the CIDR might be incorrect for this action.+_IncorrectCidrStateException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_IncorrectCidrStateException =+  Core._MatchServiceError+    defaultService+    "IncorrectCidrStateException"++-- | There was an internal error for Global Accelerator.+_InternalServiceErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServiceErrorException =+  Core._MatchServiceError+    defaultService+    "InternalServiceErrorException"++-- | An argument that you specified is invalid.+_InvalidArgumentException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidArgumentException =+  Core._MatchServiceError+    defaultService+    "InvalidArgumentException"++-- | There isn\'t another item to return.+_InvalidNextTokenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidNextTokenException =+  Core._MatchServiceError+    defaultService+    "InvalidNextTokenException"++-- | The port numbers that you specified are not valid numbers or are not+-- unique for this accelerator.+_InvalidPortRangeException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidPortRangeException =+  Core._MatchServiceError+    defaultService+    "InvalidPortRangeException"++-- | Processing your request would cause you to exceed an Global Accelerator+-- limit.+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_LimitExceededException =+  Core._MatchServiceError+    defaultService+    "LimitExceededException"++-- | The listener that you specified doesn\'t exist.+_ListenerNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ListenerNotFoundException =+  Core._MatchServiceError+    defaultService+    "ListenerNotFoundException"++-- | There\'s already a transaction in progress. Another transaction can\'t+-- be processed.+_TransactionInProgressException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TransactionInProgressException =+  Core._MatchServiceError+    defaultService+    "TransactionInProgressException"
+ gen/Amazonka/GlobalAccelerator/Types/Accelerator.hs view
@@ -0,0 +1,310 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.Accelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.Accelerator where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.AcceleratorEvent+import Amazonka.GlobalAccelerator.Types.AcceleratorStatus+import Amazonka.GlobalAccelerator.Types.IpAddressType+import Amazonka.GlobalAccelerator.Types.IpSet+import qualified Amazonka.Prelude as Prelude++-- | An accelerator is a complex type that includes one or more listeners+-- that process inbound connections and then direct traffic to one or more+-- endpoint groups, each of which includes endpoints, such as load+-- balancers.+--+-- /See:/ 'newAccelerator' smart constructor.+data Accelerator = Accelerator'+  { -- | The Amazon Resource Name (ARN) of the accelerator.+    acceleratorArn :: Prelude.Maybe Prelude.Text,+    -- | The date and time that the accelerator was created.+    createdTime :: Prelude.Maybe Data.POSIX,+    -- | The Domain Name System (DNS) name that Global Accelerator creates that+    -- points to an accelerator\'s static IPv4 addresses.+    --+    -- The naming convention for the DNS name for an accelerator is the+    -- following: A lowercase letter a, followed by a 16-bit random hex string,+    -- followed by .awsglobalaccelerator.com. For example:+    -- a1234567890abcdef.awsglobalaccelerator.com.+    --+    -- If you have a dual-stack accelerator, you also have a second DNS name,+    -- @DualStackDnsName@, that points to both the A record and the AAAA record+    -- for all four static addresses for the accelerator: two IPv4 addresses+    -- and two IPv6 addresses.+    --+    -- For more information about the default DNS name, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/dns-addressing-custom-domains.dns-addressing.html Support for DNS addressing in Global Accelerator>+    -- in the /Global Accelerator Developer Guide/.+    dnsName :: Prelude.Maybe Prelude.Text,+    -- | The Domain Name System (DNS) name that Global Accelerator creates that+    -- points to a dual-stack accelerator\'s four static IP addresses: two IPv4+    -- addresses and two IPv6 addresses.+    --+    -- The naming convention for the dual-stack DNS name is the following: A+    -- lowercase letter a, followed by a 16-bit random hex string, followed by+    -- .dualstack.awsglobalaccelerator.com. For example:+    -- a1234567890abcdef.dualstack.awsglobalaccelerator.com.+    --+    -- Note: Global Accelerator also assigns a default DNS name, @DnsName@, to+    -- your accelerator that points just to the static IPv4 addresses.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing Support for DNS addressing in Global Accelerator>+    -- in the /Global Accelerator Developer Guide/.+    dualStackDnsName :: Prelude.Maybe Prelude.Text,+    -- | Indicates whether the accelerator is enabled. The value is true or+    -- false. The default value is true.+    --+    -- If the value is set to true, the accelerator cannot be deleted. If set+    -- to false, accelerator can be deleted.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | A history of changes that you make to an accelerator in Global+    -- Accelerator.+    events :: Prelude.Maybe [AcceleratorEvent],+    -- | The IP address type that an accelerator supports. For a standard+    -- accelerator, the value can be IPV4 or DUAL_STACK.+    ipAddressType :: Prelude.Maybe IpAddressType,+    -- | The static IP addresses that Global Accelerator associates with the+    -- accelerator.+    ipSets :: Prelude.Maybe [IpSet],+    -- | The date and time that the accelerator was last modified.+    lastModifiedTime :: Prelude.Maybe Data.POSIX,+    -- | The name of the accelerator. The name must contain only alphanumeric+    -- characters or hyphens (-), and must not begin or end with a hyphen.+    name :: Prelude.Maybe Prelude.Text,+    -- | Describes the deployment status of the accelerator.+    status :: Prelude.Maybe AcceleratorStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Accelerator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorArn', 'accelerator_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator.+--+-- 'createdTime', 'accelerator_createdTime' - The date and time that the accelerator was created.+--+-- 'dnsName', 'accelerator_dnsName' - The Domain Name System (DNS) name that Global Accelerator creates that+-- points to an accelerator\'s static IPv4 addresses.+--+-- The naming convention for the DNS name for an accelerator is the+-- following: A lowercase letter a, followed by a 16-bit random hex string,+-- followed by .awsglobalaccelerator.com. For example:+-- a1234567890abcdef.awsglobalaccelerator.com.+--+-- If you have a dual-stack accelerator, you also have a second DNS name,+-- @DualStackDnsName@, that points to both the A record and the AAAA record+-- for all four static addresses for the accelerator: two IPv4 addresses+-- and two IPv6 addresses.+--+-- For more information about the default DNS name, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/dns-addressing-custom-domains.dns-addressing.html Support for DNS addressing in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+--+-- 'dualStackDnsName', 'accelerator_dualStackDnsName' - The Domain Name System (DNS) name that Global Accelerator creates that+-- points to a dual-stack accelerator\'s four static IP addresses: two IPv4+-- addresses and two IPv6 addresses.+--+-- The naming convention for the dual-stack DNS name is the following: A+-- lowercase letter a, followed by a 16-bit random hex string, followed by+-- .dualstack.awsglobalaccelerator.com. For example:+-- a1234567890abcdef.dualstack.awsglobalaccelerator.com.+--+-- Note: Global Accelerator also assigns a default DNS name, @DnsName@, to+-- your accelerator that points just to the static IPv4 addresses.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing Support for DNS addressing in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+--+-- 'enabled', 'accelerator_enabled' - Indicates whether the accelerator is enabled. The value is true or+-- false. The default value is true.+--+-- If the value is set to true, the accelerator cannot be deleted. If set+-- to false, accelerator can be deleted.+--+-- 'events', 'accelerator_events' - A history of changes that you make to an accelerator in Global+-- Accelerator.+--+-- 'ipAddressType', 'accelerator_ipAddressType' - The IP address type that an accelerator supports. For a standard+-- accelerator, the value can be IPV4 or DUAL_STACK.+--+-- 'ipSets', 'accelerator_ipSets' - The static IP addresses that Global Accelerator associates with the+-- accelerator.+--+-- 'lastModifiedTime', 'accelerator_lastModifiedTime' - The date and time that the accelerator was last modified.+--+-- 'name', 'accelerator_name' - The name of the accelerator. The name must contain only alphanumeric+-- characters or hyphens (-), and must not begin or end with a hyphen.+--+-- 'status', 'accelerator_status' - Describes the deployment status of the accelerator.+newAccelerator ::+  Accelerator+newAccelerator =+  Accelerator'+    { acceleratorArn = Prelude.Nothing,+      createdTime = Prelude.Nothing,+      dnsName = Prelude.Nothing,+      dualStackDnsName = Prelude.Nothing,+      enabled = Prelude.Nothing,+      events = Prelude.Nothing,+      ipAddressType = Prelude.Nothing,+      ipSets = Prelude.Nothing,+      lastModifiedTime = Prelude.Nothing,+      name = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the accelerator.+accelerator_acceleratorArn :: Lens.Lens' Accelerator (Prelude.Maybe Prelude.Text)+accelerator_acceleratorArn = Lens.lens (\Accelerator' {acceleratorArn} -> acceleratorArn) (\s@Accelerator' {} a -> s {acceleratorArn = a} :: Accelerator)++-- | The date and time that the accelerator was created.+accelerator_createdTime :: Lens.Lens' Accelerator (Prelude.Maybe Prelude.UTCTime)+accelerator_createdTime = Lens.lens (\Accelerator' {createdTime} -> createdTime) (\s@Accelerator' {} a -> s {createdTime = a} :: Accelerator) Prelude.. Lens.mapping Data._Time++-- | The Domain Name System (DNS) name that Global Accelerator creates that+-- points to an accelerator\'s static IPv4 addresses.+--+-- The naming convention for the DNS name for an accelerator is the+-- following: A lowercase letter a, followed by a 16-bit random hex string,+-- followed by .awsglobalaccelerator.com. For example:+-- a1234567890abcdef.awsglobalaccelerator.com.+--+-- If you have a dual-stack accelerator, you also have a second DNS name,+-- @DualStackDnsName@, that points to both the A record and the AAAA record+-- for all four static addresses for the accelerator: two IPv4 addresses+-- and two IPv6 addresses.+--+-- For more information about the default DNS name, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/dns-addressing-custom-domains.dns-addressing.html Support for DNS addressing in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+accelerator_dnsName :: Lens.Lens' Accelerator (Prelude.Maybe Prelude.Text)+accelerator_dnsName = Lens.lens (\Accelerator' {dnsName} -> dnsName) (\s@Accelerator' {} a -> s {dnsName = a} :: Accelerator)++-- | The Domain Name System (DNS) name that Global Accelerator creates that+-- points to a dual-stack accelerator\'s four static IP addresses: two IPv4+-- addresses and two IPv6 addresses.+--+-- The naming convention for the dual-stack DNS name is the following: A+-- lowercase letter a, followed by a 16-bit random hex string, followed by+-- .dualstack.awsglobalaccelerator.com. For example:+-- a1234567890abcdef.dualstack.awsglobalaccelerator.com.+--+-- Note: Global Accelerator also assigns a default DNS name, @DnsName@, to+-- your accelerator that points just to the static IPv4 addresses.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing Support for DNS addressing in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+accelerator_dualStackDnsName :: Lens.Lens' Accelerator (Prelude.Maybe Prelude.Text)+accelerator_dualStackDnsName = Lens.lens (\Accelerator' {dualStackDnsName} -> dualStackDnsName) (\s@Accelerator' {} a -> s {dualStackDnsName = a} :: Accelerator)++-- | Indicates whether the accelerator is enabled. The value is true or+-- false. The default value is true.+--+-- If the value is set to true, the accelerator cannot be deleted. If set+-- to false, accelerator can be deleted.+accelerator_enabled :: Lens.Lens' Accelerator (Prelude.Maybe Prelude.Bool)+accelerator_enabled = Lens.lens (\Accelerator' {enabled} -> enabled) (\s@Accelerator' {} a -> s {enabled = a} :: Accelerator)++-- | A history of changes that you make to an accelerator in Global+-- Accelerator.+accelerator_events :: Lens.Lens' Accelerator (Prelude.Maybe [AcceleratorEvent])+accelerator_events = Lens.lens (\Accelerator' {events} -> events) (\s@Accelerator' {} a -> s {events = a} :: Accelerator) Prelude.. Lens.mapping Lens.coerced++-- | The IP address type that an accelerator supports. For a standard+-- accelerator, the value can be IPV4 or DUAL_STACK.+accelerator_ipAddressType :: Lens.Lens' Accelerator (Prelude.Maybe IpAddressType)+accelerator_ipAddressType = Lens.lens (\Accelerator' {ipAddressType} -> ipAddressType) (\s@Accelerator' {} a -> s {ipAddressType = a} :: Accelerator)++-- | The static IP addresses that Global Accelerator associates with the+-- accelerator.+accelerator_ipSets :: Lens.Lens' Accelerator (Prelude.Maybe [IpSet])+accelerator_ipSets = Lens.lens (\Accelerator' {ipSets} -> ipSets) (\s@Accelerator' {} a -> s {ipSets = a} :: Accelerator) Prelude.. Lens.mapping Lens.coerced++-- | The date and time that the accelerator was last modified.+accelerator_lastModifiedTime :: Lens.Lens' Accelerator (Prelude.Maybe Prelude.UTCTime)+accelerator_lastModifiedTime = Lens.lens (\Accelerator' {lastModifiedTime} -> lastModifiedTime) (\s@Accelerator' {} a -> s {lastModifiedTime = a} :: Accelerator) Prelude.. Lens.mapping Data._Time++-- | The name of the accelerator. The name must contain only alphanumeric+-- characters or hyphens (-), and must not begin or end with a hyphen.+accelerator_name :: Lens.Lens' Accelerator (Prelude.Maybe Prelude.Text)+accelerator_name = Lens.lens (\Accelerator' {name} -> name) (\s@Accelerator' {} a -> s {name = a} :: Accelerator)++-- | Describes the deployment status of the accelerator.+accelerator_status :: Lens.Lens' Accelerator (Prelude.Maybe AcceleratorStatus)+accelerator_status = Lens.lens (\Accelerator' {status} -> status) (\s@Accelerator' {} a -> s {status = a} :: Accelerator)++instance Data.FromJSON Accelerator where+  parseJSON =+    Data.withObject+      "Accelerator"+      ( \x ->+          Accelerator'+            Prelude.<$> (x Data..:? "AcceleratorArn")+            Prelude.<*> (x Data..:? "CreatedTime")+            Prelude.<*> (x Data..:? "DnsName")+            Prelude.<*> (x Data..:? "DualStackDnsName")+            Prelude.<*> (x Data..:? "Enabled")+            Prelude.<*> (x Data..:? "Events" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "IpAddressType")+            Prelude.<*> (x Data..:? "IpSets" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "LastModifiedTime")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable Accelerator where+  hashWithSalt _salt Accelerator' {..} =+    _salt+      `Prelude.hashWithSalt` acceleratorArn+      `Prelude.hashWithSalt` createdTime+      `Prelude.hashWithSalt` dnsName+      `Prelude.hashWithSalt` dualStackDnsName+      `Prelude.hashWithSalt` enabled+      `Prelude.hashWithSalt` events+      `Prelude.hashWithSalt` ipAddressType+      `Prelude.hashWithSalt` ipSets+      `Prelude.hashWithSalt` lastModifiedTime+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status++instance Prelude.NFData Accelerator where+  rnf Accelerator' {..} =+    Prelude.rnf acceleratorArn+      `Prelude.seq` Prelude.rnf createdTime+      `Prelude.seq` Prelude.rnf dnsName+      `Prelude.seq` Prelude.rnf dualStackDnsName+      `Prelude.seq` Prelude.rnf enabled+      `Prelude.seq` Prelude.rnf events+      `Prelude.seq` Prelude.rnf ipAddressType+      `Prelude.seq` Prelude.rnf ipSets+      `Prelude.seq` Prelude.rnf lastModifiedTime+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/GlobalAccelerator/Types/AcceleratorAttributes.hs view
@@ -0,0 +1,142 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.AcceleratorAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.AcceleratorAttributes 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++-- | Attributes of an accelerator.+--+-- /See:/ 'newAcceleratorAttributes' smart constructor.+data AcceleratorAttributes = AcceleratorAttributes'+  { -- | Indicates whether flow logs are enabled. The default value is false. If+    -- the value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+    -- specified.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow logs>+    -- in the /Global Accelerator Developer Guide/.+    flowLogsEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The name of the Amazon S3 bucket for the flow logs. Attribute is+    -- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+    -- a bucket policy that grants Global Accelerator permission to write to+    -- the bucket.+    flowLogsS3Bucket :: Prelude.Maybe Prelude.Text,+    -- | The prefix for the location in the Amazon S3 bucket for the flow logs.+    -- Attribute is required if @FlowLogsEnabled@ is @true@.+    --+    -- If you specify slash (\/) for the S3 bucket prefix, the log file bucket+    -- folder structure will include a double slash (\/\/), like the following:+    --+    -- s3-bucket_name\/\/AWSLogs\/aws_account_id+    flowLogsS3Prefix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AcceleratorAttributes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'flowLogsEnabled', 'acceleratorAttributes_flowLogsEnabled' - Indicates whether flow logs are enabled. The default value is false. If+-- the value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+-- specified.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow logs>+-- in the /Global Accelerator Developer Guide/.+--+-- 'flowLogsS3Bucket', 'acceleratorAttributes_flowLogsS3Bucket' - The name of the Amazon S3 bucket for the flow logs. Attribute is+-- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+-- a bucket policy that grants Global Accelerator permission to write to+-- the bucket.+--+-- 'flowLogsS3Prefix', 'acceleratorAttributes_flowLogsS3Prefix' - The prefix for the location in the Amazon S3 bucket for the flow logs.+-- Attribute is required if @FlowLogsEnabled@ is @true@.+--+-- If you specify slash (\/) for the S3 bucket prefix, the log file bucket+-- folder structure will include a double slash (\/\/), like the following:+--+-- s3-bucket_name\/\/AWSLogs\/aws_account_id+newAcceleratorAttributes ::+  AcceleratorAttributes+newAcceleratorAttributes =+  AcceleratorAttributes'+    { flowLogsEnabled =+        Prelude.Nothing,+      flowLogsS3Bucket = Prelude.Nothing,+      flowLogsS3Prefix = Prelude.Nothing+    }++-- | Indicates whether flow logs are enabled. The default value is false. If+-- the value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+-- specified.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow logs>+-- in the /Global Accelerator Developer Guide/.+acceleratorAttributes_flowLogsEnabled :: Lens.Lens' AcceleratorAttributes (Prelude.Maybe Prelude.Bool)+acceleratorAttributes_flowLogsEnabled = Lens.lens (\AcceleratorAttributes' {flowLogsEnabled} -> flowLogsEnabled) (\s@AcceleratorAttributes' {} a -> s {flowLogsEnabled = a} :: AcceleratorAttributes)++-- | The name of the Amazon S3 bucket for the flow logs. Attribute is+-- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+-- a bucket policy that grants Global Accelerator permission to write to+-- the bucket.+acceleratorAttributes_flowLogsS3Bucket :: Lens.Lens' AcceleratorAttributes (Prelude.Maybe Prelude.Text)+acceleratorAttributes_flowLogsS3Bucket = Lens.lens (\AcceleratorAttributes' {flowLogsS3Bucket} -> flowLogsS3Bucket) (\s@AcceleratorAttributes' {} a -> s {flowLogsS3Bucket = a} :: AcceleratorAttributes)++-- | The prefix for the location in the Amazon S3 bucket for the flow logs.+-- Attribute is required if @FlowLogsEnabled@ is @true@.+--+-- If you specify slash (\/) for the S3 bucket prefix, the log file bucket+-- folder structure will include a double slash (\/\/), like the following:+--+-- s3-bucket_name\/\/AWSLogs\/aws_account_id+acceleratorAttributes_flowLogsS3Prefix :: Lens.Lens' AcceleratorAttributes (Prelude.Maybe Prelude.Text)+acceleratorAttributes_flowLogsS3Prefix = Lens.lens (\AcceleratorAttributes' {flowLogsS3Prefix} -> flowLogsS3Prefix) (\s@AcceleratorAttributes' {} a -> s {flowLogsS3Prefix = a} :: AcceleratorAttributes)++instance Data.FromJSON AcceleratorAttributes where+  parseJSON =+    Data.withObject+      "AcceleratorAttributes"+      ( \x ->+          AcceleratorAttributes'+            Prelude.<$> (x Data..:? "FlowLogsEnabled")+            Prelude.<*> (x Data..:? "FlowLogsS3Bucket")+            Prelude.<*> (x Data..:? "FlowLogsS3Prefix")+      )++instance Prelude.Hashable AcceleratorAttributes where+  hashWithSalt _salt AcceleratorAttributes' {..} =+    _salt+      `Prelude.hashWithSalt` flowLogsEnabled+      `Prelude.hashWithSalt` flowLogsS3Bucket+      `Prelude.hashWithSalt` flowLogsS3Prefix++instance Prelude.NFData AcceleratorAttributes where+  rnf AcceleratorAttributes' {..} =+    Prelude.rnf flowLogsEnabled+      `Prelude.seq` Prelude.rnf flowLogsS3Bucket+      `Prelude.seq` Prelude.rnf flowLogsS3Prefix
+ gen/Amazonka/GlobalAccelerator/Types/AcceleratorEvent.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.GlobalAccelerator.Types.AcceleratorEvent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.AcceleratorEvent where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A complex type that contains a @Timestamp@ value and @Message@ for+-- changes that you make to an accelerator in Global Accelerator. Messages+-- stored here provide progress or error information when you update an+-- accelerator from IPv4 to dual-stack, or from dual-stack to IPv4. Global+-- Accelerator stores a maximum of ten event messages.+--+-- /See:/ 'newAcceleratorEvent' smart constructor.+data AcceleratorEvent = AcceleratorEvent'+  { -- | A string that contains an @Event@ message describing changes or errors+    -- when you update an accelerator in Global Accelerator from IPv4 to+    -- dual-stack, or dual-stack to IPv4.+    message :: Prelude.Maybe Prelude.Text,+    -- | A timestamp for when you update an accelerator in Global Accelerator+    -- from IPv4 to dual-stack, or dual-stack to IPv4.+    timestamp :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AcceleratorEvent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'acceleratorEvent_message' - A string that contains an @Event@ message describing changes or errors+-- when you update an accelerator in Global Accelerator from IPv4 to+-- dual-stack, or dual-stack to IPv4.+--+-- 'timestamp', 'acceleratorEvent_timestamp' - A timestamp for when you update an accelerator in Global Accelerator+-- from IPv4 to dual-stack, or dual-stack to IPv4.+newAcceleratorEvent ::+  AcceleratorEvent+newAcceleratorEvent =+  AcceleratorEvent'+    { message = Prelude.Nothing,+      timestamp = Prelude.Nothing+    }++-- | A string that contains an @Event@ message describing changes or errors+-- when you update an accelerator in Global Accelerator from IPv4 to+-- dual-stack, or dual-stack to IPv4.+acceleratorEvent_message :: Lens.Lens' AcceleratorEvent (Prelude.Maybe Prelude.Text)+acceleratorEvent_message = Lens.lens (\AcceleratorEvent' {message} -> message) (\s@AcceleratorEvent' {} a -> s {message = a} :: AcceleratorEvent)++-- | A timestamp for when you update an accelerator in Global Accelerator+-- from IPv4 to dual-stack, or dual-stack to IPv4.+acceleratorEvent_timestamp :: Lens.Lens' AcceleratorEvent (Prelude.Maybe Prelude.UTCTime)+acceleratorEvent_timestamp = Lens.lens (\AcceleratorEvent' {timestamp} -> timestamp) (\s@AcceleratorEvent' {} a -> s {timestamp = a} :: AcceleratorEvent) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON AcceleratorEvent where+  parseJSON =+    Data.withObject+      "AcceleratorEvent"+      ( \x ->+          AcceleratorEvent'+            Prelude.<$> (x Data..:? "Message")+            Prelude.<*> (x Data..:? "Timestamp")+      )++instance Prelude.Hashable AcceleratorEvent where+  hashWithSalt _salt AcceleratorEvent' {..} =+    _salt+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` timestamp++instance Prelude.NFData AcceleratorEvent where+  rnf AcceleratorEvent' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf timestamp
+ gen/Amazonka/GlobalAccelerator/Types/AcceleratorStatus.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.GlobalAccelerator.Types.AcceleratorStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.AcceleratorStatus+  ( AcceleratorStatus+      ( ..,+        AcceleratorStatus_DEPLOYED,+        AcceleratorStatus_IN_PROGRESS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AcceleratorStatus = AcceleratorStatus'+  { fromAcceleratorStatus ::+      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 AcceleratorStatus_DEPLOYED :: AcceleratorStatus+pattern AcceleratorStatus_DEPLOYED = AcceleratorStatus' "DEPLOYED"++pattern AcceleratorStatus_IN_PROGRESS :: AcceleratorStatus+pattern AcceleratorStatus_IN_PROGRESS = AcceleratorStatus' "IN_PROGRESS"++{-# COMPLETE+  AcceleratorStatus_DEPLOYED,+  AcceleratorStatus_IN_PROGRESS,+  AcceleratorStatus'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/ByoipCidr.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.GlobalAccelerator.Types.ByoipCidr+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.ByoipCidr where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.ByoipCidrEvent+import Amazonka.GlobalAccelerator.Types.ByoipCidrState+import qualified Amazonka.Prelude as Prelude++-- | Information about an IP address range that is provisioned for use with+-- your Amazon Web Services resources through bring your own IP address+-- (BYOIP).+--+-- The following describes each BYOIP @State@ that your IP address range+-- can be in.+--+-- -   __PENDING_PROVISIONING__ — You’ve submitted a request to provision+--     an IP address range but it is not yet provisioned with Global+--     Accelerator.+--+-- -   __READY__ — The address range is provisioned with Global Accelerator+--     and can be advertised.+--+-- -   __PENDING_ADVERTISING__ — You’ve submitted a request for Global+--     Accelerator to advertise an address range but it is not yet being+--     advertised.+--+-- -   __ADVERTISING__ — The address range is being advertised by Global+--     Accelerator.+--+-- -   __PENDING_WITHDRAWING__ — You’ve submitted a request to withdraw an+--     address range from being advertised but it is still being advertised+--     by Global Accelerator.+--+-- -   __PENDING_DEPROVISIONING__ — You’ve submitted a request to+--     deprovision an address range from Global Accelerator but it is still+--     provisioned.+--+-- -   __DEPROVISIONED__ — The address range is deprovisioned from Global+--     Accelerator.+--+-- -   __FAILED_PROVISION__ — The request to provision the address range+--     from Global Accelerator was not successful. Please make sure that+--     you provide all of the correct information, and try again. If the+--     request fails a second time, contact Amazon Web Services support.+--+-- -   __FAILED_ADVERTISING__ — The request for Global Accelerator to+--     advertise the address range was not successful. Please make sure+--     that you provide all of the correct information, and try again. If+--     the request fails a second time, contact Amazon Web Services+--     support.+--+-- -   __FAILED_WITHDRAW__ — The request to withdraw the address range from+--     advertising by Global Accelerator was not successful. Please make+--     sure that you provide all of the correct information, and try again.+--     If the request fails a second time, contact Amazon Web Services+--     support.+--+-- -   __FAILED_DEPROVISION__ — The request to deprovision the address+--     range from Global Accelerator was not successful. Please make sure+--     that you provide all of the correct information, and try again. If+--     the request fails a second time, contact Amazon Web Services+--     support.+--+-- /See:/ 'newByoipCidr' smart constructor.+data ByoipCidr = ByoipCidr'+  { -- | The address range, in CIDR notation.+    cidr :: Prelude.Maybe Prelude.Text,+    -- | A history of status changes for an IP address range that you bring to+    -- Global Accelerator through bring your own IP address (BYOIP).+    events :: Prelude.Maybe [ByoipCidrEvent],+    -- | The state of the address pool.+    state :: Prelude.Maybe ByoipCidrState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ByoipCidr' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cidr', 'byoipCidr_cidr' - The address range, in CIDR notation.+--+-- 'events', 'byoipCidr_events' - A history of status changes for an IP address range that you bring to+-- Global Accelerator through bring your own IP address (BYOIP).+--+-- 'state', 'byoipCidr_state' - The state of the address pool.+newByoipCidr ::+  ByoipCidr+newByoipCidr =+  ByoipCidr'+    { cidr = Prelude.Nothing,+      events = Prelude.Nothing,+      state = Prelude.Nothing+    }++-- | The address range, in CIDR notation.+byoipCidr_cidr :: Lens.Lens' ByoipCidr (Prelude.Maybe Prelude.Text)+byoipCidr_cidr = Lens.lens (\ByoipCidr' {cidr} -> cidr) (\s@ByoipCidr' {} a -> s {cidr = a} :: ByoipCidr)++-- | A history of status changes for an IP address range that you bring to+-- Global Accelerator through bring your own IP address (BYOIP).+byoipCidr_events :: Lens.Lens' ByoipCidr (Prelude.Maybe [ByoipCidrEvent])+byoipCidr_events = Lens.lens (\ByoipCidr' {events} -> events) (\s@ByoipCidr' {} a -> s {events = a} :: ByoipCidr) Prelude.. Lens.mapping Lens.coerced++-- | The state of the address pool.+byoipCidr_state :: Lens.Lens' ByoipCidr (Prelude.Maybe ByoipCidrState)+byoipCidr_state = Lens.lens (\ByoipCidr' {state} -> state) (\s@ByoipCidr' {} a -> s {state = a} :: ByoipCidr)++instance Data.FromJSON ByoipCidr where+  parseJSON =+    Data.withObject+      "ByoipCidr"+      ( \x ->+          ByoipCidr'+            Prelude.<$> (x Data..:? "Cidr")+            Prelude.<*> (x Data..:? "Events" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "State")+      )++instance Prelude.Hashable ByoipCidr where+  hashWithSalt _salt ByoipCidr' {..} =+    _salt+      `Prelude.hashWithSalt` cidr+      `Prelude.hashWithSalt` events+      `Prelude.hashWithSalt` state++instance Prelude.NFData ByoipCidr where+  rnf ByoipCidr' {..} =+    Prelude.rnf cidr+      `Prelude.seq` Prelude.rnf events+      `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/GlobalAccelerator/Types/ByoipCidrEvent.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.GlobalAccelerator.Types.ByoipCidrEvent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.ByoipCidrEvent where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A complex type that contains a @Message@ and a @Timestamp@ value for+-- changes that you make in the status of an IP address range that you+-- bring to Global Accelerator through bring your own IP address (BYOIP).+--+-- /See:/ 'newByoipCidrEvent' smart constructor.+data ByoipCidrEvent = ByoipCidrEvent'+  { -- | A string that contains an @Event@ message describing changes that you+    -- make in the status of an IP address range that you bring to Global+    -- Accelerator through bring your own IP address (BYOIP).+    message :: Prelude.Maybe Prelude.Text,+    -- | A timestamp for when you make a status change for an IP address range+    -- that you bring to Global Accelerator through bring your own IP address+    -- (BYOIP).+    timestamp :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ByoipCidrEvent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'byoipCidrEvent_message' - A string that contains an @Event@ message describing changes that you+-- make in the status of an IP address range that you bring to Global+-- Accelerator through bring your own IP address (BYOIP).+--+-- 'timestamp', 'byoipCidrEvent_timestamp' - A timestamp for when you make a status change for an IP address range+-- that you bring to Global Accelerator through bring your own IP address+-- (BYOIP).+newByoipCidrEvent ::+  ByoipCidrEvent+newByoipCidrEvent =+  ByoipCidrEvent'+    { message = Prelude.Nothing,+      timestamp = Prelude.Nothing+    }++-- | A string that contains an @Event@ message describing changes that you+-- make in the status of an IP address range that you bring to Global+-- Accelerator through bring your own IP address (BYOIP).+byoipCidrEvent_message :: Lens.Lens' ByoipCidrEvent (Prelude.Maybe Prelude.Text)+byoipCidrEvent_message = Lens.lens (\ByoipCidrEvent' {message} -> message) (\s@ByoipCidrEvent' {} a -> s {message = a} :: ByoipCidrEvent)++-- | A timestamp for when you make a status change for an IP address range+-- that you bring to Global Accelerator through bring your own IP address+-- (BYOIP).+byoipCidrEvent_timestamp :: Lens.Lens' ByoipCidrEvent (Prelude.Maybe Prelude.UTCTime)+byoipCidrEvent_timestamp = Lens.lens (\ByoipCidrEvent' {timestamp} -> timestamp) (\s@ByoipCidrEvent' {} a -> s {timestamp = a} :: ByoipCidrEvent) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON ByoipCidrEvent where+  parseJSON =+    Data.withObject+      "ByoipCidrEvent"+      ( \x ->+          ByoipCidrEvent'+            Prelude.<$> (x Data..:? "Message")+            Prelude.<*> (x Data..:? "Timestamp")+      )++instance Prelude.Hashable ByoipCidrEvent where+  hashWithSalt _salt ByoipCidrEvent' {..} =+    _salt+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` timestamp++instance Prelude.NFData ByoipCidrEvent where+  rnf ByoipCidrEvent' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf timestamp
+ gen/Amazonka/GlobalAccelerator/Types/ByoipCidrState.hs view
@@ -0,0 +1,116 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.ByoipCidrState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.ByoipCidrState+  ( ByoipCidrState+      ( ..,+        ByoipCidrState_ADVERTISING,+        ByoipCidrState_DEPROVISIONED,+        ByoipCidrState_FAILED_ADVERTISING,+        ByoipCidrState_FAILED_DEPROVISION,+        ByoipCidrState_FAILED_PROVISION,+        ByoipCidrState_FAILED_WITHDRAW,+        ByoipCidrState_PENDING_ADVERTISING,+        ByoipCidrState_PENDING_DEPROVISIONING,+        ByoipCidrState_PENDING_PROVISIONING,+        ByoipCidrState_PENDING_WITHDRAWING,+        ByoipCidrState_READY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ByoipCidrState = ByoipCidrState'+  { fromByoipCidrState ::+      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 ByoipCidrState_ADVERTISING :: ByoipCidrState+pattern ByoipCidrState_ADVERTISING = ByoipCidrState' "ADVERTISING"++pattern ByoipCidrState_DEPROVISIONED :: ByoipCidrState+pattern ByoipCidrState_DEPROVISIONED = ByoipCidrState' "DEPROVISIONED"++pattern ByoipCidrState_FAILED_ADVERTISING :: ByoipCidrState+pattern ByoipCidrState_FAILED_ADVERTISING = ByoipCidrState' "FAILED_ADVERTISING"++pattern ByoipCidrState_FAILED_DEPROVISION :: ByoipCidrState+pattern ByoipCidrState_FAILED_DEPROVISION = ByoipCidrState' "FAILED_DEPROVISION"++pattern ByoipCidrState_FAILED_PROVISION :: ByoipCidrState+pattern ByoipCidrState_FAILED_PROVISION = ByoipCidrState' "FAILED_PROVISION"++pattern ByoipCidrState_FAILED_WITHDRAW :: ByoipCidrState+pattern ByoipCidrState_FAILED_WITHDRAW = ByoipCidrState' "FAILED_WITHDRAW"++pattern ByoipCidrState_PENDING_ADVERTISING :: ByoipCidrState+pattern ByoipCidrState_PENDING_ADVERTISING = ByoipCidrState' "PENDING_ADVERTISING"++pattern ByoipCidrState_PENDING_DEPROVISIONING :: ByoipCidrState+pattern ByoipCidrState_PENDING_DEPROVISIONING = ByoipCidrState' "PENDING_DEPROVISIONING"++pattern ByoipCidrState_PENDING_PROVISIONING :: ByoipCidrState+pattern ByoipCidrState_PENDING_PROVISIONING = ByoipCidrState' "PENDING_PROVISIONING"++pattern ByoipCidrState_PENDING_WITHDRAWING :: ByoipCidrState+pattern ByoipCidrState_PENDING_WITHDRAWING = ByoipCidrState' "PENDING_WITHDRAWING"++pattern ByoipCidrState_READY :: ByoipCidrState+pattern ByoipCidrState_READY = ByoipCidrState' "READY"++{-# COMPLETE+  ByoipCidrState_ADVERTISING,+  ByoipCidrState_DEPROVISIONED,+  ByoipCidrState_FAILED_ADVERTISING,+  ByoipCidrState_FAILED_DEPROVISION,+  ByoipCidrState_FAILED_PROVISION,+  ByoipCidrState_FAILED_WITHDRAW,+  ByoipCidrState_PENDING_ADVERTISING,+  ByoipCidrState_PENDING_DEPROVISIONING,+  ByoipCidrState_PENDING_PROVISIONING,+  ByoipCidrState_PENDING_WITHDRAWING,+  ByoipCidrState_READY,+  ByoipCidrState'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/CidrAuthorizationContext.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.GlobalAccelerator.Types.CidrAuthorizationContext+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CidrAuthorizationContext where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Provides authorization for Amazon to bring a specific IP address range+-- to a specific Amazon Web Services account using bring your own IP+-- addresses (BYOIP).+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+-- in the /Global Accelerator Developer Guide/.+--+-- /See:/ 'newCidrAuthorizationContext' smart constructor.+data CidrAuthorizationContext = CidrAuthorizationContext'+  { -- | The plain-text authorization message for the prefix and account.+    message :: Prelude.Text,+    -- | The signed authorization message for the prefix and account.+    signature :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CidrAuthorizationContext' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'cidrAuthorizationContext_message' - The plain-text authorization message for the prefix and account.+--+-- 'signature', 'cidrAuthorizationContext_signature' - The signed authorization message for the prefix and account.+newCidrAuthorizationContext ::+  -- | 'message'+  Prelude.Text ->+  -- | 'signature'+  Prelude.Text ->+  CidrAuthorizationContext+newCidrAuthorizationContext pMessage_ pSignature_ =+  CidrAuthorizationContext'+    { message = pMessage_,+      signature = pSignature_+    }++-- | The plain-text authorization message for the prefix and account.+cidrAuthorizationContext_message :: Lens.Lens' CidrAuthorizationContext Prelude.Text+cidrAuthorizationContext_message = Lens.lens (\CidrAuthorizationContext' {message} -> message) (\s@CidrAuthorizationContext' {} a -> s {message = a} :: CidrAuthorizationContext)++-- | The signed authorization message for the prefix and account.+cidrAuthorizationContext_signature :: Lens.Lens' CidrAuthorizationContext Prelude.Text+cidrAuthorizationContext_signature = Lens.lens (\CidrAuthorizationContext' {signature} -> signature) (\s@CidrAuthorizationContext' {} a -> s {signature = a} :: CidrAuthorizationContext)++instance Prelude.Hashable CidrAuthorizationContext where+  hashWithSalt _salt CidrAuthorizationContext' {..} =+    _salt+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` signature++instance Prelude.NFData CidrAuthorizationContext where+  rnf CidrAuthorizationContext' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf signature++instance Data.ToJSON CidrAuthorizationContext where+  toJSON CidrAuthorizationContext' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Message" Data..= message),+            Prelude.Just ("Signature" Data..= signature)+          ]+      )
+ gen/Amazonka/GlobalAccelerator/Types/ClientAffinity.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.GlobalAccelerator.Types.ClientAffinity+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.ClientAffinity+  ( ClientAffinity+      ( ..,+        ClientAffinity_NONE,+        ClientAffinity_SOURCE_IP+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ClientAffinity = ClientAffinity'+  { fromClientAffinity ::+      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 ClientAffinity_NONE :: ClientAffinity+pattern ClientAffinity_NONE = ClientAffinity' "NONE"++pattern ClientAffinity_SOURCE_IP :: ClientAffinity+pattern ClientAffinity_SOURCE_IP = ClientAffinity' "SOURCE_IP"++{-# COMPLETE+  ClientAffinity_NONE,+  ClientAffinity_SOURCE_IP,+  ClientAffinity'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingAccelerator.hs view
@@ -0,0 +1,238 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.CustomRoutingAccelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingAccelerator where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.CustomRoutingAcceleratorStatus+import Amazonka.GlobalAccelerator.Types.IpAddressType+import Amazonka.GlobalAccelerator.Types.IpSet+import qualified Amazonka.Prelude as Prelude++-- | Attributes of a custom routing accelerator.+--+-- /See:/ 'newCustomRoutingAccelerator' smart constructor.+data CustomRoutingAccelerator = CustomRoutingAccelerator'+  { -- | The Amazon Resource Name (ARN) of the custom routing accelerator.+    acceleratorArn :: Prelude.Maybe Prelude.Text,+    -- | The date and time that the accelerator was created.+    createdTime :: Prelude.Maybe Data.POSIX,+    -- | The Domain Name System (DNS) name that Global Accelerator creates that+    -- points to an accelerator\'s static IPv4 addresses.+    --+    -- The naming convention for the DNS name is the following: A lowercase+    -- letter a, followed by a 16-bit random hex string, followed by+    -- .awsglobalaccelerator.com. For example:+    -- a1234567890abcdef.awsglobalaccelerator.com.+    --+    -- If you have a dual-stack accelerator, you also have a second DNS name,+    -- @DualStackDnsName@, that points to both the A record and the AAAA record+    -- for all four static addresses for the accelerator: two IPv4 addresses+    -- and two IPv6 addresses.+    --+    -- For more information about the default DNS name, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/dns-addressing-custom-domains.dns-addressing.html Support for DNS addressing in Global Accelerator>+    -- in the /Global Accelerator Developer Guide/.+    dnsName :: Prelude.Maybe Prelude.Text,+    -- | Indicates whether the accelerator is enabled. The value is true or+    -- false. The default value is true.+    --+    -- If the value is set to true, the accelerator cannot be deleted. If set+    -- to false, accelerator can be deleted.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | The IP address type that an accelerator supports. For a custom routing+    -- accelerator, the value must be IPV4.+    ipAddressType :: Prelude.Maybe IpAddressType,+    -- | The static IP addresses that Global Accelerator associates with the+    -- accelerator.+    ipSets :: Prelude.Maybe [IpSet],+    -- | The date and time that the accelerator was last modified.+    lastModifiedTime :: Prelude.Maybe Data.POSIX,+    -- | The name of the accelerator. The name must contain only alphanumeric+    -- characters or hyphens (-), and must not begin or end with a hyphen.+    name :: Prelude.Maybe Prelude.Text,+    -- | Describes the deployment status of the accelerator.+    status :: Prelude.Maybe CustomRoutingAcceleratorStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CustomRoutingAccelerator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorArn', 'customRoutingAccelerator_acceleratorArn' - The Amazon Resource Name (ARN) of the custom routing accelerator.+--+-- 'createdTime', 'customRoutingAccelerator_createdTime' - The date and time that the accelerator was created.+--+-- 'dnsName', 'customRoutingAccelerator_dnsName' - The Domain Name System (DNS) name that Global Accelerator creates that+-- points to an accelerator\'s static IPv4 addresses.+--+-- The naming convention for the DNS name is the following: A lowercase+-- letter a, followed by a 16-bit random hex string, followed by+-- .awsglobalaccelerator.com. For example:+-- a1234567890abcdef.awsglobalaccelerator.com.+--+-- If you have a dual-stack accelerator, you also have a second DNS name,+-- @DualStackDnsName@, that points to both the A record and the AAAA record+-- for all four static addresses for the accelerator: two IPv4 addresses+-- and two IPv6 addresses.+--+-- For more information about the default DNS name, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/dns-addressing-custom-domains.dns-addressing.html Support for DNS addressing in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+--+-- 'enabled', 'customRoutingAccelerator_enabled' - Indicates whether the accelerator is enabled. The value is true or+-- false. The default value is true.+--+-- If the value is set to true, the accelerator cannot be deleted. If set+-- to false, accelerator can be deleted.+--+-- 'ipAddressType', 'customRoutingAccelerator_ipAddressType' - The IP address type that an accelerator supports. For a custom routing+-- accelerator, the value must be IPV4.+--+-- 'ipSets', 'customRoutingAccelerator_ipSets' - The static IP addresses that Global Accelerator associates with the+-- accelerator.+--+-- 'lastModifiedTime', 'customRoutingAccelerator_lastModifiedTime' - The date and time that the accelerator was last modified.+--+-- 'name', 'customRoutingAccelerator_name' - The name of the accelerator. The name must contain only alphanumeric+-- characters or hyphens (-), and must not begin or end with a hyphen.+--+-- 'status', 'customRoutingAccelerator_status' - Describes the deployment status of the accelerator.+newCustomRoutingAccelerator ::+  CustomRoutingAccelerator+newCustomRoutingAccelerator =+  CustomRoutingAccelerator'+    { acceleratorArn =+        Prelude.Nothing,+      createdTime = Prelude.Nothing,+      dnsName = Prelude.Nothing,+      enabled = Prelude.Nothing,+      ipAddressType = Prelude.Nothing,+      ipSets = Prelude.Nothing,+      lastModifiedTime = Prelude.Nothing,+      name = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the custom routing accelerator.+customRoutingAccelerator_acceleratorArn :: Lens.Lens' CustomRoutingAccelerator (Prelude.Maybe Prelude.Text)+customRoutingAccelerator_acceleratorArn = Lens.lens (\CustomRoutingAccelerator' {acceleratorArn} -> acceleratorArn) (\s@CustomRoutingAccelerator' {} a -> s {acceleratorArn = a} :: CustomRoutingAccelerator)++-- | The date and time that the accelerator was created.+customRoutingAccelerator_createdTime :: Lens.Lens' CustomRoutingAccelerator (Prelude.Maybe Prelude.UTCTime)+customRoutingAccelerator_createdTime = Lens.lens (\CustomRoutingAccelerator' {createdTime} -> createdTime) (\s@CustomRoutingAccelerator' {} a -> s {createdTime = a} :: CustomRoutingAccelerator) Prelude.. Lens.mapping Data._Time++-- | The Domain Name System (DNS) name that Global Accelerator creates that+-- points to an accelerator\'s static IPv4 addresses.+--+-- The naming convention for the DNS name is the following: A lowercase+-- letter a, followed by a 16-bit random hex string, followed by+-- .awsglobalaccelerator.com. For example:+-- a1234567890abcdef.awsglobalaccelerator.com.+--+-- If you have a dual-stack accelerator, you also have a second DNS name,+-- @DualStackDnsName@, that points to both the A record and the AAAA record+-- for all four static addresses for the accelerator: two IPv4 addresses+-- and two IPv6 addresses.+--+-- For more information about the default DNS name, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/dns-addressing-custom-domains.dns-addressing.html Support for DNS addressing in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+customRoutingAccelerator_dnsName :: Lens.Lens' CustomRoutingAccelerator (Prelude.Maybe Prelude.Text)+customRoutingAccelerator_dnsName = Lens.lens (\CustomRoutingAccelerator' {dnsName} -> dnsName) (\s@CustomRoutingAccelerator' {} a -> s {dnsName = a} :: CustomRoutingAccelerator)++-- | Indicates whether the accelerator is enabled. The value is true or+-- false. The default value is true.+--+-- If the value is set to true, the accelerator cannot be deleted. If set+-- to false, accelerator can be deleted.+customRoutingAccelerator_enabled :: Lens.Lens' CustomRoutingAccelerator (Prelude.Maybe Prelude.Bool)+customRoutingAccelerator_enabled = Lens.lens (\CustomRoutingAccelerator' {enabled} -> enabled) (\s@CustomRoutingAccelerator' {} a -> s {enabled = a} :: CustomRoutingAccelerator)++-- | The IP address type that an accelerator supports. For a custom routing+-- accelerator, the value must be IPV4.+customRoutingAccelerator_ipAddressType :: Lens.Lens' CustomRoutingAccelerator (Prelude.Maybe IpAddressType)+customRoutingAccelerator_ipAddressType = Lens.lens (\CustomRoutingAccelerator' {ipAddressType} -> ipAddressType) (\s@CustomRoutingAccelerator' {} a -> s {ipAddressType = a} :: CustomRoutingAccelerator)++-- | The static IP addresses that Global Accelerator associates with the+-- accelerator.+customRoutingAccelerator_ipSets :: Lens.Lens' CustomRoutingAccelerator (Prelude.Maybe [IpSet])+customRoutingAccelerator_ipSets = Lens.lens (\CustomRoutingAccelerator' {ipSets} -> ipSets) (\s@CustomRoutingAccelerator' {} a -> s {ipSets = a} :: CustomRoutingAccelerator) Prelude.. Lens.mapping Lens.coerced++-- | The date and time that the accelerator was last modified.+customRoutingAccelerator_lastModifiedTime :: Lens.Lens' CustomRoutingAccelerator (Prelude.Maybe Prelude.UTCTime)+customRoutingAccelerator_lastModifiedTime = Lens.lens (\CustomRoutingAccelerator' {lastModifiedTime} -> lastModifiedTime) (\s@CustomRoutingAccelerator' {} a -> s {lastModifiedTime = a} :: CustomRoutingAccelerator) Prelude.. Lens.mapping Data._Time++-- | The name of the accelerator. The name must contain only alphanumeric+-- characters or hyphens (-), and must not begin or end with a hyphen.+customRoutingAccelerator_name :: Lens.Lens' CustomRoutingAccelerator (Prelude.Maybe Prelude.Text)+customRoutingAccelerator_name = Lens.lens (\CustomRoutingAccelerator' {name} -> name) (\s@CustomRoutingAccelerator' {} a -> s {name = a} :: CustomRoutingAccelerator)++-- | Describes the deployment status of the accelerator.+customRoutingAccelerator_status :: Lens.Lens' CustomRoutingAccelerator (Prelude.Maybe CustomRoutingAcceleratorStatus)+customRoutingAccelerator_status = Lens.lens (\CustomRoutingAccelerator' {status} -> status) (\s@CustomRoutingAccelerator' {} a -> s {status = a} :: CustomRoutingAccelerator)++instance Data.FromJSON CustomRoutingAccelerator where+  parseJSON =+    Data.withObject+      "CustomRoutingAccelerator"+      ( \x ->+          CustomRoutingAccelerator'+            Prelude.<$> (x Data..:? "AcceleratorArn")+            Prelude.<*> (x Data..:? "CreatedTime")+            Prelude.<*> (x Data..:? "DnsName")+            Prelude.<*> (x Data..:? "Enabled")+            Prelude.<*> (x Data..:? "IpAddressType")+            Prelude.<*> (x Data..:? "IpSets" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "LastModifiedTime")+            Prelude.<*> (x Data..:? "Name")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable CustomRoutingAccelerator where+  hashWithSalt _salt CustomRoutingAccelerator' {..} =+    _salt+      `Prelude.hashWithSalt` acceleratorArn+      `Prelude.hashWithSalt` createdTime+      `Prelude.hashWithSalt` dnsName+      `Prelude.hashWithSalt` enabled+      `Prelude.hashWithSalt` ipAddressType+      `Prelude.hashWithSalt` ipSets+      `Prelude.hashWithSalt` lastModifiedTime+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status++instance Prelude.NFData CustomRoutingAccelerator where+  rnf CustomRoutingAccelerator' {..} =+    Prelude.rnf acceleratorArn+      `Prelude.seq` Prelude.rnf createdTime+      `Prelude.seq` Prelude.rnf dnsName+      `Prelude.seq` Prelude.rnf enabled+      `Prelude.seq` Prelude.rnf ipAddressType+      `Prelude.seq` Prelude.rnf ipSets+      `Prelude.seq` Prelude.rnf lastModifiedTime+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingAcceleratorAttributes.hs view
@@ -0,0 +1,159 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.CustomRoutingAcceleratorAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingAcceleratorAttributes 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++-- | Attributes of a custom routing accelerator.+--+-- /See:/ 'newCustomRoutingAcceleratorAttributes' smart constructor.+data CustomRoutingAcceleratorAttributes = CustomRoutingAcceleratorAttributes'+  { -- | Indicates whether flow logs are enabled. The default value is false. If+    -- the value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+    -- specified.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow logs>+    -- in the /Global Accelerator Developer Guide/.+    flowLogsEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The name of the Amazon S3 bucket for the flow logs. Attribute is+    -- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+    -- a bucket policy that grants Global Accelerator permission to write to+    -- the bucket.+    flowLogsS3Bucket :: Prelude.Maybe Prelude.Text,+    -- | The prefix for the location in the Amazon S3 bucket for the flow logs.+    -- Attribute is required if @FlowLogsEnabled@ is @true@.+    --+    -- If you don’t specify a prefix, the flow logs are stored in the root of+    -- the bucket. If you specify slash (\/) for the S3 bucket prefix, the log+    -- file bucket folder structure will include a double slash (\/\/), like+    -- the following:+    --+    -- DOC-EXAMPLE-BUCKET\/\/AWSLogs\/aws_account_id+    flowLogsS3Prefix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CustomRoutingAcceleratorAttributes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'flowLogsEnabled', 'customRoutingAcceleratorAttributes_flowLogsEnabled' - Indicates whether flow logs are enabled. The default value is false. If+-- the value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+-- specified.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow logs>+-- in the /Global Accelerator Developer Guide/.+--+-- 'flowLogsS3Bucket', 'customRoutingAcceleratorAttributes_flowLogsS3Bucket' - The name of the Amazon S3 bucket for the flow logs. Attribute is+-- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+-- a bucket policy that grants Global Accelerator permission to write to+-- the bucket.+--+-- 'flowLogsS3Prefix', 'customRoutingAcceleratorAttributes_flowLogsS3Prefix' - The prefix for the location in the Amazon S3 bucket for the flow logs.+-- Attribute is required if @FlowLogsEnabled@ is @true@.+--+-- If you don’t specify a prefix, the flow logs are stored in the root of+-- the bucket. If you specify slash (\/) for the S3 bucket prefix, the log+-- file bucket folder structure will include a double slash (\/\/), like+-- the following:+--+-- DOC-EXAMPLE-BUCKET\/\/AWSLogs\/aws_account_id+newCustomRoutingAcceleratorAttributes ::+  CustomRoutingAcceleratorAttributes+newCustomRoutingAcceleratorAttributes =+  CustomRoutingAcceleratorAttributes'+    { flowLogsEnabled =+        Prelude.Nothing,+      flowLogsS3Bucket = Prelude.Nothing,+      flowLogsS3Prefix = Prelude.Nothing+    }++-- | Indicates whether flow logs are enabled. The default value is false. If+-- the value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+-- specified.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow logs>+-- in the /Global Accelerator Developer Guide/.+customRoutingAcceleratorAttributes_flowLogsEnabled :: Lens.Lens' CustomRoutingAcceleratorAttributes (Prelude.Maybe Prelude.Bool)+customRoutingAcceleratorAttributes_flowLogsEnabled = Lens.lens (\CustomRoutingAcceleratorAttributes' {flowLogsEnabled} -> flowLogsEnabled) (\s@CustomRoutingAcceleratorAttributes' {} a -> s {flowLogsEnabled = a} :: CustomRoutingAcceleratorAttributes)++-- | The name of the Amazon S3 bucket for the flow logs. Attribute is+-- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+-- a bucket policy that grants Global Accelerator permission to write to+-- the bucket.+customRoutingAcceleratorAttributes_flowLogsS3Bucket :: Lens.Lens' CustomRoutingAcceleratorAttributes (Prelude.Maybe Prelude.Text)+customRoutingAcceleratorAttributes_flowLogsS3Bucket = Lens.lens (\CustomRoutingAcceleratorAttributes' {flowLogsS3Bucket} -> flowLogsS3Bucket) (\s@CustomRoutingAcceleratorAttributes' {} a -> s {flowLogsS3Bucket = a} :: CustomRoutingAcceleratorAttributes)++-- | The prefix for the location in the Amazon S3 bucket for the flow logs.+-- Attribute is required if @FlowLogsEnabled@ is @true@.+--+-- If you don’t specify a prefix, the flow logs are stored in the root of+-- the bucket. If you specify slash (\/) for the S3 bucket prefix, the log+-- file bucket folder structure will include a double slash (\/\/), like+-- the following:+--+-- DOC-EXAMPLE-BUCKET\/\/AWSLogs\/aws_account_id+customRoutingAcceleratorAttributes_flowLogsS3Prefix :: Lens.Lens' CustomRoutingAcceleratorAttributes (Prelude.Maybe Prelude.Text)+customRoutingAcceleratorAttributes_flowLogsS3Prefix = Lens.lens (\CustomRoutingAcceleratorAttributes' {flowLogsS3Prefix} -> flowLogsS3Prefix) (\s@CustomRoutingAcceleratorAttributes' {} a -> s {flowLogsS3Prefix = a} :: CustomRoutingAcceleratorAttributes)++instance+  Data.FromJSON+    CustomRoutingAcceleratorAttributes+  where+  parseJSON =+    Data.withObject+      "CustomRoutingAcceleratorAttributes"+      ( \x ->+          CustomRoutingAcceleratorAttributes'+            Prelude.<$> (x Data..:? "FlowLogsEnabled")+            Prelude.<*> (x Data..:? "FlowLogsS3Bucket")+            Prelude.<*> (x Data..:? "FlowLogsS3Prefix")+      )++instance+  Prelude.Hashable+    CustomRoutingAcceleratorAttributes+  where+  hashWithSalt+    _salt+    CustomRoutingAcceleratorAttributes' {..} =+      _salt+        `Prelude.hashWithSalt` flowLogsEnabled+        `Prelude.hashWithSalt` flowLogsS3Bucket+        `Prelude.hashWithSalt` flowLogsS3Prefix++instance+  Prelude.NFData+    CustomRoutingAcceleratorAttributes+  where+  rnf CustomRoutingAcceleratorAttributes' {..} =+    Prelude.rnf flowLogsEnabled+      `Prelude.seq` Prelude.rnf flowLogsS3Bucket+      `Prelude.seq` Prelude.rnf flowLogsS3Prefix
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingAcceleratorStatus.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.GlobalAccelerator.Types.CustomRoutingAcceleratorStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingAcceleratorStatus+  ( CustomRoutingAcceleratorStatus+      ( ..,+        CustomRoutingAcceleratorStatus_DEPLOYED,+        CustomRoutingAcceleratorStatus_IN_PROGRESS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CustomRoutingAcceleratorStatus = CustomRoutingAcceleratorStatus'+  { fromCustomRoutingAcceleratorStatus ::+      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 CustomRoutingAcceleratorStatus_DEPLOYED :: CustomRoutingAcceleratorStatus+pattern CustomRoutingAcceleratorStatus_DEPLOYED = CustomRoutingAcceleratorStatus' "DEPLOYED"++pattern CustomRoutingAcceleratorStatus_IN_PROGRESS :: CustomRoutingAcceleratorStatus+pattern CustomRoutingAcceleratorStatus_IN_PROGRESS = CustomRoutingAcceleratorStatus' "IN_PROGRESS"++{-# COMPLETE+  CustomRoutingAcceleratorStatus_DEPLOYED,+  CustomRoutingAcceleratorStatus_IN_PROGRESS,+  CustomRoutingAcceleratorStatus'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingDestinationConfiguration.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.GlobalAccelerator.Types.CustomRoutingDestinationConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.CustomRoutingProtocol+import qualified Amazonka.Prelude as Prelude++-- | For a custom routing accelerator, sets the port range and protocol for+-- all endpoints (virtual private cloud subnets) in an endpoint group to+-- accept client traffic on.+--+-- /See:/ 'newCustomRoutingDestinationConfiguration' smart constructor.+data CustomRoutingDestinationConfiguration = CustomRoutingDestinationConfiguration'+  { -- | The first port, inclusive, in the range of ports for the endpoint group+    -- that is associated with a custom routing accelerator.+    fromPort :: Prelude.Natural,+    -- | The last port, inclusive, in the range of ports for the endpoint group+    -- that is associated with a custom routing accelerator.+    toPort :: Prelude.Natural,+    -- | The protocol for the endpoint group that is associated with a custom+    -- routing accelerator. The protocol can be either TCP or UDP.+    protocols :: Prelude.NonEmpty CustomRoutingProtocol+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CustomRoutingDestinationConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fromPort', 'customRoutingDestinationConfiguration_fromPort' - The first port, inclusive, in the range of ports for the endpoint group+-- that is associated with a custom routing accelerator.+--+-- 'toPort', 'customRoutingDestinationConfiguration_toPort' - The last port, inclusive, in the range of ports for the endpoint group+-- that is associated with a custom routing accelerator.+--+-- 'protocols', 'customRoutingDestinationConfiguration_protocols' - The protocol for the endpoint group that is associated with a custom+-- routing accelerator. The protocol can be either TCP or UDP.+newCustomRoutingDestinationConfiguration ::+  -- | 'fromPort'+  Prelude.Natural ->+  -- | 'toPort'+  Prelude.Natural ->+  -- | 'protocols'+  Prelude.NonEmpty CustomRoutingProtocol ->+  CustomRoutingDestinationConfiguration+newCustomRoutingDestinationConfiguration+  pFromPort_+  pToPort_+  pProtocols_ =+    CustomRoutingDestinationConfiguration'+      { fromPort =+          pFromPort_,+        toPort = pToPort_,+        protocols =+          Lens.coerced Lens.# pProtocols_+      }++-- | The first port, inclusive, in the range of ports for the endpoint group+-- that is associated with a custom routing accelerator.+customRoutingDestinationConfiguration_fromPort :: Lens.Lens' CustomRoutingDestinationConfiguration Prelude.Natural+customRoutingDestinationConfiguration_fromPort = Lens.lens (\CustomRoutingDestinationConfiguration' {fromPort} -> fromPort) (\s@CustomRoutingDestinationConfiguration' {} a -> s {fromPort = a} :: CustomRoutingDestinationConfiguration)++-- | The last port, inclusive, in the range of ports for the endpoint group+-- that is associated with a custom routing accelerator.+customRoutingDestinationConfiguration_toPort :: Lens.Lens' CustomRoutingDestinationConfiguration Prelude.Natural+customRoutingDestinationConfiguration_toPort = Lens.lens (\CustomRoutingDestinationConfiguration' {toPort} -> toPort) (\s@CustomRoutingDestinationConfiguration' {} a -> s {toPort = a} :: CustomRoutingDestinationConfiguration)++-- | The protocol for the endpoint group that is associated with a custom+-- routing accelerator. The protocol can be either TCP or UDP.+customRoutingDestinationConfiguration_protocols :: Lens.Lens' CustomRoutingDestinationConfiguration (Prelude.NonEmpty CustomRoutingProtocol)+customRoutingDestinationConfiguration_protocols = Lens.lens (\CustomRoutingDestinationConfiguration' {protocols} -> protocols) (\s@CustomRoutingDestinationConfiguration' {} a -> s {protocols = a} :: CustomRoutingDestinationConfiguration) Prelude.. Lens.coerced++instance+  Prelude.Hashable+    CustomRoutingDestinationConfiguration+  where+  hashWithSalt+    _salt+    CustomRoutingDestinationConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` fromPort+        `Prelude.hashWithSalt` toPort+        `Prelude.hashWithSalt` protocols++instance+  Prelude.NFData+    CustomRoutingDestinationConfiguration+  where+  rnf CustomRoutingDestinationConfiguration' {..} =+    Prelude.rnf fromPort+      `Prelude.seq` Prelude.rnf toPort+      `Prelude.seq` Prelude.rnf protocols++instance+  Data.ToJSON+    CustomRoutingDestinationConfiguration+  where+  toJSON CustomRoutingDestinationConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("FromPort" Data..= fromPort),+            Prelude.Just ("ToPort" Data..= toPort),+            Prelude.Just ("Protocols" Data..= protocols)+          ]+      )
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingDestinationDescription.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.GlobalAccelerator.Types.CustomRoutingDestinationDescription+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationDescription where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.Protocol+import qualified Amazonka.Prelude as Prelude++-- | For a custom routing accelerator, describes the port range and protocol+-- for all endpoints (virtual private cloud subnets) in an endpoint group+-- to accept client traffic on.+--+-- /See:/ 'newCustomRoutingDestinationDescription' smart constructor.+data CustomRoutingDestinationDescription = CustomRoutingDestinationDescription'+  { -- | The first port, inclusive, in the range of ports for the endpoint group+    -- that is associated with a custom routing accelerator.+    fromPort :: Prelude.Maybe Prelude.Natural,+    -- | The protocol for the endpoint group that is associated with a custom+    -- routing accelerator. The protocol can be either TCP or UDP.+    protocols :: Prelude.Maybe [Protocol],+    -- | The last port, inclusive, in the range of ports for the endpoint group+    -- that is associated with a custom routing accelerator.+    toPort :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CustomRoutingDestinationDescription' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fromPort', 'customRoutingDestinationDescription_fromPort' - The first port, inclusive, in the range of ports for the endpoint group+-- that is associated with a custom routing accelerator.+--+-- 'protocols', 'customRoutingDestinationDescription_protocols' - The protocol for the endpoint group that is associated with a custom+-- routing accelerator. The protocol can be either TCP or UDP.+--+-- 'toPort', 'customRoutingDestinationDescription_toPort' - The last port, inclusive, in the range of ports for the endpoint group+-- that is associated with a custom routing accelerator.+newCustomRoutingDestinationDescription ::+  CustomRoutingDestinationDescription+newCustomRoutingDestinationDescription =+  CustomRoutingDestinationDescription'+    { fromPort =+        Prelude.Nothing,+      protocols = Prelude.Nothing,+      toPort = Prelude.Nothing+    }++-- | The first port, inclusive, in the range of ports for the endpoint group+-- that is associated with a custom routing accelerator.+customRoutingDestinationDescription_fromPort :: Lens.Lens' CustomRoutingDestinationDescription (Prelude.Maybe Prelude.Natural)+customRoutingDestinationDescription_fromPort = Lens.lens (\CustomRoutingDestinationDescription' {fromPort} -> fromPort) (\s@CustomRoutingDestinationDescription' {} a -> s {fromPort = a} :: CustomRoutingDestinationDescription)++-- | The protocol for the endpoint group that is associated with a custom+-- routing accelerator. The protocol can be either TCP or UDP.+customRoutingDestinationDescription_protocols :: Lens.Lens' CustomRoutingDestinationDescription (Prelude.Maybe [Protocol])+customRoutingDestinationDescription_protocols = Lens.lens (\CustomRoutingDestinationDescription' {protocols} -> protocols) (\s@CustomRoutingDestinationDescription' {} a -> s {protocols = a} :: CustomRoutingDestinationDescription) Prelude.. Lens.mapping Lens.coerced++-- | The last port, inclusive, in the range of ports for the endpoint group+-- that is associated with a custom routing accelerator.+customRoutingDestinationDescription_toPort :: Lens.Lens' CustomRoutingDestinationDescription (Prelude.Maybe Prelude.Natural)+customRoutingDestinationDescription_toPort = Lens.lens (\CustomRoutingDestinationDescription' {toPort} -> toPort) (\s@CustomRoutingDestinationDescription' {} a -> s {toPort = a} :: CustomRoutingDestinationDescription)++instance+  Data.FromJSON+    CustomRoutingDestinationDescription+  where+  parseJSON =+    Data.withObject+      "CustomRoutingDestinationDescription"+      ( \x ->+          CustomRoutingDestinationDescription'+            Prelude.<$> (x Data..:? "FromPort")+            Prelude.<*> (x Data..:? "Protocols" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "ToPort")+      )++instance+  Prelude.Hashable+    CustomRoutingDestinationDescription+  where+  hashWithSalt+    _salt+    CustomRoutingDestinationDescription' {..} =+      _salt+        `Prelude.hashWithSalt` fromPort+        `Prelude.hashWithSalt` protocols+        `Prelude.hashWithSalt` toPort++instance+  Prelude.NFData+    CustomRoutingDestinationDescription+  where+  rnf CustomRoutingDestinationDescription' {..} =+    Prelude.rnf fromPort+      `Prelude.seq` Prelude.rnf protocols+      `Prelude.seq` Prelude.rnf toPort
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingDestinationTrafficState.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.GlobalAccelerator.Types.CustomRoutingDestinationTrafficState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationTrafficState+  ( CustomRoutingDestinationTrafficState+      ( ..,+        CustomRoutingDestinationTrafficState_ALLOW,+        CustomRoutingDestinationTrafficState_DENY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CustomRoutingDestinationTrafficState = CustomRoutingDestinationTrafficState'+  { fromCustomRoutingDestinationTrafficState ::+      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 CustomRoutingDestinationTrafficState_ALLOW :: CustomRoutingDestinationTrafficState+pattern CustomRoutingDestinationTrafficState_ALLOW = CustomRoutingDestinationTrafficState' "ALLOW"++pattern CustomRoutingDestinationTrafficState_DENY :: CustomRoutingDestinationTrafficState+pattern CustomRoutingDestinationTrafficState_DENY = CustomRoutingDestinationTrafficState' "DENY"++{-# COMPLETE+  CustomRoutingDestinationTrafficState_ALLOW,+  CustomRoutingDestinationTrafficState_DENY,+  CustomRoutingDestinationTrafficState'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingEndpointConfiguration.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The list of endpoint objects. For custom routing, this is a list of+-- virtual private cloud (VPC) subnet IDs.+--+-- /See:/ 'newCustomRoutingEndpointConfiguration' smart constructor.+data CustomRoutingEndpointConfiguration = CustomRoutingEndpointConfiguration'+  { -- | An ID for the endpoint. For custom routing accelerators, this is the+    -- virtual private cloud (VPC) subnet ID.+    endpointId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CustomRoutingEndpointConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointId', 'customRoutingEndpointConfiguration_endpointId' - An ID for the endpoint. For custom routing accelerators, this is the+-- virtual private cloud (VPC) subnet ID.+newCustomRoutingEndpointConfiguration ::+  CustomRoutingEndpointConfiguration+newCustomRoutingEndpointConfiguration =+  CustomRoutingEndpointConfiguration'+    { endpointId =+        Prelude.Nothing+    }++-- | An ID for the endpoint. For custom routing accelerators, this is the+-- virtual private cloud (VPC) subnet ID.+customRoutingEndpointConfiguration_endpointId :: Lens.Lens' CustomRoutingEndpointConfiguration (Prelude.Maybe Prelude.Text)+customRoutingEndpointConfiguration_endpointId = Lens.lens (\CustomRoutingEndpointConfiguration' {endpointId} -> endpointId) (\s@CustomRoutingEndpointConfiguration' {} a -> s {endpointId = a} :: CustomRoutingEndpointConfiguration)++instance+  Prelude.Hashable+    CustomRoutingEndpointConfiguration+  where+  hashWithSalt+    _salt+    CustomRoutingEndpointConfiguration' {..} =+      _salt `Prelude.hashWithSalt` endpointId++instance+  Prelude.NFData+    CustomRoutingEndpointConfiguration+  where+  rnf CustomRoutingEndpointConfiguration' {..} =+    Prelude.rnf endpointId++instance+  Data.ToJSON+    CustomRoutingEndpointConfiguration+  where+  toJSON CustomRoutingEndpointConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [("EndpointId" Data..=) Prelude.<$> endpointId]+      )
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingEndpointDescription.hs view
@@ -0,0 +1,88 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointDescription+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointDescription where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A complex type for an endpoint for a custom routing accelerator. Each+-- endpoint group can include one or more endpoints, which are virtual+-- private cloud (VPC) subnets.+--+-- /See:/ 'newCustomRoutingEndpointDescription' smart constructor.+data CustomRoutingEndpointDescription = CustomRoutingEndpointDescription'+  { -- | An ID for the endpoint. For custom routing accelerators, this is the+    -- virtual private cloud (VPC) subnet ID.+    endpointId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CustomRoutingEndpointDescription' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointId', 'customRoutingEndpointDescription_endpointId' - An ID for the endpoint. For custom routing accelerators, this is the+-- virtual private cloud (VPC) subnet ID.+newCustomRoutingEndpointDescription ::+  CustomRoutingEndpointDescription+newCustomRoutingEndpointDescription =+  CustomRoutingEndpointDescription'+    { endpointId =+        Prelude.Nothing+    }++-- | An ID for the endpoint. For custom routing accelerators, this is the+-- virtual private cloud (VPC) subnet ID.+customRoutingEndpointDescription_endpointId :: Lens.Lens' CustomRoutingEndpointDescription (Prelude.Maybe Prelude.Text)+customRoutingEndpointDescription_endpointId = Lens.lens (\CustomRoutingEndpointDescription' {endpointId} -> endpointId) (\s@CustomRoutingEndpointDescription' {} a -> s {endpointId = a} :: CustomRoutingEndpointDescription)++instance+  Data.FromJSON+    CustomRoutingEndpointDescription+  where+  parseJSON =+    Data.withObject+      "CustomRoutingEndpointDescription"+      ( \x ->+          CustomRoutingEndpointDescription'+            Prelude.<$> (x Data..:? "EndpointId")+      )++instance+  Prelude.Hashable+    CustomRoutingEndpointDescription+  where+  hashWithSalt+    _salt+    CustomRoutingEndpointDescription' {..} =+      _salt `Prelude.hashWithSalt` endpointId++instance+  Prelude.NFData+    CustomRoutingEndpointDescription+  where+  rnf CustomRoutingEndpointDescription' {..} =+    Prelude.rnf endpointId
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingEndpointGroup.hs view
@@ -0,0 +1,128 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointGroup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationDescription+import Amazonka.GlobalAccelerator.Types.CustomRoutingEndpointDescription+import qualified Amazonka.Prelude as Prelude++-- | A complex type for the endpoint group for a custom routing accelerator.+-- An Amazon Web Services Region can have only one endpoint group for a+-- specific listener.+--+-- /See:/ 'newCustomRoutingEndpointGroup' smart constructor.+data CustomRoutingEndpointGroup = CustomRoutingEndpointGroup'+  { -- | For a custom routing accelerator, describes the port range and protocol+    -- for all endpoints (virtual private cloud subnets) in an endpoint group+    -- to accept client traffic on.+    destinationDescriptions :: Prelude.Maybe [CustomRoutingDestinationDescription],+    -- | For a custom routing accelerator, describes the endpoints (virtual+    -- private cloud subnets) in an endpoint group to accept client traffic on.+    endpointDescriptions :: Prelude.Maybe [CustomRoutingEndpointDescription],+    -- | The Amazon Resource Name (ARN) of the endpoint group.+    endpointGroupArn :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services Region where the endpoint group is located.+    endpointGroupRegion :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CustomRoutingEndpointGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'destinationDescriptions', 'customRoutingEndpointGroup_destinationDescriptions' - For a custom routing accelerator, describes the port range and protocol+-- for all endpoints (virtual private cloud subnets) in an endpoint group+-- to accept client traffic on.+--+-- 'endpointDescriptions', 'customRoutingEndpointGroup_endpointDescriptions' - For a custom routing accelerator, describes the endpoints (virtual+-- private cloud subnets) in an endpoint group to accept client traffic on.+--+-- 'endpointGroupArn', 'customRoutingEndpointGroup_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group.+--+-- 'endpointGroupRegion', 'customRoutingEndpointGroup_endpointGroupRegion' - The Amazon Web Services Region where the endpoint group is located.+newCustomRoutingEndpointGroup ::+  CustomRoutingEndpointGroup+newCustomRoutingEndpointGroup =+  CustomRoutingEndpointGroup'+    { destinationDescriptions =+        Prelude.Nothing,+      endpointDescriptions = Prelude.Nothing,+      endpointGroupArn = Prelude.Nothing,+      endpointGroupRegion = Prelude.Nothing+    }++-- | For a custom routing accelerator, describes the port range and protocol+-- for all endpoints (virtual private cloud subnets) in an endpoint group+-- to accept client traffic on.+customRoutingEndpointGroup_destinationDescriptions :: Lens.Lens' CustomRoutingEndpointGroup (Prelude.Maybe [CustomRoutingDestinationDescription])+customRoutingEndpointGroup_destinationDescriptions = Lens.lens (\CustomRoutingEndpointGroup' {destinationDescriptions} -> destinationDescriptions) (\s@CustomRoutingEndpointGroup' {} a -> s {destinationDescriptions = a} :: CustomRoutingEndpointGroup) Prelude.. Lens.mapping Lens.coerced++-- | For a custom routing accelerator, describes the endpoints (virtual+-- private cloud subnets) in an endpoint group to accept client traffic on.+customRoutingEndpointGroup_endpointDescriptions :: Lens.Lens' CustomRoutingEndpointGroup (Prelude.Maybe [CustomRoutingEndpointDescription])+customRoutingEndpointGroup_endpointDescriptions = Lens.lens (\CustomRoutingEndpointGroup' {endpointDescriptions} -> endpointDescriptions) (\s@CustomRoutingEndpointGroup' {} a -> s {endpointDescriptions = a} :: CustomRoutingEndpointGroup) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the endpoint group.+customRoutingEndpointGroup_endpointGroupArn :: Lens.Lens' CustomRoutingEndpointGroup (Prelude.Maybe Prelude.Text)+customRoutingEndpointGroup_endpointGroupArn = Lens.lens (\CustomRoutingEndpointGroup' {endpointGroupArn} -> endpointGroupArn) (\s@CustomRoutingEndpointGroup' {} a -> s {endpointGroupArn = a} :: CustomRoutingEndpointGroup)++-- | The Amazon Web Services Region where the endpoint group is located.+customRoutingEndpointGroup_endpointGroupRegion :: Lens.Lens' CustomRoutingEndpointGroup (Prelude.Maybe Prelude.Text)+customRoutingEndpointGroup_endpointGroupRegion = Lens.lens (\CustomRoutingEndpointGroup' {endpointGroupRegion} -> endpointGroupRegion) (\s@CustomRoutingEndpointGroup' {} a -> s {endpointGroupRegion = a} :: CustomRoutingEndpointGroup)++instance Data.FromJSON CustomRoutingEndpointGroup where+  parseJSON =+    Data.withObject+      "CustomRoutingEndpointGroup"+      ( \x ->+          CustomRoutingEndpointGroup'+            Prelude.<$> ( x+                            Data..:? "DestinationDescriptions"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..:? "EndpointDescriptions"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "EndpointGroupArn")+            Prelude.<*> (x Data..:? "EndpointGroupRegion")+      )++instance Prelude.Hashable CustomRoutingEndpointGroup where+  hashWithSalt _salt CustomRoutingEndpointGroup' {..} =+    _salt+      `Prelude.hashWithSalt` destinationDescriptions+      `Prelude.hashWithSalt` endpointDescriptions+      `Prelude.hashWithSalt` endpointGroupArn+      `Prelude.hashWithSalt` endpointGroupRegion++instance Prelude.NFData CustomRoutingEndpointGroup where+  rnf CustomRoutingEndpointGroup' {..} =+    Prelude.rnf destinationDescriptions+      `Prelude.seq` Prelude.rnf endpointDescriptions+      `Prelude.seq` Prelude.rnf endpointGroupArn+      `Prelude.seq` Prelude.rnf endpointGroupRegion
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingListener.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.GlobalAccelerator.Types.CustomRoutingListener+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingListener where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.PortRange+import qualified Amazonka.Prelude as Prelude++-- | A complex type for a listener for a custom routing accelerator.+--+-- /See:/ 'newCustomRoutingListener' smart constructor.+data CustomRoutingListener = CustomRoutingListener'+  { -- | The Amazon Resource Name (ARN) of the listener.+    listenerArn :: Prelude.Maybe Prelude.Text,+    -- | The port range to support for connections from clients to your+    -- accelerator.+    --+    -- Separately, you set port ranges for endpoints. For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-custom-routing-endpoints.html About endpoints for custom routing accelerators>.+    portRanges :: Prelude.Maybe (Prelude.NonEmpty PortRange)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CustomRoutingListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listenerArn', 'customRoutingListener_listenerArn' - The Amazon Resource Name (ARN) of the listener.+--+-- 'portRanges', 'customRoutingListener_portRanges' - The port range to support for connections from clients to your+-- accelerator.+--+-- Separately, you set port ranges for endpoints. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-custom-routing-endpoints.html About endpoints for custom routing accelerators>.+newCustomRoutingListener ::+  CustomRoutingListener+newCustomRoutingListener =+  CustomRoutingListener'+    { listenerArn =+        Prelude.Nothing,+      portRanges = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the listener.+customRoutingListener_listenerArn :: Lens.Lens' CustomRoutingListener (Prelude.Maybe Prelude.Text)+customRoutingListener_listenerArn = Lens.lens (\CustomRoutingListener' {listenerArn} -> listenerArn) (\s@CustomRoutingListener' {} a -> s {listenerArn = a} :: CustomRoutingListener)++-- | The port range to support for connections from clients to your+-- accelerator.+--+-- Separately, you set port ranges for endpoints. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-custom-routing-endpoints.html About endpoints for custom routing accelerators>.+customRoutingListener_portRanges :: Lens.Lens' CustomRoutingListener (Prelude.Maybe (Prelude.NonEmpty PortRange))+customRoutingListener_portRanges = Lens.lens (\CustomRoutingListener' {portRanges} -> portRanges) (\s@CustomRoutingListener' {} a -> s {portRanges = a} :: CustomRoutingListener) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON CustomRoutingListener where+  parseJSON =+    Data.withObject+      "CustomRoutingListener"+      ( \x ->+          CustomRoutingListener'+            Prelude.<$> (x Data..:? "ListenerArn")+            Prelude.<*> (x Data..:? "PortRanges")+      )++instance Prelude.Hashable CustomRoutingListener where+  hashWithSalt _salt CustomRoutingListener' {..} =+    _salt+      `Prelude.hashWithSalt` listenerArn+      `Prelude.hashWithSalt` portRanges++instance Prelude.NFData CustomRoutingListener where+  rnf CustomRoutingListener' {..} =+    Prelude.rnf listenerArn+      `Prelude.seq` Prelude.rnf portRanges
+ gen/Amazonka/GlobalAccelerator/Types/CustomRoutingProtocol.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.GlobalAccelerator.Types.CustomRoutingProtocol+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.CustomRoutingProtocol+  ( CustomRoutingProtocol+      ( ..,+        CustomRoutingProtocol_TCP,+        CustomRoutingProtocol_UDP+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CustomRoutingProtocol = CustomRoutingProtocol'+  { fromCustomRoutingProtocol ::+      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 CustomRoutingProtocol_TCP :: CustomRoutingProtocol+pattern CustomRoutingProtocol_TCP = CustomRoutingProtocol' "TCP"++pattern CustomRoutingProtocol_UDP :: CustomRoutingProtocol+pattern CustomRoutingProtocol_UDP = CustomRoutingProtocol' "UDP"++{-# COMPLETE+  CustomRoutingProtocol_TCP,+  CustomRoutingProtocol_UDP,+  CustomRoutingProtocol'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/DestinationPortMapping.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.GlobalAccelerator.Types.DestinationPortMapping+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.DestinationPortMapping where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationTrafficState+import Amazonka.GlobalAccelerator.Types.IpAddressType+import Amazonka.GlobalAccelerator.Types.SocketAddress+import qualified Amazonka.Prelude as Prelude++-- | The port mappings for a specified endpoint IP address (destination).+--+-- /See:/ 'newDestinationPortMapping' smart constructor.+data DestinationPortMapping = DestinationPortMapping'+  { -- | The Amazon Resource Name (ARN) of the custom routing accelerator that+    -- you have port mappings for.+    acceleratorArn :: Prelude.Maybe Prelude.Text,+    -- | The IP address\/port combinations (sockets) that map to a given+    -- destination socket address.+    acceleratorSocketAddresses :: Prelude.Maybe [SocketAddress],+    -- | The endpoint IP address\/port combination for traffic received on the+    -- accelerator socket address.+    destinationSocketAddress :: Prelude.Maybe SocketAddress,+    -- | Indicates whether or not a port mapping destination can receive traffic.+    -- The value is either ALLOW, if traffic is allowed to the destination, or+    -- DENY, if traffic is not allowed to the destination.+    destinationTrafficState :: Prelude.Maybe CustomRoutingDestinationTrafficState,+    -- | The Amazon Resource Name (ARN) of the endpoint group.+    endpointGroupArn :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services Region for the endpoint group.+    endpointGroupRegion :: Prelude.Maybe Prelude.Text,+    -- | The ID for the virtual private cloud (VPC) subnet.+    endpointId :: Prelude.Maybe Prelude.Text,+    -- | The IP address type that an accelerator supports. For a custom routing+    -- accelerator, the value must be IPV4.+    ipAddressType :: Prelude.Maybe IpAddressType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DestinationPortMapping' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorArn', 'destinationPortMapping_acceleratorArn' - The Amazon Resource Name (ARN) of the custom routing accelerator that+-- you have port mappings for.+--+-- 'acceleratorSocketAddresses', 'destinationPortMapping_acceleratorSocketAddresses' - The IP address\/port combinations (sockets) that map to a given+-- destination socket address.+--+-- 'destinationSocketAddress', 'destinationPortMapping_destinationSocketAddress' - The endpoint IP address\/port combination for traffic received on the+-- accelerator socket address.+--+-- 'destinationTrafficState', 'destinationPortMapping_destinationTrafficState' - Indicates whether or not a port mapping destination can receive traffic.+-- The value is either ALLOW, if traffic is allowed to the destination, or+-- DENY, if traffic is not allowed to the destination.+--+-- 'endpointGroupArn', 'destinationPortMapping_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group.+--+-- 'endpointGroupRegion', 'destinationPortMapping_endpointGroupRegion' - The Amazon Web Services Region for the endpoint group.+--+-- 'endpointId', 'destinationPortMapping_endpointId' - The ID for the virtual private cloud (VPC) subnet.+--+-- 'ipAddressType', 'destinationPortMapping_ipAddressType' - The IP address type that an accelerator supports. For a custom routing+-- accelerator, the value must be IPV4.+newDestinationPortMapping ::+  DestinationPortMapping+newDestinationPortMapping =+  DestinationPortMapping'+    { acceleratorArn =+        Prelude.Nothing,+      acceleratorSocketAddresses = Prelude.Nothing,+      destinationSocketAddress = Prelude.Nothing,+      destinationTrafficState = Prelude.Nothing,+      endpointGroupArn = Prelude.Nothing,+      endpointGroupRegion = Prelude.Nothing,+      endpointId = Prelude.Nothing,+      ipAddressType = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the custom routing accelerator that+-- you have port mappings for.+destinationPortMapping_acceleratorArn :: Lens.Lens' DestinationPortMapping (Prelude.Maybe Prelude.Text)+destinationPortMapping_acceleratorArn = Lens.lens (\DestinationPortMapping' {acceleratorArn} -> acceleratorArn) (\s@DestinationPortMapping' {} a -> s {acceleratorArn = a} :: DestinationPortMapping)++-- | The IP address\/port combinations (sockets) that map to a given+-- destination socket address.+destinationPortMapping_acceleratorSocketAddresses :: Lens.Lens' DestinationPortMapping (Prelude.Maybe [SocketAddress])+destinationPortMapping_acceleratorSocketAddresses = Lens.lens (\DestinationPortMapping' {acceleratorSocketAddresses} -> acceleratorSocketAddresses) (\s@DestinationPortMapping' {} a -> s {acceleratorSocketAddresses = a} :: DestinationPortMapping) Prelude.. Lens.mapping Lens.coerced++-- | The endpoint IP address\/port combination for traffic received on the+-- accelerator socket address.+destinationPortMapping_destinationSocketAddress :: Lens.Lens' DestinationPortMapping (Prelude.Maybe SocketAddress)+destinationPortMapping_destinationSocketAddress = Lens.lens (\DestinationPortMapping' {destinationSocketAddress} -> destinationSocketAddress) (\s@DestinationPortMapping' {} a -> s {destinationSocketAddress = a} :: DestinationPortMapping)++-- | Indicates whether or not a port mapping destination can receive traffic.+-- The value is either ALLOW, if traffic is allowed to the destination, or+-- DENY, if traffic is not allowed to the destination.+destinationPortMapping_destinationTrafficState :: Lens.Lens' DestinationPortMapping (Prelude.Maybe CustomRoutingDestinationTrafficState)+destinationPortMapping_destinationTrafficState = Lens.lens (\DestinationPortMapping' {destinationTrafficState} -> destinationTrafficState) (\s@DestinationPortMapping' {} a -> s {destinationTrafficState = a} :: DestinationPortMapping)++-- | The Amazon Resource Name (ARN) of the endpoint group.+destinationPortMapping_endpointGroupArn :: Lens.Lens' DestinationPortMapping (Prelude.Maybe Prelude.Text)+destinationPortMapping_endpointGroupArn = Lens.lens (\DestinationPortMapping' {endpointGroupArn} -> endpointGroupArn) (\s@DestinationPortMapping' {} a -> s {endpointGroupArn = a} :: DestinationPortMapping)++-- | The Amazon Web Services Region for the endpoint group.+destinationPortMapping_endpointGroupRegion :: Lens.Lens' DestinationPortMapping (Prelude.Maybe Prelude.Text)+destinationPortMapping_endpointGroupRegion = Lens.lens (\DestinationPortMapping' {endpointGroupRegion} -> endpointGroupRegion) (\s@DestinationPortMapping' {} a -> s {endpointGroupRegion = a} :: DestinationPortMapping)++-- | The ID for the virtual private cloud (VPC) subnet.+destinationPortMapping_endpointId :: Lens.Lens' DestinationPortMapping (Prelude.Maybe Prelude.Text)+destinationPortMapping_endpointId = Lens.lens (\DestinationPortMapping' {endpointId} -> endpointId) (\s@DestinationPortMapping' {} a -> s {endpointId = a} :: DestinationPortMapping)++-- | The IP address type that an accelerator supports. For a custom routing+-- accelerator, the value must be IPV4.+destinationPortMapping_ipAddressType :: Lens.Lens' DestinationPortMapping (Prelude.Maybe IpAddressType)+destinationPortMapping_ipAddressType = Lens.lens (\DestinationPortMapping' {ipAddressType} -> ipAddressType) (\s@DestinationPortMapping' {} a -> s {ipAddressType = a} :: DestinationPortMapping)++instance Data.FromJSON DestinationPortMapping where+  parseJSON =+    Data.withObject+      "DestinationPortMapping"+      ( \x ->+          DestinationPortMapping'+            Prelude.<$> (x Data..:? "AcceleratorArn")+            Prelude.<*> ( x+                            Data..:? "AcceleratorSocketAddresses"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "DestinationSocketAddress")+            Prelude.<*> (x Data..:? "DestinationTrafficState")+            Prelude.<*> (x Data..:? "EndpointGroupArn")+            Prelude.<*> (x Data..:? "EndpointGroupRegion")+            Prelude.<*> (x Data..:? "EndpointId")+            Prelude.<*> (x Data..:? "IpAddressType")+      )++instance Prelude.Hashable DestinationPortMapping where+  hashWithSalt _salt DestinationPortMapping' {..} =+    _salt+      `Prelude.hashWithSalt` acceleratorArn+      `Prelude.hashWithSalt` acceleratorSocketAddresses+      `Prelude.hashWithSalt` destinationSocketAddress+      `Prelude.hashWithSalt` destinationTrafficState+      `Prelude.hashWithSalt` endpointGroupArn+      `Prelude.hashWithSalt` endpointGroupRegion+      `Prelude.hashWithSalt` endpointId+      `Prelude.hashWithSalt` ipAddressType++instance Prelude.NFData DestinationPortMapping where+  rnf DestinationPortMapping' {..} =+    Prelude.rnf acceleratorArn+      `Prelude.seq` Prelude.rnf acceleratorSocketAddresses+      `Prelude.seq` Prelude.rnf destinationSocketAddress+      `Prelude.seq` Prelude.rnf destinationTrafficState+      `Prelude.seq` Prelude.rnf endpointGroupArn+      `Prelude.seq` Prelude.rnf endpointGroupRegion+      `Prelude.seq` Prelude.rnf endpointId+      `Prelude.seq` Prelude.rnf ipAddressType
+ gen/Amazonka/GlobalAccelerator/Types/EndpointConfiguration.hs view
@@ -0,0 +1,185 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.EndpointConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.EndpointConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A complex type for endpoints. A resource must be valid and active when+-- you add it as an endpoint.+--+-- /See:/ 'newEndpointConfiguration' smart constructor.+data EndpointConfiguration = EndpointConfiguration'+  { -- | Indicates whether client IP address preservation is enabled for an+    -- endpoint. The value is true or false. The default value is true for new+    -- accelerators.+    --+    -- If the value is set to true, the client\'s IP address is preserved in+    -- the @X-Forwarded-For@ request header as traffic travels to applications+    -- on the endpoint fronted by the accelerator.+    --+    -- Client IP address preservation is supported, in specific Amazon Web+    -- Services Regions, for endpoints that are Application Load Balancers and+    -- Amazon EC2 instances.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html Preserve client IP addresses in Global Accelerator>+    -- in the /Global Accelerator Developer Guide/.+    clientIPPreservationEnabled :: Prelude.Maybe Prelude.Bool,+    -- | An ID for the endpoint. If the endpoint is a Network Load Balancer or+    -- Application Load Balancer, this is the Amazon Resource Name (ARN) of the+    -- resource. If the endpoint is an Elastic IP address, this is the Elastic+    -- IP address allocation ID. For Amazon EC2 instances, this is the EC2+    -- instance ID. A resource must be valid and active when you add it as an+    -- endpoint.+    --+    -- An Application Load Balancer can be either internal or internet-facing.+    endpointId :: Prelude.Maybe Prelude.Text,+    -- | The weight associated with the endpoint. When you add weights to+    -- endpoints, you configure Global Accelerator to route traffic based on+    -- proportions that you specify. For example, you might specify endpoint+    -- weights of 4, 5, 5, and 6 (sum=20). The result is that 4\/20 of your+    -- traffic, on average, is routed to the first endpoint, 5\/20 is routed+    -- both to the second and third endpoints, and 6\/20 is routed to the last+    -- endpoint. For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoints-endpoint-weights.html Endpoint weights>+    -- in the /Global Accelerator Developer Guide/.+    weight :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EndpointConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientIPPreservationEnabled', 'endpointConfiguration_clientIPPreservationEnabled' - Indicates whether client IP address preservation is enabled for an+-- endpoint. The value is true or false. The default value is true for new+-- accelerators.+--+-- If the value is set to true, the client\'s IP address is preserved in+-- the @X-Forwarded-For@ request header as traffic travels to applications+-- on the endpoint fronted by the accelerator.+--+-- Client IP address preservation is supported, in specific Amazon Web+-- Services Regions, for endpoints that are Application Load Balancers and+-- Amazon EC2 instances.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html Preserve client IP addresses in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+--+-- 'endpointId', 'endpointConfiguration_endpointId' - An ID for the endpoint. If the endpoint is a Network Load Balancer or+-- Application Load Balancer, this is the Amazon Resource Name (ARN) of the+-- resource. If the endpoint is an Elastic IP address, this is the Elastic+-- IP address allocation ID. For Amazon EC2 instances, this is the EC2+-- instance ID. A resource must be valid and active when you add it as an+-- endpoint.+--+-- An Application Load Balancer can be either internal or internet-facing.+--+-- 'weight', 'endpointConfiguration_weight' - The weight associated with the endpoint. When you add weights to+-- endpoints, you configure Global Accelerator to route traffic based on+-- proportions that you specify. For example, you might specify endpoint+-- weights of 4, 5, 5, and 6 (sum=20). The result is that 4\/20 of your+-- traffic, on average, is routed to the first endpoint, 5\/20 is routed+-- both to the second and third endpoints, and 6\/20 is routed to the last+-- endpoint. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoints-endpoint-weights.html Endpoint weights>+-- in the /Global Accelerator Developer Guide/.+newEndpointConfiguration ::+  EndpointConfiguration+newEndpointConfiguration =+  EndpointConfiguration'+    { clientIPPreservationEnabled =+        Prelude.Nothing,+      endpointId = Prelude.Nothing,+      weight = Prelude.Nothing+    }++-- | Indicates whether client IP address preservation is enabled for an+-- endpoint. The value is true or false. The default value is true for new+-- accelerators.+--+-- If the value is set to true, the client\'s IP address is preserved in+-- the @X-Forwarded-For@ request header as traffic travels to applications+-- on the endpoint fronted by the accelerator.+--+-- Client IP address preservation is supported, in specific Amazon Web+-- Services Regions, for endpoints that are Application Load Balancers and+-- Amazon EC2 instances.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html Preserve client IP addresses in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+endpointConfiguration_clientIPPreservationEnabled :: Lens.Lens' EndpointConfiguration (Prelude.Maybe Prelude.Bool)+endpointConfiguration_clientIPPreservationEnabled = Lens.lens (\EndpointConfiguration' {clientIPPreservationEnabled} -> clientIPPreservationEnabled) (\s@EndpointConfiguration' {} a -> s {clientIPPreservationEnabled = a} :: EndpointConfiguration)++-- | An ID for the endpoint. If the endpoint is a Network Load Balancer or+-- Application Load Balancer, this is the Amazon Resource Name (ARN) of the+-- resource. If the endpoint is an Elastic IP address, this is the Elastic+-- IP address allocation ID. For Amazon EC2 instances, this is the EC2+-- instance ID. A resource must be valid and active when you add it as an+-- endpoint.+--+-- An Application Load Balancer can be either internal or internet-facing.+endpointConfiguration_endpointId :: Lens.Lens' EndpointConfiguration (Prelude.Maybe Prelude.Text)+endpointConfiguration_endpointId = Lens.lens (\EndpointConfiguration' {endpointId} -> endpointId) (\s@EndpointConfiguration' {} a -> s {endpointId = a} :: EndpointConfiguration)++-- | The weight associated with the endpoint. When you add weights to+-- endpoints, you configure Global Accelerator to route traffic based on+-- proportions that you specify. For example, you might specify endpoint+-- weights of 4, 5, 5, and 6 (sum=20). The result is that 4\/20 of your+-- traffic, on average, is routed to the first endpoint, 5\/20 is routed+-- both to the second and third endpoints, and 6\/20 is routed to the last+-- endpoint. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoints-endpoint-weights.html Endpoint weights>+-- in the /Global Accelerator Developer Guide/.+endpointConfiguration_weight :: Lens.Lens' EndpointConfiguration (Prelude.Maybe Prelude.Natural)+endpointConfiguration_weight = Lens.lens (\EndpointConfiguration' {weight} -> weight) (\s@EndpointConfiguration' {} a -> s {weight = a} :: EndpointConfiguration)++instance Prelude.Hashable EndpointConfiguration where+  hashWithSalt _salt EndpointConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` clientIPPreservationEnabled+      `Prelude.hashWithSalt` endpointId+      `Prelude.hashWithSalt` weight++instance Prelude.NFData EndpointConfiguration where+  rnf EndpointConfiguration' {..} =+    Prelude.rnf clientIPPreservationEnabled+      `Prelude.seq` Prelude.rnf endpointId+      `Prelude.seq` Prelude.rnf weight++instance Data.ToJSON EndpointConfiguration where+  toJSON EndpointConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientIPPreservationEnabled" Data..=)+              Prelude.<$> clientIPPreservationEnabled,+            ("EndpointId" Data..=) Prelude.<$> endpointId,+            ("Weight" Data..=) Prelude.<$> weight+          ]+      )
+ gen/Amazonka/GlobalAccelerator/Types/EndpointDescription.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.GlobalAccelerator.Types.EndpointDescription+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.EndpointDescription where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.HealthState+import qualified Amazonka.Prelude as Prelude++-- | A complex type for an endpoint. Each endpoint group can include one or+-- more endpoints, such as load balancers.+--+-- /See:/ 'newEndpointDescription' smart constructor.+data EndpointDescription = EndpointDescription'+  { -- | Indicates whether client IP address preservation is enabled for an+    -- endpoint. The value is true or false. The default value is true for new+    -- accelerators.+    --+    -- If the value is set to true, the client\'s IP address is preserved in+    -- the @X-Forwarded-For@ request header as traffic travels to applications+    -- on the endpoint fronted by the accelerator.+    --+    -- Client IP address preservation is supported, in specific Amazon Web+    -- Services Regions, for endpoints that are Application Load Balancers and+    -- Amazon EC2 instances.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html Preserve client IP addresses in Global Accelerator>+    -- in the /Global Accelerator Developer Guide/.+    clientIPPreservationEnabled :: Prelude.Maybe Prelude.Bool,+    -- | An ID for the endpoint. If the endpoint is a Network Load Balancer or+    -- Application Load Balancer, this is the Amazon Resource Name (ARN) of the+    -- resource. If the endpoint is an Elastic IP address, this is the Elastic+    -- IP address allocation ID. For Amazon EC2 instances, this is the EC2+    -- instance ID.+    --+    -- An Application Load Balancer can be either internal or internet-facing.+    endpointId :: Prelude.Maybe Prelude.Text,+    -- | Returns a null result.+    healthReason :: Prelude.Maybe Prelude.Text,+    -- | The health status of the endpoint.+    healthState :: Prelude.Maybe HealthState,+    -- | The weight associated with the endpoint. When you add weights to+    -- endpoints, you configure Global Accelerator to route traffic based on+    -- proportions that you specify. For example, you might specify endpoint+    -- weights of 4, 5, 5, and 6 (sum=20). The result is that 4\/20 of your+    -- traffic, on average, is routed to the first endpoint, 5\/20 is routed+    -- both to the second and third endpoints, and 6\/20 is routed to the last+    -- endpoint. For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoints-endpoint-weights.html Endpoint weights>+    -- in the /Global Accelerator Developer Guide/.+    weight :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EndpointDescription' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientIPPreservationEnabled', 'endpointDescription_clientIPPreservationEnabled' - Indicates whether client IP address preservation is enabled for an+-- endpoint. The value is true or false. The default value is true for new+-- accelerators.+--+-- If the value is set to true, the client\'s IP address is preserved in+-- the @X-Forwarded-For@ request header as traffic travels to applications+-- on the endpoint fronted by the accelerator.+--+-- Client IP address preservation is supported, in specific Amazon Web+-- Services Regions, for endpoints that are Application Load Balancers and+-- Amazon EC2 instances.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html Preserve client IP addresses in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+--+-- 'endpointId', 'endpointDescription_endpointId' - An ID for the endpoint. If the endpoint is a Network Load Balancer or+-- Application Load Balancer, this is the Amazon Resource Name (ARN) of the+-- resource. If the endpoint is an Elastic IP address, this is the Elastic+-- IP address allocation ID. For Amazon EC2 instances, this is the EC2+-- instance ID.+--+-- An Application Load Balancer can be either internal or internet-facing.+--+-- 'healthReason', 'endpointDescription_healthReason' - Returns a null result.+--+-- 'healthState', 'endpointDescription_healthState' - The health status of the endpoint.+--+-- 'weight', 'endpointDescription_weight' - The weight associated with the endpoint. When you add weights to+-- endpoints, you configure Global Accelerator to route traffic based on+-- proportions that you specify. For example, you might specify endpoint+-- weights of 4, 5, 5, and 6 (sum=20). The result is that 4\/20 of your+-- traffic, on average, is routed to the first endpoint, 5\/20 is routed+-- both to the second and third endpoints, and 6\/20 is routed to the last+-- endpoint. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoints-endpoint-weights.html Endpoint weights>+-- in the /Global Accelerator Developer Guide/.+newEndpointDescription ::+  EndpointDescription+newEndpointDescription =+  EndpointDescription'+    { clientIPPreservationEnabled =+        Prelude.Nothing,+      endpointId = Prelude.Nothing,+      healthReason = Prelude.Nothing,+      healthState = Prelude.Nothing,+      weight = Prelude.Nothing+    }++-- | Indicates whether client IP address preservation is enabled for an+-- endpoint. The value is true or false. The default value is true for new+-- accelerators.+--+-- If the value is set to true, the client\'s IP address is preserved in+-- the @X-Forwarded-For@ request header as traffic travels to applications+-- on the endpoint fronted by the accelerator.+--+-- Client IP address preservation is supported, in specific Amazon Web+-- Services Regions, for endpoints that are Application Load Balancers and+-- Amazon EC2 instances.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html Preserve client IP addresses in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+endpointDescription_clientIPPreservationEnabled :: Lens.Lens' EndpointDescription (Prelude.Maybe Prelude.Bool)+endpointDescription_clientIPPreservationEnabled = Lens.lens (\EndpointDescription' {clientIPPreservationEnabled} -> clientIPPreservationEnabled) (\s@EndpointDescription' {} a -> s {clientIPPreservationEnabled = a} :: EndpointDescription)++-- | An ID for the endpoint. If the endpoint is a Network Load Balancer or+-- Application Load Balancer, this is the Amazon Resource Name (ARN) of the+-- resource. If the endpoint is an Elastic IP address, this is the Elastic+-- IP address allocation ID. For Amazon EC2 instances, this is the EC2+-- instance ID.+--+-- An Application Load Balancer can be either internal or internet-facing.+endpointDescription_endpointId :: Lens.Lens' EndpointDescription (Prelude.Maybe Prelude.Text)+endpointDescription_endpointId = Lens.lens (\EndpointDescription' {endpointId} -> endpointId) (\s@EndpointDescription' {} a -> s {endpointId = a} :: EndpointDescription)++-- | Returns a null result.+endpointDescription_healthReason :: Lens.Lens' EndpointDescription (Prelude.Maybe Prelude.Text)+endpointDescription_healthReason = Lens.lens (\EndpointDescription' {healthReason} -> healthReason) (\s@EndpointDescription' {} a -> s {healthReason = a} :: EndpointDescription)++-- | The health status of the endpoint.+endpointDescription_healthState :: Lens.Lens' EndpointDescription (Prelude.Maybe HealthState)+endpointDescription_healthState = Lens.lens (\EndpointDescription' {healthState} -> healthState) (\s@EndpointDescription' {} a -> s {healthState = a} :: EndpointDescription)++-- | The weight associated with the endpoint. When you add weights to+-- endpoints, you configure Global Accelerator to route traffic based on+-- proportions that you specify. For example, you might specify endpoint+-- weights of 4, 5, 5, and 6 (sum=20). The result is that 4\/20 of your+-- traffic, on average, is routed to the first endpoint, 5\/20 is routed+-- both to the second and third endpoints, and 6\/20 is routed to the last+-- endpoint. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoints-endpoint-weights.html Endpoint weights>+-- in the /Global Accelerator Developer Guide/.+endpointDescription_weight :: Lens.Lens' EndpointDescription (Prelude.Maybe Prelude.Natural)+endpointDescription_weight = Lens.lens (\EndpointDescription' {weight} -> weight) (\s@EndpointDescription' {} a -> s {weight = a} :: EndpointDescription)++instance Data.FromJSON EndpointDescription where+  parseJSON =+    Data.withObject+      "EndpointDescription"+      ( \x ->+          EndpointDescription'+            Prelude.<$> (x Data..:? "ClientIPPreservationEnabled")+            Prelude.<*> (x Data..:? "EndpointId")+            Prelude.<*> (x Data..:? "HealthReason")+            Prelude.<*> (x Data..:? "HealthState")+            Prelude.<*> (x Data..:? "Weight")+      )++instance Prelude.Hashable EndpointDescription where+  hashWithSalt _salt EndpointDescription' {..} =+    _salt+      `Prelude.hashWithSalt` clientIPPreservationEnabled+      `Prelude.hashWithSalt` endpointId+      `Prelude.hashWithSalt` healthReason+      `Prelude.hashWithSalt` healthState+      `Prelude.hashWithSalt` weight++instance Prelude.NFData EndpointDescription where+  rnf EndpointDescription' {..} =+    Prelude.rnf clientIPPreservationEnabled+      `Prelude.seq` Prelude.rnf endpointId+      `Prelude.seq` Prelude.rnf healthReason+      `Prelude.seq` Prelude.rnf healthState+      `Prelude.seq` Prelude.rnf weight
+ gen/Amazonka/GlobalAccelerator/Types/EndpointGroup.hs view
@@ -0,0 +1,260 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.EndpointGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.EndpointGroup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.EndpointDescription+import Amazonka.GlobalAccelerator.Types.HealthCheckProtocol+import Amazonka.GlobalAccelerator.Types.PortOverride+import qualified Amazonka.Prelude as Prelude++-- | A complex type for the endpoint group. An Amazon Web Services Region can+-- have only one endpoint group for a specific listener.+--+-- /See:/ 'newEndpointGroup' smart constructor.+data EndpointGroup = EndpointGroup'+  { -- | The list of endpoint objects.+    endpointDescriptions :: Prelude.Maybe [EndpointDescription],+    -- | The Amazon Resource Name (ARN) of the endpoint group.+    endpointGroupArn :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services Region where the endpoint group is located.+    endpointGroupRegion :: Prelude.Maybe Prelude.Text,+    -- | The time—10 seconds or 30 seconds—between health checks for each+    -- endpoint. The default value is 30.+    healthCheckIntervalSeconds :: Prelude.Maybe Prelude.Natural,+    -- | If the protocol is HTTP\/S, then this value provides the ping path that+    -- Global Accelerator uses for the destination on the endpoints for health+    -- checks. The default is slash (\/).+    healthCheckPath :: Prelude.Maybe Prelude.Text,+    -- | The port that Global Accelerator uses to perform health checks on+    -- endpoints that are part of this endpoint group.+    --+    -- The default port is the port for the listener that this endpoint group+    -- is associated with. If the listener port is a list, Global Accelerator+    -- uses the first specified port in the list of ports.+    healthCheckPort :: Prelude.Maybe Prelude.Natural,+    -- | The protocol that Global Accelerator uses to perform health checks on+    -- endpoints that are part of this endpoint group. The default value is+    -- TCP.+    healthCheckProtocol :: Prelude.Maybe HealthCheckProtocol,+    -- | Allows you to override the destination ports used to route traffic to an+    -- endpoint. Using a port override lets you map a list of external+    -- destination ports (that your users send traffic to) to a list of+    -- internal destination ports that you want an application endpoint to+    -- receive traffic on.+    portOverrides :: Prelude.Maybe [PortOverride],+    -- | The number of consecutive health checks required to set the state of a+    -- healthy endpoint to unhealthy, or to set an unhealthy endpoint to+    -- healthy. The default value is 3.+    thresholdCount :: Prelude.Maybe Prelude.Natural,+    -- | The percentage of traffic to send to an Amazon Web Services Region.+    -- Additional traffic is distributed to other endpoint groups for this+    -- listener.+    --+    -- Use this action to increase (dial up) or decrease (dial down) traffic to+    -- a specific Region. The percentage is applied to the traffic that would+    -- otherwise have been routed to the Region based on optimal routing.+    --+    -- The default value is 100.+    trafficDialPercentage :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EndpointGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointDescriptions', 'endpointGroup_endpointDescriptions' - The list of endpoint objects.+--+-- 'endpointGroupArn', 'endpointGroup_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group.+--+-- 'endpointGroupRegion', 'endpointGroup_endpointGroupRegion' - The Amazon Web Services Region where the endpoint group is located.+--+-- 'healthCheckIntervalSeconds', 'endpointGroup_healthCheckIntervalSeconds' - The time—10 seconds or 30 seconds—between health checks for each+-- endpoint. The default value is 30.+--+-- 'healthCheckPath', 'endpointGroup_healthCheckPath' - If the protocol is HTTP\/S, then this value provides the ping path that+-- Global Accelerator uses for the destination on the endpoints for health+-- checks. The default is slash (\/).+--+-- 'healthCheckPort', 'endpointGroup_healthCheckPort' - The port that Global Accelerator uses to perform health checks on+-- endpoints that are part of this endpoint group.+--+-- The default port is the port for the listener that this endpoint group+-- is associated with. If the listener port is a list, Global Accelerator+-- uses the first specified port in the list of ports.+--+-- 'healthCheckProtocol', 'endpointGroup_healthCheckProtocol' - The protocol that Global Accelerator uses to perform health checks on+-- endpoints that are part of this endpoint group. The default value is+-- TCP.+--+-- 'portOverrides', 'endpointGroup_portOverrides' - Allows you to override the destination ports used to route traffic to an+-- endpoint. Using a port override lets you map a list of external+-- destination ports (that your users send traffic to) to a list of+-- internal destination ports that you want an application endpoint to+-- receive traffic on.+--+-- 'thresholdCount', 'endpointGroup_thresholdCount' - The number of consecutive health checks required to set the state of a+-- healthy endpoint to unhealthy, or to set an unhealthy endpoint to+-- healthy. The default value is 3.+--+-- 'trafficDialPercentage', 'endpointGroup_trafficDialPercentage' - The percentage of traffic to send to an Amazon Web Services Region.+-- Additional traffic is distributed to other endpoint groups for this+-- listener.+--+-- Use this action to increase (dial up) or decrease (dial down) traffic to+-- a specific Region. The percentage is applied to the traffic that would+-- otherwise have been routed to the Region based on optimal routing.+--+-- The default value is 100.+newEndpointGroup ::+  EndpointGroup+newEndpointGroup =+  EndpointGroup'+    { endpointDescriptions =+        Prelude.Nothing,+      endpointGroupArn = Prelude.Nothing,+      endpointGroupRegion = Prelude.Nothing,+      healthCheckIntervalSeconds = Prelude.Nothing,+      healthCheckPath = Prelude.Nothing,+      healthCheckPort = Prelude.Nothing,+      healthCheckProtocol = Prelude.Nothing,+      portOverrides = Prelude.Nothing,+      thresholdCount = Prelude.Nothing,+      trafficDialPercentage = Prelude.Nothing+    }++-- | The list of endpoint objects.+endpointGroup_endpointDescriptions :: Lens.Lens' EndpointGroup (Prelude.Maybe [EndpointDescription])+endpointGroup_endpointDescriptions = Lens.lens (\EndpointGroup' {endpointDescriptions} -> endpointDescriptions) (\s@EndpointGroup' {} a -> s {endpointDescriptions = a} :: EndpointGroup) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the endpoint group.+endpointGroup_endpointGroupArn :: Lens.Lens' EndpointGroup (Prelude.Maybe Prelude.Text)+endpointGroup_endpointGroupArn = Lens.lens (\EndpointGroup' {endpointGroupArn} -> endpointGroupArn) (\s@EndpointGroup' {} a -> s {endpointGroupArn = a} :: EndpointGroup)++-- | The Amazon Web Services Region where the endpoint group is located.+endpointGroup_endpointGroupRegion :: Lens.Lens' EndpointGroup (Prelude.Maybe Prelude.Text)+endpointGroup_endpointGroupRegion = Lens.lens (\EndpointGroup' {endpointGroupRegion} -> endpointGroupRegion) (\s@EndpointGroup' {} a -> s {endpointGroupRegion = a} :: EndpointGroup)++-- | The time—10 seconds or 30 seconds—between health checks for each+-- endpoint. The default value is 30.+endpointGroup_healthCheckIntervalSeconds :: Lens.Lens' EndpointGroup (Prelude.Maybe Prelude.Natural)+endpointGroup_healthCheckIntervalSeconds = Lens.lens (\EndpointGroup' {healthCheckIntervalSeconds} -> healthCheckIntervalSeconds) (\s@EndpointGroup' {} a -> s {healthCheckIntervalSeconds = a} :: EndpointGroup)++-- | If the protocol is HTTP\/S, then this value provides the ping path that+-- Global Accelerator uses for the destination on the endpoints for health+-- checks. The default is slash (\/).+endpointGroup_healthCheckPath :: Lens.Lens' EndpointGroup (Prelude.Maybe Prelude.Text)+endpointGroup_healthCheckPath = Lens.lens (\EndpointGroup' {healthCheckPath} -> healthCheckPath) (\s@EndpointGroup' {} a -> s {healthCheckPath = a} :: EndpointGroup)++-- | The port that Global Accelerator uses to perform health checks on+-- endpoints that are part of this endpoint group.+--+-- The default port is the port for the listener that this endpoint group+-- is associated with. If the listener port is a list, Global Accelerator+-- uses the first specified port in the list of ports.+endpointGroup_healthCheckPort :: Lens.Lens' EndpointGroup (Prelude.Maybe Prelude.Natural)+endpointGroup_healthCheckPort = Lens.lens (\EndpointGroup' {healthCheckPort} -> healthCheckPort) (\s@EndpointGroup' {} a -> s {healthCheckPort = a} :: EndpointGroup)++-- | The protocol that Global Accelerator uses to perform health checks on+-- endpoints that are part of this endpoint group. The default value is+-- TCP.+endpointGroup_healthCheckProtocol :: Lens.Lens' EndpointGroup (Prelude.Maybe HealthCheckProtocol)+endpointGroup_healthCheckProtocol = Lens.lens (\EndpointGroup' {healthCheckProtocol} -> healthCheckProtocol) (\s@EndpointGroup' {} a -> s {healthCheckProtocol = a} :: EndpointGroup)++-- | Allows you to override the destination ports used to route traffic to an+-- endpoint. Using a port override lets you map a list of external+-- destination ports (that your users send traffic to) to a list of+-- internal destination ports that you want an application endpoint to+-- receive traffic on.+endpointGroup_portOverrides :: Lens.Lens' EndpointGroup (Prelude.Maybe [PortOverride])+endpointGroup_portOverrides = Lens.lens (\EndpointGroup' {portOverrides} -> portOverrides) (\s@EndpointGroup' {} a -> s {portOverrides = a} :: EndpointGroup) Prelude.. Lens.mapping Lens.coerced++-- | The number of consecutive health checks required to set the state of a+-- healthy endpoint to unhealthy, or to set an unhealthy endpoint to+-- healthy. The default value is 3.+endpointGroup_thresholdCount :: Lens.Lens' EndpointGroup (Prelude.Maybe Prelude.Natural)+endpointGroup_thresholdCount = Lens.lens (\EndpointGroup' {thresholdCount} -> thresholdCount) (\s@EndpointGroup' {} a -> s {thresholdCount = a} :: EndpointGroup)++-- | The percentage of traffic to send to an Amazon Web Services Region.+-- Additional traffic is distributed to other endpoint groups for this+-- listener.+--+-- Use this action to increase (dial up) or decrease (dial down) traffic to+-- a specific Region. The percentage is applied to the traffic that would+-- otherwise have been routed to the Region based on optimal routing.+--+-- The default value is 100.+endpointGroup_trafficDialPercentage :: Lens.Lens' EndpointGroup (Prelude.Maybe Prelude.Double)+endpointGroup_trafficDialPercentage = Lens.lens (\EndpointGroup' {trafficDialPercentage} -> trafficDialPercentage) (\s@EndpointGroup' {} a -> s {trafficDialPercentage = a} :: EndpointGroup)++instance Data.FromJSON EndpointGroup where+  parseJSON =+    Data.withObject+      "EndpointGroup"+      ( \x ->+          EndpointGroup'+            Prelude.<$> ( x+                            Data..:? "EndpointDescriptions"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "EndpointGroupArn")+            Prelude.<*> (x Data..:? "EndpointGroupRegion")+            Prelude.<*> (x Data..:? "HealthCheckIntervalSeconds")+            Prelude.<*> (x Data..:? "HealthCheckPath")+            Prelude.<*> (x Data..:? "HealthCheckPort")+            Prelude.<*> (x Data..:? "HealthCheckProtocol")+            Prelude.<*> (x Data..:? "PortOverrides" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "ThresholdCount")+            Prelude.<*> (x Data..:? "TrafficDialPercentage")+      )++instance Prelude.Hashable EndpointGroup where+  hashWithSalt _salt EndpointGroup' {..} =+    _salt+      `Prelude.hashWithSalt` endpointDescriptions+      `Prelude.hashWithSalt` endpointGroupArn+      `Prelude.hashWithSalt` endpointGroupRegion+      `Prelude.hashWithSalt` healthCheckIntervalSeconds+      `Prelude.hashWithSalt` healthCheckPath+      `Prelude.hashWithSalt` healthCheckPort+      `Prelude.hashWithSalt` healthCheckProtocol+      `Prelude.hashWithSalt` portOverrides+      `Prelude.hashWithSalt` thresholdCount+      `Prelude.hashWithSalt` trafficDialPercentage++instance Prelude.NFData EndpointGroup where+  rnf EndpointGroup' {..} =+    Prelude.rnf endpointDescriptions+      `Prelude.seq` Prelude.rnf endpointGroupArn+      `Prelude.seq` Prelude.rnf endpointGroupRegion+      `Prelude.seq` Prelude.rnf healthCheckIntervalSeconds+      `Prelude.seq` Prelude.rnf healthCheckPath+      `Prelude.seq` Prelude.rnf healthCheckPort+      `Prelude.seq` Prelude.rnf healthCheckProtocol+      `Prelude.seq` Prelude.rnf portOverrides+      `Prelude.seq` Prelude.rnf thresholdCount+      `Prelude.seq` Prelude.rnf trafficDialPercentage
+ gen/Amazonka/GlobalAccelerator/Types/EndpointIdentifier.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.GlobalAccelerator.Types.EndpointIdentifier+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.EndpointIdentifier where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A complex type for an endpoint. Specifies information about the endpoint+-- to remove from the endpoint group.+--+-- /See:/ 'newEndpointIdentifier' smart constructor.+data EndpointIdentifier = EndpointIdentifier'+  { -- | Indicates whether client IP address preservation is enabled for an+    -- endpoint. The value is true or false.+    --+    -- If the value is set to true, the client\'s IP address is preserved in+    -- the @X-Forwarded-For@ request header as traffic travels to applications+    -- on the endpoint fronted by the accelerator.+    clientIPPreservationEnabled :: Prelude.Maybe Prelude.Bool,+    -- | An ID for the endpoint. If the endpoint is a Network Load Balancer or+    -- Application Load Balancer, this is the Amazon Resource Name (ARN) of the+    -- resource. If the endpoint is an Elastic IP address, this is the Elastic+    -- IP address allocation ID. For Amazon EC2 instances, this is the EC2+    -- instance ID.+    --+    -- An Application Load Balancer can be either internal or internet-facing.+    endpointId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EndpointIdentifier' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientIPPreservationEnabled', 'endpointIdentifier_clientIPPreservationEnabled' - Indicates whether client IP address preservation is enabled for an+-- endpoint. The value is true or false.+--+-- If the value is set to true, the client\'s IP address is preserved in+-- the @X-Forwarded-For@ request header as traffic travels to applications+-- on the endpoint fronted by the accelerator.+--+-- 'endpointId', 'endpointIdentifier_endpointId' - An ID for the endpoint. If the endpoint is a Network Load Balancer or+-- Application Load Balancer, this is the Amazon Resource Name (ARN) of the+-- resource. If the endpoint is an Elastic IP address, this is the Elastic+-- IP address allocation ID. For Amazon EC2 instances, this is the EC2+-- instance ID.+--+-- An Application Load Balancer can be either internal or internet-facing.+newEndpointIdentifier ::+  -- | 'endpointId'+  Prelude.Text ->+  EndpointIdentifier+newEndpointIdentifier pEndpointId_ =+  EndpointIdentifier'+    { clientIPPreservationEnabled =+        Prelude.Nothing,+      endpointId = pEndpointId_+    }++-- | Indicates whether client IP address preservation is enabled for an+-- endpoint. The value is true or false.+--+-- If the value is set to true, the client\'s IP address is preserved in+-- the @X-Forwarded-For@ request header as traffic travels to applications+-- on the endpoint fronted by the accelerator.+endpointIdentifier_clientIPPreservationEnabled :: Lens.Lens' EndpointIdentifier (Prelude.Maybe Prelude.Bool)+endpointIdentifier_clientIPPreservationEnabled = Lens.lens (\EndpointIdentifier' {clientIPPreservationEnabled} -> clientIPPreservationEnabled) (\s@EndpointIdentifier' {} a -> s {clientIPPreservationEnabled = a} :: EndpointIdentifier)++-- | An ID for the endpoint. If the endpoint is a Network Load Balancer or+-- Application Load Balancer, this is the Amazon Resource Name (ARN) of the+-- resource. If the endpoint is an Elastic IP address, this is the Elastic+-- IP address allocation ID. For Amazon EC2 instances, this is the EC2+-- instance ID.+--+-- An Application Load Balancer can be either internal or internet-facing.+endpointIdentifier_endpointId :: Lens.Lens' EndpointIdentifier Prelude.Text+endpointIdentifier_endpointId = Lens.lens (\EndpointIdentifier' {endpointId} -> endpointId) (\s@EndpointIdentifier' {} a -> s {endpointId = a} :: EndpointIdentifier)++instance Prelude.Hashable EndpointIdentifier where+  hashWithSalt _salt EndpointIdentifier' {..} =+    _salt+      `Prelude.hashWithSalt` clientIPPreservationEnabled+      `Prelude.hashWithSalt` endpointId++instance Prelude.NFData EndpointIdentifier where+  rnf EndpointIdentifier' {..} =+    Prelude.rnf clientIPPreservationEnabled+      `Prelude.seq` Prelude.rnf endpointId++instance Data.ToJSON EndpointIdentifier where+  toJSON EndpointIdentifier' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientIPPreservationEnabled" Data..=)+              Prelude.<$> clientIPPreservationEnabled,+            Prelude.Just ("EndpointId" Data..= endpointId)+          ]+      )
+ gen/Amazonka/GlobalAccelerator/Types/HealthCheckProtocol.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.GlobalAccelerator.Types.HealthCheckProtocol+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.HealthCheckProtocol+  ( HealthCheckProtocol+      ( ..,+        HealthCheckProtocol_HTTP,+        HealthCheckProtocol_HTTPS,+        HealthCheckProtocol_TCP+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype HealthCheckProtocol = HealthCheckProtocol'+  { fromHealthCheckProtocol ::+      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 HealthCheckProtocol_HTTP :: HealthCheckProtocol+pattern HealthCheckProtocol_HTTP = HealthCheckProtocol' "HTTP"++pattern HealthCheckProtocol_HTTPS :: HealthCheckProtocol+pattern HealthCheckProtocol_HTTPS = HealthCheckProtocol' "HTTPS"++pattern HealthCheckProtocol_TCP :: HealthCheckProtocol+pattern HealthCheckProtocol_TCP = HealthCheckProtocol' "TCP"++{-# COMPLETE+  HealthCheckProtocol_HTTP,+  HealthCheckProtocol_HTTPS,+  HealthCheckProtocol_TCP,+  HealthCheckProtocol'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/HealthState.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.GlobalAccelerator.Types.HealthState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.HealthState+  ( HealthState+      ( ..,+        HealthState_HEALTHY,+        HealthState_INITIAL,+        HealthState_UNHEALTHY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype HealthState = HealthState'+  { fromHealthState ::+      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 HealthState_HEALTHY :: HealthState+pattern HealthState_HEALTHY = HealthState' "HEALTHY"++pattern HealthState_INITIAL :: HealthState+pattern HealthState_INITIAL = HealthState' "INITIAL"++pattern HealthState_UNHEALTHY :: HealthState+pattern HealthState_UNHEALTHY = HealthState' "UNHEALTHY"++{-# COMPLETE+  HealthState_HEALTHY,+  HealthState_INITIAL,+  HealthState_UNHEALTHY,+  HealthState'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/IpAddressFamily.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.GlobalAccelerator.Types.IpAddressFamily+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.IpAddressFamily+  ( IpAddressFamily+      ( ..,+        IpAddressFamily_IPv4,+        IpAddressFamily_IPv6+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype IpAddressFamily = IpAddressFamily'+  { fromIpAddressFamily ::+      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 IpAddressFamily_IPv4 :: IpAddressFamily+pattern IpAddressFamily_IPv4 = IpAddressFamily' "IPv4"++pattern IpAddressFamily_IPv6 :: IpAddressFamily+pattern IpAddressFamily_IPv6 = IpAddressFamily' "IPv6"++{-# COMPLETE+  IpAddressFamily_IPv4,+  IpAddressFamily_IPv6,+  IpAddressFamily'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/IpAddressType.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.GlobalAccelerator.Types.IpAddressType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.IpAddressType+  ( IpAddressType+      ( ..,+        IpAddressType_DUAL_STACK,+        IpAddressType_IPV4+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype IpAddressType = IpAddressType'+  { fromIpAddressType ::+      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 IpAddressType_DUAL_STACK :: IpAddressType+pattern IpAddressType_DUAL_STACK = IpAddressType' "DUAL_STACK"++pattern IpAddressType_IPV4 :: IpAddressType+pattern IpAddressType_IPV4 = IpAddressType' "IPV4"++{-# COMPLETE+  IpAddressType_DUAL_STACK,+  IpAddressType_IPV4,+  IpAddressType'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/IpSet.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.GlobalAccelerator.Types.IpSet+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.IpSet where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.IpAddressFamily+import qualified Amazonka.Prelude as Prelude++-- | A complex type for the set of IP addresses for an accelerator.+--+-- /See:/ 'newIpSet' smart constructor.+data IpSet = IpSet'+  { -- | The types of IP addresses included in this IP set.+    ipAddressFamily :: Prelude.Maybe IpAddressFamily,+    -- | The array of IP addresses in the IP address set. An IP address set can+    -- have a maximum of two IP addresses.+    ipAddresses :: Prelude.Maybe [Prelude.Text],+    -- | IpFamily is deprecated and has been replaced by IpAddressFamily.+    ipFamily :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IpSet' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'ipAddressFamily', 'ipSet_ipAddressFamily' - The types of IP addresses included in this IP set.+--+-- 'ipAddresses', 'ipSet_ipAddresses' - The array of IP addresses in the IP address set. An IP address set can+-- have a maximum of two IP addresses.+--+-- 'ipFamily', 'ipSet_ipFamily' - IpFamily is deprecated and has been replaced by IpAddressFamily.+newIpSet ::+  IpSet+newIpSet =+  IpSet'+    { ipAddressFamily = Prelude.Nothing,+      ipAddresses = Prelude.Nothing,+      ipFamily = Prelude.Nothing+    }++-- | The types of IP addresses included in this IP set.+ipSet_ipAddressFamily :: Lens.Lens' IpSet (Prelude.Maybe IpAddressFamily)+ipSet_ipAddressFamily = Lens.lens (\IpSet' {ipAddressFamily} -> ipAddressFamily) (\s@IpSet' {} a -> s {ipAddressFamily = a} :: IpSet)++-- | The array of IP addresses in the IP address set. An IP address set can+-- have a maximum of two IP addresses.+ipSet_ipAddresses :: Lens.Lens' IpSet (Prelude.Maybe [Prelude.Text])+ipSet_ipAddresses = Lens.lens (\IpSet' {ipAddresses} -> ipAddresses) (\s@IpSet' {} a -> s {ipAddresses = a} :: IpSet) Prelude.. Lens.mapping Lens.coerced++-- | IpFamily is deprecated and has been replaced by IpAddressFamily.+ipSet_ipFamily :: Lens.Lens' IpSet (Prelude.Maybe Prelude.Text)+ipSet_ipFamily = Lens.lens (\IpSet' {ipFamily} -> ipFamily) (\s@IpSet' {} a -> s {ipFamily = a} :: IpSet)++instance Data.FromJSON IpSet where+  parseJSON =+    Data.withObject+      "IpSet"+      ( \x ->+          IpSet'+            Prelude.<$> (x Data..:? "IpAddressFamily")+            Prelude.<*> (x Data..:? "IpAddresses" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "IpFamily")+      )++instance Prelude.Hashable IpSet where+  hashWithSalt _salt IpSet' {..} =+    _salt+      `Prelude.hashWithSalt` ipAddressFamily+      `Prelude.hashWithSalt` ipAddresses+      `Prelude.hashWithSalt` ipFamily++instance Prelude.NFData IpSet where+  rnf IpSet' {..} =+    Prelude.rnf ipAddressFamily+      `Prelude.seq` Prelude.rnf ipAddresses+      `Prelude.seq` Prelude.rnf ipFamily
+ gen/Amazonka/GlobalAccelerator/Types/Listener.hs view
@@ -0,0 +1,174 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.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.GlobalAccelerator.Types.Listener where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.ClientAffinity+import Amazonka.GlobalAccelerator.Types.PortRange+import Amazonka.GlobalAccelerator.Types.Protocol+import qualified Amazonka.Prelude as Prelude++-- | A complex type for a listener.+--+-- /See:/ 'newListener' smart constructor.+data Listener = Listener'+  { -- | Client affinity lets you direct all requests from a user to the same+    -- endpoint, if you have stateful applications, regardless of the port and+    -- protocol of the client request. Client affinity gives you control over+    -- whether to always route each client to the same specific endpoint.+    --+    -- Global Accelerator uses a consistent-flow hashing algorithm to choose+    -- the optimal endpoint for a connection. If client affinity is @NONE@,+    -- Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source+    -- IP address, source port, destination IP address, destination port, and+    -- protocol—to select the hash value, and then chooses the best endpoint.+    -- However, with this setting, if someone uses different ports to connect+    -- to Global Accelerator, their connections might not be always routed to+    -- the same endpoint because the hash value changes.+    --+    -- If you want a given client to always be routed to the same endpoint, set+    -- client affinity to @SOURCE_IP@ instead. When you use the @SOURCE_IP@+    -- setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties—+    -- source (client) IP address and destination IP address—to select the hash+    -- value.+    --+    -- The default value is @NONE@.+    clientAffinity :: Prelude.Maybe ClientAffinity,+    -- | The Amazon Resource Name (ARN) of the listener.+    listenerArn :: Prelude.Maybe Prelude.Text,+    -- | The list of port ranges for the connections from clients to the+    -- accelerator.+    portRanges :: Prelude.Maybe (Prelude.NonEmpty PortRange),+    -- | The protocol for the connections from clients to the accelerator.+    protocol :: Prelude.Maybe Protocol+  }+  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:+--+-- 'clientAffinity', 'listener_clientAffinity' - Client affinity lets you direct all requests from a user to the same+-- endpoint, if you have stateful applications, regardless of the port and+-- protocol of the client request. Client affinity gives you control over+-- whether to always route each client to the same specific endpoint.+--+-- Global Accelerator uses a consistent-flow hashing algorithm to choose+-- the optimal endpoint for a connection. If client affinity is @NONE@,+-- Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source+-- IP address, source port, destination IP address, destination port, and+-- protocol—to select the hash value, and then chooses the best endpoint.+-- However, with this setting, if someone uses different ports to connect+-- to Global Accelerator, their connections might not be always routed to+-- the same endpoint because the hash value changes.+--+-- If you want a given client to always be routed to the same endpoint, set+-- client affinity to @SOURCE_IP@ instead. When you use the @SOURCE_IP@+-- setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties—+-- source (client) IP address and destination IP address—to select the hash+-- value.+--+-- The default value is @NONE@.+--+-- 'listenerArn', 'listener_listenerArn' - The Amazon Resource Name (ARN) of the listener.+--+-- 'portRanges', 'listener_portRanges' - The list of port ranges for the connections from clients to the+-- accelerator.+--+-- 'protocol', 'listener_protocol' - The protocol for the connections from clients to the accelerator.+newListener ::+  Listener+newListener =+  Listener'+    { clientAffinity = Prelude.Nothing,+      listenerArn = Prelude.Nothing,+      portRanges = Prelude.Nothing,+      protocol = Prelude.Nothing+    }++-- | Client affinity lets you direct all requests from a user to the same+-- endpoint, if you have stateful applications, regardless of the port and+-- protocol of the client request. Client affinity gives you control over+-- whether to always route each client to the same specific endpoint.+--+-- Global Accelerator uses a consistent-flow hashing algorithm to choose+-- the optimal endpoint for a connection. If client affinity is @NONE@,+-- Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source+-- IP address, source port, destination IP address, destination port, and+-- protocol—to select the hash value, and then chooses the best endpoint.+-- However, with this setting, if someone uses different ports to connect+-- to Global Accelerator, their connections might not be always routed to+-- the same endpoint because the hash value changes.+--+-- If you want a given client to always be routed to the same endpoint, set+-- client affinity to @SOURCE_IP@ instead. When you use the @SOURCE_IP@+-- setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties—+-- source (client) IP address and destination IP address—to select the hash+-- value.+--+-- The default value is @NONE@.+listener_clientAffinity :: Lens.Lens' Listener (Prelude.Maybe ClientAffinity)+listener_clientAffinity = Lens.lens (\Listener' {clientAffinity} -> clientAffinity) (\s@Listener' {} a -> s {clientAffinity = a} :: Listener)++-- | The Amazon Resource Name (ARN) of the listener.+listener_listenerArn :: Lens.Lens' Listener (Prelude.Maybe Prelude.Text)+listener_listenerArn = Lens.lens (\Listener' {listenerArn} -> listenerArn) (\s@Listener' {} a -> s {listenerArn = a} :: Listener)++-- | The list of port ranges for the connections from clients to the+-- accelerator.+listener_portRanges :: Lens.Lens' Listener (Prelude.Maybe (Prelude.NonEmpty PortRange))+listener_portRanges = Lens.lens (\Listener' {portRanges} -> portRanges) (\s@Listener' {} a -> s {portRanges = a} :: Listener) Prelude.. Lens.mapping Lens.coerced++-- | The protocol for the connections from clients to the accelerator.+listener_protocol :: Lens.Lens' Listener (Prelude.Maybe Protocol)+listener_protocol = Lens.lens (\Listener' {protocol} -> protocol) (\s@Listener' {} a -> s {protocol = a} :: Listener)++instance Data.FromJSON Listener where+  parseJSON =+    Data.withObject+      "Listener"+      ( \x ->+          Listener'+            Prelude.<$> (x Data..:? "ClientAffinity")+            Prelude.<*> (x Data..:? "ListenerArn")+            Prelude.<*> (x Data..:? "PortRanges")+            Prelude.<*> (x Data..:? "Protocol")+      )++instance Prelude.Hashable Listener where+  hashWithSalt _salt Listener' {..} =+    _salt+      `Prelude.hashWithSalt` clientAffinity+      `Prelude.hashWithSalt` listenerArn+      `Prelude.hashWithSalt` portRanges+      `Prelude.hashWithSalt` protocol++instance Prelude.NFData Listener where+  rnf Listener' {..} =+    Prelude.rnf clientAffinity+      `Prelude.seq` Prelude.rnf listenerArn+      `Prelude.seq` Prelude.rnf portRanges+      `Prelude.seq` Prelude.rnf protocol
+ gen/Amazonka/GlobalAccelerator/Types/PortMapping.hs view
@@ -0,0 +1,148 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.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.GlobalAccelerator.Types.PortMapping where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types.CustomRoutingDestinationTrafficState+import Amazonka.GlobalAccelerator.Types.CustomRoutingProtocol+import Amazonka.GlobalAccelerator.Types.SocketAddress+import qualified Amazonka.Prelude as Prelude++-- | Returns the ports and associated IP addresses and ports of Amazon EC2+-- instances in your virtual private cloud (VPC) subnets. Custom routing is+-- a port mapping protocol in Global Accelerator that statically associates+-- port ranges with VPC subnets, which allows Global Accelerator to route+-- to specific instances and ports within one or more subnets.+--+-- /See:/ 'newPortMapping' smart constructor.+data PortMapping = PortMapping'+  { -- | The accelerator port.+    acceleratorPort :: Prelude.Maybe Prelude.Natural,+    -- | The EC2 instance IP address and port number in the virtual private cloud+    -- (VPC) subnet.+    destinationSocketAddress :: Prelude.Maybe SocketAddress,+    -- | Indicates whether or not a port mapping destination can receive traffic.+    -- The value is either ALLOW, if traffic is allowed to the destination, or+    -- DENY, if traffic is not allowed to the destination.+    destinationTrafficState :: Prelude.Maybe CustomRoutingDestinationTrafficState,+    -- | The Amazon Resource Name (ARN) of the endpoint group.+    endpointGroupArn :: Prelude.Maybe Prelude.Text,+    -- | The IP address of the VPC subnet (the subnet ID).+    endpointId :: Prelude.Maybe Prelude.Text,+    -- | The protocols supported by the endpoint group.+    protocols :: Prelude.Maybe (Prelude.NonEmpty CustomRoutingProtocol)+  }+  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:+--+-- 'acceleratorPort', 'portMapping_acceleratorPort' - The accelerator port.+--+-- 'destinationSocketAddress', 'portMapping_destinationSocketAddress' - The EC2 instance IP address and port number in the virtual private cloud+-- (VPC) subnet.+--+-- 'destinationTrafficState', 'portMapping_destinationTrafficState' - Indicates whether or not a port mapping destination can receive traffic.+-- The value is either ALLOW, if traffic is allowed to the destination, or+-- DENY, if traffic is not allowed to the destination.+--+-- 'endpointGroupArn', 'portMapping_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group.+--+-- 'endpointId', 'portMapping_endpointId' - The IP address of the VPC subnet (the subnet ID).+--+-- 'protocols', 'portMapping_protocols' - The protocols supported by the endpoint group.+newPortMapping ::+  PortMapping+newPortMapping =+  PortMapping'+    { acceleratorPort = Prelude.Nothing,+      destinationSocketAddress = Prelude.Nothing,+      destinationTrafficState = Prelude.Nothing,+      endpointGroupArn = Prelude.Nothing,+      endpointId = Prelude.Nothing,+      protocols = Prelude.Nothing+    }++-- | The accelerator port.+portMapping_acceleratorPort :: Lens.Lens' PortMapping (Prelude.Maybe Prelude.Natural)+portMapping_acceleratorPort = Lens.lens (\PortMapping' {acceleratorPort} -> acceleratorPort) (\s@PortMapping' {} a -> s {acceleratorPort = a} :: PortMapping)++-- | The EC2 instance IP address and port number in the virtual private cloud+-- (VPC) subnet.+portMapping_destinationSocketAddress :: Lens.Lens' PortMapping (Prelude.Maybe SocketAddress)+portMapping_destinationSocketAddress = Lens.lens (\PortMapping' {destinationSocketAddress} -> destinationSocketAddress) (\s@PortMapping' {} a -> s {destinationSocketAddress = a} :: PortMapping)++-- | Indicates whether or not a port mapping destination can receive traffic.+-- The value is either ALLOW, if traffic is allowed to the destination, or+-- DENY, if traffic is not allowed to the destination.+portMapping_destinationTrafficState :: Lens.Lens' PortMapping (Prelude.Maybe CustomRoutingDestinationTrafficState)+portMapping_destinationTrafficState = Lens.lens (\PortMapping' {destinationTrafficState} -> destinationTrafficState) (\s@PortMapping' {} a -> s {destinationTrafficState = a} :: PortMapping)++-- | The Amazon Resource Name (ARN) of the endpoint group.+portMapping_endpointGroupArn :: Lens.Lens' PortMapping (Prelude.Maybe Prelude.Text)+portMapping_endpointGroupArn = Lens.lens (\PortMapping' {endpointGroupArn} -> endpointGroupArn) (\s@PortMapping' {} a -> s {endpointGroupArn = a} :: PortMapping)++-- | The IP address of the VPC subnet (the subnet ID).+portMapping_endpointId :: Lens.Lens' PortMapping (Prelude.Maybe Prelude.Text)+portMapping_endpointId = Lens.lens (\PortMapping' {endpointId} -> endpointId) (\s@PortMapping' {} a -> s {endpointId = a} :: PortMapping)++-- | The protocols supported by the endpoint group.+portMapping_protocols :: Lens.Lens' PortMapping (Prelude.Maybe (Prelude.NonEmpty CustomRoutingProtocol))+portMapping_protocols = Lens.lens (\PortMapping' {protocols} -> protocols) (\s@PortMapping' {} a -> s {protocols = a} :: PortMapping) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON PortMapping where+  parseJSON =+    Data.withObject+      "PortMapping"+      ( \x ->+          PortMapping'+            Prelude.<$> (x Data..:? "AcceleratorPort")+            Prelude.<*> (x Data..:? "DestinationSocketAddress")+            Prelude.<*> (x Data..:? "DestinationTrafficState")+            Prelude.<*> (x Data..:? "EndpointGroupArn")+            Prelude.<*> (x Data..:? "EndpointId")+            Prelude.<*> (x Data..:? "Protocols")+      )++instance Prelude.Hashable PortMapping where+  hashWithSalt _salt PortMapping' {..} =+    _salt+      `Prelude.hashWithSalt` acceleratorPort+      `Prelude.hashWithSalt` destinationSocketAddress+      `Prelude.hashWithSalt` destinationTrafficState+      `Prelude.hashWithSalt` endpointGroupArn+      `Prelude.hashWithSalt` endpointId+      `Prelude.hashWithSalt` protocols++instance Prelude.NFData PortMapping where+  rnf PortMapping' {..} =+    Prelude.rnf acceleratorPort+      `Prelude.seq` Prelude.rnf destinationSocketAddress+      `Prelude.seq` Prelude.rnf destinationTrafficState+      `Prelude.seq` Prelude.rnf endpointGroupArn+      `Prelude.seq` Prelude.rnf endpointId+      `Prelude.seq` Prelude.rnf protocols
+ gen/Amazonka/GlobalAccelerator/Types/PortOverride.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.GlobalAccelerator.Types.PortOverride+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.PortOverride 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++-- | Override specific listener ports used to route traffic to endpoints that+-- are part of an endpoint group. For example, you can create a port+-- override in which the listener receives user traffic on ports 80 and+-- 443, but your accelerator routes that traffic to ports 1080 and 1443,+-- respectively, on the endpoints.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoint-groups-port-override.html Overriding listener ports>+-- in the /Global Accelerator Developer Guide/.+--+-- /See:/ 'newPortOverride' smart constructor.+data PortOverride = PortOverride'+  { -- | The endpoint port that you want a listener port to be mapped to. This is+    -- the port on the endpoint, such as the Application Load Balancer or+    -- Amazon EC2 instance.+    endpointPort :: Prelude.Maybe Prelude.Natural,+    -- | The listener port that you want to map to a specific endpoint port. This+    -- is the port that user traffic arrives to the Global Accelerator on.+    listenerPort :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PortOverride' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointPort', 'portOverride_endpointPort' - The endpoint port that you want a listener port to be mapped to. This is+-- the port on the endpoint, such as the Application Load Balancer or+-- Amazon EC2 instance.+--+-- 'listenerPort', 'portOverride_listenerPort' - The listener port that you want to map to a specific endpoint port. This+-- is the port that user traffic arrives to the Global Accelerator on.+newPortOverride ::+  PortOverride+newPortOverride =+  PortOverride'+    { endpointPort = Prelude.Nothing,+      listenerPort = Prelude.Nothing+    }++-- | The endpoint port that you want a listener port to be mapped to. This is+-- the port on the endpoint, such as the Application Load Balancer or+-- Amazon EC2 instance.+portOverride_endpointPort :: Lens.Lens' PortOverride (Prelude.Maybe Prelude.Natural)+portOverride_endpointPort = Lens.lens (\PortOverride' {endpointPort} -> endpointPort) (\s@PortOverride' {} a -> s {endpointPort = a} :: PortOverride)++-- | The listener port that you want to map to a specific endpoint port. This+-- is the port that user traffic arrives to the Global Accelerator on.+portOverride_listenerPort :: Lens.Lens' PortOverride (Prelude.Maybe Prelude.Natural)+portOverride_listenerPort = Lens.lens (\PortOverride' {listenerPort} -> listenerPort) (\s@PortOverride' {} a -> s {listenerPort = a} :: PortOverride)++instance Data.FromJSON PortOverride where+  parseJSON =+    Data.withObject+      "PortOverride"+      ( \x ->+          PortOverride'+            Prelude.<$> (x Data..:? "EndpointPort")+            Prelude.<*> (x Data..:? "ListenerPort")+      )++instance Prelude.Hashable PortOverride where+  hashWithSalt _salt PortOverride' {..} =+    _salt+      `Prelude.hashWithSalt` endpointPort+      `Prelude.hashWithSalt` listenerPort++instance Prelude.NFData PortOverride where+  rnf PortOverride' {..} =+    Prelude.rnf endpointPort+      `Prelude.seq` Prelude.rnf listenerPort++instance Data.ToJSON PortOverride where+  toJSON PortOverride' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("EndpointPort" Data..=) Prelude.<$> endpointPort,+            ("ListenerPort" Data..=) Prelude.<$> listenerPort+          ]+      )
+ gen/Amazonka/GlobalAccelerator/Types/PortRange.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.GlobalAccelerator.Types.PortRange+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.PortRange where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A complex type for a range of ports for a listener.+--+-- /See:/ 'newPortRange' smart constructor.+data PortRange = PortRange'+  { -- | The first port in the range of ports, inclusive.+    fromPort :: Prelude.Maybe Prelude.Natural,+    -- | The last port in the range of ports, inclusive.+    toPort :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PortRange' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fromPort', 'portRange_fromPort' - The first port in the range of ports, inclusive.+--+-- 'toPort', 'portRange_toPort' - The last port in the range of ports, inclusive.+newPortRange ::+  PortRange+newPortRange =+  PortRange'+    { fromPort = Prelude.Nothing,+      toPort = Prelude.Nothing+    }++-- | The first port in the range of ports, inclusive.+portRange_fromPort :: Lens.Lens' PortRange (Prelude.Maybe Prelude.Natural)+portRange_fromPort = Lens.lens (\PortRange' {fromPort} -> fromPort) (\s@PortRange' {} a -> s {fromPort = a} :: PortRange)++-- | The last port in the range of ports, inclusive.+portRange_toPort :: Lens.Lens' PortRange (Prelude.Maybe Prelude.Natural)+portRange_toPort = Lens.lens (\PortRange' {toPort} -> toPort) (\s@PortRange' {} a -> s {toPort = a} :: PortRange)++instance Data.FromJSON PortRange where+  parseJSON =+    Data.withObject+      "PortRange"+      ( \x ->+          PortRange'+            Prelude.<$> (x Data..:? "FromPort")+            Prelude.<*> (x Data..:? "ToPort")+      )++instance Prelude.Hashable PortRange where+  hashWithSalt _salt PortRange' {..} =+    _salt+      `Prelude.hashWithSalt` fromPort+      `Prelude.hashWithSalt` toPort++instance Prelude.NFData PortRange where+  rnf PortRange' {..} =+    Prelude.rnf fromPort+      `Prelude.seq` Prelude.rnf toPort++instance Data.ToJSON PortRange where+  toJSON PortRange' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FromPort" Data..=) Prelude.<$> fromPort,+            ("ToPort" Data..=) Prelude.<$> toPort+          ]+      )
+ gen/Amazonka/GlobalAccelerator/Types/Protocol.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.GlobalAccelerator.Types.Protocol+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.Protocol+  ( Protocol+      ( ..,+        Protocol_TCP,+        Protocol_UDP+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype Protocol = Protocol'+  { fromProtocol ::+      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 Protocol_TCP :: Protocol+pattern Protocol_TCP = Protocol' "TCP"++pattern Protocol_UDP :: Protocol+pattern Protocol_UDP = Protocol' "UDP"++{-# COMPLETE+  Protocol_TCP,+  Protocol_UDP,+  Protocol'+  #-}
+ gen/Amazonka/GlobalAccelerator/Types/SocketAddress.hs view
@@ -0,0 +1,84 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.Types.SocketAddress+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.SocketAddress 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 IP address\/port combination.+--+-- /See:/ 'newSocketAddress' smart constructor.+data SocketAddress = SocketAddress'+  { -- | The IP address for the socket address.+    ipAddress :: Prelude.Maybe Prelude.Text,+    -- | The port for the socket address.+    port :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SocketAddress' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'ipAddress', 'socketAddress_ipAddress' - The IP address for the socket address.+--+-- 'port', 'socketAddress_port' - The port for the socket address.+newSocketAddress ::+  SocketAddress+newSocketAddress =+  SocketAddress'+    { ipAddress = Prelude.Nothing,+      port = Prelude.Nothing+    }++-- | The IP address for the socket address.+socketAddress_ipAddress :: Lens.Lens' SocketAddress (Prelude.Maybe Prelude.Text)+socketAddress_ipAddress = Lens.lens (\SocketAddress' {ipAddress} -> ipAddress) (\s@SocketAddress' {} a -> s {ipAddress = a} :: SocketAddress)++-- | The port for the socket address.+socketAddress_port :: Lens.Lens' SocketAddress (Prelude.Maybe Prelude.Natural)+socketAddress_port = Lens.lens (\SocketAddress' {port} -> port) (\s@SocketAddress' {} a -> s {port = a} :: SocketAddress)++instance Data.FromJSON SocketAddress where+  parseJSON =+    Data.withObject+      "SocketAddress"+      ( \x ->+          SocketAddress'+            Prelude.<$> (x Data..:? "IpAddress")+            Prelude.<*> (x Data..:? "Port")+      )++instance Prelude.Hashable SocketAddress where+  hashWithSalt _salt SocketAddress' {..} =+    _salt+      `Prelude.hashWithSalt` ipAddress+      `Prelude.hashWithSalt` port++instance Prelude.NFData SocketAddress where+  rnf SocketAddress' {..} =+    Prelude.rnf ipAddress+      `Prelude.seq` Prelude.rnf port
+ gen/Amazonka/GlobalAccelerator/Types/Tag.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.GlobalAccelerator.Types.Tag+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GlobalAccelerator.Types.Tag where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A complex type that contains a @Tag@ key and @Tag@ value.+--+-- /See:/ 'newTag' smart constructor.+data Tag = Tag'+  { -- | A string that contains a @Tag@ key.+    key :: Prelude.Text,+    -- | A string that contains a @Tag@ value.+    value :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Tag' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'key', 'tag_key' - A string that contains a @Tag@ key.+--+-- 'value', 'tag_value' - A string that contains a @Tag@ value.+newTag ::+  -- | 'key'+  Prelude.Text ->+  -- | 'value'+  Prelude.Text ->+  Tag+newTag pKey_ pValue_ =+  Tag' {key = pKey_, value = pValue_}++-- | A string that contains a @Tag@ key.+tag_key :: Lens.Lens' Tag Prelude.Text+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)++-- | A string that contains a @Tag@ value.+tag_value :: Lens.Lens' Tag Prelude.Text+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)++instance Data.FromJSON Tag where+  parseJSON =+    Data.withObject+      "Tag"+      ( \x ->+          Tag'+            Prelude.<$> (x Data..: "Key")+            Prelude.<*> (x Data..: "Value")+      )++instance Prelude.Hashable Tag where+  hashWithSalt _salt Tag' {..} =+    _salt+      `Prelude.hashWithSalt` key+      `Prelude.hashWithSalt` value++instance Prelude.NFData Tag where+  rnf Tag' {..} =+    Prelude.rnf key `Prelude.seq` Prelude.rnf value++instance Data.ToJSON Tag where+  toJSON Tag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Key" Data..= key),+            Prelude.Just ("Value" Data..= value)+          ]+      )
+ gen/Amazonka/GlobalAccelerator/UntagResource.hs view
@@ -0,0 +1,181 @@+{-# 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.GlobalAccelerator.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)+--+-- Remove tags from a Global Accelerator resource. When you specify a tag+-- key, the action removes both that key and its associated value. The+-- operation succeeds even if you attempt to remove tags from an+-- accelerator that was already removed.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/tagging-in-global-accelerator.html Tagging in Global Accelerator>+-- in the /Global Accelerator Developer Guide/.+module Amazonka.GlobalAccelerator.UntagResource+  ( -- * Creating a Request+    UntagResource (..),+    newUntagResource,++    -- * Request Lenses+    untagResource_resourceArn,+    untagResource_tagKeys,++    -- * Destructuring the Response+    UntagResourceResponse (..),+    newUntagResourceResponse,++    -- * Response Lenses+    untagResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The Amazon Resource Name (ARN) of the Global Accelerator resource to+    -- remove tags from. An ARN uniquely identifies a resource.+    resourceArn :: Prelude.Text,+    -- | The tag key pairs that you want to remove from the specified resources.+    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 Global Accelerator resource to+-- remove tags from. An ARN uniquely identifies a resource.+--+-- 'tagKeys', 'untagResource_tagKeys' - The tag key pairs that you want to remove from the specified resources.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the Global Accelerator resource to+-- remove tags from. An ARN uniquely identifies a resource.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The tag key pairs that you want to remove from the specified resources.+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.UntagResource" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UntagResource where+  toJSON UntagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),+            Prelude.Just ("TagKeys" Data..= tagKeys)+          ]+      )++instance Data.ToPath UntagResource where+  toPath = Prelude.const "/"++instance Data.ToQuery UntagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUntagResourceResponse' smart constructor.+data UntagResourceResponse = UntagResourceResponse'+  { -- | The 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/GlobalAccelerator/UpdateAccelerator.hs view
@@ -0,0 +1,239 @@+{-# 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.GlobalAccelerator.UpdateAccelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Update an accelerator.+--+-- Global Accelerator is a global service that supports endpoints in+-- multiple Amazon Web Services Regions but you must specify the US West+-- (Oregon) Region to create, update, or otherwise work with accelerators.+-- That is, for example, specify @--region us-west-2@ on AWS CLI commands.+module Amazonka.GlobalAccelerator.UpdateAccelerator+  ( -- * Creating a Request+    UpdateAccelerator (..),+    newUpdateAccelerator,++    -- * Request Lenses+    updateAccelerator_enabled,+    updateAccelerator_ipAddressType,+    updateAccelerator_name,+    updateAccelerator_acceleratorArn,++    -- * Destructuring the Response+    UpdateAcceleratorResponse (..),+    newUpdateAcceleratorResponse,++    -- * Response Lenses+    updateAcceleratorResponse_accelerator,+    updateAcceleratorResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateAccelerator' smart constructor.+data UpdateAccelerator = UpdateAccelerator'+  { -- | Indicates whether an accelerator is enabled. The value is true or false.+    -- The default value is true.+    --+    -- If the value is set to true, the accelerator cannot be deleted. If set+    -- to false, the accelerator can be deleted.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | The IP address type that an accelerator supports. For a standard+    -- accelerator, the value can be IPV4 or DUAL_STACK.+    ipAddressType :: Prelude.Maybe IpAddressType,+    -- | The name of the accelerator. The name can have a maximum of 64+    -- characters, must contain only alphanumeric characters, periods (.), or+    -- hyphens (-), and must not begin or end with a hyphen or period.+    name :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the accelerator to update.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAccelerator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'enabled', 'updateAccelerator_enabled' - Indicates whether an accelerator is enabled. The value is true or false.+-- The default value is true.+--+-- If the value is set to true, the accelerator cannot be deleted. If set+-- to false, the accelerator can be deleted.+--+-- 'ipAddressType', 'updateAccelerator_ipAddressType' - The IP address type that an accelerator supports. For a standard+-- accelerator, the value can be IPV4 or DUAL_STACK.+--+-- 'name', 'updateAccelerator_name' - The name of the accelerator. The name can have a maximum of 64+-- characters, must contain only alphanumeric characters, periods (.), or+-- hyphens (-), and must not begin or end with a hyphen or period.+--+-- 'acceleratorArn', 'updateAccelerator_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator to update.+newUpdateAccelerator ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  UpdateAccelerator+newUpdateAccelerator pAcceleratorArn_ =+  UpdateAccelerator'+    { enabled = Prelude.Nothing,+      ipAddressType = Prelude.Nothing,+      name = Prelude.Nothing,+      acceleratorArn = pAcceleratorArn_+    }++-- | Indicates whether an accelerator is enabled. The value is true or false.+-- The default value is true.+--+-- If the value is set to true, the accelerator cannot be deleted. If set+-- to false, the accelerator can be deleted.+updateAccelerator_enabled :: Lens.Lens' UpdateAccelerator (Prelude.Maybe Prelude.Bool)+updateAccelerator_enabled = Lens.lens (\UpdateAccelerator' {enabled} -> enabled) (\s@UpdateAccelerator' {} a -> s {enabled = a} :: UpdateAccelerator)++-- | The IP address type that an accelerator supports. For a standard+-- accelerator, the value can be IPV4 or DUAL_STACK.+updateAccelerator_ipAddressType :: Lens.Lens' UpdateAccelerator (Prelude.Maybe IpAddressType)+updateAccelerator_ipAddressType = Lens.lens (\UpdateAccelerator' {ipAddressType} -> ipAddressType) (\s@UpdateAccelerator' {} a -> s {ipAddressType = a} :: UpdateAccelerator)++-- | The name of the accelerator. The name can have a maximum of 64+-- characters, must contain only alphanumeric characters, periods (.), or+-- hyphens (-), and must not begin or end with a hyphen or period.+updateAccelerator_name :: Lens.Lens' UpdateAccelerator (Prelude.Maybe Prelude.Text)+updateAccelerator_name = Lens.lens (\UpdateAccelerator' {name} -> name) (\s@UpdateAccelerator' {} a -> s {name = a} :: UpdateAccelerator)++-- | The Amazon Resource Name (ARN) of the accelerator to update.+updateAccelerator_acceleratorArn :: Lens.Lens' UpdateAccelerator Prelude.Text+updateAccelerator_acceleratorArn = Lens.lens (\UpdateAccelerator' {acceleratorArn} -> acceleratorArn) (\s@UpdateAccelerator' {} a -> s {acceleratorArn = a} :: UpdateAccelerator)++instance Core.AWSRequest UpdateAccelerator where+  type+    AWSResponse UpdateAccelerator =+      UpdateAcceleratorResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateAcceleratorResponse'+            Prelude.<$> (x Data..?> "Accelerator")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateAccelerator where+  hashWithSalt _salt UpdateAccelerator' {..} =+    _salt+      `Prelude.hashWithSalt` enabled+      `Prelude.hashWithSalt` ipAddressType+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` acceleratorArn++instance Prelude.NFData UpdateAccelerator where+  rnf UpdateAccelerator' {..} =+    Prelude.rnf enabled+      `Prelude.seq` Prelude.rnf ipAddressType+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf acceleratorArn++instance Data.ToHeaders UpdateAccelerator where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.UpdateAccelerator" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateAccelerator where+  toJSON UpdateAccelerator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Enabled" Data..=) Prelude.<$> enabled,+            ("IpAddressType" Data..=) Prelude.<$> ipAddressType,+            ("Name" Data..=) Prelude.<$> name,+            Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath UpdateAccelerator where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateAccelerator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateAcceleratorResponse' smart constructor.+data UpdateAcceleratorResponse = UpdateAcceleratorResponse'+  { -- | Information about the updated accelerator.+    accelerator :: Prelude.Maybe Accelerator,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAcceleratorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accelerator', 'updateAcceleratorResponse_accelerator' - Information about the updated accelerator.+--+-- 'httpStatus', 'updateAcceleratorResponse_httpStatus' - The response's http status code.+newUpdateAcceleratorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateAcceleratorResponse+newUpdateAcceleratorResponse pHttpStatus_ =+  UpdateAcceleratorResponse'+    { accelerator =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the updated accelerator.+updateAcceleratorResponse_accelerator :: Lens.Lens' UpdateAcceleratorResponse (Prelude.Maybe Accelerator)+updateAcceleratorResponse_accelerator = Lens.lens (\UpdateAcceleratorResponse' {accelerator} -> accelerator) (\s@UpdateAcceleratorResponse' {} a -> s {accelerator = a} :: UpdateAcceleratorResponse)++-- | The response's http status code.+updateAcceleratorResponse_httpStatus :: Lens.Lens' UpdateAcceleratorResponse Prelude.Int+updateAcceleratorResponse_httpStatus = Lens.lens (\UpdateAcceleratorResponse' {httpStatus} -> httpStatus) (\s@UpdateAcceleratorResponse' {} a -> s {httpStatus = a} :: UpdateAcceleratorResponse)++instance Prelude.NFData UpdateAcceleratorResponse where+  rnf UpdateAcceleratorResponse' {..} =+    Prelude.rnf accelerator+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/UpdateAcceleratorAttributes.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.GlobalAccelerator.UpdateAcceleratorAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Update the attributes for an accelerator.+module Amazonka.GlobalAccelerator.UpdateAcceleratorAttributes+  ( -- * Creating a Request+    UpdateAcceleratorAttributes (..),+    newUpdateAcceleratorAttributes,++    -- * Request Lenses+    updateAcceleratorAttributes_flowLogsEnabled,+    updateAcceleratorAttributes_flowLogsS3Bucket,+    updateAcceleratorAttributes_flowLogsS3Prefix,+    updateAcceleratorAttributes_acceleratorArn,++    -- * Destructuring the Response+    UpdateAcceleratorAttributesResponse (..),+    newUpdateAcceleratorAttributesResponse,++    -- * Response Lenses+    updateAcceleratorAttributesResponse_acceleratorAttributes,+    updateAcceleratorAttributesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateAcceleratorAttributes' smart constructor.+data UpdateAcceleratorAttributes = UpdateAcceleratorAttributes'+  { -- | Update whether flow logs are enabled. The default value is false. If the+    -- value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+    -- specified.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow Logs>+    -- in the /Global Accelerator Developer Guide/.+    flowLogsEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The name of the Amazon S3 bucket for the flow logs. Attribute is+    -- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+    -- a bucket policy that grants Global Accelerator permission to write to+    -- the bucket.+    flowLogsS3Bucket :: Prelude.Maybe Prelude.Text,+    -- | Update the prefix for the location in the Amazon S3 bucket for the flow+    -- logs. Attribute is required if @FlowLogsEnabled@ is @true@.+    --+    -- If you specify slash (\/) for the S3 bucket prefix, the log file bucket+    -- folder structure will include a double slash (\/\/), like the following:+    --+    -- s3-bucket_name\/\/AWSLogs\/aws_account_id+    flowLogsS3Prefix :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the accelerator that you want to+    -- update.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAcceleratorAttributes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'flowLogsEnabled', 'updateAcceleratorAttributes_flowLogsEnabled' - Update whether flow logs are enabled. The default value is false. If the+-- value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+-- specified.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow Logs>+-- in the /Global Accelerator Developer Guide/.+--+-- 'flowLogsS3Bucket', 'updateAcceleratorAttributes_flowLogsS3Bucket' - The name of the Amazon S3 bucket for the flow logs. Attribute is+-- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+-- a bucket policy that grants Global Accelerator permission to write to+-- the bucket.+--+-- 'flowLogsS3Prefix', 'updateAcceleratorAttributes_flowLogsS3Prefix' - Update the prefix for the location in the Amazon S3 bucket for the flow+-- logs. Attribute is required if @FlowLogsEnabled@ is @true@.+--+-- If you specify slash (\/) for the S3 bucket prefix, the log file bucket+-- folder structure will include a double slash (\/\/), like the following:+--+-- s3-bucket_name\/\/AWSLogs\/aws_account_id+--+-- 'acceleratorArn', 'updateAcceleratorAttributes_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator that you want to+-- update.+newUpdateAcceleratorAttributes ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  UpdateAcceleratorAttributes+newUpdateAcceleratorAttributes pAcceleratorArn_ =+  UpdateAcceleratorAttributes'+    { flowLogsEnabled =+        Prelude.Nothing,+      flowLogsS3Bucket = Prelude.Nothing,+      flowLogsS3Prefix = Prelude.Nothing,+      acceleratorArn = pAcceleratorArn_+    }++-- | Update whether flow logs are enabled. The default value is false. If the+-- value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+-- specified.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow Logs>+-- in the /Global Accelerator Developer Guide/.+updateAcceleratorAttributes_flowLogsEnabled :: Lens.Lens' UpdateAcceleratorAttributes (Prelude.Maybe Prelude.Bool)+updateAcceleratorAttributes_flowLogsEnabled = Lens.lens (\UpdateAcceleratorAttributes' {flowLogsEnabled} -> flowLogsEnabled) (\s@UpdateAcceleratorAttributes' {} a -> s {flowLogsEnabled = a} :: UpdateAcceleratorAttributes)++-- | The name of the Amazon S3 bucket for the flow logs. Attribute is+-- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+-- a bucket policy that grants Global Accelerator permission to write to+-- the bucket.+updateAcceleratorAttributes_flowLogsS3Bucket :: Lens.Lens' UpdateAcceleratorAttributes (Prelude.Maybe Prelude.Text)+updateAcceleratorAttributes_flowLogsS3Bucket = Lens.lens (\UpdateAcceleratorAttributes' {flowLogsS3Bucket} -> flowLogsS3Bucket) (\s@UpdateAcceleratorAttributes' {} a -> s {flowLogsS3Bucket = a} :: UpdateAcceleratorAttributes)++-- | Update the prefix for the location in the Amazon S3 bucket for the flow+-- logs. Attribute is required if @FlowLogsEnabled@ is @true@.+--+-- If you specify slash (\/) for the S3 bucket prefix, the log file bucket+-- folder structure will include a double slash (\/\/), like the following:+--+-- s3-bucket_name\/\/AWSLogs\/aws_account_id+updateAcceleratorAttributes_flowLogsS3Prefix :: Lens.Lens' UpdateAcceleratorAttributes (Prelude.Maybe Prelude.Text)+updateAcceleratorAttributes_flowLogsS3Prefix = Lens.lens (\UpdateAcceleratorAttributes' {flowLogsS3Prefix} -> flowLogsS3Prefix) (\s@UpdateAcceleratorAttributes' {} a -> s {flowLogsS3Prefix = a} :: UpdateAcceleratorAttributes)++-- | The Amazon Resource Name (ARN) of the accelerator that you want to+-- update.+updateAcceleratorAttributes_acceleratorArn :: Lens.Lens' UpdateAcceleratorAttributes Prelude.Text+updateAcceleratorAttributes_acceleratorArn = Lens.lens (\UpdateAcceleratorAttributes' {acceleratorArn} -> acceleratorArn) (\s@UpdateAcceleratorAttributes' {} a -> s {acceleratorArn = a} :: UpdateAcceleratorAttributes)++instance Core.AWSRequest UpdateAcceleratorAttributes where+  type+    AWSResponse UpdateAcceleratorAttributes =+      UpdateAcceleratorAttributesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateAcceleratorAttributesResponse'+            Prelude.<$> (x Data..?> "AcceleratorAttributes")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateAcceleratorAttributes where+  hashWithSalt _salt UpdateAcceleratorAttributes' {..} =+    _salt+      `Prelude.hashWithSalt` flowLogsEnabled+      `Prelude.hashWithSalt` flowLogsS3Bucket+      `Prelude.hashWithSalt` flowLogsS3Prefix+      `Prelude.hashWithSalt` acceleratorArn++instance Prelude.NFData UpdateAcceleratorAttributes where+  rnf UpdateAcceleratorAttributes' {..} =+    Prelude.rnf flowLogsEnabled+      `Prelude.seq` Prelude.rnf flowLogsS3Bucket+      `Prelude.seq` Prelude.rnf flowLogsS3Prefix+      `Prelude.seq` Prelude.rnf acceleratorArn++instance Data.ToHeaders UpdateAcceleratorAttributes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.UpdateAcceleratorAttributes" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateAcceleratorAttributes where+  toJSON UpdateAcceleratorAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FlowLogsEnabled" Data..=)+              Prelude.<$> flowLogsEnabled,+            ("FlowLogsS3Bucket" Data..=)+              Prelude.<$> flowLogsS3Bucket,+            ("FlowLogsS3Prefix" Data..=)+              Prelude.<$> flowLogsS3Prefix,+            Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath UpdateAcceleratorAttributes where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateAcceleratorAttributes where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateAcceleratorAttributesResponse' smart constructor.+data UpdateAcceleratorAttributesResponse = UpdateAcceleratorAttributesResponse'+  { -- | Updated attributes for the accelerator.+    acceleratorAttributes :: Prelude.Maybe AcceleratorAttributes,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAcceleratorAttributesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorAttributes', 'updateAcceleratorAttributesResponse_acceleratorAttributes' - Updated attributes for the accelerator.+--+-- 'httpStatus', 'updateAcceleratorAttributesResponse_httpStatus' - The response's http status code.+newUpdateAcceleratorAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateAcceleratorAttributesResponse+newUpdateAcceleratorAttributesResponse pHttpStatus_ =+  UpdateAcceleratorAttributesResponse'+    { acceleratorAttributes =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Updated attributes for the accelerator.+updateAcceleratorAttributesResponse_acceleratorAttributes :: Lens.Lens' UpdateAcceleratorAttributesResponse (Prelude.Maybe AcceleratorAttributes)+updateAcceleratorAttributesResponse_acceleratorAttributes = Lens.lens (\UpdateAcceleratorAttributesResponse' {acceleratorAttributes} -> acceleratorAttributes) (\s@UpdateAcceleratorAttributesResponse' {} a -> s {acceleratorAttributes = a} :: UpdateAcceleratorAttributesResponse)++-- | The response's http status code.+updateAcceleratorAttributesResponse_httpStatus :: Lens.Lens' UpdateAcceleratorAttributesResponse Prelude.Int+updateAcceleratorAttributesResponse_httpStatus = Lens.lens (\UpdateAcceleratorAttributesResponse' {httpStatus} -> httpStatus) (\s@UpdateAcceleratorAttributesResponse' {} a -> s {httpStatus = a} :: UpdateAcceleratorAttributesResponse)++instance+  Prelude.NFData+    UpdateAcceleratorAttributesResponse+  where+  rnf UpdateAcceleratorAttributesResponse' {..} =+    Prelude.rnf acceleratorAttributes+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/UpdateCustomRoutingAccelerator.hs view
@@ -0,0 +1,253 @@+{-# 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.GlobalAccelerator.UpdateCustomRoutingAccelerator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Update a custom routing accelerator.+module Amazonka.GlobalAccelerator.UpdateCustomRoutingAccelerator+  ( -- * Creating a Request+    UpdateCustomRoutingAccelerator (..),+    newUpdateCustomRoutingAccelerator,++    -- * Request Lenses+    updateCustomRoutingAccelerator_enabled,+    updateCustomRoutingAccelerator_ipAddressType,+    updateCustomRoutingAccelerator_name,+    updateCustomRoutingAccelerator_acceleratorArn,++    -- * Destructuring the Response+    UpdateCustomRoutingAcceleratorResponse (..),+    newUpdateCustomRoutingAcceleratorResponse,++    -- * Response Lenses+    updateCustomRoutingAcceleratorResponse_accelerator,+    updateCustomRoutingAcceleratorResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateCustomRoutingAccelerator' smart constructor.+data UpdateCustomRoutingAccelerator = UpdateCustomRoutingAccelerator'+  { -- | Indicates whether an accelerator is enabled. The value is true or false.+    -- The default value is true.+    --+    -- If the value is set to true, the accelerator cannot be deleted. If set+    -- to false, the accelerator can be deleted.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | The IP address type that an accelerator supports. For a custom routing+    -- accelerator, the value must be IPV4.+    ipAddressType :: Prelude.Maybe IpAddressType,+    -- | The name of the accelerator. The name can have a maximum of 64+    -- characters, must contain only alphanumeric characters, periods (.), or+    -- hyphens (-), and must not begin or end with a hyphen or period.+    name :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the accelerator to update.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateCustomRoutingAccelerator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'enabled', 'updateCustomRoutingAccelerator_enabled' - Indicates whether an accelerator is enabled. The value is true or false.+-- The default value is true.+--+-- If the value is set to true, the accelerator cannot be deleted. If set+-- to false, the accelerator can be deleted.+--+-- 'ipAddressType', 'updateCustomRoutingAccelerator_ipAddressType' - The IP address type that an accelerator supports. For a custom routing+-- accelerator, the value must be IPV4.+--+-- 'name', 'updateCustomRoutingAccelerator_name' - The name of the accelerator. The name can have a maximum of 64+-- characters, must contain only alphanumeric characters, periods (.), or+-- hyphens (-), and must not begin or end with a hyphen or period.+--+-- 'acceleratorArn', 'updateCustomRoutingAccelerator_acceleratorArn' - The Amazon Resource Name (ARN) of the accelerator to update.+newUpdateCustomRoutingAccelerator ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  UpdateCustomRoutingAccelerator+newUpdateCustomRoutingAccelerator pAcceleratorArn_ =+  UpdateCustomRoutingAccelerator'+    { enabled =+        Prelude.Nothing,+      ipAddressType = Prelude.Nothing,+      name = Prelude.Nothing,+      acceleratorArn = pAcceleratorArn_+    }++-- | Indicates whether an accelerator is enabled. The value is true or false.+-- The default value is true.+--+-- If the value is set to true, the accelerator cannot be deleted. If set+-- to false, the accelerator can be deleted.+updateCustomRoutingAccelerator_enabled :: Lens.Lens' UpdateCustomRoutingAccelerator (Prelude.Maybe Prelude.Bool)+updateCustomRoutingAccelerator_enabled = Lens.lens (\UpdateCustomRoutingAccelerator' {enabled} -> enabled) (\s@UpdateCustomRoutingAccelerator' {} a -> s {enabled = a} :: UpdateCustomRoutingAccelerator)++-- | The IP address type that an accelerator supports. For a custom routing+-- accelerator, the value must be IPV4.+updateCustomRoutingAccelerator_ipAddressType :: Lens.Lens' UpdateCustomRoutingAccelerator (Prelude.Maybe IpAddressType)+updateCustomRoutingAccelerator_ipAddressType = Lens.lens (\UpdateCustomRoutingAccelerator' {ipAddressType} -> ipAddressType) (\s@UpdateCustomRoutingAccelerator' {} a -> s {ipAddressType = a} :: UpdateCustomRoutingAccelerator)++-- | The name of the accelerator. The name can have a maximum of 64+-- characters, must contain only alphanumeric characters, periods (.), or+-- hyphens (-), and must not begin or end with a hyphen or period.+updateCustomRoutingAccelerator_name :: Lens.Lens' UpdateCustomRoutingAccelerator (Prelude.Maybe Prelude.Text)+updateCustomRoutingAccelerator_name = Lens.lens (\UpdateCustomRoutingAccelerator' {name} -> name) (\s@UpdateCustomRoutingAccelerator' {} a -> s {name = a} :: UpdateCustomRoutingAccelerator)++-- | The Amazon Resource Name (ARN) of the accelerator to update.+updateCustomRoutingAccelerator_acceleratorArn :: Lens.Lens' UpdateCustomRoutingAccelerator Prelude.Text+updateCustomRoutingAccelerator_acceleratorArn = Lens.lens (\UpdateCustomRoutingAccelerator' {acceleratorArn} -> acceleratorArn) (\s@UpdateCustomRoutingAccelerator' {} a -> s {acceleratorArn = a} :: UpdateCustomRoutingAccelerator)++instance+  Core.AWSRequest+    UpdateCustomRoutingAccelerator+  where+  type+    AWSResponse UpdateCustomRoutingAccelerator =+      UpdateCustomRoutingAcceleratorResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateCustomRoutingAcceleratorResponse'+            Prelude.<$> (x Data..?> "Accelerator")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    UpdateCustomRoutingAccelerator+  where+  hashWithSalt+    _salt+    UpdateCustomRoutingAccelerator' {..} =+      _salt+        `Prelude.hashWithSalt` enabled+        `Prelude.hashWithSalt` ipAddressType+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` acceleratorArn++instance+  Prelude.NFData+    UpdateCustomRoutingAccelerator+  where+  rnf UpdateCustomRoutingAccelerator' {..} =+    Prelude.rnf enabled+      `Prelude.seq` Prelude.rnf ipAddressType+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf acceleratorArn++instance+  Data.ToHeaders+    UpdateCustomRoutingAccelerator+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.UpdateCustomRoutingAccelerator" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateCustomRoutingAccelerator where+  toJSON UpdateCustomRoutingAccelerator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Enabled" Data..=) Prelude.<$> enabled,+            ("IpAddressType" Data..=) Prelude.<$> ipAddressType,+            ("Name" Data..=) Prelude.<$> name,+            Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance Data.ToPath UpdateCustomRoutingAccelerator where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateCustomRoutingAccelerator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateCustomRoutingAcceleratorResponse' smart constructor.+data UpdateCustomRoutingAcceleratorResponse = UpdateCustomRoutingAcceleratorResponse'+  { -- | Information about the updated custom routing accelerator.+    accelerator :: Prelude.Maybe CustomRoutingAccelerator,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateCustomRoutingAcceleratorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accelerator', 'updateCustomRoutingAcceleratorResponse_accelerator' - Information about the updated custom routing accelerator.+--+-- 'httpStatus', 'updateCustomRoutingAcceleratorResponse_httpStatus' - The response's http status code.+newUpdateCustomRoutingAcceleratorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateCustomRoutingAcceleratorResponse+newUpdateCustomRoutingAcceleratorResponse+  pHttpStatus_ =+    UpdateCustomRoutingAcceleratorResponse'+      { accelerator =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | Information about the updated custom routing accelerator.+updateCustomRoutingAcceleratorResponse_accelerator :: Lens.Lens' UpdateCustomRoutingAcceleratorResponse (Prelude.Maybe CustomRoutingAccelerator)+updateCustomRoutingAcceleratorResponse_accelerator = Lens.lens (\UpdateCustomRoutingAcceleratorResponse' {accelerator} -> accelerator) (\s@UpdateCustomRoutingAcceleratorResponse' {} a -> s {accelerator = a} :: UpdateCustomRoutingAcceleratorResponse)++-- | The response's http status code.+updateCustomRoutingAcceleratorResponse_httpStatus :: Lens.Lens' UpdateCustomRoutingAcceleratorResponse Prelude.Int+updateCustomRoutingAcceleratorResponse_httpStatus = Lens.lens (\UpdateCustomRoutingAcceleratorResponse' {httpStatus} -> httpStatus) (\s@UpdateCustomRoutingAcceleratorResponse' {} a -> s {httpStatus = a} :: UpdateCustomRoutingAcceleratorResponse)++instance+  Prelude.NFData+    UpdateCustomRoutingAcceleratorResponse+  where+  rnf UpdateCustomRoutingAcceleratorResponse' {..} =+    Prelude.rnf accelerator+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/UpdateCustomRoutingAcceleratorAttributes.hs view
@@ -0,0 +1,303 @@+{-# 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.GlobalAccelerator.UpdateCustomRoutingAcceleratorAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Update the attributes for a custom routing accelerator.+module Amazonka.GlobalAccelerator.UpdateCustomRoutingAcceleratorAttributes+  ( -- * Creating a Request+    UpdateCustomRoutingAcceleratorAttributes (..),+    newUpdateCustomRoutingAcceleratorAttributes,++    -- * Request Lenses+    updateCustomRoutingAcceleratorAttributes_flowLogsEnabled,+    updateCustomRoutingAcceleratorAttributes_flowLogsS3Bucket,+    updateCustomRoutingAcceleratorAttributes_flowLogsS3Prefix,+    updateCustomRoutingAcceleratorAttributes_acceleratorArn,++    -- * Destructuring the Response+    UpdateCustomRoutingAcceleratorAttributesResponse (..),+    newUpdateCustomRoutingAcceleratorAttributesResponse,++    -- * Response Lenses+    updateCustomRoutingAcceleratorAttributesResponse_acceleratorAttributes,+    updateCustomRoutingAcceleratorAttributesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateCustomRoutingAcceleratorAttributes' smart constructor.+data UpdateCustomRoutingAcceleratorAttributes = UpdateCustomRoutingAcceleratorAttributes'+  { -- | Update whether flow logs are enabled. The default value is false. If the+    -- value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+    -- specified.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow logs>+    -- in the /Global Accelerator Developer Guide/.+    flowLogsEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The name of the Amazon S3 bucket for the flow logs. Attribute is+    -- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+    -- a bucket policy that grants Global Accelerator permission to write to+    -- the bucket.+    flowLogsS3Bucket :: Prelude.Maybe Prelude.Text,+    -- | Update the prefix for the location in the Amazon S3 bucket for the flow+    -- logs. Attribute is required if @FlowLogsEnabled@ is @true@.+    --+    -- If you don’t specify a prefix, the flow logs are stored in the root of+    -- the bucket. If you specify slash (\/) for the S3 bucket prefix, the log+    -- file bucket folder structure will include a double slash (\/\/), like+    -- the following:+    --+    -- DOC-EXAMPLE-BUCKET\/\/AWSLogs\/aws_account_id+    flowLogsS3Prefix :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the custom routing accelerator to+    -- update attributes for.+    acceleratorArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateCustomRoutingAcceleratorAttributes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'flowLogsEnabled', 'updateCustomRoutingAcceleratorAttributes_flowLogsEnabled' - Update whether flow logs are enabled. The default value is false. If the+-- value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+-- specified.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow logs>+-- in the /Global Accelerator Developer Guide/.+--+-- 'flowLogsS3Bucket', 'updateCustomRoutingAcceleratorAttributes_flowLogsS3Bucket' - The name of the Amazon S3 bucket for the flow logs. Attribute is+-- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+-- a bucket policy that grants Global Accelerator permission to write to+-- the bucket.+--+-- 'flowLogsS3Prefix', 'updateCustomRoutingAcceleratorAttributes_flowLogsS3Prefix' - Update the prefix for the location in the Amazon S3 bucket for the flow+-- logs. Attribute is required if @FlowLogsEnabled@ is @true@.+--+-- If you don’t specify a prefix, the flow logs are stored in the root of+-- the bucket. If you specify slash (\/) for the S3 bucket prefix, the log+-- file bucket folder structure will include a double slash (\/\/), like+-- the following:+--+-- DOC-EXAMPLE-BUCKET\/\/AWSLogs\/aws_account_id+--+-- 'acceleratorArn', 'updateCustomRoutingAcceleratorAttributes_acceleratorArn' - The Amazon Resource Name (ARN) of the custom routing accelerator to+-- update attributes for.+newUpdateCustomRoutingAcceleratorAttributes ::+  -- | 'acceleratorArn'+  Prelude.Text ->+  UpdateCustomRoutingAcceleratorAttributes+newUpdateCustomRoutingAcceleratorAttributes+  pAcceleratorArn_ =+    UpdateCustomRoutingAcceleratorAttributes'+      { flowLogsEnabled =+          Prelude.Nothing,+        flowLogsS3Bucket =+          Prelude.Nothing,+        flowLogsS3Prefix =+          Prelude.Nothing,+        acceleratorArn = pAcceleratorArn_+      }++-- | Update whether flow logs are enabled. The default value is false. If the+-- value is true, @FlowLogsS3Bucket@ and @FlowLogsS3Prefix@ must be+-- specified.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html Flow logs>+-- in the /Global Accelerator Developer Guide/.+updateCustomRoutingAcceleratorAttributes_flowLogsEnabled :: Lens.Lens' UpdateCustomRoutingAcceleratorAttributes (Prelude.Maybe Prelude.Bool)+updateCustomRoutingAcceleratorAttributes_flowLogsEnabled = Lens.lens (\UpdateCustomRoutingAcceleratorAttributes' {flowLogsEnabled} -> flowLogsEnabled) (\s@UpdateCustomRoutingAcceleratorAttributes' {} a -> s {flowLogsEnabled = a} :: UpdateCustomRoutingAcceleratorAttributes)++-- | The name of the Amazon S3 bucket for the flow logs. Attribute is+-- required if @FlowLogsEnabled@ is @true@. The bucket must exist and have+-- a bucket policy that grants Global Accelerator permission to write to+-- the bucket.+updateCustomRoutingAcceleratorAttributes_flowLogsS3Bucket :: Lens.Lens' UpdateCustomRoutingAcceleratorAttributes (Prelude.Maybe Prelude.Text)+updateCustomRoutingAcceleratorAttributes_flowLogsS3Bucket = Lens.lens (\UpdateCustomRoutingAcceleratorAttributes' {flowLogsS3Bucket} -> flowLogsS3Bucket) (\s@UpdateCustomRoutingAcceleratorAttributes' {} a -> s {flowLogsS3Bucket = a} :: UpdateCustomRoutingAcceleratorAttributes)++-- | Update the prefix for the location in the Amazon S3 bucket for the flow+-- logs. Attribute is required if @FlowLogsEnabled@ is @true@.+--+-- If you don’t specify a prefix, the flow logs are stored in the root of+-- the bucket. If you specify slash (\/) for the S3 bucket prefix, the log+-- file bucket folder structure will include a double slash (\/\/), like+-- the following:+--+-- DOC-EXAMPLE-BUCKET\/\/AWSLogs\/aws_account_id+updateCustomRoutingAcceleratorAttributes_flowLogsS3Prefix :: Lens.Lens' UpdateCustomRoutingAcceleratorAttributes (Prelude.Maybe Prelude.Text)+updateCustomRoutingAcceleratorAttributes_flowLogsS3Prefix = Lens.lens (\UpdateCustomRoutingAcceleratorAttributes' {flowLogsS3Prefix} -> flowLogsS3Prefix) (\s@UpdateCustomRoutingAcceleratorAttributes' {} a -> s {flowLogsS3Prefix = a} :: UpdateCustomRoutingAcceleratorAttributes)++-- | The Amazon Resource Name (ARN) of the custom routing accelerator to+-- update attributes for.+updateCustomRoutingAcceleratorAttributes_acceleratorArn :: Lens.Lens' UpdateCustomRoutingAcceleratorAttributes Prelude.Text+updateCustomRoutingAcceleratorAttributes_acceleratorArn = Lens.lens (\UpdateCustomRoutingAcceleratorAttributes' {acceleratorArn} -> acceleratorArn) (\s@UpdateCustomRoutingAcceleratorAttributes' {} a -> s {acceleratorArn = a} :: UpdateCustomRoutingAcceleratorAttributes)++instance+  Core.AWSRequest+    UpdateCustomRoutingAcceleratorAttributes+  where+  type+    AWSResponse+      UpdateCustomRoutingAcceleratorAttributes =+      UpdateCustomRoutingAcceleratorAttributesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateCustomRoutingAcceleratorAttributesResponse'+            Prelude.<$> (x Data..?> "AcceleratorAttributes")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    UpdateCustomRoutingAcceleratorAttributes+  where+  hashWithSalt+    _salt+    UpdateCustomRoutingAcceleratorAttributes' {..} =+      _salt+        `Prelude.hashWithSalt` flowLogsEnabled+        `Prelude.hashWithSalt` flowLogsS3Bucket+        `Prelude.hashWithSalt` flowLogsS3Prefix+        `Prelude.hashWithSalt` acceleratorArn++instance+  Prelude.NFData+    UpdateCustomRoutingAcceleratorAttributes+  where+  rnf UpdateCustomRoutingAcceleratorAttributes' {..} =+    Prelude.rnf flowLogsEnabled+      `Prelude.seq` Prelude.rnf flowLogsS3Bucket+      `Prelude.seq` Prelude.rnf flowLogsS3Prefix+      `Prelude.seq` Prelude.rnf acceleratorArn++instance+  Data.ToHeaders+    UpdateCustomRoutingAcceleratorAttributes+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.UpdateCustomRoutingAcceleratorAttributes" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    UpdateCustomRoutingAcceleratorAttributes+  where+  toJSON UpdateCustomRoutingAcceleratorAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FlowLogsEnabled" Data..=)+              Prelude.<$> flowLogsEnabled,+            ("FlowLogsS3Bucket" Data..=)+              Prelude.<$> flowLogsS3Bucket,+            ("FlowLogsS3Prefix" Data..=)+              Prelude.<$> flowLogsS3Prefix,+            Prelude.Just+              ("AcceleratorArn" Data..= acceleratorArn)+          ]+      )++instance+  Data.ToPath+    UpdateCustomRoutingAcceleratorAttributes+  where+  toPath = Prelude.const "/"++instance+  Data.ToQuery+    UpdateCustomRoutingAcceleratorAttributes+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateCustomRoutingAcceleratorAttributesResponse' smart constructor.+data UpdateCustomRoutingAcceleratorAttributesResponse = UpdateCustomRoutingAcceleratorAttributesResponse'+  { -- | Updated custom routing accelerator.+    acceleratorAttributes :: Prelude.Maybe CustomRoutingAcceleratorAttributes,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateCustomRoutingAcceleratorAttributesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'acceleratorAttributes', 'updateCustomRoutingAcceleratorAttributesResponse_acceleratorAttributes' - Updated custom routing accelerator.+--+-- 'httpStatus', 'updateCustomRoutingAcceleratorAttributesResponse_httpStatus' - The response's http status code.+newUpdateCustomRoutingAcceleratorAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateCustomRoutingAcceleratorAttributesResponse+newUpdateCustomRoutingAcceleratorAttributesResponse+  pHttpStatus_ =+    UpdateCustomRoutingAcceleratorAttributesResponse'+      { acceleratorAttributes =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | Updated custom routing accelerator.+updateCustomRoutingAcceleratorAttributesResponse_acceleratorAttributes :: Lens.Lens' UpdateCustomRoutingAcceleratorAttributesResponse (Prelude.Maybe CustomRoutingAcceleratorAttributes)+updateCustomRoutingAcceleratorAttributesResponse_acceleratorAttributes = Lens.lens (\UpdateCustomRoutingAcceleratorAttributesResponse' {acceleratorAttributes} -> acceleratorAttributes) (\s@UpdateCustomRoutingAcceleratorAttributesResponse' {} a -> s {acceleratorAttributes = a} :: UpdateCustomRoutingAcceleratorAttributesResponse)++-- | The response's http status code.+updateCustomRoutingAcceleratorAttributesResponse_httpStatus :: Lens.Lens' UpdateCustomRoutingAcceleratorAttributesResponse Prelude.Int+updateCustomRoutingAcceleratorAttributesResponse_httpStatus = Lens.lens (\UpdateCustomRoutingAcceleratorAttributesResponse' {httpStatus} -> httpStatus) (\s@UpdateCustomRoutingAcceleratorAttributesResponse' {} a -> s {httpStatus = a} :: UpdateCustomRoutingAcceleratorAttributesResponse)++instance+  Prelude.NFData+    UpdateCustomRoutingAcceleratorAttributesResponse+  where+  rnf+    UpdateCustomRoutingAcceleratorAttributesResponse' {..} =+      Prelude.rnf acceleratorAttributes+        `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/UpdateCustomRoutingListener.hs view
@@ -0,0 +1,209 @@+{-# 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.GlobalAccelerator.UpdateCustomRoutingListener+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Update a listener for a custom routing accelerator.+module Amazonka.GlobalAccelerator.UpdateCustomRoutingListener+  ( -- * Creating a Request+    UpdateCustomRoutingListener (..),+    newUpdateCustomRoutingListener,++    -- * Request Lenses+    updateCustomRoutingListener_listenerArn,+    updateCustomRoutingListener_portRanges,++    -- * Destructuring the Response+    UpdateCustomRoutingListenerResponse (..),+    newUpdateCustomRoutingListenerResponse,++    -- * Response Lenses+    updateCustomRoutingListenerResponse_listener,+    updateCustomRoutingListenerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateCustomRoutingListener' smart constructor.+data UpdateCustomRoutingListener = UpdateCustomRoutingListener'+  { -- | The Amazon Resource Name (ARN) of the listener to update.+    listenerArn :: Prelude.Text,+    -- | The updated port range to support for connections from clients to your+    -- accelerator. If you remove ports that are currently being used by a+    -- subnet endpoint, the call fails.+    --+    -- Separately, you set port ranges for endpoints. For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-custom-routing-endpoints.html About endpoints for custom routing accelerators>.+    portRanges :: Prelude.NonEmpty PortRange+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateCustomRoutingListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listenerArn', 'updateCustomRoutingListener_listenerArn' - The Amazon Resource Name (ARN) of the listener to update.+--+-- 'portRanges', 'updateCustomRoutingListener_portRanges' - The updated port range to support for connections from clients to your+-- accelerator. If you remove ports that are currently being used by a+-- subnet endpoint, the call fails.+--+-- Separately, you set port ranges for endpoints. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-custom-routing-endpoints.html About endpoints for custom routing accelerators>.+newUpdateCustomRoutingListener ::+  -- | 'listenerArn'+  Prelude.Text ->+  -- | 'portRanges'+  Prelude.NonEmpty PortRange ->+  UpdateCustomRoutingListener+newUpdateCustomRoutingListener+  pListenerArn_+  pPortRanges_ =+    UpdateCustomRoutingListener'+      { listenerArn =+          pListenerArn_,+        portRanges = Lens.coerced Lens.# pPortRanges_+      }++-- | The Amazon Resource Name (ARN) of the listener to update.+updateCustomRoutingListener_listenerArn :: Lens.Lens' UpdateCustomRoutingListener Prelude.Text+updateCustomRoutingListener_listenerArn = Lens.lens (\UpdateCustomRoutingListener' {listenerArn} -> listenerArn) (\s@UpdateCustomRoutingListener' {} a -> s {listenerArn = a} :: UpdateCustomRoutingListener)++-- | The updated port range to support for connections from clients to your+-- accelerator. If you remove ports that are currently being used by a+-- subnet endpoint, the call fails.+--+-- Separately, you set port ranges for endpoints. For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-custom-routing-endpoints.html About endpoints for custom routing accelerators>.+updateCustomRoutingListener_portRanges :: Lens.Lens' UpdateCustomRoutingListener (Prelude.NonEmpty PortRange)+updateCustomRoutingListener_portRanges = Lens.lens (\UpdateCustomRoutingListener' {portRanges} -> portRanges) (\s@UpdateCustomRoutingListener' {} a -> s {portRanges = a} :: UpdateCustomRoutingListener) Prelude.. Lens.coerced++instance Core.AWSRequest UpdateCustomRoutingListener where+  type+    AWSResponse UpdateCustomRoutingListener =+      UpdateCustomRoutingListenerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateCustomRoutingListenerResponse'+            Prelude.<$> (x Data..?> "Listener")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateCustomRoutingListener where+  hashWithSalt _salt UpdateCustomRoutingListener' {..} =+    _salt+      `Prelude.hashWithSalt` listenerArn+      `Prelude.hashWithSalt` portRanges++instance Prelude.NFData UpdateCustomRoutingListener where+  rnf UpdateCustomRoutingListener' {..} =+    Prelude.rnf listenerArn+      `Prelude.seq` Prelude.rnf portRanges++instance Data.ToHeaders UpdateCustomRoutingListener where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.UpdateCustomRoutingListener" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateCustomRoutingListener where+  toJSON UpdateCustomRoutingListener' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ListenerArn" Data..= listenerArn),+            Prelude.Just ("PortRanges" Data..= portRanges)+          ]+      )++instance Data.ToPath UpdateCustomRoutingListener where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateCustomRoutingListener where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateCustomRoutingListenerResponse' smart constructor.+data UpdateCustomRoutingListenerResponse = UpdateCustomRoutingListenerResponse'+  { -- | Information for the updated listener for a custom routing accelerator.+    listener :: Prelude.Maybe CustomRoutingListener,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateCustomRoutingListenerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listener', 'updateCustomRoutingListenerResponse_listener' - Information for the updated listener for a custom routing accelerator.+--+-- 'httpStatus', 'updateCustomRoutingListenerResponse_httpStatus' - The response's http status code.+newUpdateCustomRoutingListenerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateCustomRoutingListenerResponse+newUpdateCustomRoutingListenerResponse pHttpStatus_ =+  UpdateCustomRoutingListenerResponse'+    { listener =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information for the updated listener for a custom routing accelerator.+updateCustomRoutingListenerResponse_listener :: Lens.Lens' UpdateCustomRoutingListenerResponse (Prelude.Maybe CustomRoutingListener)+updateCustomRoutingListenerResponse_listener = Lens.lens (\UpdateCustomRoutingListenerResponse' {listener} -> listener) (\s@UpdateCustomRoutingListenerResponse' {} a -> s {listener = a} :: UpdateCustomRoutingListenerResponse)++-- | The response's http status code.+updateCustomRoutingListenerResponse_httpStatus :: Lens.Lens' UpdateCustomRoutingListenerResponse Prelude.Int+updateCustomRoutingListenerResponse_httpStatus = Lens.lens (\UpdateCustomRoutingListenerResponse' {httpStatus} -> httpStatus) (\s@UpdateCustomRoutingListenerResponse' {} a -> s {httpStatus = a} :: UpdateCustomRoutingListenerResponse)++instance+  Prelude.NFData+    UpdateCustomRoutingListenerResponse+  where+  rnf UpdateCustomRoutingListenerResponse' {..} =+    Prelude.rnf listener+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/UpdateEndpointGroup.hs view
@@ -0,0 +1,365 @@+{-# 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.GlobalAccelerator.UpdateEndpointGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Update an endpoint group. A resource must be valid and active when you+-- add it as an endpoint.+module Amazonka.GlobalAccelerator.UpdateEndpointGroup+  ( -- * Creating a Request+    UpdateEndpointGroup (..),+    newUpdateEndpointGroup,++    -- * Request Lenses+    updateEndpointGroup_endpointConfigurations,+    updateEndpointGroup_healthCheckIntervalSeconds,+    updateEndpointGroup_healthCheckPath,+    updateEndpointGroup_healthCheckPort,+    updateEndpointGroup_healthCheckProtocol,+    updateEndpointGroup_portOverrides,+    updateEndpointGroup_thresholdCount,+    updateEndpointGroup_trafficDialPercentage,+    updateEndpointGroup_endpointGroupArn,++    -- * Destructuring the Response+    UpdateEndpointGroupResponse (..),+    newUpdateEndpointGroupResponse,++    -- * Response Lenses+    updateEndpointGroupResponse_endpointGroup,+    updateEndpointGroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateEndpointGroup' smart constructor.+data UpdateEndpointGroup = UpdateEndpointGroup'+  { -- | The list of endpoint objects. A resource must be valid and active when+    -- you add it as an endpoint.+    endpointConfigurations :: Prelude.Maybe [EndpointConfiguration],+    -- | The time—10 seconds or 30 seconds—between each health check for an+    -- endpoint. The default value is 30.+    healthCheckIntervalSeconds :: Prelude.Maybe Prelude.Natural,+    -- | If the protocol is HTTP\/S, then this specifies the path that is the+    -- destination for health check targets. The default value is slash (\/).+    healthCheckPath :: Prelude.Maybe Prelude.Text,+    -- | The port that Global Accelerator uses to check the health of endpoints+    -- that are part of this endpoint group. The default port is the listener+    -- port that this endpoint group is associated with. If the listener port+    -- is a list of ports, Global Accelerator uses the first port in the list.+    healthCheckPort :: Prelude.Maybe Prelude.Natural,+    -- | The protocol that Global Accelerator uses to check the health of+    -- endpoints that are part of this endpoint group. The default value is+    -- TCP.+    healthCheckProtocol :: Prelude.Maybe HealthCheckProtocol,+    -- | Override specific listener ports used to route traffic to endpoints that+    -- are part of this endpoint group. For example, you can create a port+    -- override in which the listener receives user traffic on ports 80 and+    -- 443, but your accelerator routes that traffic to ports 1080 and 1443,+    -- respectively, on the endpoints.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoint-groups-port-override.html Overriding listener ports>+    -- in the /Global Accelerator Developer Guide/.+    portOverrides :: Prelude.Maybe [PortOverride],+    -- | The number of consecutive health checks required to set the state of a+    -- healthy endpoint to unhealthy, or to set an unhealthy endpoint to+    -- healthy. The default value is 3.+    thresholdCount :: Prelude.Maybe Prelude.Natural,+    -- | The percentage of traffic to send to an Amazon Web Services Region.+    -- Additional traffic is distributed to other endpoint groups for this+    -- listener.+    --+    -- Use this action to increase (dial up) or decrease (dial down) traffic to+    -- a specific Region. The percentage is applied to the traffic that would+    -- otherwise have been routed to the Region based on optimal routing.+    --+    -- The default value is 100.+    trafficDialPercentage :: Prelude.Maybe Prelude.Double,+    -- | The Amazon Resource Name (ARN) of the endpoint group.+    endpointGroupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateEndpointGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointConfigurations', 'updateEndpointGroup_endpointConfigurations' - The list of endpoint objects. A resource must be valid and active when+-- you add it as an endpoint.+--+-- 'healthCheckIntervalSeconds', 'updateEndpointGroup_healthCheckIntervalSeconds' - The time—10 seconds or 30 seconds—between each health check for an+-- endpoint. The default value is 30.+--+-- 'healthCheckPath', 'updateEndpointGroup_healthCheckPath' - If the protocol is HTTP\/S, then this specifies the path that is the+-- destination for health check targets. The default value is slash (\/).+--+-- 'healthCheckPort', 'updateEndpointGroup_healthCheckPort' - The port that Global Accelerator uses to check the health of endpoints+-- that are part of this endpoint group. The default port is the listener+-- port that this endpoint group is associated with. If the listener port+-- is a list of ports, Global Accelerator uses the first port in the list.+--+-- 'healthCheckProtocol', 'updateEndpointGroup_healthCheckProtocol' - The protocol that Global Accelerator uses to check the health of+-- endpoints that are part of this endpoint group. The default value is+-- TCP.+--+-- 'portOverrides', 'updateEndpointGroup_portOverrides' - Override specific listener ports used to route traffic to endpoints that+-- are part of this endpoint group. For example, you can create a port+-- override in which the listener receives user traffic on ports 80 and+-- 443, but your accelerator routes that traffic to ports 1080 and 1443,+-- respectively, on the endpoints.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoint-groups-port-override.html Overriding listener ports>+-- in the /Global Accelerator Developer Guide/.+--+-- 'thresholdCount', 'updateEndpointGroup_thresholdCount' - The number of consecutive health checks required to set the state of a+-- healthy endpoint to unhealthy, or to set an unhealthy endpoint to+-- healthy. The default value is 3.+--+-- 'trafficDialPercentage', 'updateEndpointGroup_trafficDialPercentage' - The percentage of traffic to send to an Amazon Web Services Region.+-- Additional traffic is distributed to other endpoint groups for this+-- listener.+--+-- Use this action to increase (dial up) or decrease (dial down) traffic to+-- a specific Region. The percentage is applied to the traffic that would+-- otherwise have been routed to the Region based on optimal routing.+--+-- The default value is 100.+--+-- 'endpointGroupArn', 'updateEndpointGroup_endpointGroupArn' - The Amazon Resource Name (ARN) of the endpoint group.+newUpdateEndpointGroup ::+  -- | 'endpointGroupArn'+  Prelude.Text ->+  UpdateEndpointGroup+newUpdateEndpointGroup pEndpointGroupArn_ =+  UpdateEndpointGroup'+    { endpointConfigurations =+        Prelude.Nothing,+      healthCheckIntervalSeconds = Prelude.Nothing,+      healthCheckPath = Prelude.Nothing,+      healthCheckPort = Prelude.Nothing,+      healthCheckProtocol = Prelude.Nothing,+      portOverrides = Prelude.Nothing,+      thresholdCount = Prelude.Nothing,+      trafficDialPercentage = Prelude.Nothing,+      endpointGroupArn = pEndpointGroupArn_+    }++-- | The list of endpoint objects. A resource must be valid and active when+-- you add it as an endpoint.+updateEndpointGroup_endpointConfigurations :: Lens.Lens' UpdateEndpointGroup (Prelude.Maybe [EndpointConfiguration])+updateEndpointGroup_endpointConfigurations = Lens.lens (\UpdateEndpointGroup' {endpointConfigurations} -> endpointConfigurations) (\s@UpdateEndpointGroup' {} a -> s {endpointConfigurations = a} :: UpdateEndpointGroup) Prelude.. Lens.mapping Lens.coerced++-- | The time—10 seconds or 30 seconds—between each health check for an+-- endpoint. The default value is 30.+updateEndpointGroup_healthCheckIntervalSeconds :: Lens.Lens' UpdateEndpointGroup (Prelude.Maybe Prelude.Natural)+updateEndpointGroup_healthCheckIntervalSeconds = Lens.lens (\UpdateEndpointGroup' {healthCheckIntervalSeconds} -> healthCheckIntervalSeconds) (\s@UpdateEndpointGroup' {} a -> s {healthCheckIntervalSeconds = a} :: UpdateEndpointGroup)++-- | If the protocol is HTTP\/S, then this specifies the path that is the+-- destination for health check targets. The default value is slash (\/).+updateEndpointGroup_healthCheckPath :: Lens.Lens' UpdateEndpointGroup (Prelude.Maybe Prelude.Text)+updateEndpointGroup_healthCheckPath = Lens.lens (\UpdateEndpointGroup' {healthCheckPath} -> healthCheckPath) (\s@UpdateEndpointGroup' {} a -> s {healthCheckPath = a} :: UpdateEndpointGroup)++-- | The port that Global Accelerator uses to check the health of endpoints+-- that are part of this endpoint group. The default port is the listener+-- port that this endpoint group is associated with. If the listener port+-- is a list of ports, Global Accelerator uses the first port in the list.+updateEndpointGroup_healthCheckPort :: Lens.Lens' UpdateEndpointGroup (Prelude.Maybe Prelude.Natural)+updateEndpointGroup_healthCheckPort = Lens.lens (\UpdateEndpointGroup' {healthCheckPort} -> healthCheckPort) (\s@UpdateEndpointGroup' {} a -> s {healthCheckPort = a} :: UpdateEndpointGroup)++-- | The protocol that Global Accelerator uses to check the health of+-- endpoints that are part of this endpoint group. The default value is+-- TCP.+updateEndpointGroup_healthCheckProtocol :: Lens.Lens' UpdateEndpointGroup (Prelude.Maybe HealthCheckProtocol)+updateEndpointGroup_healthCheckProtocol = Lens.lens (\UpdateEndpointGroup' {healthCheckProtocol} -> healthCheckProtocol) (\s@UpdateEndpointGroup' {} a -> s {healthCheckProtocol = a} :: UpdateEndpointGroup)++-- | Override specific listener ports used to route traffic to endpoints that+-- are part of this endpoint group. For example, you can create a port+-- override in which the listener receives user traffic on ports 80 and+-- 443, but your accelerator routes that traffic to ports 1080 and 1443,+-- respectively, on the endpoints.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoint-groups-port-override.html Overriding listener ports>+-- in the /Global Accelerator Developer Guide/.+updateEndpointGroup_portOverrides :: Lens.Lens' UpdateEndpointGroup (Prelude.Maybe [PortOverride])+updateEndpointGroup_portOverrides = Lens.lens (\UpdateEndpointGroup' {portOverrides} -> portOverrides) (\s@UpdateEndpointGroup' {} a -> s {portOverrides = a} :: UpdateEndpointGroup) Prelude.. Lens.mapping Lens.coerced++-- | The number of consecutive health checks required to set the state of a+-- healthy endpoint to unhealthy, or to set an unhealthy endpoint to+-- healthy. The default value is 3.+updateEndpointGroup_thresholdCount :: Lens.Lens' UpdateEndpointGroup (Prelude.Maybe Prelude.Natural)+updateEndpointGroup_thresholdCount = Lens.lens (\UpdateEndpointGroup' {thresholdCount} -> thresholdCount) (\s@UpdateEndpointGroup' {} a -> s {thresholdCount = a} :: UpdateEndpointGroup)++-- | The percentage of traffic to send to an Amazon Web Services Region.+-- Additional traffic is distributed to other endpoint groups for this+-- listener.+--+-- Use this action to increase (dial up) or decrease (dial down) traffic to+-- a specific Region. The percentage is applied to the traffic that would+-- otherwise have been routed to the Region based on optimal routing.+--+-- The default value is 100.+updateEndpointGroup_trafficDialPercentage :: Lens.Lens' UpdateEndpointGroup (Prelude.Maybe Prelude.Double)+updateEndpointGroup_trafficDialPercentage = Lens.lens (\UpdateEndpointGroup' {trafficDialPercentage} -> trafficDialPercentage) (\s@UpdateEndpointGroup' {} a -> s {trafficDialPercentage = a} :: UpdateEndpointGroup)++-- | The Amazon Resource Name (ARN) of the endpoint group.+updateEndpointGroup_endpointGroupArn :: Lens.Lens' UpdateEndpointGroup Prelude.Text+updateEndpointGroup_endpointGroupArn = Lens.lens (\UpdateEndpointGroup' {endpointGroupArn} -> endpointGroupArn) (\s@UpdateEndpointGroup' {} a -> s {endpointGroupArn = a} :: UpdateEndpointGroup)++instance Core.AWSRequest UpdateEndpointGroup where+  type+    AWSResponse UpdateEndpointGroup =+      UpdateEndpointGroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateEndpointGroupResponse'+            Prelude.<$> (x Data..?> "EndpointGroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateEndpointGroup where+  hashWithSalt _salt UpdateEndpointGroup' {..} =+    _salt+      `Prelude.hashWithSalt` endpointConfigurations+      `Prelude.hashWithSalt` healthCheckIntervalSeconds+      `Prelude.hashWithSalt` healthCheckPath+      `Prelude.hashWithSalt` healthCheckPort+      `Prelude.hashWithSalt` healthCheckProtocol+      `Prelude.hashWithSalt` portOverrides+      `Prelude.hashWithSalt` thresholdCount+      `Prelude.hashWithSalt` trafficDialPercentage+      `Prelude.hashWithSalt` endpointGroupArn++instance Prelude.NFData UpdateEndpointGroup where+  rnf UpdateEndpointGroup' {..} =+    Prelude.rnf endpointConfigurations+      `Prelude.seq` Prelude.rnf healthCheckIntervalSeconds+      `Prelude.seq` Prelude.rnf healthCheckPath+      `Prelude.seq` Prelude.rnf healthCheckPort+      `Prelude.seq` Prelude.rnf healthCheckProtocol+      `Prelude.seq` Prelude.rnf portOverrides+      `Prelude.seq` Prelude.rnf thresholdCount+      `Prelude.seq` Prelude.rnf trafficDialPercentage+      `Prelude.seq` Prelude.rnf endpointGroupArn++instance Data.ToHeaders UpdateEndpointGroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.UpdateEndpointGroup" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateEndpointGroup where+  toJSON UpdateEndpointGroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("EndpointConfigurations" Data..=)+              Prelude.<$> endpointConfigurations,+            ("HealthCheckIntervalSeconds" Data..=)+              Prelude.<$> healthCheckIntervalSeconds,+            ("HealthCheckPath" Data..=)+              Prelude.<$> healthCheckPath,+            ("HealthCheckPort" Data..=)+              Prelude.<$> healthCheckPort,+            ("HealthCheckProtocol" Data..=)+              Prelude.<$> healthCheckProtocol,+            ("PortOverrides" Data..=) Prelude.<$> portOverrides,+            ("ThresholdCount" Data..=)+              Prelude.<$> thresholdCount,+            ("TrafficDialPercentage" Data..=)+              Prelude.<$> trafficDialPercentage,+            Prelude.Just+              ("EndpointGroupArn" Data..= endpointGroupArn)+          ]+      )++instance Data.ToPath UpdateEndpointGroup where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateEndpointGroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateEndpointGroupResponse' smart constructor.+data UpdateEndpointGroupResponse = UpdateEndpointGroupResponse'+  { -- | The information about the endpoint group that was updated.+    endpointGroup :: Prelude.Maybe EndpointGroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateEndpointGroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointGroup', 'updateEndpointGroupResponse_endpointGroup' - The information about the endpoint group that was updated.+--+-- 'httpStatus', 'updateEndpointGroupResponse_httpStatus' - The response's http status code.+newUpdateEndpointGroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateEndpointGroupResponse+newUpdateEndpointGroupResponse pHttpStatus_ =+  UpdateEndpointGroupResponse'+    { endpointGroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The information about the endpoint group that was updated.+updateEndpointGroupResponse_endpointGroup :: Lens.Lens' UpdateEndpointGroupResponse (Prelude.Maybe EndpointGroup)+updateEndpointGroupResponse_endpointGroup = Lens.lens (\UpdateEndpointGroupResponse' {endpointGroup} -> endpointGroup) (\s@UpdateEndpointGroupResponse' {} a -> s {endpointGroup = a} :: UpdateEndpointGroupResponse)++-- | The response's http status code.+updateEndpointGroupResponse_httpStatus :: Lens.Lens' UpdateEndpointGroupResponse Prelude.Int+updateEndpointGroupResponse_httpStatus = Lens.lens (\UpdateEndpointGroupResponse' {httpStatus} -> httpStatus) (\s@UpdateEndpointGroupResponse' {} a -> s {httpStatus = a} :: UpdateEndpointGroupResponse)++instance Prelude.NFData UpdateEndpointGroupResponse where+  rnf UpdateEndpointGroupResponse' {..} =+    Prelude.rnf endpointGroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/UpdateListener.hs view
@@ -0,0 +1,278 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GlobalAccelerator.UpdateListener+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Update a listener.+module Amazonka.GlobalAccelerator.UpdateListener+  ( -- * Creating a Request+    UpdateListener (..),+    newUpdateListener,++    -- * Request Lenses+    updateListener_clientAffinity,+    updateListener_portRanges,+    updateListener_protocol,+    updateListener_listenerArn,++    -- * Destructuring the Response+    UpdateListenerResponse (..),+    newUpdateListenerResponse,++    -- * Response Lenses+    updateListenerResponse_listener,+    updateListenerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateListener' smart constructor.+data UpdateListener = UpdateListener'+  { -- | Client affinity lets you direct all requests from a user to the same+    -- endpoint, if you have stateful applications, regardless of the port and+    -- protocol of the client request. Client affinity gives you control over+    -- whether to always route each client to the same specific endpoint.+    --+    -- Global Accelerator uses a consistent-flow hashing algorithm to choose+    -- the optimal endpoint for a connection. If client affinity is @NONE@,+    -- Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source+    -- IP address, source port, destination IP address, destination port, and+    -- protocol—to select the hash value, and then chooses the best endpoint.+    -- However, with this setting, if someone uses different ports to connect+    -- to Global Accelerator, their connections might not be always routed to+    -- the same endpoint because the hash value changes.+    --+    -- If you want a given client to always be routed to the same endpoint, set+    -- client affinity to @SOURCE_IP@ instead. When you use the @SOURCE_IP@+    -- setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties—+    -- source (client) IP address and destination IP address—to select the hash+    -- value.+    --+    -- The default value is @NONE@.+    clientAffinity :: Prelude.Maybe ClientAffinity,+    -- | The updated list of port ranges for the connections from clients to the+    -- accelerator.+    portRanges :: Prelude.Maybe (Prelude.NonEmpty PortRange),+    -- | The updated protocol for the connections from clients to the+    -- accelerator.+    protocol :: Prelude.Maybe Protocol,+    -- | The Amazon Resource Name (ARN) of the listener to update.+    listenerArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateListener' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientAffinity', 'updateListener_clientAffinity' - Client affinity lets you direct all requests from a user to the same+-- endpoint, if you have stateful applications, regardless of the port and+-- protocol of the client request. Client affinity gives you control over+-- whether to always route each client to the same specific endpoint.+--+-- Global Accelerator uses a consistent-flow hashing algorithm to choose+-- the optimal endpoint for a connection. If client affinity is @NONE@,+-- Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source+-- IP address, source port, destination IP address, destination port, and+-- protocol—to select the hash value, and then chooses the best endpoint.+-- However, with this setting, if someone uses different ports to connect+-- to Global Accelerator, their connections might not be always routed to+-- the same endpoint because the hash value changes.+--+-- If you want a given client to always be routed to the same endpoint, set+-- client affinity to @SOURCE_IP@ instead. When you use the @SOURCE_IP@+-- setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties—+-- source (client) IP address and destination IP address—to select the hash+-- value.+--+-- The default value is @NONE@.+--+-- 'portRanges', 'updateListener_portRanges' - The updated list of port ranges for the connections from clients to the+-- accelerator.+--+-- 'protocol', 'updateListener_protocol' - The updated protocol for the connections from clients to the+-- accelerator.+--+-- 'listenerArn', 'updateListener_listenerArn' - The Amazon Resource Name (ARN) of the listener to update.+newUpdateListener ::+  -- | 'listenerArn'+  Prelude.Text ->+  UpdateListener+newUpdateListener pListenerArn_ =+  UpdateListener'+    { clientAffinity = Prelude.Nothing,+      portRanges = Prelude.Nothing,+      protocol = Prelude.Nothing,+      listenerArn = pListenerArn_+    }++-- | Client affinity lets you direct all requests from a user to the same+-- endpoint, if you have stateful applications, regardless of the port and+-- protocol of the client request. Client affinity gives you control over+-- whether to always route each client to the same specific endpoint.+--+-- Global Accelerator uses a consistent-flow hashing algorithm to choose+-- the optimal endpoint for a connection. If client affinity is @NONE@,+-- Global Accelerator uses the \"five-tuple\" (5-tuple) properties—source+-- IP address, source port, destination IP address, destination port, and+-- protocol—to select the hash value, and then chooses the best endpoint.+-- However, with this setting, if someone uses different ports to connect+-- to Global Accelerator, their connections might not be always routed to+-- the same endpoint because the hash value changes.+--+-- If you want a given client to always be routed to the same endpoint, set+-- client affinity to @SOURCE_IP@ instead. When you use the @SOURCE_IP@+-- setting, Global Accelerator uses the \"two-tuple\" (2-tuple) properties—+-- source (client) IP address and destination IP address—to select the hash+-- value.+--+-- The default value is @NONE@.+updateListener_clientAffinity :: Lens.Lens' UpdateListener (Prelude.Maybe ClientAffinity)+updateListener_clientAffinity = Lens.lens (\UpdateListener' {clientAffinity} -> clientAffinity) (\s@UpdateListener' {} a -> s {clientAffinity = a} :: UpdateListener)++-- | The updated list of port ranges for the connections from clients to the+-- accelerator.+updateListener_portRanges :: Lens.Lens' UpdateListener (Prelude.Maybe (Prelude.NonEmpty PortRange))+updateListener_portRanges = Lens.lens (\UpdateListener' {portRanges} -> portRanges) (\s@UpdateListener' {} a -> s {portRanges = a} :: UpdateListener) Prelude.. Lens.mapping Lens.coerced++-- | The updated protocol for the connections from clients to the+-- accelerator.+updateListener_protocol :: Lens.Lens' UpdateListener (Prelude.Maybe Protocol)+updateListener_protocol = Lens.lens (\UpdateListener' {protocol} -> protocol) (\s@UpdateListener' {} a -> s {protocol = a} :: UpdateListener)++-- | The Amazon Resource Name (ARN) of the listener to update.+updateListener_listenerArn :: Lens.Lens' UpdateListener Prelude.Text+updateListener_listenerArn = Lens.lens (\UpdateListener' {listenerArn} -> listenerArn) (\s@UpdateListener' {} a -> s {listenerArn = a} :: UpdateListener)++instance Core.AWSRequest UpdateListener where+  type+    AWSResponse UpdateListener =+      UpdateListenerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateListenerResponse'+            Prelude.<$> (x Data..?> "Listener")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateListener where+  hashWithSalt _salt UpdateListener' {..} =+    _salt+      `Prelude.hashWithSalt` clientAffinity+      `Prelude.hashWithSalt` portRanges+      `Prelude.hashWithSalt` protocol+      `Prelude.hashWithSalt` listenerArn++instance Prelude.NFData UpdateListener where+  rnf UpdateListener' {..} =+    Prelude.rnf clientAffinity+      `Prelude.seq` Prelude.rnf portRanges+      `Prelude.seq` Prelude.rnf protocol+      `Prelude.seq` Prelude.rnf listenerArn++instance Data.ToHeaders UpdateListener where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.UpdateListener" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateListener where+  toJSON UpdateListener' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ClientAffinity" Data..=)+              Prelude.<$> clientAffinity,+            ("PortRanges" Data..=) Prelude.<$> portRanges,+            ("Protocol" Data..=) Prelude.<$> protocol,+            Prelude.Just ("ListenerArn" Data..= listenerArn)+          ]+      )++instance Data.ToPath UpdateListener where+  toPath = Prelude.const "/"++instance Data.ToQuery UpdateListener where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateListenerResponse' smart constructor.+data UpdateListenerResponse = UpdateListenerResponse'+  { -- | Information for the updated listener.+    listener :: Prelude.Maybe Listener,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateListenerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'listener', 'updateListenerResponse_listener' - Information for the updated listener.+--+-- 'httpStatus', 'updateListenerResponse_httpStatus' - The response's http status code.+newUpdateListenerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateListenerResponse+newUpdateListenerResponse pHttpStatus_ =+  UpdateListenerResponse'+    { listener = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information for the updated listener.+updateListenerResponse_listener :: Lens.Lens' UpdateListenerResponse (Prelude.Maybe Listener)+updateListenerResponse_listener = Lens.lens (\UpdateListenerResponse' {listener} -> listener) (\s@UpdateListenerResponse' {} a -> s {listener = a} :: UpdateListenerResponse)++-- | The response's http status code.+updateListenerResponse_httpStatus :: Lens.Lens' UpdateListenerResponse Prelude.Int+updateListenerResponse_httpStatus = Lens.lens (\UpdateListenerResponse' {httpStatus} -> httpStatus) (\s@UpdateListenerResponse' {} a -> s {httpStatus = a} :: UpdateListenerResponse)++instance Prelude.NFData UpdateListenerResponse where+  rnf UpdateListenerResponse' {..} =+    Prelude.rnf listener+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GlobalAccelerator/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.GlobalAccelerator.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.GlobalAccelerator.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Lens+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude
+ gen/Amazonka/GlobalAccelerator/WithdrawByoipCidr.hs view
@@ -0,0 +1,177 @@+{-# 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.GlobalAccelerator.WithdrawByoipCidr+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Stops advertising an address range that is provisioned as an address+-- pool. You can perform this operation at most once every 10 seconds, even+-- if you specify different address ranges each time.+--+-- It can take a few minutes before traffic to the specified addresses+-- stops routing to Amazon Web Services because of propagation delays.+--+-- For more information, see+-- <https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html Bring your own IP addresses (BYOIP)>+-- in the /Global Accelerator Developer Guide/.+module Amazonka.GlobalAccelerator.WithdrawByoipCidr+  ( -- * Creating a Request+    WithdrawByoipCidr (..),+    newWithdrawByoipCidr,++    -- * Request Lenses+    withdrawByoipCidr_cidr,++    -- * Destructuring the Response+    WithdrawByoipCidrResponse (..),+    newWithdrawByoipCidrResponse,++    -- * Response Lenses+    withdrawByoipCidrResponse_byoipCidr,+    withdrawByoipCidrResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GlobalAccelerator.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newWithdrawByoipCidr' smart constructor.+data WithdrawByoipCidr = WithdrawByoipCidr'+  { -- | The address range, in CIDR notation.+    cidr :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'WithdrawByoipCidr' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cidr', 'withdrawByoipCidr_cidr' - The address range, in CIDR notation.+newWithdrawByoipCidr ::+  -- | 'cidr'+  Prelude.Text ->+  WithdrawByoipCidr+newWithdrawByoipCidr pCidr_ =+  WithdrawByoipCidr' {cidr = pCidr_}++-- | The address range, in CIDR notation.+withdrawByoipCidr_cidr :: Lens.Lens' WithdrawByoipCidr Prelude.Text+withdrawByoipCidr_cidr = Lens.lens (\WithdrawByoipCidr' {cidr} -> cidr) (\s@WithdrawByoipCidr' {} a -> s {cidr = a} :: WithdrawByoipCidr)++instance Core.AWSRequest WithdrawByoipCidr where+  type+    AWSResponse WithdrawByoipCidr =+      WithdrawByoipCidrResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          WithdrawByoipCidrResponse'+            Prelude.<$> (x Data..?> "ByoipCidr")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable WithdrawByoipCidr where+  hashWithSalt _salt WithdrawByoipCidr' {..} =+    _salt `Prelude.hashWithSalt` cidr++instance Prelude.NFData WithdrawByoipCidr where+  rnf WithdrawByoipCidr' {..} = Prelude.rnf cidr++instance Data.ToHeaders WithdrawByoipCidr where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "GlobalAccelerator_V20180706.WithdrawByoipCidr" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON WithdrawByoipCidr where+  toJSON WithdrawByoipCidr' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Cidr" Data..= cidr)]+      )++instance Data.ToPath WithdrawByoipCidr where+  toPath = Prelude.const "/"++instance Data.ToQuery WithdrawByoipCidr where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newWithdrawByoipCidrResponse' smart constructor.+data WithdrawByoipCidrResponse = WithdrawByoipCidrResponse'+  { -- | Information about the address pool.+    byoipCidr :: Prelude.Maybe ByoipCidr,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'WithdrawByoipCidrResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'byoipCidr', 'withdrawByoipCidrResponse_byoipCidr' - Information about the address pool.+--+-- 'httpStatus', 'withdrawByoipCidrResponse_httpStatus' - The response's http status code.+newWithdrawByoipCidrResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  WithdrawByoipCidrResponse+newWithdrawByoipCidrResponse pHttpStatus_ =+  WithdrawByoipCidrResponse'+    { byoipCidr =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Information about the address pool.+withdrawByoipCidrResponse_byoipCidr :: Lens.Lens' WithdrawByoipCidrResponse (Prelude.Maybe ByoipCidr)+withdrawByoipCidrResponse_byoipCidr = Lens.lens (\WithdrawByoipCidrResponse' {byoipCidr} -> byoipCidr) (\s@WithdrawByoipCidrResponse' {} a -> s {byoipCidr = a} :: WithdrawByoipCidrResponse)++-- | The response's http status code.+withdrawByoipCidrResponse_httpStatus :: Lens.Lens' WithdrawByoipCidrResponse Prelude.Int+withdrawByoipCidrResponse_httpStatus = Lens.lens (\WithdrawByoipCidrResponse' {httpStatus} -> httpStatus) (\s@WithdrawByoipCidrResponse' {} a -> s {httpStatus = a} :: WithdrawByoipCidrResponse)++instance Prelude.NFData WithdrawByoipCidrResponse where+  rnf WithdrawByoipCidrResponse' {..} =+    Prelude.rnf byoipCidr+      `Prelude.seq` Prelude.rnf httpStatus
+ 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.GlobalAccelerator+import Test.Amazonka.GlobalAccelerator.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "GlobalAccelerator"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/GlobalAccelerator.hs view
@@ -0,0 +1,1018 @@+{-# 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.GlobalAccelerator+-- Copyright   : (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.GlobalAccelerator where++import Amazonka.GlobalAccelerator+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.GlobalAccelerator.Internal+import Test.Amazonka.Prelude+import Test.Tasty++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+--     [ testGroup "request"+--         [ requestAddCustomRoutingEndpoints $+--             newAddCustomRoutingEndpoints+--+--         , requestAddEndpoints $+--             newAddEndpoints+--+--         , requestAdvertiseByoipCidr $+--             newAdvertiseByoipCidr+--+--         , requestAllowCustomRoutingTraffic $+--             newAllowCustomRoutingTraffic+--+--         , requestCreateAccelerator $+--             newCreateAccelerator+--+--         , requestCreateCustomRoutingAccelerator $+--             newCreateCustomRoutingAccelerator+--+--         , requestCreateCustomRoutingEndpointGroup $+--             newCreateCustomRoutingEndpointGroup+--+--         , requestCreateCustomRoutingListener $+--             newCreateCustomRoutingListener+--+--         , requestCreateEndpointGroup $+--             newCreateEndpointGroup+--+--         , requestCreateListener $+--             newCreateListener+--+--         , requestDeleteAccelerator $+--             newDeleteAccelerator+--+--         , requestDeleteCustomRoutingAccelerator $+--             newDeleteCustomRoutingAccelerator+--+--         , requestDeleteCustomRoutingEndpointGroup $+--             newDeleteCustomRoutingEndpointGroup+--+--         , requestDeleteCustomRoutingListener $+--             newDeleteCustomRoutingListener+--+--         , requestDeleteEndpointGroup $+--             newDeleteEndpointGroup+--+--         , requestDeleteListener $+--             newDeleteListener+--+--         , requestDenyCustomRoutingTraffic $+--             newDenyCustomRoutingTraffic+--+--         , requestDeprovisionByoipCidr $+--             newDeprovisionByoipCidr+--+--         , requestDescribeAccelerator $+--             newDescribeAccelerator+--+--         , requestDescribeAcceleratorAttributes $+--             newDescribeAcceleratorAttributes+--+--         , requestDescribeCustomRoutingAccelerator $+--             newDescribeCustomRoutingAccelerator+--+--         , requestDescribeCustomRoutingAcceleratorAttributes $+--             newDescribeCustomRoutingAcceleratorAttributes+--+--         , requestDescribeCustomRoutingEndpointGroup $+--             newDescribeCustomRoutingEndpointGroup+--+--         , requestDescribeCustomRoutingListener $+--             newDescribeCustomRoutingListener+--+--         , requestDescribeEndpointGroup $+--             newDescribeEndpointGroup+--+--         , requestDescribeListener $+--             newDescribeListener+--+--         , requestListAccelerators $+--             newListAccelerators+--+--         , requestListByoipCidrs $+--             newListByoipCidrs+--+--         , requestListCustomRoutingAccelerators $+--             newListCustomRoutingAccelerators+--+--         , requestListCustomRoutingEndpointGroups $+--             newListCustomRoutingEndpointGroups+--+--         , requestListCustomRoutingListeners $+--             newListCustomRoutingListeners+--+--         , requestListCustomRoutingPortMappings $+--             newListCustomRoutingPortMappings+--+--         , requestListCustomRoutingPortMappingsByDestination $+--             newListCustomRoutingPortMappingsByDestination+--+--         , requestListEndpointGroups $+--             newListEndpointGroups+--+--         , requestListListeners $+--             newListListeners+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestProvisionByoipCidr $+--             newProvisionByoipCidr+--+--         , requestRemoveCustomRoutingEndpoints $+--             newRemoveCustomRoutingEndpoints+--+--         , requestRemoveEndpoints $+--             newRemoveEndpoints+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateAccelerator $+--             newUpdateAccelerator+--+--         , requestUpdateAcceleratorAttributes $+--             newUpdateAcceleratorAttributes+--+--         , requestUpdateCustomRoutingAccelerator $+--             newUpdateCustomRoutingAccelerator+--+--         , requestUpdateCustomRoutingAcceleratorAttributes $+--             newUpdateCustomRoutingAcceleratorAttributes+--+--         , requestUpdateCustomRoutingListener $+--             newUpdateCustomRoutingListener+--+--         , requestUpdateEndpointGroup $+--             newUpdateEndpointGroup+--+--         , requestUpdateListener $+--             newUpdateListener+--+--         , requestWithdrawByoipCidr $+--             newWithdrawByoipCidr+--+--           ]++--     , testGroup "response"+--         [ responseAddCustomRoutingEndpoints $+--             newAddCustomRoutingEndpointsResponse+--+--         , responseAddEndpoints $+--             newAddEndpointsResponse+--+--         , responseAdvertiseByoipCidr $+--             newAdvertiseByoipCidrResponse+--+--         , responseAllowCustomRoutingTraffic $+--             newAllowCustomRoutingTrafficResponse+--+--         , responseCreateAccelerator $+--             newCreateAcceleratorResponse+--+--         , responseCreateCustomRoutingAccelerator $+--             newCreateCustomRoutingAcceleratorResponse+--+--         , responseCreateCustomRoutingEndpointGroup $+--             newCreateCustomRoutingEndpointGroupResponse+--+--         , responseCreateCustomRoutingListener $+--             newCreateCustomRoutingListenerResponse+--+--         , responseCreateEndpointGroup $+--             newCreateEndpointGroupResponse+--+--         , responseCreateListener $+--             newCreateListenerResponse+--+--         , responseDeleteAccelerator $+--             newDeleteAcceleratorResponse+--+--         , responseDeleteCustomRoutingAccelerator $+--             newDeleteCustomRoutingAcceleratorResponse+--+--         , responseDeleteCustomRoutingEndpointGroup $+--             newDeleteCustomRoutingEndpointGroupResponse+--+--         , responseDeleteCustomRoutingListener $+--             newDeleteCustomRoutingListenerResponse+--+--         , responseDeleteEndpointGroup $+--             newDeleteEndpointGroupResponse+--+--         , responseDeleteListener $+--             newDeleteListenerResponse+--+--         , responseDenyCustomRoutingTraffic $+--             newDenyCustomRoutingTrafficResponse+--+--         , responseDeprovisionByoipCidr $+--             newDeprovisionByoipCidrResponse+--+--         , responseDescribeAccelerator $+--             newDescribeAcceleratorResponse+--+--         , responseDescribeAcceleratorAttributes $+--             newDescribeAcceleratorAttributesResponse+--+--         , responseDescribeCustomRoutingAccelerator $+--             newDescribeCustomRoutingAcceleratorResponse+--+--         , responseDescribeCustomRoutingAcceleratorAttributes $+--             newDescribeCustomRoutingAcceleratorAttributesResponse+--+--         , responseDescribeCustomRoutingEndpointGroup $+--             newDescribeCustomRoutingEndpointGroupResponse+--+--         , responseDescribeCustomRoutingListener $+--             newDescribeCustomRoutingListenerResponse+--+--         , responseDescribeEndpointGroup $+--             newDescribeEndpointGroupResponse+--+--         , responseDescribeListener $+--             newDescribeListenerResponse+--+--         , responseListAccelerators $+--             newListAcceleratorsResponse+--+--         , responseListByoipCidrs $+--             newListByoipCidrsResponse+--+--         , responseListCustomRoutingAccelerators $+--             newListCustomRoutingAcceleratorsResponse+--+--         , responseListCustomRoutingEndpointGroups $+--             newListCustomRoutingEndpointGroupsResponse+--+--         , responseListCustomRoutingListeners $+--             newListCustomRoutingListenersResponse+--+--         , responseListCustomRoutingPortMappings $+--             newListCustomRoutingPortMappingsResponse+--+--         , responseListCustomRoutingPortMappingsByDestination $+--             newListCustomRoutingPortMappingsByDestinationResponse+--+--         , responseListEndpointGroups $+--             newListEndpointGroupsResponse+--+--         , responseListListeners $+--             newListListenersResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responseProvisionByoipCidr $+--             newProvisionByoipCidrResponse+--+--         , responseRemoveCustomRoutingEndpoints $+--             newRemoveCustomRoutingEndpointsResponse+--+--         , responseRemoveEndpoints $+--             newRemoveEndpointsResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateAccelerator $+--             newUpdateAcceleratorResponse+--+--         , responseUpdateAcceleratorAttributes $+--             newUpdateAcceleratorAttributesResponse+--+--         , responseUpdateCustomRoutingAccelerator $+--             newUpdateCustomRoutingAcceleratorResponse+--+--         , responseUpdateCustomRoutingAcceleratorAttributes $+--             newUpdateCustomRoutingAcceleratorAttributesResponse+--+--         , responseUpdateCustomRoutingListener $+--             newUpdateCustomRoutingListenerResponse+--+--         , responseUpdateEndpointGroup $+--             newUpdateEndpointGroupResponse+--+--         , responseUpdateListener $+--             newUpdateListenerResponse+--+--         , responseWithdrawByoipCidr $+--             newWithdrawByoipCidrResponse+--+--           ]+--     ]++-- Requests++requestAddCustomRoutingEndpoints :: AddCustomRoutingEndpoints -> TestTree+requestAddCustomRoutingEndpoints =+  req+    "AddCustomRoutingEndpoints"+    "fixture/AddCustomRoutingEndpoints.yaml"++requestAddEndpoints :: AddEndpoints -> TestTree+requestAddEndpoints =+  req+    "AddEndpoints"+    "fixture/AddEndpoints.yaml"++requestAdvertiseByoipCidr :: AdvertiseByoipCidr -> TestTree+requestAdvertiseByoipCidr =+  req+    "AdvertiseByoipCidr"+    "fixture/AdvertiseByoipCidr.yaml"++requestAllowCustomRoutingTraffic :: AllowCustomRoutingTraffic -> TestTree+requestAllowCustomRoutingTraffic =+  req+    "AllowCustomRoutingTraffic"+    "fixture/AllowCustomRoutingTraffic.yaml"++requestCreateAccelerator :: CreateAccelerator -> TestTree+requestCreateAccelerator =+  req+    "CreateAccelerator"+    "fixture/CreateAccelerator.yaml"++requestCreateCustomRoutingAccelerator :: CreateCustomRoutingAccelerator -> TestTree+requestCreateCustomRoutingAccelerator =+  req+    "CreateCustomRoutingAccelerator"+    "fixture/CreateCustomRoutingAccelerator.yaml"++requestCreateCustomRoutingEndpointGroup :: CreateCustomRoutingEndpointGroup -> TestTree+requestCreateCustomRoutingEndpointGroup =+  req+    "CreateCustomRoutingEndpointGroup"+    "fixture/CreateCustomRoutingEndpointGroup.yaml"++requestCreateCustomRoutingListener :: CreateCustomRoutingListener -> TestTree+requestCreateCustomRoutingListener =+  req+    "CreateCustomRoutingListener"+    "fixture/CreateCustomRoutingListener.yaml"++requestCreateEndpointGroup :: CreateEndpointGroup -> TestTree+requestCreateEndpointGroup =+  req+    "CreateEndpointGroup"+    "fixture/CreateEndpointGroup.yaml"++requestCreateListener :: CreateListener -> TestTree+requestCreateListener =+  req+    "CreateListener"+    "fixture/CreateListener.yaml"++requestDeleteAccelerator :: DeleteAccelerator -> TestTree+requestDeleteAccelerator =+  req+    "DeleteAccelerator"+    "fixture/DeleteAccelerator.yaml"++requestDeleteCustomRoutingAccelerator :: DeleteCustomRoutingAccelerator -> TestTree+requestDeleteCustomRoutingAccelerator =+  req+    "DeleteCustomRoutingAccelerator"+    "fixture/DeleteCustomRoutingAccelerator.yaml"++requestDeleteCustomRoutingEndpointGroup :: DeleteCustomRoutingEndpointGroup -> TestTree+requestDeleteCustomRoutingEndpointGroup =+  req+    "DeleteCustomRoutingEndpointGroup"+    "fixture/DeleteCustomRoutingEndpointGroup.yaml"++requestDeleteCustomRoutingListener :: DeleteCustomRoutingListener -> TestTree+requestDeleteCustomRoutingListener =+  req+    "DeleteCustomRoutingListener"+    "fixture/DeleteCustomRoutingListener.yaml"++requestDeleteEndpointGroup :: DeleteEndpointGroup -> TestTree+requestDeleteEndpointGroup =+  req+    "DeleteEndpointGroup"+    "fixture/DeleteEndpointGroup.yaml"++requestDeleteListener :: DeleteListener -> TestTree+requestDeleteListener =+  req+    "DeleteListener"+    "fixture/DeleteListener.yaml"++requestDenyCustomRoutingTraffic :: DenyCustomRoutingTraffic -> TestTree+requestDenyCustomRoutingTraffic =+  req+    "DenyCustomRoutingTraffic"+    "fixture/DenyCustomRoutingTraffic.yaml"++requestDeprovisionByoipCidr :: DeprovisionByoipCidr -> TestTree+requestDeprovisionByoipCidr =+  req+    "DeprovisionByoipCidr"+    "fixture/DeprovisionByoipCidr.yaml"++requestDescribeAccelerator :: DescribeAccelerator -> TestTree+requestDescribeAccelerator =+  req+    "DescribeAccelerator"+    "fixture/DescribeAccelerator.yaml"++requestDescribeAcceleratorAttributes :: DescribeAcceleratorAttributes -> TestTree+requestDescribeAcceleratorAttributes =+  req+    "DescribeAcceleratorAttributes"+    "fixture/DescribeAcceleratorAttributes.yaml"++requestDescribeCustomRoutingAccelerator :: DescribeCustomRoutingAccelerator -> TestTree+requestDescribeCustomRoutingAccelerator =+  req+    "DescribeCustomRoutingAccelerator"+    "fixture/DescribeCustomRoutingAccelerator.yaml"++requestDescribeCustomRoutingAcceleratorAttributes :: DescribeCustomRoutingAcceleratorAttributes -> TestTree+requestDescribeCustomRoutingAcceleratorAttributes =+  req+    "DescribeCustomRoutingAcceleratorAttributes"+    "fixture/DescribeCustomRoutingAcceleratorAttributes.yaml"++requestDescribeCustomRoutingEndpointGroup :: DescribeCustomRoutingEndpointGroup -> TestTree+requestDescribeCustomRoutingEndpointGroup =+  req+    "DescribeCustomRoutingEndpointGroup"+    "fixture/DescribeCustomRoutingEndpointGroup.yaml"++requestDescribeCustomRoutingListener :: DescribeCustomRoutingListener -> TestTree+requestDescribeCustomRoutingListener =+  req+    "DescribeCustomRoutingListener"+    "fixture/DescribeCustomRoutingListener.yaml"++requestDescribeEndpointGroup :: DescribeEndpointGroup -> TestTree+requestDescribeEndpointGroup =+  req+    "DescribeEndpointGroup"+    "fixture/DescribeEndpointGroup.yaml"++requestDescribeListener :: DescribeListener -> TestTree+requestDescribeListener =+  req+    "DescribeListener"+    "fixture/DescribeListener.yaml"++requestListAccelerators :: ListAccelerators -> TestTree+requestListAccelerators =+  req+    "ListAccelerators"+    "fixture/ListAccelerators.yaml"++requestListByoipCidrs :: ListByoipCidrs -> TestTree+requestListByoipCidrs =+  req+    "ListByoipCidrs"+    "fixture/ListByoipCidrs.yaml"++requestListCustomRoutingAccelerators :: ListCustomRoutingAccelerators -> TestTree+requestListCustomRoutingAccelerators =+  req+    "ListCustomRoutingAccelerators"+    "fixture/ListCustomRoutingAccelerators.yaml"++requestListCustomRoutingEndpointGroups :: ListCustomRoutingEndpointGroups -> TestTree+requestListCustomRoutingEndpointGroups =+  req+    "ListCustomRoutingEndpointGroups"+    "fixture/ListCustomRoutingEndpointGroups.yaml"++requestListCustomRoutingListeners :: ListCustomRoutingListeners -> TestTree+requestListCustomRoutingListeners =+  req+    "ListCustomRoutingListeners"+    "fixture/ListCustomRoutingListeners.yaml"++requestListCustomRoutingPortMappings :: ListCustomRoutingPortMappings -> TestTree+requestListCustomRoutingPortMappings =+  req+    "ListCustomRoutingPortMappings"+    "fixture/ListCustomRoutingPortMappings.yaml"++requestListCustomRoutingPortMappingsByDestination :: ListCustomRoutingPortMappingsByDestination -> TestTree+requestListCustomRoutingPortMappingsByDestination =+  req+    "ListCustomRoutingPortMappingsByDestination"+    "fixture/ListCustomRoutingPortMappingsByDestination.yaml"++requestListEndpointGroups :: ListEndpointGroups -> TestTree+requestListEndpointGroups =+  req+    "ListEndpointGroups"+    "fixture/ListEndpointGroups.yaml"++requestListListeners :: ListListeners -> TestTree+requestListListeners =+  req+    "ListListeners"+    "fixture/ListListeners.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestProvisionByoipCidr :: ProvisionByoipCidr -> TestTree+requestProvisionByoipCidr =+  req+    "ProvisionByoipCidr"+    "fixture/ProvisionByoipCidr.yaml"++requestRemoveCustomRoutingEndpoints :: RemoveCustomRoutingEndpoints -> TestTree+requestRemoveCustomRoutingEndpoints =+  req+    "RemoveCustomRoutingEndpoints"+    "fixture/RemoveCustomRoutingEndpoints.yaml"++requestRemoveEndpoints :: RemoveEndpoints -> TestTree+requestRemoveEndpoints =+  req+    "RemoveEndpoints"+    "fixture/RemoveEndpoints.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateAccelerator :: UpdateAccelerator -> TestTree+requestUpdateAccelerator =+  req+    "UpdateAccelerator"+    "fixture/UpdateAccelerator.yaml"++requestUpdateAcceleratorAttributes :: UpdateAcceleratorAttributes -> TestTree+requestUpdateAcceleratorAttributes =+  req+    "UpdateAcceleratorAttributes"+    "fixture/UpdateAcceleratorAttributes.yaml"++requestUpdateCustomRoutingAccelerator :: UpdateCustomRoutingAccelerator -> TestTree+requestUpdateCustomRoutingAccelerator =+  req+    "UpdateCustomRoutingAccelerator"+    "fixture/UpdateCustomRoutingAccelerator.yaml"++requestUpdateCustomRoutingAcceleratorAttributes :: UpdateCustomRoutingAcceleratorAttributes -> TestTree+requestUpdateCustomRoutingAcceleratorAttributes =+  req+    "UpdateCustomRoutingAcceleratorAttributes"+    "fixture/UpdateCustomRoutingAcceleratorAttributes.yaml"++requestUpdateCustomRoutingListener :: UpdateCustomRoutingListener -> TestTree+requestUpdateCustomRoutingListener =+  req+    "UpdateCustomRoutingListener"+    "fixture/UpdateCustomRoutingListener.yaml"++requestUpdateEndpointGroup :: UpdateEndpointGroup -> TestTree+requestUpdateEndpointGroup =+  req+    "UpdateEndpointGroup"+    "fixture/UpdateEndpointGroup.yaml"++requestUpdateListener :: UpdateListener -> TestTree+requestUpdateListener =+  req+    "UpdateListener"+    "fixture/UpdateListener.yaml"++requestWithdrawByoipCidr :: WithdrawByoipCidr -> TestTree+requestWithdrawByoipCidr =+  req+    "WithdrawByoipCidr"+    "fixture/WithdrawByoipCidr.yaml"++-- Responses++responseAddCustomRoutingEndpoints :: AddCustomRoutingEndpointsResponse -> TestTree+responseAddCustomRoutingEndpoints =+  res+    "AddCustomRoutingEndpointsResponse"+    "fixture/AddCustomRoutingEndpointsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AddCustomRoutingEndpoints)++responseAddEndpoints :: AddEndpointsResponse -> TestTree+responseAddEndpoints =+  res+    "AddEndpointsResponse"+    "fixture/AddEndpointsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AddEndpoints)++responseAdvertiseByoipCidr :: AdvertiseByoipCidrResponse -> TestTree+responseAdvertiseByoipCidr =+  res+    "AdvertiseByoipCidrResponse"+    "fixture/AdvertiseByoipCidrResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AdvertiseByoipCidr)++responseAllowCustomRoutingTraffic :: AllowCustomRoutingTrafficResponse -> TestTree+responseAllowCustomRoutingTraffic =+  res+    "AllowCustomRoutingTrafficResponse"+    "fixture/AllowCustomRoutingTrafficResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AllowCustomRoutingTraffic)++responseCreateAccelerator :: CreateAcceleratorResponse -> TestTree+responseCreateAccelerator =+  res+    "CreateAcceleratorResponse"+    "fixture/CreateAcceleratorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateAccelerator)++responseCreateCustomRoutingAccelerator :: CreateCustomRoutingAcceleratorResponse -> TestTree+responseCreateCustomRoutingAccelerator =+  res+    "CreateCustomRoutingAcceleratorResponse"+    "fixture/CreateCustomRoutingAcceleratorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateCustomRoutingAccelerator)++responseCreateCustomRoutingEndpointGroup :: CreateCustomRoutingEndpointGroupResponse -> TestTree+responseCreateCustomRoutingEndpointGroup =+  res+    "CreateCustomRoutingEndpointGroupResponse"+    "fixture/CreateCustomRoutingEndpointGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateCustomRoutingEndpointGroup)++responseCreateCustomRoutingListener :: CreateCustomRoutingListenerResponse -> TestTree+responseCreateCustomRoutingListener =+  res+    "CreateCustomRoutingListenerResponse"+    "fixture/CreateCustomRoutingListenerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateCustomRoutingListener)++responseCreateEndpointGroup :: CreateEndpointGroupResponse -> TestTree+responseCreateEndpointGroup =+  res+    "CreateEndpointGroupResponse"+    "fixture/CreateEndpointGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateEndpointGroup)++responseCreateListener :: CreateListenerResponse -> TestTree+responseCreateListener =+  res+    "CreateListenerResponse"+    "fixture/CreateListenerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateListener)++responseDeleteAccelerator :: DeleteAcceleratorResponse -> TestTree+responseDeleteAccelerator =+  res+    "DeleteAcceleratorResponse"+    "fixture/DeleteAcceleratorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteAccelerator)++responseDeleteCustomRoutingAccelerator :: DeleteCustomRoutingAcceleratorResponse -> TestTree+responseDeleteCustomRoutingAccelerator =+  res+    "DeleteCustomRoutingAcceleratorResponse"+    "fixture/DeleteCustomRoutingAcceleratorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteCustomRoutingAccelerator)++responseDeleteCustomRoutingEndpointGroup :: DeleteCustomRoutingEndpointGroupResponse -> TestTree+responseDeleteCustomRoutingEndpointGroup =+  res+    "DeleteCustomRoutingEndpointGroupResponse"+    "fixture/DeleteCustomRoutingEndpointGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteCustomRoutingEndpointGroup)++responseDeleteCustomRoutingListener :: DeleteCustomRoutingListenerResponse -> TestTree+responseDeleteCustomRoutingListener =+  res+    "DeleteCustomRoutingListenerResponse"+    "fixture/DeleteCustomRoutingListenerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteCustomRoutingListener)++responseDeleteEndpointGroup :: DeleteEndpointGroupResponse -> TestTree+responseDeleteEndpointGroup =+  res+    "DeleteEndpointGroupResponse"+    "fixture/DeleteEndpointGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteEndpointGroup)++responseDeleteListener :: DeleteListenerResponse -> TestTree+responseDeleteListener =+  res+    "DeleteListenerResponse"+    "fixture/DeleteListenerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteListener)++responseDenyCustomRoutingTraffic :: DenyCustomRoutingTrafficResponse -> TestTree+responseDenyCustomRoutingTraffic =+  res+    "DenyCustomRoutingTrafficResponse"+    "fixture/DenyCustomRoutingTrafficResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DenyCustomRoutingTraffic)++responseDeprovisionByoipCidr :: DeprovisionByoipCidrResponse -> TestTree+responseDeprovisionByoipCidr =+  res+    "DeprovisionByoipCidrResponse"+    "fixture/DeprovisionByoipCidrResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeprovisionByoipCidr)++responseDescribeAccelerator :: DescribeAcceleratorResponse -> TestTree+responseDescribeAccelerator =+  res+    "DescribeAcceleratorResponse"+    "fixture/DescribeAcceleratorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAccelerator)++responseDescribeAcceleratorAttributes :: DescribeAcceleratorAttributesResponse -> TestTree+responseDescribeAcceleratorAttributes =+  res+    "DescribeAcceleratorAttributesResponse"+    "fixture/DescribeAcceleratorAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAcceleratorAttributes)++responseDescribeCustomRoutingAccelerator :: DescribeCustomRoutingAcceleratorResponse -> TestTree+responseDescribeCustomRoutingAccelerator =+  res+    "DescribeCustomRoutingAcceleratorResponse"+    "fixture/DescribeCustomRoutingAcceleratorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeCustomRoutingAccelerator)++responseDescribeCustomRoutingAcceleratorAttributes :: DescribeCustomRoutingAcceleratorAttributesResponse -> TestTree+responseDescribeCustomRoutingAcceleratorAttributes =+  res+    "DescribeCustomRoutingAcceleratorAttributesResponse"+    "fixture/DescribeCustomRoutingAcceleratorAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeCustomRoutingAcceleratorAttributes)++responseDescribeCustomRoutingEndpointGroup :: DescribeCustomRoutingEndpointGroupResponse -> TestTree+responseDescribeCustomRoutingEndpointGroup =+  res+    "DescribeCustomRoutingEndpointGroupResponse"+    "fixture/DescribeCustomRoutingEndpointGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeCustomRoutingEndpointGroup)++responseDescribeCustomRoutingListener :: DescribeCustomRoutingListenerResponse -> TestTree+responseDescribeCustomRoutingListener =+  res+    "DescribeCustomRoutingListenerResponse"+    "fixture/DescribeCustomRoutingListenerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeCustomRoutingListener)++responseDescribeEndpointGroup :: DescribeEndpointGroupResponse -> TestTree+responseDescribeEndpointGroup =+  res+    "DescribeEndpointGroupResponse"+    "fixture/DescribeEndpointGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeEndpointGroup)++responseDescribeListener :: DescribeListenerResponse -> TestTree+responseDescribeListener =+  res+    "DescribeListenerResponse"+    "fixture/DescribeListenerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeListener)++responseListAccelerators :: ListAcceleratorsResponse -> TestTree+responseListAccelerators =+  res+    "ListAcceleratorsResponse"+    "fixture/ListAcceleratorsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAccelerators)++responseListByoipCidrs :: ListByoipCidrsResponse -> TestTree+responseListByoipCidrs =+  res+    "ListByoipCidrsResponse"+    "fixture/ListByoipCidrsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListByoipCidrs)++responseListCustomRoutingAccelerators :: ListCustomRoutingAcceleratorsResponse -> TestTree+responseListCustomRoutingAccelerators =+  res+    "ListCustomRoutingAcceleratorsResponse"+    "fixture/ListCustomRoutingAcceleratorsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListCustomRoutingAccelerators)++responseListCustomRoutingEndpointGroups :: ListCustomRoutingEndpointGroupsResponse -> TestTree+responseListCustomRoutingEndpointGroups =+  res+    "ListCustomRoutingEndpointGroupsResponse"+    "fixture/ListCustomRoutingEndpointGroupsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListCustomRoutingEndpointGroups)++responseListCustomRoutingListeners :: ListCustomRoutingListenersResponse -> TestTree+responseListCustomRoutingListeners =+  res+    "ListCustomRoutingListenersResponse"+    "fixture/ListCustomRoutingListenersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListCustomRoutingListeners)++responseListCustomRoutingPortMappings :: ListCustomRoutingPortMappingsResponse -> TestTree+responseListCustomRoutingPortMappings =+  res+    "ListCustomRoutingPortMappingsResponse"+    "fixture/ListCustomRoutingPortMappingsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListCustomRoutingPortMappings)++responseListCustomRoutingPortMappingsByDestination :: ListCustomRoutingPortMappingsByDestinationResponse -> TestTree+responseListCustomRoutingPortMappingsByDestination =+  res+    "ListCustomRoutingPortMappingsByDestinationResponse"+    "fixture/ListCustomRoutingPortMappingsByDestinationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListCustomRoutingPortMappingsByDestination)++responseListEndpointGroups :: ListEndpointGroupsResponse -> TestTree+responseListEndpointGroups =+  res+    "ListEndpointGroupsResponse"+    "fixture/ListEndpointGroupsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListEndpointGroups)++responseListListeners :: ListListenersResponse -> TestTree+responseListListeners =+  res+    "ListListenersResponse"+    "fixture/ListListenersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListListeners)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responseProvisionByoipCidr :: ProvisionByoipCidrResponse -> TestTree+responseProvisionByoipCidr =+  res+    "ProvisionByoipCidrResponse"+    "fixture/ProvisionByoipCidrResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ProvisionByoipCidr)++responseRemoveCustomRoutingEndpoints :: RemoveCustomRoutingEndpointsResponse -> TestTree+responseRemoveCustomRoutingEndpoints =+  res+    "RemoveCustomRoutingEndpointsResponse"+    "fixture/RemoveCustomRoutingEndpointsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy RemoveCustomRoutingEndpoints)++responseRemoveEndpoints :: RemoveEndpointsResponse -> TestTree+responseRemoveEndpoints =+  res+    "RemoveEndpointsResponse"+    "fixture/RemoveEndpointsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy RemoveEndpoints)++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)++responseUpdateAccelerator :: UpdateAcceleratorResponse -> TestTree+responseUpdateAccelerator =+  res+    "UpdateAcceleratorResponse"+    "fixture/UpdateAcceleratorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateAccelerator)++responseUpdateAcceleratorAttributes :: UpdateAcceleratorAttributesResponse -> TestTree+responseUpdateAcceleratorAttributes =+  res+    "UpdateAcceleratorAttributesResponse"+    "fixture/UpdateAcceleratorAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateAcceleratorAttributes)++responseUpdateCustomRoutingAccelerator :: UpdateCustomRoutingAcceleratorResponse -> TestTree+responseUpdateCustomRoutingAccelerator =+  res+    "UpdateCustomRoutingAcceleratorResponse"+    "fixture/UpdateCustomRoutingAcceleratorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateCustomRoutingAccelerator)++responseUpdateCustomRoutingAcceleratorAttributes :: UpdateCustomRoutingAcceleratorAttributesResponse -> TestTree+responseUpdateCustomRoutingAcceleratorAttributes =+  res+    "UpdateCustomRoutingAcceleratorAttributesResponse"+    "fixture/UpdateCustomRoutingAcceleratorAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateCustomRoutingAcceleratorAttributes)++responseUpdateCustomRoutingListener :: UpdateCustomRoutingListenerResponse -> TestTree+responseUpdateCustomRoutingListener =+  res+    "UpdateCustomRoutingListenerResponse"+    "fixture/UpdateCustomRoutingListenerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateCustomRoutingListener)++responseUpdateEndpointGroup :: UpdateEndpointGroupResponse -> TestTree+responseUpdateEndpointGroup =+  res+    "UpdateEndpointGroupResponse"+    "fixture/UpdateEndpointGroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateEndpointGroup)++responseUpdateListener :: UpdateListenerResponse -> TestTree+responseUpdateListener =+  res+    "UpdateListenerResponse"+    "fixture/UpdateListenerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateListener)++responseWithdrawByoipCidr :: WithdrawByoipCidrResponse -> TestTree+responseWithdrawByoipCidr =+  res+    "WithdrawByoipCidrResponse"+    "fixture/WithdrawByoipCidrResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy WithdrawByoipCidr)
+ test/Test/Amazonka/GlobalAccelerator.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.GlobalAccelerator+-- Copyright   : (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.GlobalAccelerator+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/GlobalAccelerator/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.GlobalAccelerator.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.GlobalAccelerator.Internal where