packages feed

amazonka-location (empty) → 2.0

raw patch · 223 files changed

+26494/−0 lines, 223 filesdep +amazonka-coredep +amazonka-locationdep +amazonka-test

Dependencies added: amazonka-core, amazonka-location, 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 Location Service SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2020-11-19@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-location)+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.Location](http://hackage.haskell.org/package/amazonka-location/docs/Amazonka-Location.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-location` 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-location.cabal view
@@ -0,0 +1,188 @@+cabal-version:      2.2+name:               amazonka-location+version:            2.0+synopsis:           Amazon Location Service 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 @2020-11-19@ 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.Location.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.Location" 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-location++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.Location+    Amazonka.Location.AssociateTrackerConsumer+    Amazonka.Location.BatchDeleteDevicePositionHistory+    Amazonka.Location.BatchDeleteGeofence+    Amazonka.Location.BatchEvaluateGeofences+    Amazonka.Location.BatchGetDevicePosition+    Amazonka.Location.BatchPutGeofence+    Amazonka.Location.BatchUpdateDevicePosition+    Amazonka.Location.CalculateRoute+    Amazonka.Location.CalculateRouteMatrix+    Amazonka.Location.CreateGeofenceCollection+    Amazonka.Location.CreateMap+    Amazonka.Location.CreatePlaceIndex+    Amazonka.Location.CreateRouteCalculator+    Amazonka.Location.CreateTracker+    Amazonka.Location.DeleteGeofenceCollection+    Amazonka.Location.DeleteMap+    Amazonka.Location.DeletePlaceIndex+    Amazonka.Location.DeleteRouteCalculator+    Amazonka.Location.DeleteTracker+    Amazonka.Location.DescribeGeofenceCollection+    Amazonka.Location.DescribeMap+    Amazonka.Location.DescribePlaceIndex+    Amazonka.Location.DescribeRouteCalculator+    Amazonka.Location.DescribeTracker+    Amazonka.Location.DisassociateTrackerConsumer+    Amazonka.Location.GetDevicePosition+    Amazonka.Location.GetDevicePositionHistory+    Amazonka.Location.GetGeofence+    Amazonka.Location.GetMapGlyphs+    Amazonka.Location.GetMapSprites+    Amazonka.Location.GetMapStyleDescriptor+    Amazonka.Location.GetMapTile+    Amazonka.Location.GetPlace+    Amazonka.Location.Lens+    Amazonka.Location.ListDevicePositions+    Amazonka.Location.ListGeofenceCollections+    Amazonka.Location.ListGeofences+    Amazonka.Location.ListMaps+    Amazonka.Location.ListPlaceIndexes+    Amazonka.Location.ListRouteCalculators+    Amazonka.Location.ListTagsForResource+    Amazonka.Location.ListTrackerConsumers+    Amazonka.Location.ListTrackers+    Amazonka.Location.PutGeofence+    Amazonka.Location.SearchPlaceIndexForPosition+    Amazonka.Location.SearchPlaceIndexForSuggestions+    Amazonka.Location.SearchPlaceIndexForText+    Amazonka.Location.TagResource+    Amazonka.Location.Types+    Amazonka.Location.Types.BatchDeleteDevicePositionHistoryError+    Amazonka.Location.Types.BatchDeleteGeofenceError+    Amazonka.Location.Types.BatchEvaluateGeofencesError+    Amazonka.Location.Types.BatchGetDevicePositionError+    Amazonka.Location.Types.BatchItemError+    Amazonka.Location.Types.BatchItemErrorCode+    Amazonka.Location.Types.BatchPutGeofenceError+    Amazonka.Location.Types.BatchPutGeofenceRequestEntry+    Amazonka.Location.Types.BatchPutGeofenceSuccess+    Amazonka.Location.Types.BatchUpdateDevicePositionError+    Amazonka.Location.Types.CalculateRouteCarModeOptions+    Amazonka.Location.Types.CalculateRouteMatrixSummary+    Amazonka.Location.Types.CalculateRouteSummary+    Amazonka.Location.Types.CalculateRouteTruckModeOptions+    Amazonka.Location.Types.Circle+    Amazonka.Location.Types.DataSourceConfiguration+    Amazonka.Location.Types.DevicePosition+    Amazonka.Location.Types.DevicePositionUpdate+    Amazonka.Location.Types.DimensionUnit+    Amazonka.Location.Types.DistanceUnit+    Amazonka.Location.Types.GeofenceGeometry+    Amazonka.Location.Types.IntendedUse+    Amazonka.Location.Types.Leg+    Amazonka.Location.Types.LegGeometry+    Amazonka.Location.Types.ListDevicePositionsResponseEntry+    Amazonka.Location.Types.ListGeofenceCollectionsResponseEntry+    Amazonka.Location.Types.ListGeofenceResponseEntry+    Amazonka.Location.Types.ListMapsResponseEntry+    Amazonka.Location.Types.ListPlaceIndexesResponseEntry+    Amazonka.Location.Types.ListRouteCalculatorsResponseEntry+    Amazonka.Location.Types.ListTrackersResponseEntry+    Amazonka.Location.Types.MapConfiguration+    Amazonka.Location.Types.Place+    Amazonka.Location.Types.PlaceGeometry+    Amazonka.Location.Types.PositionalAccuracy+    Amazonka.Location.Types.PositionFiltering+    Amazonka.Location.Types.PricingPlan+    Amazonka.Location.Types.RouteMatrixEntry+    Amazonka.Location.Types.RouteMatrixEntryError+    Amazonka.Location.Types.RouteMatrixErrorCode+    Amazonka.Location.Types.SearchForPositionResult+    Amazonka.Location.Types.SearchForSuggestionsResult+    Amazonka.Location.Types.SearchForTextResult+    Amazonka.Location.Types.SearchPlaceIndexForPositionSummary+    Amazonka.Location.Types.SearchPlaceIndexForSuggestionsSummary+    Amazonka.Location.Types.SearchPlaceIndexForTextSummary+    Amazonka.Location.Types.Step+    Amazonka.Location.Types.TimeZone+    Amazonka.Location.Types.TravelMode+    Amazonka.Location.Types.TruckDimensions+    Amazonka.Location.Types.TruckWeight+    Amazonka.Location.Types.VehicleWeightUnit+    Amazonka.Location.UntagResource+    Amazonka.Location.UpdateGeofenceCollection+    Amazonka.Location.UpdateMap+    Amazonka.Location.UpdatePlaceIndex+    Amazonka.Location.UpdateRouteCalculator+    Amazonka.Location.UpdateTracker+    Amazonka.Location.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-location-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.Location+    Test.Amazonka.Location+    Test.Amazonka.Location.Internal++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-location+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/AssociateTrackerConsumer.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/AssociateTrackerConsumerResponse.proto view
+ fixture/BatchDeleteDevicePositionHistory.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/BatchDeleteDevicePositionHistoryResponse.proto view
+ fixture/BatchDeleteGeofence.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/BatchDeleteGeofenceResponse.proto view
+ fixture/BatchEvaluateGeofences.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/BatchEvaluateGeofencesResponse.proto view
+ fixture/BatchGetDevicePosition.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/BatchGetDevicePositionResponse.proto view
+ fixture/BatchPutGeofence.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/BatchPutGeofenceResponse.proto view
+ fixture/BatchUpdateDevicePosition.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/BatchUpdateDevicePositionResponse.proto view
+ fixture/CalculateRoute.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/CalculateRouteMatrix.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/CalculateRouteMatrixResponse.proto view
+ fixture/CalculateRouteResponse.proto view
+ fixture/CreateGeofenceCollection.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/CreateGeofenceCollectionResponse.proto view
+ fixture/CreateMap.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/CreateMapResponse.proto view
+ fixture/CreatePlaceIndex.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/CreatePlaceIndexResponse.proto view
+ fixture/CreateRouteCalculator.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/CreateRouteCalculatorResponse.proto view
+ fixture/CreateTracker.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/CreateTrackerResponse.proto view
+ fixture/DeleteGeofenceCollection.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DeleteGeofenceCollectionResponse.proto view
+ fixture/DeleteMap.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DeleteMapResponse.proto view
+ fixture/DeletePlaceIndex.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DeletePlaceIndexResponse.proto view
+ fixture/DeleteRouteCalculator.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DeleteRouteCalculatorResponse.proto view
+ fixture/DeleteTracker.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DeleteTrackerResponse.proto view
+ fixture/DescribeGeofenceCollection.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DescribeGeofenceCollectionResponse.proto view
+ fixture/DescribeMap.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DescribeMapResponse.proto view
+ fixture/DescribePlaceIndex.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DescribePlaceIndexResponse.proto view
+ fixture/DescribeRouteCalculator.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DescribeRouteCalculatorResponse.proto view
+ fixture/DescribeTracker.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DescribeTrackerResponse.proto view
+ fixture/DisassociateTrackerConsumer.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/DisassociateTrackerConsumerResponse.proto view
+ fixture/GetDevicePosition.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/GetDevicePositionHistory.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/GetDevicePositionHistoryResponse.proto view
+ fixture/GetDevicePositionResponse.proto view
+ fixture/GetGeofence.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/GetGeofenceResponse.proto view
+ fixture/GetMapGlyphs.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/GetMapGlyphsResponse.proto view
+ fixture/GetMapSprites.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/GetMapSpritesResponse.proto view
+ fixture/GetMapStyleDescriptor.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/GetMapStyleDescriptorResponse.proto view
+ fixture/GetMapTile.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/GetMapTileResponse.proto view
+ fixture/GetPlace.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/GetPlaceResponse.proto view
+ fixture/ListDevicePositions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/ListDevicePositionsResponse.proto view
+ fixture/ListGeofenceCollections.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/ListGeofenceCollectionsResponse.proto view
+ fixture/ListGeofences.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/ListGeofencesResponse.proto view
+ fixture/ListMaps.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/ListMapsResponse.proto view
+ fixture/ListPlaceIndexes.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/ListPlaceIndexesResponse.proto view
+ fixture/ListRouteCalculators.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/ListRouteCalculatorsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/ListTrackerConsumers.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/ListTrackerConsumersResponse.proto view
+ fixture/ListTrackers.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/ListTrackersResponse.proto view
+ fixture/PutGeofence.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/PutGeofenceResponse.proto view
+ fixture/SearchPlaceIndexForPosition.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/SearchPlaceIndexForPositionResponse.proto view
+ fixture/SearchPlaceIndexForSuggestions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/SearchPlaceIndexForSuggestionsResponse.proto view
+ fixture/SearchPlaceIndexForText.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/SearchPlaceIndexForTextResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/UpdateGeofenceCollection.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/UpdateGeofenceCollectionResponse.proto view
+ fixture/UpdateMap.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/UpdateMapResponse.proto view
+ fixture/UpdatePlaceIndex.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/UpdatePlaceIndexResponse.proto view
+ fixture/UpdateRouteCalculator.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/UpdateRouteCalculatorResponse.proto view
+ fixture/UpdateTracker.yaml view
@@ -0,0 +1,10 @@+---+method: PATCH+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/geo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  geo.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/UpdateTrackerResponse.proto view
+ gen/Amazonka/Location.hs view
@@ -0,0 +1,653 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.Location+-- 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 @2020-11-19@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- \"Suite of geospatial services including Maps, Places, Routes, Tracking,+-- and Geofencing\"+module Amazonka.Location+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** ConflictException+    _ConflictException,++    -- ** InternalServerException+    _InternalServerException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceQuotaExceededException+    _ServiceQuotaExceededException,++    -- ** ThrottlingException+    _ThrottlingException,++    -- ** ValidationException+    _ValidationException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** AssociateTrackerConsumer+    AssociateTrackerConsumer (AssociateTrackerConsumer'),+    newAssociateTrackerConsumer,+    AssociateTrackerConsumerResponse (AssociateTrackerConsumerResponse'),+    newAssociateTrackerConsumerResponse,++    -- ** BatchDeleteDevicePositionHistory+    BatchDeleteDevicePositionHistory (BatchDeleteDevicePositionHistory'),+    newBatchDeleteDevicePositionHistory,+    BatchDeleteDevicePositionHistoryResponse (BatchDeleteDevicePositionHistoryResponse'),+    newBatchDeleteDevicePositionHistoryResponse,++    -- ** BatchDeleteGeofence+    BatchDeleteGeofence (BatchDeleteGeofence'),+    newBatchDeleteGeofence,+    BatchDeleteGeofenceResponse (BatchDeleteGeofenceResponse'),+    newBatchDeleteGeofenceResponse,++    -- ** BatchEvaluateGeofences+    BatchEvaluateGeofences (BatchEvaluateGeofences'),+    newBatchEvaluateGeofences,+    BatchEvaluateGeofencesResponse (BatchEvaluateGeofencesResponse'),+    newBatchEvaluateGeofencesResponse,++    -- ** BatchGetDevicePosition+    BatchGetDevicePosition (BatchGetDevicePosition'),+    newBatchGetDevicePosition,+    BatchGetDevicePositionResponse (BatchGetDevicePositionResponse'),+    newBatchGetDevicePositionResponse,++    -- ** BatchPutGeofence+    BatchPutGeofence (BatchPutGeofence'),+    newBatchPutGeofence,+    BatchPutGeofenceResponse (BatchPutGeofenceResponse'),+    newBatchPutGeofenceResponse,++    -- ** BatchUpdateDevicePosition+    BatchUpdateDevicePosition (BatchUpdateDevicePosition'),+    newBatchUpdateDevicePosition,+    BatchUpdateDevicePositionResponse (BatchUpdateDevicePositionResponse'),+    newBatchUpdateDevicePositionResponse,++    -- ** CalculateRoute+    CalculateRoute (CalculateRoute'),+    newCalculateRoute,+    CalculateRouteResponse (CalculateRouteResponse'),+    newCalculateRouteResponse,++    -- ** CalculateRouteMatrix+    CalculateRouteMatrix (CalculateRouteMatrix'),+    newCalculateRouteMatrix,+    CalculateRouteMatrixResponse (CalculateRouteMatrixResponse'),+    newCalculateRouteMatrixResponse,++    -- ** CreateGeofenceCollection+    CreateGeofenceCollection (CreateGeofenceCollection'),+    newCreateGeofenceCollection,+    CreateGeofenceCollectionResponse (CreateGeofenceCollectionResponse'),+    newCreateGeofenceCollectionResponse,++    -- ** CreateMap+    CreateMap (CreateMap'),+    newCreateMap,+    CreateMapResponse (CreateMapResponse'),+    newCreateMapResponse,++    -- ** CreatePlaceIndex+    CreatePlaceIndex (CreatePlaceIndex'),+    newCreatePlaceIndex,+    CreatePlaceIndexResponse (CreatePlaceIndexResponse'),+    newCreatePlaceIndexResponse,++    -- ** CreateRouteCalculator+    CreateRouteCalculator (CreateRouteCalculator'),+    newCreateRouteCalculator,+    CreateRouteCalculatorResponse (CreateRouteCalculatorResponse'),+    newCreateRouteCalculatorResponse,++    -- ** CreateTracker+    CreateTracker (CreateTracker'),+    newCreateTracker,+    CreateTrackerResponse (CreateTrackerResponse'),+    newCreateTrackerResponse,++    -- ** DeleteGeofenceCollection+    DeleteGeofenceCollection (DeleteGeofenceCollection'),+    newDeleteGeofenceCollection,+    DeleteGeofenceCollectionResponse (DeleteGeofenceCollectionResponse'),+    newDeleteGeofenceCollectionResponse,++    -- ** DeleteMap+    DeleteMap (DeleteMap'),+    newDeleteMap,+    DeleteMapResponse (DeleteMapResponse'),+    newDeleteMapResponse,++    -- ** DeletePlaceIndex+    DeletePlaceIndex (DeletePlaceIndex'),+    newDeletePlaceIndex,+    DeletePlaceIndexResponse (DeletePlaceIndexResponse'),+    newDeletePlaceIndexResponse,++    -- ** DeleteRouteCalculator+    DeleteRouteCalculator (DeleteRouteCalculator'),+    newDeleteRouteCalculator,+    DeleteRouteCalculatorResponse (DeleteRouteCalculatorResponse'),+    newDeleteRouteCalculatorResponse,++    -- ** DeleteTracker+    DeleteTracker (DeleteTracker'),+    newDeleteTracker,+    DeleteTrackerResponse (DeleteTrackerResponse'),+    newDeleteTrackerResponse,++    -- ** DescribeGeofenceCollection+    DescribeGeofenceCollection (DescribeGeofenceCollection'),+    newDescribeGeofenceCollection,+    DescribeGeofenceCollectionResponse (DescribeGeofenceCollectionResponse'),+    newDescribeGeofenceCollectionResponse,++    -- ** DescribeMap+    DescribeMap (DescribeMap'),+    newDescribeMap,+    DescribeMapResponse (DescribeMapResponse'),+    newDescribeMapResponse,++    -- ** DescribePlaceIndex+    DescribePlaceIndex (DescribePlaceIndex'),+    newDescribePlaceIndex,+    DescribePlaceIndexResponse (DescribePlaceIndexResponse'),+    newDescribePlaceIndexResponse,++    -- ** DescribeRouteCalculator+    DescribeRouteCalculator (DescribeRouteCalculator'),+    newDescribeRouteCalculator,+    DescribeRouteCalculatorResponse (DescribeRouteCalculatorResponse'),+    newDescribeRouteCalculatorResponse,++    -- ** DescribeTracker+    DescribeTracker (DescribeTracker'),+    newDescribeTracker,+    DescribeTrackerResponse (DescribeTrackerResponse'),+    newDescribeTrackerResponse,++    -- ** DisassociateTrackerConsumer+    DisassociateTrackerConsumer (DisassociateTrackerConsumer'),+    newDisassociateTrackerConsumer,+    DisassociateTrackerConsumerResponse (DisassociateTrackerConsumerResponse'),+    newDisassociateTrackerConsumerResponse,++    -- ** GetDevicePosition+    GetDevicePosition (GetDevicePosition'),+    newGetDevicePosition,+    GetDevicePositionResponse (GetDevicePositionResponse'),+    newGetDevicePositionResponse,++    -- ** GetDevicePositionHistory (Paginated)+    GetDevicePositionHistory (GetDevicePositionHistory'),+    newGetDevicePositionHistory,+    GetDevicePositionHistoryResponse (GetDevicePositionHistoryResponse'),+    newGetDevicePositionHistoryResponse,++    -- ** GetGeofence+    GetGeofence (GetGeofence'),+    newGetGeofence,+    GetGeofenceResponse (GetGeofenceResponse'),+    newGetGeofenceResponse,++    -- ** GetMapGlyphs+    GetMapGlyphs (GetMapGlyphs'),+    newGetMapGlyphs,+    GetMapGlyphsResponse (GetMapGlyphsResponse'),+    newGetMapGlyphsResponse,++    -- ** GetMapSprites+    GetMapSprites (GetMapSprites'),+    newGetMapSprites,+    GetMapSpritesResponse (GetMapSpritesResponse'),+    newGetMapSpritesResponse,++    -- ** GetMapStyleDescriptor+    GetMapStyleDescriptor (GetMapStyleDescriptor'),+    newGetMapStyleDescriptor,+    GetMapStyleDescriptorResponse (GetMapStyleDescriptorResponse'),+    newGetMapStyleDescriptorResponse,++    -- ** GetMapTile+    GetMapTile (GetMapTile'),+    newGetMapTile,+    GetMapTileResponse (GetMapTileResponse'),+    newGetMapTileResponse,++    -- ** GetPlace+    GetPlace (GetPlace'),+    newGetPlace,+    GetPlaceResponse (GetPlaceResponse'),+    newGetPlaceResponse,++    -- ** ListDevicePositions (Paginated)+    ListDevicePositions (ListDevicePositions'),+    newListDevicePositions,+    ListDevicePositionsResponse (ListDevicePositionsResponse'),+    newListDevicePositionsResponse,++    -- ** ListGeofenceCollections (Paginated)+    ListGeofenceCollections (ListGeofenceCollections'),+    newListGeofenceCollections,+    ListGeofenceCollectionsResponse (ListGeofenceCollectionsResponse'),+    newListGeofenceCollectionsResponse,++    -- ** ListGeofences (Paginated)+    ListGeofences (ListGeofences'),+    newListGeofences,+    ListGeofencesResponse (ListGeofencesResponse'),+    newListGeofencesResponse,++    -- ** ListMaps (Paginated)+    ListMaps (ListMaps'),+    newListMaps,+    ListMapsResponse (ListMapsResponse'),+    newListMapsResponse,++    -- ** ListPlaceIndexes (Paginated)+    ListPlaceIndexes (ListPlaceIndexes'),+    newListPlaceIndexes,+    ListPlaceIndexesResponse (ListPlaceIndexesResponse'),+    newListPlaceIndexesResponse,++    -- ** ListRouteCalculators (Paginated)+    ListRouteCalculators (ListRouteCalculators'),+    newListRouteCalculators,+    ListRouteCalculatorsResponse (ListRouteCalculatorsResponse'),+    newListRouteCalculatorsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** ListTrackerConsumers (Paginated)+    ListTrackerConsumers (ListTrackerConsumers'),+    newListTrackerConsumers,+    ListTrackerConsumersResponse (ListTrackerConsumersResponse'),+    newListTrackerConsumersResponse,++    -- ** ListTrackers (Paginated)+    ListTrackers (ListTrackers'),+    newListTrackers,+    ListTrackersResponse (ListTrackersResponse'),+    newListTrackersResponse,++    -- ** PutGeofence+    PutGeofence (PutGeofence'),+    newPutGeofence,+    PutGeofenceResponse (PutGeofenceResponse'),+    newPutGeofenceResponse,++    -- ** SearchPlaceIndexForPosition+    SearchPlaceIndexForPosition (SearchPlaceIndexForPosition'),+    newSearchPlaceIndexForPosition,+    SearchPlaceIndexForPositionResponse (SearchPlaceIndexForPositionResponse'),+    newSearchPlaceIndexForPositionResponse,++    -- ** SearchPlaceIndexForSuggestions+    SearchPlaceIndexForSuggestions (SearchPlaceIndexForSuggestions'),+    newSearchPlaceIndexForSuggestions,+    SearchPlaceIndexForSuggestionsResponse (SearchPlaceIndexForSuggestionsResponse'),+    newSearchPlaceIndexForSuggestionsResponse,++    -- ** SearchPlaceIndexForText+    SearchPlaceIndexForText (SearchPlaceIndexForText'),+    newSearchPlaceIndexForText,+    SearchPlaceIndexForTextResponse (SearchPlaceIndexForTextResponse'),+    newSearchPlaceIndexForTextResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateGeofenceCollection+    UpdateGeofenceCollection (UpdateGeofenceCollection'),+    newUpdateGeofenceCollection,+    UpdateGeofenceCollectionResponse (UpdateGeofenceCollectionResponse'),+    newUpdateGeofenceCollectionResponse,++    -- ** UpdateMap+    UpdateMap (UpdateMap'),+    newUpdateMap,+    UpdateMapResponse (UpdateMapResponse'),+    newUpdateMapResponse,++    -- ** UpdatePlaceIndex+    UpdatePlaceIndex (UpdatePlaceIndex'),+    newUpdatePlaceIndex,+    UpdatePlaceIndexResponse (UpdatePlaceIndexResponse'),+    newUpdatePlaceIndexResponse,++    -- ** UpdateRouteCalculator+    UpdateRouteCalculator (UpdateRouteCalculator'),+    newUpdateRouteCalculator,+    UpdateRouteCalculatorResponse (UpdateRouteCalculatorResponse'),+    newUpdateRouteCalculatorResponse,++    -- ** UpdateTracker+    UpdateTracker (UpdateTracker'),+    newUpdateTracker,+    UpdateTrackerResponse (UpdateTrackerResponse'),+    newUpdateTrackerResponse,++    -- * Types++    -- ** BatchItemErrorCode+    BatchItemErrorCode (..),++    -- ** DimensionUnit+    DimensionUnit (..),++    -- ** DistanceUnit+    DistanceUnit (..),++    -- ** IntendedUse+    IntendedUse (..),++    -- ** PositionFiltering+    PositionFiltering (..),++    -- ** PricingPlan+    PricingPlan (..),++    -- ** RouteMatrixErrorCode+    RouteMatrixErrorCode (..),++    -- ** TravelMode+    TravelMode (..),++    -- ** VehicleWeightUnit+    VehicleWeightUnit (..),++    -- ** BatchDeleteDevicePositionHistoryError+    BatchDeleteDevicePositionHistoryError (BatchDeleteDevicePositionHistoryError'),+    newBatchDeleteDevicePositionHistoryError,++    -- ** BatchDeleteGeofenceError+    BatchDeleteGeofenceError (BatchDeleteGeofenceError'),+    newBatchDeleteGeofenceError,++    -- ** BatchEvaluateGeofencesError+    BatchEvaluateGeofencesError (BatchEvaluateGeofencesError'),+    newBatchEvaluateGeofencesError,++    -- ** BatchGetDevicePositionError+    BatchGetDevicePositionError (BatchGetDevicePositionError'),+    newBatchGetDevicePositionError,++    -- ** BatchItemError+    BatchItemError (BatchItemError'),+    newBatchItemError,++    -- ** BatchPutGeofenceError+    BatchPutGeofenceError (BatchPutGeofenceError'),+    newBatchPutGeofenceError,++    -- ** BatchPutGeofenceRequestEntry+    BatchPutGeofenceRequestEntry (BatchPutGeofenceRequestEntry'),+    newBatchPutGeofenceRequestEntry,++    -- ** BatchPutGeofenceSuccess+    BatchPutGeofenceSuccess (BatchPutGeofenceSuccess'),+    newBatchPutGeofenceSuccess,++    -- ** BatchUpdateDevicePositionError+    BatchUpdateDevicePositionError (BatchUpdateDevicePositionError'),+    newBatchUpdateDevicePositionError,++    -- ** CalculateRouteCarModeOptions+    CalculateRouteCarModeOptions (CalculateRouteCarModeOptions'),+    newCalculateRouteCarModeOptions,++    -- ** CalculateRouteMatrixSummary+    CalculateRouteMatrixSummary (CalculateRouteMatrixSummary'),+    newCalculateRouteMatrixSummary,++    -- ** CalculateRouteSummary+    CalculateRouteSummary (CalculateRouteSummary'),+    newCalculateRouteSummary,++    -- ** CalculateRouteTruckModeOptions+    CalculateRouteTruckModeOptions (CalculateRouteTruckModeOptions'),+    newCalculateRouteTruckModeOptions,++    -- ** Circle+    Circle (Circle'),+    newCircle,++    -- ** DataSourceConfiguration+    DataSourceConfiguration (DataSourceConfiguration'),+    newDataSourceConfiguration,++    -- ** DevicePosition+    DevicePosition (DevicePosition'),+    newDevicePosition,++    -- ** DevicePositionUpdate+    DevicePositionUpdate (DevicePositionUpdate'),+    newDevicePositionUpdate,++    -- ** GeofenceGeometry+    GeofenceGeometry (GeofenceGeometry'),+    newGeofenceGeometry,++    -- ** Leg+    Leg (Leg'),+    newLeg,++    -- ** LegGeometry+    LegGeometry (LegGeometry'),+    newLegGeometry,++    -- ** ListDevicePositionsResponseEntry+    ListDevicePositionsResponseEntry (ListDevicePositionsResponseEntry'),+    newListDevicePositionsResponseEntry,++    -- ** ListGeofenceCollectionsResponseEntry+    ListGeofenceCollectionsResponseEntry (ListGeofenceCollectionsResponseEntry'),+    newListGeofenceCollectionsResponseEntry,++    -- ** ListGeofenceResponseEntry+    ListGeofenceResponseEntry (ListGeofenceResponseEntry'),+    newListGeofenceResponseEntry,++    -- ** ListMapsResponseEntry+    ListMapsResponseEntry (ListMapsResponseEntry'),+    newListMapsResponseEntry,++    -- ** ListPlaceIndexesResponseEntry+    ListPlaceIndexesResponseEntry (ListPlaceIndexesResponseEntry'),+    newListPlaceIndexesResponseEntry,++    -- ** ListRouteCalculatorsResponseEntry+    ListRouteCalculatorsResponseEntry (ListRouteCalculatorsResponseEntry'),+    newListRouteCalculatorsResponseEntry,++    -- ** ListTrackersResponseEntry+    ListTrackersResponseEntry (ListTrackersResponseEntry'),+    newListTrackersResponseEntry,++    -- ** MapConfiguration+    MapConfiguration (MapConfiguration'),+    newMapConfiguration,++    -- ** Place+    Place (Place'),+    newPlace,++    -- ** PlaceGeometry+    PlaceGeometry (PlaceGeometry'),+    newPlaceGeometry,++    -- ** PositionalAccuracy+    PositionalAccuracy (PositionalAccuracy'),+    newPositionalAccuracy,++    -- ** RouteMatrixEntry+    RouteMatrixEntry (RouteMatrixEntry'),+    newRouteMatrixEntry,++    -- ** RouteMatrixEntryError+    RouteMatrixEntryError (RouteMatrixEntryError'),+    newRouteMatrixEntryError,++    -- ** SearchForPositionResult+    SearchForPositionResult (SearchForPositionResult'),+    newSearchForPositionResult,++    -- ** SearchForSuggestionsResult+    SearchForSuggestionsResult (SearchForSuggestionsResult'),+    newSearchForSuggestionsResult,++    -- ** SearchForTextResult+    SearchForTextResult (SearchForTextResult'),+    newSearchForTextResult,++    -- ** SearchPlaceIndexForPositionSummary+    SearchPlaceIndexForPositionSummary (SearchPlaceIndexForPositionSummary'),+    newSearchPlaceIndexForPositionSummary,++    -- ** SearchPlaceIndexForSuggestionsSummary+    SearchPlaceIndexForSuggestionsSummary (SearchPlaceIndexForSuggestionsSummary'),+    newSearchPlaceIndexForSuggestionsSummary,++    -- ** SearchPlaceIndexForTextSummary+    SearchPlaceIndexForTextSummary (SearchPlaceIndexForTextSummary'),+    newSearchPlaceIndexForTextSummary,++    -- ** Step+    Step (Step'),+    newStep,++    -- ** TimeZone+    TimeZone (TimeZone'),+    newTimeZone,++    -- ** TruckDimensions+    TruckDimensions (TruckDimensions'),+    newTruckDimensions,++    -- ** TruckWeight+    TruckWeight (TruckWeight'),+    newTruckWeight,+  )+where++import Amazonka.Location.AssociateTrackerConsumer+import Amazonka.Location.BatchDeleteDevicePositionHistory+import Amazonka.Location.BatchDeleteGeofence+import Amazonka.Location.BatchEvaluateGeofences+import Amazonka.Location.BatchGetDevicePosition+import Amazonka.Location.BatchPutGeofence+import Amazonka.Location.BatchUpdateDevicePosition+import Amazonka.Location.CalculateRoute+import Amazonka.Location.CalculateRouteMatrix+import Amazonka.Location.CreateGeofenceCollection+import Amazonka.Location.CreateMap+import Amazonka.Location.CreatePlaceIndex+import Amazonka.Location.CreateRouteCalculator+import Amazonka.Location.CreateTracker+import Amazonka.Location.DeleteGeofenceCollection+import Amazonka.Location.DeleteMap+import Amazonka.Location.DeletePlaceIndex+import Amazonka.Location.DeleteRouteCalculator+import Amazonka.Location.DeleteTracker+import Amazonka.Location.DescribeGeofenceCollection+import Amazonka.Location.DescribeMap+import Amazonka.Location.DescribePlaceIndex+import Amazonka.Location.DescribeRouteCalculator+import Amazonka.Location.DescribeTracker+import Amazonka.Location.DisassociateTrackerConsumer+import Amazonka.Location.GetDevicePosition+import Amazonka.Location.GetDevicePositionHistory+import Amazonka.Location.GetGeofence+import Amazonka.Location.GetMapGlyphs+import Amazonka.Location.GetMapSprites+import Amazonka.Location.GetMapStyleDescriptor+import Amazonka.Location.GetMapTile+import Amazonka.Location.GetPlace+import Amazonka.Location.Lens+import Amazonka.Location.ListDevicePositions+import Amazonka.Location.ListGeofenceCollections+import Amazonka.Location.ListGeofences+import Amazonka.Location.ListMaps+import Amazonka.Location.ListPlaceIndexes+import Amazonka.Location.ListRouteCalculators+import Amazonka.Location.ListTagsForResource+import Amazonka.Location.ListTrackerConsumers+import Amazonka.Location.ListTrackers+import Amazonka.Location.PutGeofence+import Amazonka.Location.SearchPlaceIndexForPosition+import Amazonka.Location.SearchPlaceIndexForSuggestions+import Amazonka.Location.SearchPlaceIndexForText+import Amazonka.Location.TagResource+import Amazonka.Location.Types+import Amazonka.Location.UntagResource+import Amazonka.Location.UpdateGeofenceCollection+import Amazonka.Location.UpdateMap+import Amazonka.Location.UpdatePlaceIndex+import Amazonka.Location.UpdateRouteCalculator+import Amazonka.Location.UpdateTracker+import Amazonka.Location.Waiters++-- $errors+-- Error matchers are designed for use with the functions provided by+-- <http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.+-- This allows catching (and rethrowing) service specific errors returned+-- by 'Location'.++-- $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/Location/AssociateTrackerConsumer.hs view
@@ -0,0 +1,208 @@+{-# 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.Location.AssociateTrackerConsumer+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates an association between a geofence collection and a tracker+-- resource. This allows the tracker resource to communicate location data+-- to the linked geofence collection.+--+-- You can associate up to five geofence collections to each tracker+-- resource.+--+-- Currently not supported — Cross-account configurations, such as creating+-- associations between a tracker resource in one account and a geofence+-- collection in another account.+module Amazonka.Location.AssociateTrackerConsumer+  ( -- * Creating a Request+    AssociateTrackerConsumer (..),+    newAssociateTrackerConsumer,++    -- * Request Lenses+    associateTrackerConsumer_consumerArn,+    associateTrackerConsumer_trackerName,++    -- * Destructuring the Response+    AssociateTrackerConsumerResponse (..),+    newAssociateTrackerConsumerResponse,++    -- * Response Lenses+    associateTrackerConsumerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAssociateTrackerConsumer' smart constructor.+data AssociateTrackerConsumer = AssociateTrackerConsumer'+  { -- | The Amazon Resource Name (ARN) for the geofence collection to be+    -- associated to tracker resource. Used when you need to specify a resource+    -- across all AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollectionConsumer@+    consumerArn :: Prelude.Text,+    -- | The name of the tracker resource to be associated with a geofence+    -- collection.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateTrackerConsumer' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'consumerArn', 'associateTrackerConsumer_consumerArn' - The Amazon Resource Name (ARN) for the geofence collection to be+-- associated to tracker resource. Used when you need to specify a resource+-- across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollectionConsumer@+--+-- 'trackerName', 'associateTrackerConsumer_trackerName' - The name of the tracker resource to be associated with a geofence+-- collection.+newAssociateTrackerConsumer ::+  -- | 'consumerArn'+  Prelude.Text ->+  -- | 'trackerName'+  Prelude.Text ->+  AssociateTrackerConsumer+newAssociateTrackerConsumer+  pConsumerArn_+  pTrackerName_ =+    AssociateTrackerConsumer'+      { consumerArn =+          pConsumerArn_,+        trackerName = pTrackerName_+      }++-- | The Amazon Resource Name (ARN) for the geofence collection to be+-- associated to tracker resource. Used when you need to specify a resource+-- across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollectionConsumer@+associateTrackerConsumer_consumerArn :: Lens.Lens' AssociateTrackerConsumer Prelude.Text+associateTrackerConsumer_consumerArn = Lens.lens (\AssociateTrackerConsumer' {consumerArn} -> consumerArn) (\s@AssociateTrackerConsumer' {} a -> s {consumerArn = a} :: AssociateTrackerConsumer)++-- | The name of the tracker resource to be associated with a geofence+-- collection.+associateTrackerConsumer_trackerName :: Lens.Lens' AssociateTrackerConsumer Prelude.Text+associateTrackerConsumer_trackerName = Lens.lens (\AssociateTrackerConsumer' {trackerName} -> trackerName) (\s@AssociateTrackerConsumer' {} a -> s {trackerName = a} :: AssociateTrackerConsumer)++instance Core.AWSRequest AssociateTrackerConsumer where+  type+    AWSResponse AssociateTrackerConsumer =+      AssociateTrackerConsumerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          AssociateTrackerConsumerResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AssociateTrackerConsumer where+  hashWithSalt _salt AssociateTrackerConsumer' {..} =+    _salt+      `Prelude.hashWithSalt` consumerArn+      `Prelude.hashWithSalt` trackerName++instance Prelude.NFData AssociateTrackerConsumer where+  rnf AssociateTrackerConsumer' {..} =+    Prelude.rnf consumerArn+      `Prelude.seq` Prelude.rnf trackerName++instance Data.ToHeaders AssociateTrackerConsumer where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AssociateTrackerConsumer where+  toJSON AssociateTrackerConsumer' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("ConsumerArn" Data..= consumerArn)]+      )++instance Data.ToPath AssociateTrackerConsumer where+  toPath AssociateTrackerConsumer' {..} =+    Prelude.mconcat+      [ "/tracking/v0/trackers/",+        Data.toBS trackerName,+        "/consumers"+      ]++instance Data.ToQuery AssociateTrackerConsumer where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAssociateTrackerConsumerResponse' smart constructor.+data AssociateTrackerConsumerResponse = AssociateTrackerConsumerResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateTrackerConsumerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'associateTrackerConsumerResponse_httpStatus' - The response's http status code.+newAssociateTrackerConsumerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AssociateTrackerConsumerResponse+newAssociateTrackerConsumerResponse pHttpStatus_ =+  AssociateTrackerConsumerResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+associateTrackerConsumerResponse_httpStatus :: Lens.Lens' AssociateTrackerConsumerResponse Prelude.Int+associateTrackerConsumerResponse_httpStatus = Lens.lens (\AssociateTrackerConsumerResponse' {httpStatus} -> httpStatus) (\s@AssociateTrackerConsumerResponse' {} a -> s {httpStatus = a} :: AssociateTrackerConsumerResponse)++instance+  Prelude.NFData+    AssociateTrackerConsumerResponse+  where+  rnf AssociateTrackerConsumerResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Location/BatchDeleteDevicePositionHistory.hs view
@@ -0,0 +1,221 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.BatchDeleteDevicePositionHistory+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the position history of one or more devices from a tracker+-- resource.+module Amazonka.Location.BatchDeleteDevicePositionHistory+  ( -- * Creating a Request+    BatchDeleteDevicePositionHistory (..),+    newBatchDeleteDevicePositionHistory,++    -- * Request Lenses+    batchDeleteDevicePositionHistory_deviceIds,+    batchDeleteDevicePositionHistory_trackerName,++    -- * Destructuring the Response+    BatchDeleteDevicePositionHistoryResponse (..),+    newBatchDeleteDevicePositionHistoryResponse,++    -- * Response Lenses+    batchDeleteDevicePositionHistoryResponse_httpStatus,+    batchDeleteDevicePositionHistoryResponse_errors,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchDeleteDevicePositionHistory' smart constructor.+data BatchDeleteDevicePositionHistory = BatchDeleteDevicePositionHistory'+  { -- | Devices whose position history you want to delete.+    --+    -- -   For example, for two devices: @“DeviceIds” : [DeviceId1,DeviceId2]@+    deviceIds :: Prelude.NonEmpty Prelude.Text,+    -- | The name of the tracker resource to delete the device position history+    -- from.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDeleteDevicePositionHistory' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deviceIds', 'batchDeleteDevicePositionHistory_deviceIds' - Devices whose position history you want to delete.+--+-- -   For example, for two devices: @“DeviceIds” : [DeviceId1,DeviceId2]@+--+-- 'trackerName', 'batchDeleteDevicePositionHistory_trackerName' - The name of the tracker resource to delete the device position history+-- from.+newBatchDeleteDevicePositionHistory ::+  -- | 'deviceIds'+  Prelude.NonEmpty Prelude.Text ->+  -- | 'trackerName'+  Prelude.Text ->+  BatchDeleteDevicePositionHistory+newBatchDeleteDevicePositionHistory+  pDeviceIds_+  pTrackerName_ =+    BatchDeleteDevicePositionHistory'+      { deviceIds =+          Lens.coerced Lens.# pDeviceIds_,+        trackerName = pTrackerName_+      }++-- | Devices whose position history you want to delete.+--+-- -   For example, for two devices: @“DeviceIds” : [DeviceId1,DeviceId2]@+batchDeleteDevicePositionHistory_deviceIds :: Lens.Lens' BatchDeleteDevicePositionHistory (Prelude.NonEmpty Prelude.Text)+batchDeleteDevicePositionHistory_deviceIds = Lens.lens (\BatchDeleteDevicePositionHistory' {deviceIds} -> deviceIds) (\s@BatchDeleteDevicePositionHistory' {} a -> s {deviceIds = a} :: BatchDeleteDevicePositionHistory) Prelude.. Lens.coerced++-- | The name of the tracker resource to delete the device position history+-- from.+batchDeleteDevicePositionHistory_trackerName :: Lens.Lens' BatchDeleteDevicePositionHistory Prelude.Text+batchDeleteDevicePositionHistory_trackerName = Lens.lens (\BatchDeleteDevicePositionHistory' {trackerName} -> trackerName) (\s@BatchDeleteDevicePositionHistory' {} a -> s {trackerName = a} :: BatchDeleteDevicePositionHistory)++instance+  Core.AWSRequest+    BatchDeleteDevicePositionHistory+  where+  type+    AWSResponse BatchDeleteDevicePositionHistory =+      BatchDeleteDevicePositionHistoryResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchDeleteDevicePositionHistoryResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Errors" Core..!@ Prelude.mempty)+      )++instance+  Prelude.Hashable+    BatchDeleteDevicePositionHistory+  where+  hashWithSalt+    _salt+    BatchDeleteDevicePositionHistory' {..} =+      _salt+        `Prelude.hashWithSalt` deviceIds+        `Prelude.hashWithSalt` trackerName++instance+  Prelude.NFData+    BatchDeleteDevicePositionHistory+  where+  rnf BatchDeleteDevicePositionHistory' {..} =+    Prelude.rnf deviceIds+      `Prelude.seq` Prelude.rnf trackerName++instance+  Data.ToHeaders+    BatchDeleteDevicePositionHistory+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchDeleteDevicePositionHistory where+  toJSON BatchDeleteDevicePositionHistory' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("DeviceIds" Data..= deviceIds)]+      )++instance Data.ToPath BatchDeleteDevicePositionHistory where+  toPath BatchDeleteDevicePositionHistory' {..} =+    Prelude.mconcat+      [ "/tracking/v0/trackers/",+        Data.toBS trackerName,+        "/delete-positions"+      ]++instance+  Data.ToQuery+    BatchDeleteDevicePositionHistory+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchDeleteDevicePositionHistoryResponse' smart constructor.+data BatchDeleteDevicePositionHistoryResponse = BatchDeleteDevicePositionHistoryResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains error details for each device history that failed to delete.+    errors :: [BatchDeleteDevicePositionHistoryError]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDeleteDevicePositionHistoryResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchDeleteDevicePositionHistoryResponse_httpStatus' - The response's http status code.+--+-- 'errors', 'batchDeleteDevicePositionHistoryResponse_errors' - Contains error details for each device history that failed to delete.+newBatchDeleteDevicePositionHistoryResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchDeleteDevicePositionHistoryResponse+newBatchDeleteDevicePositionHistoryResponse+  pHttpStatus_ =+    BatchDeleteDevicePositionHistoryResponse'+      { httpStatus =+          pHttpStatus_,+        errors = Prelude.mempty+      }++-- | The response's http status code.+batchDeleteDevicePositionHistoryResponse_httpStatus :: Lens.Lens' BatchDeleteDevicePositionHistoryResponse Prelude.Int+batchDeleteDevicePositionHistoryResponse_httpStatus = Lens.lens (\BatchDeleteDevicePositionHistoryResponse' {httpStatus} -> httpStatus) (\s@BatchDeleteDevicePositionHistoryResponse' {} a -> s {httpStatus = a} :: BatchDeleteDevicePositionHistoryResponse)++-- | Contains error details for each device history that failed to delete.+batchDeleteDevicePositionHistoryResponse_errors :: Lens.Lens' BatchDeleteDevicePositionHistoryResponse [BatchDeleteDevicePositionHistoryError]+batchDeleteDevicePositionHistoryResponse_errors = Lens.lens (\BatchDeleteDevicePositionHistoryResponse' {errors} -> errors) (\s@BatchDeleteDevicePositionHistoryResponse' {} a -> s {errors = a} :: BatchDeleteDevicePositionHistoryResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    BatchDeleteDevicePositionHistoryResponse+  where+  rnf BatchDeleteDevicePositionHistoryResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf errors
+ gen/Amazonka/Location/BatchDeleteGeofence.hs view
@@ -0,0 +1,190 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.BatchDeleteGeofence+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a batch of geofences from a geofence collection.+--+-- This operation deletes the resource permanently.+module Amazonka.Location.BatchDeleteGeofence+  ( -- * Creating a Request+    BatchDeleteGeofence (..),+    newBatchDeleteGeofence,++    -- * Request Lenses+    batchDeleteGeofence_collectionName,+    batchDeleteGeofence_geofenceIds,++    -- * Destructuring the Response+    BatchDeleteGeofenceResponse (..),+    newBatchDeleteGeofenceResponse,++    -- * Response Lenses+    batchDeleteGeofenceResponse_httpStatus,+    batchDeleteGeofenceResponse_errors,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchDeleteGeofence' smart constructor.+data BatchDeleteGeofence = BatchDeleteGeofence'+  { -- | The geofence collection storing the geofences to be deleted.+    collectionName :: Prelude.Text,+    -- | The batch of geofences to be deleted.+    geofenceIds :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDeleteGeofence' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'collectionName', 'batchDeleteGeofence_collectionName' - The geofence collection storing the geofences to be deleted.+--+-- 'geofenceIds', 'batchDeleteGeofence_geofenceIds' - The batch of geofences to be deleted.+newBatchDeleteGeofence ::+  -- | 'collectionName'+  Prelude.Text ->+  -- | 'geofenceIds'+  Prelude.NonEmpty Prelude.Text ->+  BatchDeleteGeofence+newBatchDeleteGeofence pCollectionName_ pGeofenceIds_ =+  BatchDeleteGeofence'+    { collectionName =+        pCollectionName_,+      geofenceIds = Lens.coerced Lens.# pGeofenceIds_+    }++-- | The geofence collection storing the geofences to be deleted.+batchDeleteGeofence_collectionName :: Lens.Lens' BatchDeleteGeofence Prelude.Text+batchDeleteGeofence_collectionName = Lens.lens (\BatchDeleteGeofence' {collectionName} -> collectionName) (\s@BatchDeleteGeofence' {} a -> s {collectionName = a} :: BatchDeleteGeofence)++-- | The batch of geofences to be deleted.+batchDeleteGeofence_geofenceIds :: Lens.Lens' BatchDeleteGeofence (Prelude.NonEmpty Prelude.Text)+batchDeleteGeofence_geofenceIds = Lens.lens (\BatchDeleteGeofence' {geofenceIds} -> geofenceIds) (\s@BatchDeleteGeofence' {} a -> s {geofenceIds = a} :: BatchDeleteGeofence) Prelude.. Lens.coerced++instance Core.AWSRequest BatchDeleteGeofence where+  type+    AWSResponse BatchDeleteGeofence =+      BatchDeleteGeofenceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchDeleteGeofenceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Errors" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable BatchDeleteGeofence where+  hashWithSalt _salt BatchDeleteGeofence' {..} =+    _salt+      `Prelude.hashWithSalt` collectionName+      `Prelude.hashWithSalt` geofenceIds++instance Prelude.NFData BatchDeleteGeofence where+  rnf BatchDeleteGeofence' {..} =+    Prelude.rnf collectionName+      `Prelude.seq` Prelude.rnf geofenceIds++instance Data.ToHeaders BatchDeleteGeofence where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchDeleteGeofence where+  toJSON BatchDeleteGeofence' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("GeofenceIds" Data..= geofenceIds)]+      )++instance Data.ToPath BatchDeleteGeofence where+  toPath BatchDeleteGeofence' {..} =+    Prelude.mconcat+      [ "/geofencing/v0/collections/",+        Data.toBS collectionName,+        "/delete-geofences"+      ]++instance Data.ToQuery BatchDeleteGeofence where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchDeleteGeofenceResponse' smart constructor.+data BatchDeleteGeofenceResponse = BatchDeleteGeofenceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains error details for each geofence that failed to delete.+    errors :: [BatchDeleteGeofenceError]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDeleteGeofenceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchDeleteGeofenceResponse_httpStatus' - The response's http status code.+--+-- 'errors', 'batchDeleteGeofenceResponse_errors' - Contains error details for each geofence that failed to delete.+newBatchDeleteGeofenceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchDeleteGeofenceResponse+newBatchDeleteGeofenceResponse pHttpStatus_ =+  BatchDeleteGeofenceResponse'+    { httpStatus =+        pHttpStatus_,+      errors = Prelude.mempty+    }++-- | The response's http status code.+batchDeleteGeofenceResponse_httpStatus :: Lens.Lens' BatchDeleteGeofenceResponse Prelude.Int+batchDeleteGeofenceResponse_httpStatus = Lens.lens (\BatchDeleteGeofenceResponse' {httpStatus} -> httpStatus) (\s@BatchDeleteGeofenceResponse' {} a -> s {httpStatus = a} :: BatchDeleteGeofenceResponse)++-- | Contains error details for each geofence that failed to delete.+batchDeleteGeofenceResponse_errors :: Lens.Lens' BatchDeleteGeofenceResponse [BatchDeleteGeofenceError]+batchDeleteGeofenceResponse_errors = Lens.lens (\BatchDeleteGeofenceResponse' {errors} -> errors) (\s@BatchDeleteGeofenceResponse' {} a -> s {errors = a} :: BatchDeleteGeofenceResponse) Prelude.. Lens.coerced++instance Prelude.NFData BatchDeleteGeofenceResponse where+  rnf BatchDeleteGeofenceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf errors
+ gen/Amazonka/Location/BatchEvaluateGeofences.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.Location.BatchEvaluateGeofences+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Evaluates device positions against the geofence geometries from a given+-- geofence collection.+--+-- This operation always returns an empty response because geofences are+-- asynchronously evaluated. The evaluation determines if the device has+-- entered or exited a geofenced area, and then publishes one of the+-- following events to Amazon EventBridge:+--+-- -   @ENTER@ if Amazon Location determines that the tracked device has+--     entered a geofenced area.+--+-- -   @EXIT@ if Amazon Location determines that the tracked device has+--     exited a geofenced area.+--+-- The last geofence that a device was observed within is tracked for 30+-- days after the most recent device position update.+--+-- Geofence evaluation uses the given device position. It does not account+-- for the optional @Accuracy@ of a @DevicePositionUpdate@.+--+-- The @DeviceID@ is used as a string to represent the device. You do not+-- need to have a @Tracker@ associated with the @DeviceID@.+module Amazonka.Location.BatchEvaluateGeofences+  ( -- * Creating a Request+    BatchEvaluateGeofences (..),+    newBatchEvaluateGeofences,++    -- * Request Lenses+    batchEvaluateGeofences_collectionName,+    batchEvaluateGeofences_devicePositionUpdates,++    -- * Destructuring the Response+    BatchEvaluateGeofencesResponse (..),+    newBatchEvaluateGeofencesResponse,++    -- * Response Lenses+    batchEvaluateGeofencesResponse_httpStatus,+    batchEvaluateGeofencesResponse_errors,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchEvaluateGeofences' smart constructor.+data BatchEvaluateGeofences = BatchEvaluateGeofences'+  { -- | The geofence collection used in evaluating the position of devices+    -- against its geofences.+    collectionName :: Prelude.Text,+    -- | Contains device details for each device to be evaluated against the+    -- given geofence collection.+    devicePositionUpdates :: Prelude.NonEmpty DevicePositionUpdate+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchEvaluateGeofences' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'collectionName', 'batchEvaluateGeofences_collectionName' - The geofence collection used in evaluating the position of devices+-- against its geofences.+--+-- 'devicePositionUpdates', 'batchEvaluateGeofences_devicePositionUpdates' - Contains device details for each device to be evaluated against the+-- given geofence collection.+newBatchEvaluateGeofences ::+  -- | 'collectionName'+  Prelude.Text ->+  -- | 'devicePositionUpdates'+  Prelude.NonEmpty DevicePositionUpdate ->+  BatchEvaluateGeofences+newBatchEvaluateGeofences+  pCollectionName_+  pDevicePositionUpdates_ =+    BatchEvaluateGeofences'+      { collectionName =+          pCollectionName_,+        devicePositionUpdates =+          Lens.coerced Lens.# pDevicePositionUpdates_+      }++-- | The geofence collection used in evaluating the position of devices+-- against its geofences.+batchEvaluateGeofences_collectionName :: Lens.Lens' BatchEvaluateGeofences Prelude.Text+batchEvaluateGeofences_collectionName = Lens.lens (\BatchEvaluateGeofences' {collectionName} -> collectionName) (\s@BatchEvaluateGeofences' {} a -> s {collectionName = a} :: BatchEvaluateGeofences)++-- | Contains device details for each device to be evaluated against the+-- given geofence collection.+batchEvaluateGeofences_devicePositionUpdates :: Lens.Lens' BatchEvaluateGeofences (Prelude.NonEmpty DevicePositionUpdate)+batchEvaluateGeofences_devicePositionUpdates = Lens.lens (\BatchEvaluateGeofences' {devicePositionUpdates} -> devicePositionUpdates) (\s@BatchEvaluateGeofences' {} a -> s {devicePositionUpdates = a} :: BatchEvaluateGeofences) Prelude.. Lens.coerced++instance Core.AWSRequest BatchEvaluateGeofences where+  type+    AWSResponse BatchEvaluateGeofences =+      BatchEvaluateGeofencesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchEvaluateGeofencesResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Errors" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable BatchEvaluateGeofences where+  hashWithSalt _salt BatchEvaluateGeofences' {..} =+    _salt+      `Prelude.hashWithSalt` collectionName+      `Prelude.hashWithSalt` devicePositionUpdates++instance Prelude.NFData BatchEvaluateGeofences where+  rnf BatchEvaluateGeofences' {..} =+    Prelude.rnf collectionName+      `Prelude.seq` Prelude.rnf devicePositionUpdates++instance Data.ToHeaders BatchEvaluateGeofences where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchEvaluateGeofences where+  toJSON BatchEvaluateGeofences' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "DevicePositionUpdates"+                  Data..= devicePositionUpdates+              )+          ]+      )++instance Data.ToPath BatchEvaluateGeofences where+  toPath BatchEvaluateGeofences' {..} =+    Prelude.mconcat+      [ "/geofencing/v0/collections/",+        Data.toBS collectionName,+        "/positions"+      ]++instance Data.ToQuery BatchEvaluateGeofences where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchEvaluateGeofencesResponse' smart constructor.+data BatchEvaluateGeofencesResponse = BatchEvaluateGeofencesResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains error details for each device that failed to evaluate its+    -- position against the given geofence collection.+    errors :: [BatchEvaluateGeofencesError]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchEvaluateGeofencesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchEvaluateGeofencesResponse_httpStatus' - The response's http status code.+--+-- 'errors', 'batchEvaluateGeofencesResponse_errors' - Contains error details for each device that failed to evaluate its+-- position against the given geofence collection.+newBatchEvaluateGeofencesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchEvaluateGeofencesResponse+newBatchEvaluateGeofencesResponse pHttpStatus_ =+  BatchEvaluateGeofencesResponse'+    { httpStatus =+        pHttpStatus_,+      errors = Prelude.mempty+    }++-- | The response's http status code.+batchEvaluateGeofencesResponse_httpStatus :: Lens.Lens' BatchEvaluateGeofencesResponse Prelude.Int+batchEvaluateGeofencesResponse_httpStatus = Lens.lens (\BatchEvaluateGeofencesResponse' {httpStatus} -> httpStatus) (\s@BatchEvaluateGeofencesResponse' {} a -> s {httpStatus = a} :: BatchEvaluateGeofencesResponse)++-- | Contains error details for each device that failed to evaluate its+-- position against the given geofence collection.+batchEvaluateGeofencesResponse_errors :: Lens.Lens' BatchEvaluateGeofencesResponse [BatchEvaluateGeofencesError]+batchEvaluateGeofencesResponse_errors = Lens.lens (\BatchEvaluateGeofencesResponse' {errors} -> errors) (\s@BatchEvaluateGeofencesResponse' {} a -> s {errors = a} :: BatchEvaluateGeofencesResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    BatchEvaluateGeofencesResponse+  where+  rnf BatchEvaluateGeofencesResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf errors
+ gen/Amazonka/Location/BatchGetDevicePosition.hs view
@@ -0,0 +1,221 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.BatchGetDevicePosition+-- 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 latest device positions for requested devices.+module Amazonka.Location.BatchGetDevicePosition+  ( -- * Creating a Request+    BatchGetDevicePosition (..),+    newBatchGetDevicePosition,++    -- * Request Lenses+    batchGetDevicePosition_deviceIds,+    batchGetDevicePosition_trackerName,++    -- * Destructuring the Response+    BatchGetDevicePositionResponse (..),+    newBatchGetDevicePositionResponse,++    -- * Response Lenses+    batchGetDevicePositionResponse_httpStatus,+    batchGetDevicePositionResponse_devicePositions,+    batchGetDevicePositionResponse_errors,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchGetDevicePosition' smart constructor.+data BatchGetDevicePosition = BatchGetDevicePosition'+  { -- | Devices whose position you want to retrieve.+    --+    -- -   For example, for two devices:+    --     @device-ids=DeviceId1&device-ids=DeviceId2@+    deviceIds :: Prelude.NonEmpty Prelude.Text,+    -- | The tracker resource retrieving the device position.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetDevicePosition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deviceIds', 'batchGetDevicePosition_deviceIds' - Devices whose position you want to retrieve.+--+-- -   For example, for two devices:+--     @device-ids=DeviceId1&device-ids=DeviceId2@+--+-- 'trackerName', 'batchGetDevicePosition_trackerName' - The tracker resource retrieving the device position.+newBatchGetDevicePosition ::+  -- | 'deviceIds'+  Prelude.NonEmpty Prelude.Text ->+  -- | 'trackerName'+  Prelude.Text ->+  BatchGetDevicePosition+newBatchGetDevicePosition pDeviceIds_ pTrackerName_ =+  BatchGetDevicePosition'+    { deviceIds =+        Lens.coerced Lens.# pDeviceIds_,+      trackerName = pTrackerName_+    }++-- | Devices whose position you want to retrieve.+--+-- -   For example, for two devices:+--     @device-ids=DeviceId1&device-ids=DeviceId2@+batchGetDevicePosition_deviceIds :: Lens.Lens' BatchGetDevicePosition (Prelude.NonEmpty Prelude.Text)+batchGetDevicePosition_deviceIds = Lens.lens (\BatchGetDevicePosition' {deviceIds} -> deviceIds) (\s@BatchGetDevicePosition' {} a -> s {deviceIds = a} :: BatchGetDevicePosition) Prelude.. Lens.coerced++-- | The tracker resource retrieving the device position.+batchGetDevicePosition_trackerName :: Lens.Lens' BatchGetDevicePosition Prelude.Text+batchGetDevicePosition_trackerName = Lens.lens (\BatchGetDevicePosition' {trackerName} -> trackerName) (\s@BatchGetDevicePosition' {} a -> s {trackerName = a} :: BatchGetDevicePosition)++instance Core.AWSRequest BatchGetDevicePosition where+  type+    AWSResponse BatchGetDevicePosition =+      BatchGetDevicePositionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchGetDevicePositionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "DevicePositions"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "Errors" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable BatchGetDevicePosition where+  hashWithSalt _salt BatchGetDevicePosition' {..} =+    _salt+      `Prelude.hashWithSalt` deviceIds+      `Prelude.hashWithSalt` trackerName++instance Prelude.NFData BatchGetDevicePosition where+  rnf BatchGetDevicePosition' {..} =+    Prelude.rnf deviceIds+      `Prelude.seq` Prelude.rnf trackerName++instance Data.ToHeaders BatchGetDevicePosition where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchGetDevicePosition where+  toJSON BatchGetDevicePosition' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("DeviceIds" Data..= deviceIds)]+      )++instance Data.ToPath BatchGetDevicePosition where+  toPath BatchGetDevicePosition' {..} =+    Prelude.mconcat+      [ "/tracking/v0/trackers/",+        Data.toBS trackerName,+        "/get-positions"+      ]++instance Data.ToQuery BatchGetDevicePosition where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchGetDevicePositionResponse' smart constructor.+data BatchGetDevicePositionResponse = BatchGetDevicePositionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains device position details such as the device ID, position, and+    -- timestamps for when the position was received and sampled.+    devicePositions :: [DevicePosition],+    -- | Contains error details for each device that failed to send its position+    -- to the tracker resource.+    errors :: [BatchGetDevicePositionError]+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetDevicePositionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchGetDevicePositionResponse_httpStatus' - The response's http status code.+--+-- 'devicePositions', 'batchGetDevicePositionResponse_devicePositions' - Contains device position details such as the device ID, position, and+-- timestamps for when the position was received and sampled.+--+-- 'errors', 'batchGetDevicePositionResponse_errors' - Contains error details for each device that failed to send its position+-- to the tracker resource.+newBatchGetDevicePositionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchGetDevicePositionResponse+newBatchGetDevicePositionResponse pHttpStatus_ =+  BatchGetDevicePositionResponse'+    { httpStatus =+        pHttpStatus_,+      devicePositions = Prelude.mempty,+      errors = Prelude.mempty+    }++-- | The response's http status code.+batchGetDevicePositionResponse_httpStatus :: Lens.Lens' BatchGetDevicePositionResponse Prelude.Int+batchGetDevicePositionResponse_httpStatus = Lens.lens (\BatchGetDevicePositionResponse' {httpStatus} -> httpStatus) (\s@BatchGetDevicePositionResponse' {} a -> s {httpStatus = a} :: BatchGetDevicePositionResponse)++-- | Contains device position details such as the device ID, position, and+-- timestamps for when the position was received and sampled.+batchGetDevicePositionResponse_devicePositions :: Lens.Lens' BatchGetDevicePositionResponse [DevicePosition]+batchGetDevicePositionResponse_devicePositions = Lens.lens (\BatchGetDevicePositionResponse' {devicePositions} -> devicePositions) (\s@BatchGetDevicePositionResponse' {} a -> s {devicePositions = a} :: BatchGetDevicePositionResponse) Prelude.. Lens.coerced++-- | Contains error details for each device that failed to send its position+-- to the tracker resource.+batchGetDevicePositionResponse_errors :: Lens.Lens' BatchGetDevicePositionResponse [BatchGetDevicePositionError]+batchGetDevicePositionResponse_errors = Lens.lens (\BatchGetDevicePositionResponse' {errors} -> errors) (\s@BatchGetDevicePositionResponse' {} a -> s {errors = a} :: BatchGetDevicePositionResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    BatchGetDevicePositionResponse+  where+  rnf BatchGetDevicePositionResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf devicePositions+      `Prelude.seq` Prelude.rnf errors
+ gen/Amazonka/Location/BatchPutGeofence.hs view
@@ -0,0 +1,208 @@+{-# 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.Location.BatchPutGeofence+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- A batch request for storing geofence geometries into a given geofence+-- collection, or updates the geometry of an existing geofence if a+-- geofence ID is included in the request.+module Amazonka.Location.BatchPutGeofence+  ( -- * Creating a Request+    BatchPutGeofence (..),+    newBatchPutGeofence,++    -- * Request Lenses+    batchPutGeofence_collectionName,+    batchPutGeofence_entries,++    -- * Destructuring the Response+    BatchPutGeofenceResponse (..),+    newBatchPutGeofenceResponse,++    -- * Response Lenses+    batchPutGeofenceResponse_httpStatus,+    batchPutGeofenceResponse_errors,+    batchPutGeofenceResponse_successes,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchPutGeofence' smart constructor.+data BatchPutGeofence = BatchPutGeofence'+  { -- | The geofence collection storing the geofences.+    collectionName :: Prelude.Text,+    -- | The batch of geofences to be stored in a geofence collection.+    entries :: Prelude.NonEmpty BatchPutGeofenceRequestEntry+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPutGeofence' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'collectionName', 'batchPutGeofence_collectionName' - The geofence collection storing the geofences.+--+-- 'entries', 'batchPutGeofence_entries' - The batch of geofences to be stored in a geofence collection.+newBatchPutGeofence ::+  -- | 'collectionName'+  Prelude.Text ->+  -- | 'entries'+  Prelude.NonEmpty BatchPutGeofenceRequestEntry ->+  BatchPutGeofence+newBatchPutGeofence pCollectionName_ pEntries_ =+  BatchPutGeofence'+    { collectionName =+        pCollectionName_,+      entries = Lens.coerced Lens.# pEntries_+    }++-- | The geofence collection storing the geofences.+batchPutGeofence_collectionName :: Lens.Lens' BatchPutGeofence Prelude.Text+batchPutGeofence_collectionName = Lens.lens (\BatchPutGeofence' {collectionName} -> collectionName) (\s@BatchPutGeofence' {} a -> s {collectionName = a} :: BatchPutGeofence)++-- | The batch of geofences to be stored in a geofence collection.+batchPutGeofence_entries :: Lens.Lens' BatchPutGeofence (Prelude.NonEmpty BatchPutGeofenceRequestEntry)+batchPutGeofence_entries = Lens.lens (\BatchPutGeofence' {entries} -> entries) (\s@BatchPutGeofence' {} a -> s {entries = a} :: BatchPutGeofence) Prelude.. Lens.coerced++instance Core.AWSRequest BatchPutGeofence where+  type+    AWSResponse BatchPutGeofence =+      BatchPutGeofenceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchPutGeofenceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Errors" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "Successes" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable BatchPutGeofence where+  hashWithSalt _salt BatchPutGeofence' {..} =+    _salt+      `Prelude.hashWithSalt` collectionName+      `Prelude.hashWithSalt` entries++instance Prelude.NFData BatchPutGeofence where+  rnf BatchPutGeofence' {..} =+    Prelude.rnf collectionName+      `Prelude.seq` Prelude.rnf entries++instance Data.ToHeaders BatchPutGeofence where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchPutGeofence where+  toJSON BatchPutGeofence' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Entries" Data..= entries)]+      )++instance Data.ToPath BatchPutGeofence where+  toPath BatchPutGeofence' {..} =+    Prelude.mconcat+      [ "/geofencing/v0/collections/",+        Data.toBS collectionName,+        "/put-geofences"+      ]++instance Data.ToQuery BatchPutGeofence where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchPutGeofenceResponse' smart constructor.+data BatchPutGeofenceResponse = BatchPutGeofenceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains additional error details for each geofence that failed to be+    -- stored in a geofence collection.+    errors :: [BatchPutGeofenceError],+    -- | Contains each geofence that was successfully stored in a geofence+    -- collection.+    successes :: [BatchPutGeofenceSuccess]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPutGeofenceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchPutGeofenceResponse_httpStatus' - The response's http status code.+--+-- 'errors', 'batchPutGeofenceResponse_errors' - Contains additional error details for each geofence that failed to be+-- stored in a geofence collection.+--+-- 'successes', 'batchPutGeofenceResponse_successes' - Contains each geofence that was successfully stored in a geofence+-- collection.+newBatchPutGeofenceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchPutGeofenceResponse+newBatchPutGeofenceResponse pHttpStatus_ =+  BatchPutGeofenceResponse'+    { httpStatus =+        pHttpStatus_,+      errors = Prelude.mempty,+      successes = Prelude.mempty+    }++-- | The response's http status code.+batchPutGeofenceResponse_httpStatus :: Lens.Lens' BatchPutGeofenceResponse Prelude.Int+batchPutGeofenceResponse_httpStatus = Lens.lens (\BatchPutGeofenceResponse' {httpStatus} -> httpStatus) (\s@BatchPutGeofenceResponse' {} a -> s {httpStatus = a} :: BatchPutGeofenceResponse)++-- | Contains additional error details for each geofence that failed to be+-- stored in a geofence collection.+batchPutGeofenceResponse_errors :: Lens.Lens' BatchPutGeofenceResponse [BatchPutGeofenceError]+batchPutGeofenceResponse_errors = Lens.lens (\BatchPutGeofenceResponse' {errors} -> errors) (\s@BatchPutGeofenceResponse' {} a -> s {errors = a} :: BatchPutGeofenceResponse) Prelude.. Lens.coerced++-- | Contains each geofence that was successfully stored in a geofence+-- collection.+batchPutGeofenceResponse_successes :: Lens.Lens' BatchPutGeofenceResponse [BatchPutGeofenceSuccess]+batchPutGeofenceResponse_successes = Lens.lens (\BatchPutGeofenceResponse' {successes} -> successes) (\s@BatchPutGeofenceResponse' {} a -> s {successes = a} :: BatchPutGeofenceResponse) Prelude.. Lens.coerced++instance Prelude.NFData BatchPutGeofenceResponse where+  rnf BatchPutGeofenceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf errors+      `Prelude.seq` Prelude.rnf successes
+ gen/Amazonka/Location/BatchUpdateDevicePosition.hs view
@@ -0,0 +1,218 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.BatchUpdateDevicePosition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Uploads position update data for one or more devices to a tracker+-- resource. Amazon Location uses the data when it reports the last known+-- device position and position history. Amazon Location retains location+-- data for 30 days.+--+-- Position updates are handled based on the @PositionFiltering@ property+-- of the tracker. When @PositionFiltering@ is set to @TimeBased@, updates+-- are evaluated against linked geofence collections, and location data is+-- stored at a maximum of one position per 30 second interval. If your+-- update frequency is more often than every 30 seconds, only one update+-- per 30 seconds is stored for each unique device ID.+--+-- When @PositionFiltering@ is set to @DistanceBased@ filtering, location+-- data is stored and evaluated against linked geofence collections only if+-- the device has moved more than 30 m (98.4 ft).+--+-- When @PositionFiltering@ is set to @AccuracyBased@ filtering, location+-- data is stored and evaluated against linked geofence collections only if+-- the device has moved more than the measured accuracy. For example, if+-- two consecutive updates from a device have a horizontal accuracy of 5 m+-- and 10 m, the second update is neither stored or evaluated if the device+-- has moved less than 15 m. If @PositionFiltering@ is set to+-- @AccuracyBased@ filtering, Amazon Location uses the default value+-- @{ \"Horizontal\": 0}@ when accuracy is not provided on a+-- @DevicePositionUpdate@.+module Amazonka.Location.BatchUpdateDevicePosition+  ( -- * Creating a Request+    BatchUpdateDevicePosition (..),+    newBatchUpdateDevicePosition,++    -- * Request Lenses+    batchUpdateDevicePosition_trackerName,+    batchUpdateDevicePosition_updates,++    -- * Destructuring the Response+    BatchUpdateDevicePositionResponse (..),+    newBatchUpdateDevicePositionResponse,++    -- * Response Lenses+    batchUpdateDevicePositionResponse_httpStatus,+    batchUpdateDevicePositionResponse_errors,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchUpdateDevicePosition' smart constructor.+data BatchUpdateDevicePosition = BatchUpdateDevicePosition'+  { -- | The name of the tracker resource to update.+    trackerName :: Prelude.Text,+    -- | Contains the position update details for each device.+    updates :: Prelude.NonEmpty DevicePositionUpdate+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchUpdateDevicePosition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'trackerName', 'batchUpdateDevicePosition_trackerName' - The name of the tracker resource to update.+--+-- 'updates', 'batchUpdateDevicePosition_updates' - Contains the position update details for each device.+newBatchUpdateDevicePosition ::+  -- | 'trackerName'+  Prelude.Text ->+  -- | 'updates'+  Prelude.NonEmpty DevicePositionUpdate ->+  BatchUpdateDevicePosition+newBatchUpdateDevicePosition pTrackerName_ pUpdates_ =+  BatchUpdateDevicePosition'+    { trackerName =+        pTrackerName_,+      updates = Lens.coerced Lens.# pUpdates_+    }++-- | The name of the tracker resource to update.+batchUpdateDevicePosition_trackerName :: Lens.Lens' BatchUpdateDevicePosition Prelude.Text+batchUpdateDevicePosition_trackerName = Lens.lens (\BatchUpdateDevicePosition' {trackerName} -> trackerName) (\s@BatchUpdateDevicePosition' {} a -> s {trackerName = a} :: BatchUpdateDevicePosition)++-- | Contains the position update details for each device.+batchUpdateDevicePosition_updates :: Lens.Lens' BatchUpdateDevicePosition (Prelude.NonEmpty DevicePositionUpdate)+batchUpdateDevicePosition_updates = Lens.lens (\BatchUpdateDevicePosition' {updates} -> updates) (\s@BatchUpdateDevicePosition' {} a -> s {updates = a} :: BatchUpdateDevicePosition) Prelude.. Lens.coerced++instance Core.AWSRequest BatchUpdateDevicePosition where+  type+    AWSResponse BatchUpdateDevicePosition =+      BatchUpdateDevicePositionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchUpdateDevicePositionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Errors" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable BatchUpdateDevicePosition where+  hashWithSalt _salt BatchUpdateDevicePosition' {..} =+    _salt+      `Prelude.hashWithSalt` trackerName+      `Prelude.hashWithSalt` updates++instance Prelude.NFData BatchUpdateDevicePosition where+  rnf BatchUpdateDevicePosition' {..} =+    Prelude.rnf trackerName+      `Prelude.seq` Prelude.rnf updates++instance Data.ToHeaders BatchUpdateDevicePosition where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchUpdateDevicePosition where+  toJSON BatchUpdateDevicePosition' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Updates" Data..= updates)]+      )++instance Data.ToPath BatchUpdateDevicePosition where+  toPath BatchUpdateDevicePosition' {..} =+    Prelude.mconcat+      [ "/tracking/v0/trackers/",+        Data.toBS trackerName,+        "/positions"+      ]++instance Data.ToQuery BatchUpdateDevicePosition where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchUpdateDevicePositionResponse' smart constructor.+data BatchUpdateDevicePositionResponse = BatchUpdateDevicePositionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains error details for each device that failed to update its+    -- position.+    errors :: [BatchUpdateDevicePositionError]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchUpdateDevicePositionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchUpdateDevicePositionResponse_httpStatus' - The response's http status code.+--+-- 'errors', 'batchUpdateDevicePositionResponse_errors' - Contains error details for each device that failed to update its+-- position.+newBatchUpdateDevicePositionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchUpdateDevicePositionResponse+newBatchUpdateDevicePositionResponse pHttpStatus_ =+  BatchUpdateDevicePositionResponse'+    { httpStatus =+        pHttpStatus_,+      errors = Prelude.mempty+    }++-- | The response's http status code.+batchUpdateDevicePositionResponse_httpStatus :: Lens.Lens' BatchUpdateDevicePositionResponse Prelude.Int+batchUpdateDevicePositionResponse_httpStatus = Lens.lens (\BatchUpdateDevicePositionResponse' {httpStatus} -> httpStatus) (\s@BatchUpdateDevicePositionResponse' {} a -> s {httpStatus = a} :: BatchUpdateDevicePositionResponse)++-- | Contains error details for each device that failed to update its+-- position.+batchUpdateDevicePositionResponse_errors :: Lens.Lens' BatchUpdateDevicePositionResponse [BatchUpdateDevicePositionError]+batchUpdateDevicePositionResponse_errors = Lens.lens (\BatchUpdateDevicePositionResponse' {errors} -> errors) (\s@BatchUpdateDevicePositionResponse' {} a -> s {errors = a} :: BatchUpdateDevicePositionResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    BatchUpdateDevicePositionResponse+  where+  rnf BatchUpdateDevicePositionResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf errors
+ gen/Amazonka/Location/CalculateRoute.hs view
@@ -0,0 +1,675 @@+{-# 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.Location.CalculateRoute+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- <https://docs.aws.amazon.com/location/latest/developerguide/calculate-route.html Calculates a route>+-- given the following required parameters: @DeparturePosition@ and+-- @DestinationPosition@. Requires that you first+-- <https://docs.aws.amazon.com/location-routes/latest/APIReference/API_CreateRouteCalculator.html create a route calculator resource>.+--+-- By default, a request that doesn\'t specify a departure time uses the+-- best time of day to travel with the best traffic conditions when+-- calculating the route.+--+-- Additional options include:+--+-- -   <https://docs.aws.amazon.com/location/latest/developerguide/departure-time.html Specifying a departure time>+--     using either @DepartureTime@ or @DepartNow@. This calculates a route+--     based on predictive traffic data at the given time.+--+--     You can\'t specify both @DepartureTime@ and @DepartNow@ in a single+--     request. Specifying both parameters returns a validation error.+--+-- -   <https://docs.aws.amazon.com/location/latest/developerguide/travel-mode.html Specifying a travel mode>+--     using TravelMode sets the transportation mode used to calculate the+--     routes. This also lets you specify additional route preferences in+--     @CarModeOptions@ if traveling by @Car@, or @TruckModeOptions@ if+--     traveling by @Truck@.+--+--     If you specify @walking@ for the travel mode and your data provider+--     is Esri, the start and destination must be within 40km.+module Amazonka.Location.CalculateRoute+  ( -- * Creating a Request+    CalculateRoute (..),+    newCalculateRoute,++    -- * Request Lenses+    calculateRoute_carModeOptions,+    calculateRoute_departNow,+    calculateRoute_departureTime,+    calculateRoute_distanceUnit,+    calculateRoute_includeLegGeometry,+    calculateRoute_travelMode,+    calculateRoute_truckModeOptions,+    calculateRoute_waypointPositions,+    calculateRoute_calculatorName,+    calculateRoute_departurePosition,+    calculateRoute_destinationPosition,++    -- * Destructuring the Response+    CalculateRouteResponse (..),+    newCalculateRouteResponse,++    -- * Response Lenses+    calculateRouteResponse_httpStatus,+    calculateRouteResponse_legs,+    calculateRouteResponse_summary,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCalculateRoute' smart constructor.+data CalculateRoute = CalculateRoute'+  { -- | Specifies route preferences when traveling by @Car@, such as avoiding+    -- routes that use ferries or tolls.+    --+    -- Requirements: @TravelMode@ must be specified as @Car@.+    carModeOptions :: Prelude.Maybe CalculateRouteCarModeOptions,+    -- | Sets the time of departure as the current time. Uses the current time to+    -- calculate a route. Otherwise, the best time of day to travel with the+    -- best traffic conditions is used to calculate the route.+    --+    -- Default Value: @false@+    --+    -- Valid Values: @false@ | @true@+    departNow :: Prelude.Maybe Prelude.Bool,+    -- | Specifies the desired time of departure. Uses the given time to+    -- calculate the route. Otherwise, the best time of day to travel with the+    -- best traffic conditions is used to calculate the route.+    --+    -- Setting a departure time in the past returns a @400 ValidationException@+    -- error.+    --+    -- -   In <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    --     format: @YYYY-MM-DDThh:mm:ss.sssZ@. For example,+    --     @2020–07-2T12:15:20.000Z+01:00@+    departureTime :: Prelude.Maybe Data.ISO8601,+    -- | Set the unit system to specify the distance.+    --+    -- Default Value: @Kilometers@+    distanceUnit :: Prelude.Maybe DistanceUnit,+    -- | Set to include the geometry details in the result for each path between+    -- a pair of positions.+    --+    -- Default Value: @false@+    --+    -- Valid Values: @false@ | @true@+    includeLegGeometry :: Prelude.Maybe Prelude.Bool,+    -- | Specifies the mode of transport when calculating a route. Used in+    -- estimating the speed of travel and road compatibility. You can choose+    -- @Car@, @Truck@, or @Walking@ as options for the @TravelMode@.+    --+    -- The @TravelMode@ you specify also determines how you specify route+    -- preferences:+    --+    -- -   If traveling by @Car@ use the @CarModeOptions@ parameter.+    --+    -- -   If traveling by @Truck@ use the @TruckModeOptions@ parameter.+    --+    -- Default Value: @Car@+    travelMode :: Prelude.Maybe TravelMode,+    -- | Specifies route preferences when traveling by @Truck@, such as avoiding+    -- routes that use ferries or tolls, and truck specifications to consider+    -- when choosing an optimal road.+    --+    -- Requirements: @TravelMode@ must be specified as @Truck@.+    truckModeOptions :: Prelude.Maybe CalculateRouteTruckModeOptions,+    -- | Specifies an ordered list of up to 23 intermediate positions to include+    -- along a route between the departure position and destination position.+    --+    -- -   For example, from the @DeparturePosition@ @[-123.115, 49.285]@, the+    --     route follows the order that the waypoint positions are given+    --     @[[-122.757, 49.0021],[-122.349, 47.620]]@+    --+    -- If you specify a waypoint position that\'s not located on a road, Amazon+    -- Location+    -- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+    --+    -- Specifying more than 23 waypoints returns a @400 ValidationException@+    -- error.+    --+    -- If Esri is the provider for your route calculator, specifying a route+    -- that is longer than 400 km returns a @400 RoutesValidationException@+    -- error.+    --+    -- Valid Values: @[-180 to 180,-90 to 90]@+    waypointPositions :: Prelude.Maybe [Data.Sensitive (Prelude.NonEmpty Prelude.Double)],+    -- | The name of the route calculator resource that you want to use to+    -- calculate the route.+    calculatorName :: Prelude.Text,+    -- | The start position for the route. Defined in+    -- <https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84 World Geodetic System (WGS 84)>+    -- format: @[longitude, latitude]@.+    --+    -- -   For example, @[-123.115, 49.285]@+    --+    -- If you specify a departure that\'s not located on a road, Amazon+    -- Location+    -- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+    -- If Esri is the provider for your route calculator, specifying a route+    -- that is longer than 400 km returns a @400 RoutesValidationException@+    -- error.+    --+    -- Valid Values: @[-180 to 180,-90 to 90]@+    departurePosition :: Data.Sensitive (Prelude.NonEmpty Prelude.Double),+    -- | The finish position for the route. Defined in+    -- <https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84 World Geodetic System (WGS 84)>+    -- format: @[longitude, latitude]@.+    --+    -- -   For example, @[-122.339, 47.615]@+    --+    -- If you specify a destination that\'s not located on a road, Amazon+    -- Location+    -- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+    --+    -- Valid Values: @[-180 to 180,-90 to 90]@+    destinationPosition :: Data.Sensitive (Prelude.NonEmpty Prelude.Double)+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CalculateRoute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'carModeOptions', 'calculateRoute_carModeOptions' - Specifies route preferences when traveling by @Car@, such as avoiding+-- routes that use ferries or tolls.+--+-- Requirements: @TravelMode@ must be specified as @Car@.+--+-- 'departNow', 'calculateRoute_departNow' - Sets the time of departure as the current time. Uses the current time to+-- calculate a route. Otherwise, the best time of day to travel with the+-- best traffic conditions is used to calculate the route.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+--+-- 'departureTime', 'calculateRoute_departureTime' - Specifies the desired time of departure. Uses the given time to+-- calculate the route. Otherwise, the best time of day to travel with the+-- best traffic conditions is used to calculate the route.+--+-- Setting a departure time in the past returns a @400 ValidationException@+-- error.+--+-- -   In <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+--     format: @YYYY-MM-DDThh:mm:ss.sssZ@. For example,+--     @2020–07-2T12:15:20.000Z+01:00@+--+-- 'distanceUnit', 'calculateRoute_distanceUnit' - Set the unit system to specify the distance.+--+-- Default Value: @Kilometers@+--+-- 'includeLegGeometry', 'calculateRoute_includeLegGeometry' - Set to include the geometry details in the result for each path between+-- a pair of positions.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+--+-- 'travelMode', 'calculateRoute_travelMode' - Specifies the mode of transport when calculating a route. Used in+-- estimating the speed of travel and road compatibility. You can choose+-- @Car@, @Truck@, or @Walking@ as options for the @TravelMode@.+--+-- The @TravelMode@ you specify also determines how you specify route+-- preferences:+--+-- -   If traveling by @Car@ use the @CarModeOptions@ parameter.+--+-- -   If traveling by @Truck@ use the @TruckModeOptions@ parameter.+--+-- Default Value: @Car@+--+-- 'truckModeOptions', 'calculateRoute_truckModeOptions' - Specifies route preferences when traveling by @Truck@, such as avoiding+-- routes that use ferries or tolls, and truck specifications to consider+-- when choosing an optimal road.+--+-- Requirements: @TravelMode@ must be specified as @Truck@.+--+-- 'waypointPositions', 'calculateRoute_waypointPositions' - Specifies an ordered list of up to 23 intermediate positions to include+-- along a route between the departure position and destination position.+--+-- -   For example, from the @DeparturePosition@ @[-123.115, 49.285]@, the+--     route follows the order that the waypoint positions are given+--     @[[-122.757, 49.0021],[-122.349, 47.620]]@+--+-- If you specify a waypoint position that\'s not located on a road, Amazon+-- Location+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+--+-- Specifying more than 23 waypoints returns a @400 ValidationException@+-- error.+--+-- If Esri is the provider for your route calculator, specifying a route+-- that is longer than 400 km returns a @400 RoutesValidationException@+-- error.+--+-- Valid Values: @[-180 to 180,-90 to 90]@+--+-- 'calculatorName', 'calculateRoute_calculatorName' - The name of the route calculator resource that you want to use to+-- calculate the route.+--+-- 'departurePosition', 'calculateRoute_departurePosition' - The start position for the route. Defined in+-- <https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84 World Geodetic System (WGS 84)>+-- format: @[longitude, latitude]@.+--+-- -   For example, @[-123.115, 49.285]@+--+-- If you specify a departure that\'s not located on a road, Amazon+-- Location+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+-- If Esri is the provider for your route calculator, specifying a route+-- that is longer than 400 km returns a @400 RoutesValidationException@+-- error.+--+-- Valid Values: @[-180 to 180,-90 to 90]@+--+-- 'destinationPosition', 'calculateRoute_destinationPosition' - The finish position for the route. Defined in+-- <https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84 World Geodetic System (WGS 84)>+-- format: @[longitude, latitude]@.+--+-- -   For example, @[-122.339, 47.615]@+--+-- If you specify a destination that\'s not located on a road, Amazon+-- Location+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+--+-- Valid Values: @[-180 to 180,-90 to 90]@+newCalculateRoute ::+  -- | 'calculatorName'+  Prelude.Text ->+  -- | 'departurePosition'+  Prelude.NonEmpty Prelude.Double ->+  -- | 'destinationPosition'+  Prelude.NonEmpty Prelude.Double ->+  CalculateRoute+newCalculateRoute+  pCalculatorName_+  pDeparturePosition_+  pDestinationPosition_ =+    CalculateRoute'+      { carModeOptions = Prelude.Nothing,+        departNow = Prelude.Nothing,+        departureTime = Prelude.Nothing,+        distanceUnit = Prelude.Nothing,+        includeLegGeometry = Prelude.Nothing,+        travelMode = Prelude.Nothing,+        truckModeOptions = Prelude.Nothing,+        waypointPositions = Prelude.Nothing,+        calculatorName = pCalculatorName_,+        departurePosition =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pDeparturePosition_,+        destinationPosition =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pDestinationPosition_+      }++-- | Specifies route preferences when traveling by @Car@, such as avoiding+-- routes that use ferries or tolls.+--+-- Requirements: @TravelMode@ must be specified as @Car@.+calculateRoute_carModeOptions :: Lens.Lens' CalculateRoute (Prelude.Maybe CalculateRouteCarModeOptions)+calculateRoute_carModeOptions = Lens.lens (\CalculateRoute' {carModeOptions} -> carModeOptions) (\s@CalculateRoute' {} a -> s {carModeOptions = a} :: CalculateRoute)++-- | Sets the time of departure as the current time. Uses the current time to+-- calculate a route. Otherwise, the best time of day to travel with the+-- best traffic conditions is used to calculate the route.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+calculateRoute_departNow :: Lens.Lens' CalculateRoute (Prelude.Maybe Prelude.Bool)+calculateRoute_departNow = Lens.lens (\CalculateRoute' {departNow} -> departNow) (\s@CalculateRoute' {} a -> s {departNow = a} :: CalculateRoute)++-- | Specifies the desired time of departure. Uses the given time to+-- calculate the route. Otherwise, the best time of day to travel with the+-- best traffic conditions is used to calculate the route.+--+-- Setting a departure time in the past returns a @400 ValidationException@+-- error.+--+-- -   In <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+--     format: @YYYY-MM-DDThh:mm:ss.sssZ@. For example,+--     @2020–07-2T12:15:20.000Z+01:00@+calculateRoute_departureTime :: Lens.Lens' CalculateRoute (Prelude.Maybe Prelude.UTCTime)+calculateRoute_departureTime = Lens.lens (\CalculateRoute' {departureTime} -> departureTime) (\s@CalculateRoute' {} a -> s {departureTime = a} :: CalculateRoute) Prelude.. Lens.mapping Data._Time++-- | Set the unit system to specify the distance.+--+-- Default Value: @Kilometers@+calculateRoute_distanceUnit :: Lens.Lens' CalculateRoute (Prelude.Maybe DistanceUnit)+calculateRoute_distanceUnit = Lens.lens (\CalculateRoute' {distanceUnit} -> distanceUnit) (\s@CalculateRoute' {} a -> s {distanceUnit = a} :: CalculateRoute)++-- | Set to include the geometry details in the result for each path between+-- a pair of positions.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+calculateRoute_includeLegGeometry :: Lens.Lens' CalculateRoute (Prelude.Maybe Prelude.Bool)+calculateRoute_includeLegGeometry = Lens.lens (\CalculateRoute' {includeLegGeometry} -> includeLegGeometry) (\s@CalculateRoute' {} a -> s {includeLegGeometry = a} :: CalculateRoute)++-- | Specifies the mode of transport when calculating a route. Used in+-- estimating the speed of travel and road compatibility. You can choose+-- @Car@, @Truck@, or @Walking@ as options for the @TravelMode@.+--+-- The @TravelMode@ you specify also determines how you specify route+-- preferences:+--+-- -   If traveling by @Car@ use the @CarModeOptions@ parameter.+--+-- -   If traveling by @Truck@ use the @TruckModeOptions@ parameter.+--+-- Default Value: @Car@+calculateRoute_travelMode :: Lens.Lens' CalculateRoute (Prelude.Maybe TravelMode)+calculateRoute_travelMode = Lens.lens (\CalculateRoute' {travelMode} -> travelMode) (\s@CalculateRoute' {} a -> s {travelMode = a} :: CalculateRoute)++-- | Specifies route preferences when traveling by @Truck@, such as avoiding+-- routes that use ferries or tolls, and truck specifications to consider+-- when choosing an optimal road.+--+-- Requirements: @TravelMode@ must be specified as @Truck@.+calculateRoute_truckModeOptions :: Lens.Lens' CalculateRoute (Prelude.Maybe CalculateRouteTruckModeOptions)+calculateRoute_truckModeOptions = Lens.lens (\CalculateRoute' {truckModeOptions} -> truckModeOptions) (\s@CalculateRoute' {} a -> s {truckModeOptions = a} :: CalculateRoute)++-- | Specifies an ordered list of up to 23 intermediate positions to include+-- along a route between the departure position and destination position.+--+-- -   For example, from the @DeparturePosition@ @[-123.115, 49.285]@, the+--     route follows the order that the waypoint positions are given+--     @[[-122.757, 49.0021],[-122.349, 47.620]]@+--+-- If you specify a waypoint position that\'s not located on a road, Amazon+-- Location+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+--+-- Specifying more than 23 waypoints returns a @400 ValidationException@+-- error.+--+-- If Esri is the provider for your route calculator, specifying a route+-- that is longer than 400 km returns a @400 RoutesValidationException@+-- error.+--+-- Valid Values: @[-180 to 180,-90 to 90]@+calculateRoute_waypointPositions :: Lens.Lens' CalculateRoute (Prelude.Maybe [Prelude.NonEmpty Prelude.Double])+calculateRoute_waypointPositions = Lens.lens (\CalculateRoute' {waypointPositions} -> waypointPositions) (\s@CalculateRoute' {} a -> s {waypointPositions = a} :: CalculateRoute) Prelude.. Lens.mapping Lens.coerced++-- | The name of the route calculator resource that you want to use to+-- calculate the route.+calculateRoute_calculatorName :: Lens.Lens' CalculateRoute Prelude.Text+calculateRoute_calculatorName = Lens.lens (\CalculateRoute' {calculatorName} -> calculatorName) (\s@CalculateRoute' {} a -> s {calculatorName = a} :: CalculateRoute)++-- | The start position for the route. Defined in+-- <https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84 World Geodetic System (WGS 84)>+-- format: @[longitude, latitude]@.+--+-- -   For example, @[-123.115, 49.285]@+--+-- If you specify a departure that\'s not located on a road, Amazon+-- Location+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+-- If Esri is the provider for your route calculator, specifying a route+-- that is longer than 400 km returns a @400 RoutesValidationException@+-- error.+--+-- Valid Values: @[-180 to 180,-90 to 90]@+calculateRoute_departurePosition :: Lens.Lens' CalculateRoute (Prelude.NonEmpty Prelude.Double)+calculateRoute_departurePosition = Lens.lens (\CalculateRoute' {departurePosition} -> departurePosition) (\s@CalculateRoute' {} a -> s {departurePosition = a} :: CalculateRoute) Prelude.. Data._Sensitive Prelude.. Lens.coerced++-- | The finish position for the route. Defined in+-- <https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84 World Geodetic System (WGS 84)>+-- format: @[longitude, latitude]@.+--+-- -   For example, @[-122.339, 47.615]@+--+-- If you specify a destination that\'s not located on a road, Amazon+-- Location+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+--+-- Valid Values: @[-180 to 180,-90 to 90]@+calculateRoute_destinationPosition :: Lens.Lens' CalculateRoute (Prelude.NonEmpty Prelude.Double)+calculateRoute_destinationPosition = Lens.lens (\CalculateRoute' {destinationPosition} -> destinationPosition) (\s@CalculateRoute' {} a -> s {destinationPosition = a} :: CalculateRoute) Prelude.. Data._Sensitive Prelude.. Lens.coerced++instance Core.AWSRequest CalculateRoute where+  type+    AWSResponse CalculateRoute =+      CalculateRouteResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CalculateRouteResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Legs" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..:> "Summary")+      )++instance Prelude.Hashable CalculateRoute where+  hashWithSalt _salt CalculateRoute' {..} =+    _salt+      `Prelude.hashWithSalt` carModeOptions+      `Prelude.hashWithSalt` departNow+      `Prelude.hashWithSalt` departureTime+      `Prelude.hashWithSalt` distanceUnit+      `Prelude.hashWithSalt` includeLegGeometry+      `Prelude.hashWithSalt` travelMode+      `Prelude.hashWithSalt` truckModeOptions+      `Prelude.hashWithSalt` waypointPositions+      `Prelude.hashWithSalt` calculatorName+      `Prelude.hashWithSalt` departurePosition+      `Prelude.hashWithSalt` destinationPosition++instance Prelude.NFData CalculateRoute where+  rnf CalculateRoute' {..} =+    Prelude.rnf carModeOptions+      `Prelude.seq` Prelude.rnf departNow+      `Prelude.seq` Prelude.rnf departureTime+      `Prelude.seq` Prelude.rnf distanceUnit+      `Prelude.seq` Prelude.rnf includeLegGeometry+      `Prelude.seq` Prelude.rnf travelMode+      `Prelude.seq` Prelude.rnf truckModeOptions+      `Prelude.seq` Prelude.rnf waypointPositions+      `Prelude.seq` Prelude.rnf calculatorName+      `Prelude.seq` Prelude.rnf departurePosition+      `Prelude.seq` Prelude.rnf destinationPosition++instance Data.ToHeaders CalculateRoute where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CalculateRoute where+  toJSON CalculateRoute' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CarModeOptions" Data..=)+              Prelude.<$> carModeOptions,+            ("DepartNow" Data..=) Prelude.<$> departNow,+            ("DepartureTime" Data..=) Prelude.<$> departureTime,+            ("DistanceUnit" Data..=) Prelude.<$> distanceUnit,+            ("IncludeLegGeometry" Data..=)+              Prelude.<$> includeLegGeometry,+            ("TravelMode" Data..=) Prelude.<$> travelMode,+            ("TruckModeOptions" Data..=)+              Prelude.<$> truckModeOptions,+            ("WaypointPositions" Data..=)+              Prelude.<$> waypointPositions,+            Prelude.Just+              ("DeparturePosition" Data..= departurePosition),+            Prelude.Just+              ("DestinationPosition" Data..= destinationPosition)+          ]+      )++instance Data.ToPath CalculateRoute where+  toPath CalculateRoute' {..} =+    Prelude.mconcat+      [ "/routes/v0/calculators/",+        Data.toBS calculatorName,+        "/calculate/route"+      ]++instance Data.ToQuery CalculateRoute where+  toQuery = Prelude.const Prelude.mempty++-- | Returns the result of the route calculation. Metadata includes legs and+-- route summary.+--+-- /See:/ 'newCalculateRouteResponse' smart constructor.+data CalculateRouteResponse = CalculateRouteResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains details about each path between a pair of positions included+    -- along a route such as: @StartPosition@, @EndPosition@, @Distance@,+    -- @DurationSeconds@, @Geometry@, and @Steps@. The number of legs returned+    -- corresponds to one fewer than the total number of positions in the+    -- request.+    --+    -- For example, a route with a departure position and destination position+    -- returns one leg with the positions+    -- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html snapped to a nearby road>:+    --+    -- -   The @StartPosition@ is the departure position.+    --+    -- -   The @EndPosition@ is the destination position.+    --+    -- A route with a waypoint between the departure and destination position+    -- returns two legs with the positions snapped to a nearby road:+    --+    -- -   Leg 1: The @StartPosition@ is the departure position . The+    --     @EndPosition@ is the waypoint positon.+    --+    -- -   Leg 2: The @StartPosition@ is the waypoint position. The+    --     @EndPosition@ is the destination position.+    legs :: [Leg],+    -- | Contains information about the whole route, such as: @RouteBBox@,+    -- @DataSource@, @Distance@, @DistanceUnit@, and @DurationSeconds@.+    summary :: CalculateRouteSummary+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CalculateRouteResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'calculateRouteResponse_httpStatus' - The response's http status code.+--+-- 'legs', 'calculateRouteResponse_legs' - Contains details about each path between a pair of positions included+-- along a route such as: @StartPosition@, @EndPosition@, @Distance@,+-- @DurationSeconds@, @Geometry@, and @Steps@. The number of legs returned+-- corresponds to one fewer than the total number of positions in the+-- request.+--+-- For example, a route with a departure position and destination position+-- returns one leg with the positions+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html snapped to a nearby road>:+--+-- -   The @StartPosition@ is the departure position.+--+-- -   The @EndPosition@ is the destination position.+--+-- A route with a waypoint between the departure and destination position+-- returns two legs with the positions snapped to a nearby road:+--+-- -   Leg 1: The @StartPosition@ is the departure position . The+--     @EndPosition@ is the waypoint positon.+--+-- -   Leg 2: The @StartPosition@ is the waypoint position. The+--     @EndPosition@ is the destination position.+--+-- 'summary', 'calculateRouteResponse_summary' - Contains information about the whole route, such as: @RouteBBox@,+-- @DataSource@, @Distance@, @DistanceUnit@, and @DurationSeconds@.+newCalculateRouteResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'summary'+  CalculateRouteSummary ->+  CalculateRouteResponse+newCalculateRouteResponse pHttpStatus_ pSummary_ =+  CalculateRouteResponse'+    { httpStatus = pHttpStatus_,+      legs = Prelude.mempty,+      summary = pSummary_+    }++-- | The response's http status code.+calculateRouteResponse_httpStatus :: Lens.Lens' CalculateRouteResponse Prelude.Int+calculateRouteResponse_httpStatus = Lens.lens (\CalculateRouteResponse' {httpStatus} -> httpStatus) (\s@CalculateRouteResponse' {} a -> s {httpStatus = a} :: CalculateRouteResponse)++-- | Contains details about each path between a pair of positions included+-- along a route such as: @StartPosition@, @EndPosition@, @Distance@,+-- @DurationSeconds@, @Geometry@, and @Steps@. The number of legs returned+-- corresponds to one fewer than the total number of positions in the+-- request.+--+-- For example, a route with a departure position and destination position+-- returns one leg with the positions+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html snapped to a nearby road>:+--+-- -   The @StartPosition@ is the departure position.+--+-- -   The @EndPosition@ is the destination position.+--+-- A route with a waypoint between the departure and destination position+-- returns two legs with the positions snapped to a nearby road:+--+-- -   Leg 1: The @StartPosition@ is the departure position . The+--     @EndPosition@ is the waypoint positon.+--+-- -   Leg 2: The @StartPosition@ is the waypoint position. The+--     @EndPosition@ is the destination position.+calculateRouteResponse_legs :: Lens.Lens' CalculateRouteResponse [Leg]+calculateRouteResponse_legs = Lens.lens (\CalculateRouteResponse' {legs} -> legs) (\s@CalculateRouteResponse' {} a -> s {legs = a} :: CalculateRouteResponse) Prelude.. Lens.coerced++-- | Contains information about the whole route, such as: @RouteBBox@,+-- @DataSource@, @Distance@, @DistanceUnit@, and @DurationSeconds@.+calculateRouteResponse_summary :: Lens.Lens' CalculateRouteResponse CalculateRouteSummary+calculateRouteResponse_summary = Lens.lens (\CalculateRouteResponse' {summary} -> summary) (\s@CalculateRouteResponse' {} a -> s {summary = a} :: CalculateRouteResponse)++instance Prelude.NFData CalculateRouteResponse where+  rnf CalculateRouteResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf legs+      `Prelude.seq` Prelude.rnf summary
+ gen/Amazonka/Location/CalculateRouteMatrix.hs view
@@ -0,0 +1,603 @@+{-# 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.Location.CalculateRouteMatrix+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- <https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html Calculates a route matrix>+-- given the following required parameters: @DeparturePositions@ and+-- @DestinationPositions@. @CalculateRouteMatrix@ calculates routes and+-- returns the travel time and travel distance from each departure position+-- to each destination position in the request. For example, given+-- departure positions A and B, and destination positions X and Y,+-- @CalculateRouteMatrix@ will return time and distance for routes from A+-- to X, A to Y, B to X, and B to Y (in that order). The number of results+-- returned (and routes calculated) will be the number of+-- @DeparturePositions@ times the number of @DestinationPositions@.+--+-- Your account is charged for each route calculated, not the number of+-- requests.+--+-- Requires that you first+-- <https://docs.aws.amazon.com/location-routes/latest/APIReference/API_CreateRouteCalculator.html create a route calculator resource>.+--+-- By default, a request that doesn\'t specify a departure time uses the+-- best time of day to travel with the best traffic conditions when+-- calculating routes.+--+-- Additional options include:+--+-- -   <https://docs.aws.amazon.com/location/latest/developerguide/departure-time.html Specifying a departure time>+--     using either @DepartureTime@ or @DepartNow@. This calculates routes+--     based on predictive traffic data at the given time.+--+--     You can\'t specify both @DepartureTime@ and @DepartNow@ in a single+--     request. Specifying both parameters returns a validation error.+--+-- -   <https://docs.aws.amazon.com/location/latest/developerguide/travel-mode.html Specifying a travel mode>+--     using TravelMode sets the transportation mode used to calculate the+--     routes. This also lets you specify additional route preferences in+--     @CarModeOptions@ if traveling by @Car@, or @TruckModeOptions@ if+--     traveling by @Truck@.+module Amazonka.Location.CalculateRouteMatrix+  ( -- * Creating a Request+    CalculateRouteMatrix (..),+    newCalculateRouteMatrix,++    -- * Request Lenses+    calculateRouteMatrix_carModeOptions,+    calculateRouteMatrix_departNow,+    calculateRouteMatrix_departureTime,+    calculateRouteMatrix_distanceUnit,+    calculateRouteMatrix_travelMode,+    calculateRouteMatrix_truckModeOptions,+    calculateRouteMatrix_calculatorName,+    calculateRouteMatrix_departurePositions,+    calculateRouteMatrix_destinationPositions,++    -- * Destructuring the Response+    CalculateRouteMatrixResponse (..),+    newCalculateRouteMatrixResponse,++    -- * Response Lenses+    calculateRouteMatrixResponse_snappedDeparturePositions,+    calculateRouteMatrixResponse_snappedDestinationPositions,+    calculateRouteMatrixResponse_httpStatus,+    calculateRouteMatrixResponse_routeMatrix,+    calculateRouteMatrixResponse_summary,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCalculateRouteMatrix' smart constructor.+data CalculateRouteMatrix = CalculateRouteMatrix'+  { -- | Specifies route preferences when traveling by @Car@, such as avoiding+    -- routes that use ferries or tolls.+    --+    -- Requirements: @TravelMode@ must be specified as @Car@.+    carModeOptions :: Prelude.Maybe CalculateRouteCarModeOptions,+    -- | Sets the time of departure as the current time. Uses the current time to+    -- calculate the route matrix. You can\'t set both @DepartureTime@ and+    -- @DepartNow@. If neither is set, the best time of day to travel with the+    -- best traffic conditions is used to calculate the route matrix.+    --+    -- Default Value: @false@+    --+    -- Valid Values: @false@ | @true@+    departNow :: Prelude.Maybe Prelude.Bool,+    -- | Specifies the desired time of departure. Uses the given time to+    -- calculate the route matrix. You can\'t set both @DepartureTime@ and+    -- @DepartNow@. If neither is set, the best time of day to travel with the+    -- best traffic conditions is used to calculate the route matrix.+    --+    -- Setting a departure time in the past returns a @400 ValidationException@+    -- error.+    --+    -- -   In <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    --     format: @YYYY-MM-DDThh:mm:ss.sssZ@. For example,+    --     @2020–07-2T12:15:20.000Z+01:00@+    departureTime :: Prelude.Maybe Data.ISO8601,+    -- | Set the unit system to specify the distance.+    --+    -- Default Value: @Kilometers@+    distanceUnit :: Prelude.Maybe DistanceUnit,+    -- | Specifies the mode of transport when calculating a route. Used in+    -- estimating the speed of travel and road compatibility.+    --+    -- The @TravelMode@ you specify also determines how you specify route+    -- preferences:+    --+    -- -   If traveling by @Car@ use the @CarModeOptions@ parameter.+    --+    -- -   If traveling by @Truck@ use the @TruckModeOptions@ parameter.+    --+    -- Default Value: @Car@+    travelMode :: Prelude.Maybe TravelMode,+    -- | Specifies route preferences when traveling by @Truck@, such as avoiding+    -- routes that use ferries or tolls, and truck specifications to consider+    -- when choosing an optimal road.+    --+    -- Requirements: @TravelMode@ must be specified as @Truck@.+    truckModeOptions :: Prelude.Maybe CalculateRouteTruckModeOptions,+    -- | The name of the route calculator resource that you want to use to+    -- calculate the route matrix.+    calculatorName :: Prelude.Text,+    -- | The list of departure (origin) positions for the route matrix. An array+    -- of points, each of which is itself a 2-value array defined in+    -- <https://earth-info.nga.mil/GandG/wgs84/index.html WGS 84> format:+    -- @[longitude, latitude]@. For example, @[-123.115, 49.285]@.+    --+    -- Depending on the data provider selected in the route calculator resource+    -- there may be additional restrictions on the inputs you can choose. See+    -- <https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html#matrix-routing-position-limits Position restrictions>+    -- in the /Amazon Location Service Developer Guide/.+    --+    -- For route calculators that use Esri as the data provider, if you specify+    -- a departure that\'s not located on a road, Amazon Location+    -- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+    -- The snapped value is available in the result in+    -- @SnappedDeparturePositions@.+    --+    -- Valid Values: @[-180 to 180,-90 to 90]@+    departurePositions :: Prelude.NonEmpty (Data.Sensitive (Prelude.NonEmpty Prelude.Double)),+    -- | The list of destination positions for the route matrix. An array of+    -- points, each of which is itself a 2-value array defined in+    -- <https://earth-info.nga.mil/GandG/wgs84/index.html WGS 84> format:+    -- @[longitude, latitude]@. For example, @[-122.339, 47.615]@+    --+    -- Depending on the data provider selected in the route calculator resource+    -- there may be additional restrictions on the inputs you can choose. See+    -- <https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html#matrix-routing-position-limits Position restrictions>+    -- in the /Amazon Location Service Developer Guide/.+    --+    -- For route calculators that use Esri as the data provider, if you specify+    -- a destination that\'s not located on a road, Amazon Location+    -- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+    -- The snapped value is available in the result in+    -- @SnappedDestinationPositions@.+    --+    -- Valid Values: @[-180 to 180,-90 to 90]@+    destinationPositions :: Prelude.NonEmpty (Data.Sensitive (Prelude.NonEmpty Prelude.Double))+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CalculateRouteMatrix' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'carModeOptions', 'calculateRouteMatrix_carModeOptions' - Specifies route preferences when traveling by @Car@, such as avoiding+-- routes that use ferries or tolls.+--+-- Requirements: @TravelMode@ must be specified as @Car@.+--+-- 'departNow', 'calculateRouteMatrix_departNow' - Sets the time of departure as the current time. Uses the current time to+-- calculate the route matrix. You can\'t set both @DepartureTime@ and+-- @DepartNow@. If neither is set, the best time of day to travel with the+-- best traffic conditions is used to calculate the route matrix.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+--+-- 'departureTime', 'calculateRouteMatrix_departureTime' - Specifies the desired time of departure. Uses the given time to+-- calculate the route matrix. You can\'t set both @DepartureTime@ and+-- @DepartNow@. If neither is set, the best time of day to travel with the+-- best traffic conditions is used to calculate the route matrix.+--+-- Setting a departure time in the past returns a @400 ValidationException@+-- error.+--+-- -   In <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+--     format: @YYYY-MM-DDThh:mm:ss.sssZ@. For example,+--     @2020–07-2T12:15:20.000Z+01:00@+--+-- 'distanceUnit', 'calculateRouteMatrix_distanceUnit' - Set the unit system to specify the distance.+--+-- Default Value: @Kilometers@+--+-- 'travelMode', 'calculateRouteMatrix_travelMode' - Specifies the mode of transport when calculating a route. Used in+-- estimating the speed of travel and road compatibility.+--+-- The @TravelMode@ you specify also determines how you specify route+-- preferences:+--+-- -   If traveling by @Car@ use the @CarModeOptions@ parameter.+--+-- -   If traveling by @Truck@ use the @TruckModeOptions@ parameter.+--+-- Default Value: @Car@+--+-- 'truckModeOptions', 'calculateRouteMatrix_truckModeOptions' - Specifies route preferences when traveling by @Truck@, such as avoiding+-- routes that use ferries or tolls, and truck specifications to consider+-- when choosing an optimal road.+--+-- Requirements: @TravelMode@ must be specified as @Truck@.+--+-- 'calculatorName', 'calculateRouteMatrix_calculatorName' - The name of the route calculator resource that you want to use to+-- calculate the route matrix.+--+-- 'departurePositions', 'calculateRouteMatrix_departurePositions' - The list of departure (origin) positions for the route matrix. An array+-- of points, each of which is itself a 2-value array defined in+-- <https://earth-info.nga.mil/GandG/wgs84/index.html WGS 84> format:+-- @[longitude, latitude]@. For example, @[-123.115, 49.285]@.+--+-- Depending on the data provider selected in the route calculator resource+-- there may be additional restrictions on the inputs you can choose. See+-- <https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html#matrix-routing-position-limits Position restrictions>+-- in the /Amazon Location Service Developer Guide/.+--+-- For route calculators that use Esri as the data provider, if you specify+-- a departure that\'s not located on a road, Amazon Location+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+-- The snapped value is available in the result in+-- @SnappedDeparturePositions@.+--+-- Valid Values: @[-180 to 180,-90 to 90]@+--+-- 'destinationPositions', 'calculateRouteMatrix_destinationPositions' - The list of destination positions for the route matrix. An array of+-- points, each of which is itself a 2-value array defined in+-- <https://earth-info.nga.mil/GandG/wgs84/index.html WGS 84> format:+-- @[longitude, latitude]@. For example, @[-122.339, 47.615]@+--+-- Depending on the data provider selected in the route calculator resource+-- there may be additional restrictions on the inputs you can choose. See+-- <https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html#matrix-routing-position-limits Position restrictions>+-- in the /Amazon Location Service Developer Guide/.+--+-- For route calculators that use Esri as the data provider, if you specify+-- a destination that\'s not located on a road, Amazon Location+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+-- The snapped value is available in the result in+-- @SnappedDestinationPositions@.+--+-- Valid Values: @[-180 to 180,-90 to 90]@+newCalculateRouteMatrix ::+  -- | 'calculatorName'+  Prelude.Text ->+  -- | 'departurePositions'+  Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double) ->+  -- | 'destinationPositions'+  Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double) ->+  CalculateRouteMatrix+newCalculateRouteMatrix+  pCalculatorName_+  pDeparturePositions_+  pDestinationPositions_ =+    CalculateRouteMatrix'+      { carModeOptions =+          Prelude.Nothing,+        departNow = Prelude.Nothing,+        departureTime = Prelude.Nothing,+        distanceUnit = Prelude.Nothing,+        travelMode = Prelude.Nothing,+        truckModeOptions = Prelude.Nothing,+        calculatorName = pCalculatorName_,+        departurePositions =+          Lens.coerced Lens.# pDeparturePositions_,+        destinationPositions =+          Lens.coerced Lens.# pDestinationPositions_+      }++-- | Specifies route preferences when traveling by @Car@, such as avoiding+-- routes that use ferries or tolls.+--+-- Requirements: @TravelMode@ must be specified as @Car@.+calculateRouteMatrix_carModeOptions :: Lens.Lens' CalculateRouteMatrix (Prelude.Maybe CalculateRouteCarModeOptions)+calculateRouteMatrix_carModeOptions = Lens.lens (\CalculateRouteMatrix' {carModeOptions} -> carModeOptions) (\s@CalculateRouteMatrix' {} a -> s {carModeOptions = a} :: CalculateRouteMatrix)++-- | Sets the time of departure as the current time. Uses the current time to+-- calculate the route matrix. You can\'t set both @DepartureTime@ and+-- @DepartNow@. If neither is set, the best time of day to travel with the+-- best traffic conditions is used to calculate the route matrix.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+calculateRouteMatrix_departNow :: Lens.Lens' CalculateRouteMatrix (Prelude.Maybe Prelude.Bool)+calculateRouteMatrix_departNow = Lens.lens (\CalculateRouteMatrix' {departNow} -> departNow) (\s@CalculateRouteMatrix' {} a -> s {departNow = a} :: CalculateRouteMatrix)++-- | Specifies the desired time of departure. Uses the given time to+-- calculate the route matrix. You can\'t set both @DepartureTime@ and+-- @DepartNow@. If neither is set, the best time of day to travel with the+-- best traffic conditions is used to calculate the route matrix.+--+-- Setting a departure time in the past returns a @400 ValidationException@+-- error.+--+-- -   In <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+--     format: @YYYY-MM-DDThh:mm:ss.sssZ@. For example,+--     @2020–07-2T12:15:20.000Z+01:00@+calculateRouteMatrix_departureTime :: Lens.Lens' CalculateRouteMatrix (Prelude.Maybe Prelude.UTCTime)+calculateRouteMatrix_departureTime = Lens.lens (\CalculateRouteMatrix' {departureTime} -> departureTime) (\s@CalculateRouteMatrix' {} a -> s {departureTime = a} :: CalculateRouteMatrix) Prelude.. Lens.mapping Data._Time++-- | Set the unit system to specify the distance.+--+-- Default Value: @Kilometers@+calculateRouteMatrix_distanceUnit :: Lens.Lens' CalculateRouteMatrix (Prelude.Maybe DistanceUnit)+calculateRouteMatrix_distanceUnit = Lens.lens (\CalculateRouteMatrix' {distanceUnit} -> distanceUnit) (\s@CalculateRouteMatrix' {} a -> s {distanceUnit = a} :: CalculateRouteMatrix)++-- | Specifies the mode of transport when calculating a route. Used in+-- estimating the speed of travel and road compatibility.+--+-- The @TravelMode@ you specify also determines how you specify route+-- preferences:+--+-- -   If traveling by @Car@ use the @CarModeOptions@ parameter.+--+-- -   If traveling by @Truck@ use the @TruckModeOptions@ parameter.+--+-- Default Value: @Car@+calculateRouteMatrix_travelMode :: Lens.Lens' CalculateRouteMatrix (Prelude.Maybe TravelMode)+calculateRouteMatrix_travelMode = Lens.lens (\CalculateRouteMatrix' {travelMode} -> travelMode) (\s@CalculateRouteMatrix' {} a -> s {travelMode = a} :: CalculateRouteMatrix)++-- | Specifies route preferences when traveling by @Truck@, such as avoiding+-- routes that use ferries or tolls, and truck specifications to consider+-- when choosing an optimal road.+--+-- Requirements: @TravelMode@ must be specified as @Truck@.+calculateRouteMatrix_truckModeOptions :: Lens.Lens' CalculateRouteMatrix (Prelude.Maybe CalculateRouteTruckModeOptions)+calculateRouteMatrix_truckModeOptions = Lens.lens (\CalculateRouteMatrix' {truckModeOptions} -> truckModeOptions) (\s@CalculateRouteMatrix' {} a -> s {truckModeOptions = a} :: CalculateRouteMatrix)++-- | The name of the route calculator resource that you want to use to+-- calculate the route matrix.+calculateRouteMatrix_calculatorName :: Lens.Lens' CalculateRouteMatrix Prelude.Text+calculateRouteMatrix_calculatorName = Lens.lens (\CalculateRouteMatrix' {calculatorName} -> calculatorName) (\s@CalculateRouteMatrix' {} a -> s {calculatorName = a} :: CalculateRouteMatrix)++-- | The list of departure (origin) positions for the route matrix. An array+-- of points, each of which is itself a 2-value array defined in+-- <https://earth-info.nga.mil/GandG/wgs84/index.html WGS 84> format:+-- @[longitude, latitude]@. For example, @[-123.115, 49.285]@.+--+-- Depending on the data provider selected in the route calculator resource+-- there may be additional restrictions on the inputs you can choose. See+-- <https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html#matrix-routing-position-limits Position restrictions>+-- in the /Amazon Location Service Developer Guide/.+--+-- For route calculators that use Esri as the data provider, if you specify+-- a departure that\'s not located on a road, Amazon Location+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+-- The snapped value is available in the result in+-- @SnappedDeparturePositions@.+--+-- Valid Values: @[-180 to 180,-90 to 90]@+calculateRouteMatrix_departurePositions :: Lens.Lens' CalculateRouteMatrix (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double))+calculateRouteMatrix_departurePositions = Lens.lens (\CalculateRouteMatrix' {departurePositions} -> departurePositions) (\s@CalculateRouteMatrix' {} a -> s {departurePositions = a} :: CalculateRouteMatrix) Prelude.. Lens.coerced++-- | The list of destination positions for the route matrix. An array of+-- points, each of which is itself a 2-value array defined in+-- <https://earth-info.nga.mil/GandG/wgs84/index.html WGS 84> format:+-- @[longitude, latitude]@. For example, @[-122.339, 47.615]@+--+-- Depending on the data provider selected in the route calculator resource+-- there may be additional restrictions on the inputs you can choose. See+-- <https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html#matrix-routing-position-limits Position restrictions>+-- in the /Amazon Location Service Developer Guide/.+--+-- For route calculators that use Esri as the data provider, if you specify+-- a destination that\'s not located on a road, Amazon Location+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html moves the position to the nearest road>.+-- The snapped value is available in the result in+-- @SnappedDestinationPositions@.+--+-- Valid Values: @[-180 to 180,-90 to 90]@+calculateRouteMatrix_destinationPositions :: Lens.Lens' CalculateRouteMatrix (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double))+calculateRouteMatrix_destinationPositions = Lens.lens (\CalculateRouteMatrix' {destinationPositions} -> destinationPositions) (\s@CalculateRouteMatrix' {} a -> s {destinationPositions = a} :: CalculateRouteMatrix) Prelude.. Lens.coerced++instance Core.AWSRequest CalculateRouteMatrix where+  type+    AWSResponse CalculateRouteMatrix =+      CalculateRouteMatrixResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CalculateRouteMatrixResponse'+            Prelude.<$> (x Data..?> "SnappedDeparturePositions")+            Prelude.<*> (x Data..?> "SnappedDestinationPositions")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "RouteMatrix" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..:> "Summary")+      )++instance Prelude.Hashable CalculateRouteMatrix where+  hashWithSalt _salt CalculateRouteMatrix' {..} =+    _salt+      `Prelude.hashWithSalt` carModeOptions+      `Prelude.hashWithSalt` departNow+      `Prelude.hashWithSalt` departureTime+      `Prelude.hashWithSalt` distanceUnit+      `Prelude.hashWithSalt` travelMode+      `Prelude.hashWithSalt` truckModeOptions+      `Prelude.hashWithSalt` calculatorName+      `Prelude.hashWithSalt` departurePositions+      `Prelude.hashWithSalt` destinationPositions++instance Prelude.NFData CalculateRouteMatrix where+  rnf CalculateRouteMatrix' {..} =+    Prelude.rnf carModeOptions+      `Prelude.seq` Prelude.rnf departNow+      `Prelude.seq` Prelude.rnf departureTime+      `Prelude.seq` Prelude.rnf distanceUnit+      `Prelude.seq` Prelude.rnf travelMode+      `Prelude.seq` Prelude.rnf truckModeOptions+      `Prelude.seq` Prelude.rnf calculatorName+      `Prelude.seq` Prelude.rnf departurePositions+      `Prelude.seq` Prelude.rnf destinationPositions++instance Data.ToHeaders CalculateRouteMatrix where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CalculateRouteMatrix where+  toJSON CalculateRouteMatrix' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CarModeOptions" Data..=)+              Prelude.<$> carModeOptions,+            ("DepartNow" Data..=) Prelude.<$> departNow,+            ("DepartureTime" Data..=) Prelude.<$> departureTime,+            ("DistanceUnit" Data..=) Prelude.<$> distanceUnit,+            ("TravelMode" Data..=) Prelude.<$> travelMode,+            ("TruckModeOptions" Data..=)+              Prelude.<$> truckModeOptions,+            Prelude.Just+              ("DeparturePositions" Data..= departurePositions),+            Prelude.Just+              ( "DestinationPositions"+                  Data..= destinationPositions+              )+          ]+      )++instance Data.ToPath CalculateRouteMatrix where+  toPath CalculateRouteMatrix' {..} =+    Prelude.mconcat+      [ "/routes/v0/calculators/",+        Data.toBS calculatorName,+        "/calculate/route-matrix"+      ]++instance Data.ToQuery CalculateRouteMatrix where+  toQuery = Prelude.const Prelude.mempty++-- | Returns the result of the route matrix calculation.+--+-- /See:/ 'newCalculateRouteMatrixResponse' smart constructor.+data CalculateRouteMatrixResponse = CalculateRouteMatrixResponse'+  { -- | For routes calculated using an Esri route calculator resource, departure+    -- positions are snapped to the closest road. For Esri route calculator+    -- resources, this returns the list of departure\/origin positions used for+    -- calculation of the @RouteMatrix@.+    snappedDeparturePositions :: Prelude.Maybe (Prelude.NonEmpty (Data.Sensitive (Prelude.NonEmpty Prelude.Double))),+    -- | The list of destination positions for the route matrix used for+    -- calculation of the @RouteMatrix@.+    snappedDestinationPositions :: Prelude.Maybe (Prelude.NonEmpty (Data.Sensitive (Prelude.NonEmpty Prelude.Double))),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The calculated route matrix containing the results for all pairs of+    -- @DeparturePositions@ to @DestinationPositions@. Each row corresponds to+    -- one entry in @DeparturePositions@. Each entry in the row corresponds to+    -- the route from that entry in @DeparturePositions@ to an entry in+    -- @DestinationPositions@.+    routeMatrix :: [[RouteMatrixEntry]],+    -- | Contains information about the route matrix, @DataSource@,+    -- @DistanceUnit@, @RouteCount@ and @ErrorCount@.+    summary :: CalculateRouteMatrixSummary+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CalculateRouteMatrixResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'snappedDeparturePositions', 'calculateRouteMatrixResponse_snappedDeparturePositions' - For routes calculated using an Esri route calculator resource, departure+-- positions are snapped to the closest road. For Esri route calculator+-- resources, this returns the list of departure\/origin positions used for+-- calculation of the @RouteMatrix@.+--+-- 'snappedDestinationPositions', 'calculateRouteMatrixResponse_snappedDestinationPositions' - The list of destination positions for the route matrix used for+-- calculation of the @RouteMatrix@.+--+-- 'httpStatus', 'calculateRouteMatrixResponse_httpStatus' - The response's http status code.+--+-- 'routeMatrix', 'calculateRouteMatrixResponse_routeMatrix' - The calculated route matrix containing the results for all pairs of+-- @DeparturePositions@ to @DestinationPositions@. Each row corresponds to+-- one entry in @DeparturePositions@. Each entry in the row corresponds to+-- the route from that entry in @DeparturePositions@ to an entry in+-- @DestinationPositions@.+--+-- 'summary', 'calculateRouteMatrixResponse_summary' - Contains information about the route matrix, @DataSource@,+-- @DistanceUnit@, @RouteCount@ and @ErrorCount@.+newCalculateRouteMatrixResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'summary'+  CalculateRouteMatrixSummary ->+  CalculateRouteMatrixResponse+newCalculateRouteMatrixResponse+  pHttpStatus_+  pSummary_ =+    CalculateRouteMatrixResponse'+      { snappedDeparturePositions =+          Prelude.Nothing,+        snappedDestinationPositions = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        routeMatrix = Prelude.mempty,+        summary = pSummary_+      }++-- | For routes calculated using an Esri route calculator resource, departure+-- positions are snapped to the closest road. For Esri route calculator+-- resources, this returns the list of departure\/origin positions used for+-- calculation of the @RouteMatrix@.+calculateRouteMatrixResponse_snappedDeparturePositions :: Lens.Lens' CalculateRouteMatrixResponse (Prelude.Maybe (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double)))+calculateRouteMatrixResponse_snappedDeparturePositions = Lens.lens (\CalculateRouteMatrixResponse' {snappedDeparturePositions} -> snappedDeparturePositions) (\s@CalculateRouteMatrixResponse' {} a -> s {snappedDeparturePositions = a} :: CalculateRouteMatrixResponse) Prelude.. Lens.mapping Lens.coerced++-- | The list of destination positions for the route matrix used for+-- calculation of the @RouteMatrix@.+calculateRouteMatrixResponse_snappedDestinationPositions :: Lens.Lens' CalculateRouteMatrixResponse (Prelude.Maybe (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double)))+calculateRouteMatrixResponse_snappedDestinationPositions = Lens.lens (\CalculateRouteMatrixResponse' {snappedDestinationPositions} -> snappedDestinationPositions) (\s@CalculateRouteMatrixResponse' {} a -> s {snappedDestinationPositions = a} :: CalculateRouteMatrixResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+calculateRouteMatrixResponse_httpStatus :: Lens.Lens' CalculateRouteMatrixResponse Prelude.Int+calculateRouteMatrixResponse_httpStatus = Lens.lens (\CalculateRouteMatrixResponse' {httpStatus} -> httpStatus) (\s@CalculateRouteMatrixResponse' {} a -> s {httpStatus = a} :: CalculateRouteMatrixResponse)++-- | The calculated route matrix containing the results for all pairs of+-- @DeparturePositions@ to @DestinationPositions@. Each row corresponds to+-- one entry in @DeparturePositions@. Each entry in the row corresponds to+-- the route from that entry in @DeparturePositions@ to an entry in+-- @DestinationPositions@.+calculateRouteMatrixResponse_routeMatrix :: Lens.Lens' CalculateRouteMatrixResponse [[RouteMatrixEntry]]+calculateRouteMatrixResponse_routeMatrix = Lens.lens (\CalculateRouteMatrixResponse' {routeMatrix} -> routeMatrix) (\s@CalculateRouteMatrixResponse' {} a -> s {routeMatrix = a} :: CalculateRouteMatrixResponse) Prelude.. Lens.coerced++-- | Contains information about the route matrix, @DataSource@,+-- @DistanceUnit@, @RouteCount@ and @ErrorCount@.+calculateRouteMatrixResponse_summary :: Lens.Lens' CalculateRouteMatrixResponse CalculateRouteMatrixSummary+calculateRouteMatrixResponse_summary = Lens.lens (\CalculateRouteMatrixResponse' {summary} -> summary) (\s@CalculateRouteMatrixResponse' {} a -> s {summary = a} :: CalculateRouteMatrixResponse)++instance Prelude.NFData CalculateRouteMatrixResponse where+  rnf CalculateRouteMatrixResponse' {..} =+    Prelude.rnf snappedDeparturePositions+      `Prelude.seq` Prelude.rnf snappedDestinationPositions+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf routeMatrix+      `Prelude.seq` Prelude.rnf summary
+ gen/Amazonka/Location/CreateGeofenceCollection.hs view
@@ -0,0 +1,386 @@+{-# 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.Location.CreateGeofenceCollection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a geofence collection, which manages and stores geofences.+module Amazonka.Location.CreateGeofenceCollection+  ( -- * Creating a Request+    CreateGeofenceCollection (..),+    newCreateGeofenceCollection,++    -- * Request Lenses+    createGeofenceCollection_description,+    createGeofenceCollection_kmsKeyId,+    createGeofenceCollection_pricingPlan,+    createGeofenceCollection_pricingPlanDataSource,+    createGeofenceCollection_tags,+    createGeofenceCollection_collectionName,++    -- * Destructuring the Response+    CreateGeofenceCollectionResponse (..),+    newCreateGeofenceCollectionResponse,++    -- * Response Lenses+    createGeofenceCollectionResponse_httpStatus,+    createGeofenceCollectionResponse_collectionArn,+    createGeofenceCollectionResponse_collectionName,+    createGeofenceCollectionResponse_createTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateGeofenceCollection' smart constructor.+data CreateGeofenceCollection = CreateGeofenceCollection'+  { -- | An optional description for the geofence collection.+    description :: Prelude.Maybe Prelude.Text,+    -- | A key identifier for an+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>.+    -- Enter a key ID, key ARN, alias name, or alias ARN.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | No longer used. If included, the only allowed value is+    -- @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | This parameter is no longer used.+    pricingPlanDataSource :: Prelude.Maybe Prelude.Text,+    -- | Applies one or more tags to the geofence collection. A tag is a+    -- key-value pair helps manage, identify, search, and filter your resources+    -- by labelling them.+    --+    -- Format: @\"key\" : \"value\"@+    --+    -- Restrictions:+    --+    -- -   Maximum 50 tags per resource+    --+    -- -   Each resource tag must be unique with a maximum of one value.+    --+    -- -   Maximum key length: 128 Unicode characters in UTF-8+    --+    -- -   Maximum value length: 256 Unicode characters in UTF-8+    --+    -- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+    --     characters: + - = . _ : \/ \@.+    --+    -- -   Cannot use \"aws:\" as a prefix for a key.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A custom name for the geofence collection.+    --+    -- Requirements:+    --+    -- -   Contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens (-),+    --     periods (.), and underscores (_).+    --+    -- -   Must be a unique geofence collection name.+    --+    -- -   No spaces allowed. For example, @ExampleGeofenceCollection@.+    collectionName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateGeofenceCollection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'createGeofenceCollection_description' - An optional description for the geofence collection.+--+-- 'kmsKeyId', 'createGeofenceCollection_kmsKeyId' - A key identifier for an+-- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>.+-- Enter a key ID, key ARN, alias name, or alias ARN.+--+-- 'pricingPlan', 'createGeofenceCollection_pricingPlan' - No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+--+-- 'pricingPlanDataSource', 'createGeofenceCollection_pricingPlanDataSource' - This parameter is no longer used.+--+-- 'tags', 'createGeofenceCollection_tags' - Applies one or more tags to the geofence collection. A tag is a+-- key-value pair helps manage, identify, search, and filter your resources+-- by labelling them.+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource+--+-- -   Each resource tag must be unique with a maximum of one value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8+--+-- -   Maximum value length: 256 Unicode characters in UTF-8+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@.+--+-- -   Cannot use \"aws:\" as a prefix for a key.+--+-- 'collectionName', 'createGeofenceCollection_collectionName' - A custom name for the geofence collection.+--+-- Requirements:+--+-- -   Contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens (-),+--     periods (.), and underscores (_).+--+-- -   Must be a unique geofence collection name.+--+-- -   No spaces allowed. For example, @ExampleGeofenceCollection@.+newCreateGeofenceCollection ::+  -- | 'collectionName'+  Prelude.Text ->+  CreateGeofenceCollection+newCreateGeofenceCollection pCollectionName_ =+  CreateGeofenceCollection'+    { description =+        Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      pricingPlan = Prelude.Nothing,+      pricingPlanDataSource = Prelude.Nothing,+      tags = Prelude.Nothing,+      collectionName = pCollectionName_+    }++-- | An optional description for the geofence collection.+createGeofenceCollection_description :: Lens.Lens' CreateGeofenceCollection (Prelude.Maybe Prelude.Text)+createGeofenceCollection_description = Lens.lens (\CreateGeofenceCollection' {description} -> description) (\s@CreateGeofenceCollection' {} a -> s {description = a} :: CreateGeofenceCollection)++-- | A key identifier for an+-- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>.+-- Enter a key ID, key ARN, alias name, or alias ARN.+createGeofenceCollection_kmsKeyId :: Lens.Lens' CreateGeofenceCollection (Prelude.Maybe Prelude.Text)+createGeofenceCollection_kmsKeyId = Lens.lens (\CreateGeofenceCollection' {kmsKeyId} -> kmsKeyId) (\s@CreateGeofenceCollection' {} a -> s {kmsKeyId = a} :: CreateGeofenceCollection)++-- | No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+createGeofenceCollection_pricingPlan :: Lens.Lens' CreateGeofenceCollection (Prelude.Maybe PricingPlan)+createGeofenceCollection_pricingPlan = Lens.lens (\CreateGeofenceCollection' {pricingPlan} -> pricingPlan) (\s@CreateGeofenceCollection' {} a -> s {pricingPlan = a} :: CreateGeofenceCollection)++-- | This parameter is no longer used.+createGeofenceCollection_pricingPlanDataSource :: Lens.Lens' CreateGeofenceCollection (Prelude.Maybe Prelude.Text)+createGeofenceCollection_pricingPlanDataSource = Lens.lens (\CreateGeofenceCollection' {pricingPlanDataSource} -> pricingPlanDataSource) (\s@CreateGeofenceCollection' {} a -> s {pricingPlanDataSource = a} :: CreateGeofenceCollection)++-- | Applies one or more tags to the geofence collection. A tag is a+-- key-value pair helps manage, identify, search, and filter your resources+-- by labelling them.+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource+--+-- -   Each resource tag must be unique with a maximum of one value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8+--+-- -   Maximum value length: 256 Unicode characters in UTF-8+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@.+--+-- -   Cannot use \"aws:\" as a prefix for a key.+createGeofenceCollection_tags :: Lens.Lens' CreateGeofenceCollection (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createGeofenceCollection_tags = Lens.lens (\CreateGeofenceCollection' {tags} -> tags) (\s@CreateGeofenceCollection' {} a -> s {tags = a} :: CreateGeofenceCollection) Prelude.. Lens.mapping Lens.coerced++-- | A custom name for the geofence collection.+--+-- Requirements:+--+-- -   Contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens (-),+--     periods (.), and underscores (_).+--+-- -   Must be a unique geofence collection name.+--+-- -   No spaces allowed. For example, @ExampleGeofenceCollection@.+createGeofenceCollection_collectionName :: Lens.Lens' CreateGeofenceCollection Prelude.Text+createGeofenceCollection_collectionName = Lens.lens (\CreateGeofenceCollection' {collectionName} -> collectionName) (\s@CreateGeofenceCollection' {} a -> s {collectionName = a} :: CreateGeofenceCollection)++instance Core.AWSRequest CreateGeofenceCollection where+  type+    AWSResponse CreateGeofenceCollection =+      CreateGeofenceCollectionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateGeofenceCollectionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CollectionArn")+            Prelude.<*> (x Data..:> "CollectionName")+            Prelude.<*> (x Data..:> "CreateTime")+      )++instance Prelude.Hashable CreateGeofenceCollection where+  hashWithSalt _salt CreateGeofenceCollection' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` pricingPlanDataSource+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` collectionName++instance Prelude.NFData CreateGeofenceCollection where+  rnf CreateGeofenceCollection' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf pricingPlanDataSource+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf collectionName++instance Data.ToHeaders CreateGeofenceCollection where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateGeofenceCollection where+  toJSON CreateGeofenceCollection' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan,+            ("PricingPlanDataSource" Data..=)+              Prelude.<$> pricingPlanDataSource,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("CollectionName" Data..= collectionName)+          ]+      )++instance Data.ToPath CreateGeofenceCollection where+  toPath = Prelude.const "/geofencing/v0/collections"++instance Data.ToQuery CreateGeofenceCollection where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateGeofenceCollectionResponse' smart constructor.+data CreateGeofenceCollectionResponse = CreateGeofenceCollectionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The Amazon Resource Name (ARN) for the geofence collection resource.+    -- Used when you need to specify a resource across all AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollection@+    collectionArn :: Prelude.Text,+    -- | The name for the geofence collection.+    collectionName :: Prelude.Text,+    -- | The timestamp for when the geofence collection was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    createTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateGeofenceCollectionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createGeofenceCollectionResponse_httpStatus' - The response's http status code.+--+-- 'collectionArn', 'createGeofenceCollectionResponse_collectionArn' - The Amazon Resource Name (ARN) for the geofence collection resource.+-- Used when you need to specify a resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollection@+--+-- 'collectionName', 'createGeofenceCollectionResponse_collectionName' - The name for the geofence collection.+--+-- 'createTime', 'createGeofenceCollectionResponse_createTime' - The timestamp for when the geofence collection was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+newCreateGeofenceCollectionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'collectionArn'+  Prelude.Text ->+  -- | 'collectionName'+  Prelude.Text ->+  -- | 'createTime'+  Prelude.UTCTime ->+  CreateGeofenceCollectionResponse+newCreateGeofenceCollectionResponse+  pHttpStatus_+  pCollectionArn_+  pCollectionName_+  pCreateTime_ =+    CreateGeofenceCollectionResponse'+      { httpStatus =+          pHttpStatus_,+        collectionArn = pCollectionArn_,+        collectionName = pCollectionName_,+        createTime =+          Data._Time Lens.# pCreateTime_+      }++-- | The response's http status code.+createGeofenceCollectionResponse_httpStatus :: Lens.Lens' CreateGeofenceCollectionResponse Prelude.Int+createGeofenceCollectionResponse_httpStatus = Lens.lens (\CreateGeofenceCollectionResponse' {httpStatus} -> httpStatus) (\s@CreateGeofenceCollectionResponse' {} a -> s {httpStatus = a} :: CreateGeofenceCollectionResponse)++-- | The Amazon Resource Name (ARN) for the geofence collection resource.+-- Used when you need to specify a resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollection@+createGeofenceCollectionResponse_collectionArn :: Lens.Lens' CreateGeofenceCollectionResponse Prelude.Text+createGeofenceCollectionResponse_collectionArn = Lens.lens (\CreateGeofenceCollectionResponse' {collectionArn} -> collectionArn) (\s@CreateGeofenceCollectionResponse' {} a -> s {collectionArn = a} :: CreateGeofenceCollectionResponse)++-- | The name for the geofence collection.+createGeofenceCollectionResponse_collectionName :: Lens.Lens' CreateGeofenceCollectionResponse Prelude.Text+createGeofenceCollectionResponse_collectionName = Lens.lens (\CreateGeofenceCollectionResponse' {collectionName} -> collectionName) (\s@CreateGeofenceCollectionResponse' {} a -> s {collectionName = a} :: CreateGeofenceCollectionResponse)++-- | The timestamp for when the geofence collection was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+createGeofenceCollectionResponse_createTime :: Lens.Lens' CreateGeofenceCollectionResponse Prelude.UTCTime+createGeofenceCollectionResponse_createTime = Lens.lens (\CreateGeofenceCollectionResponse' {createTime} -> createTime) (\s@CreateGeofenceCollectionResponse' {} a -> s {createTime = a} :: CreateGeofenceCollectionResponse) Prelude.. Data._Time++instance+  Prelude.NFData+    CreateGeofenceCollectionResponse+  where+  rnf CreateGeofenceCollectionResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf collectionArn+      `Prelude.seq` Prelude.rnf collectionName+      `Prelude.seq` Prelude.rnf createTime
+ gen/Amazonka/Location/CreateMap.hs view
@@ -0,0 +1,369 @@+{-# 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.Location.CreateMap+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a map resource in your AWS account, which provides map tiles of+-- different styles sourced from global location data providers.+--+-- If your application is tracking or routing assets you use in your+-- business, such as delivery vehicles or employees, you may only use HERE+-- as your geolocation provider. See section 82 of the+-- <http://aws.amazon.com/service-terms AWS service terms> for more+-- details.+module Amazonka.Location.CreateMap+  ( -- * Creating a Request+    CreateMap (..),+    newCreateMap,++    -- * Request Lenses+    createMap_description,+    createMap_pricingPlan,+    createMap_tags,+    createMap_configuration,+    createMap_mapName,++    -- * Destructuring the Response+    CreateMapResponse (..),+    newCreateMapResponse,++    -- * Response Lenses+    createMapResponse_httpStatus,+    createMapResponse_createTime,+    createMapResponse_mapArn,+    createMapResponse_mapName,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateMap' smart constructor.+data CreateMap = CreateMap'+  { -- | An optional description for the map resource.+    description :: Prelude.Maybe Prelude.Text,+    -- | No longer used. If included, the only allowed value is+    -- @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | Applies one or more tags to the map resource. A tag is a key-value pair+    -- helps manage, identify, search, and filter your resources by labelling+    -- them.+    --+    -- Format: @\"key\" : \"value\"@+    --+    -- Restrictions:+    --+    -- -   Maximum 50 tags per resource+    --+    -- -   Each resource tag must be unique with a maximum of one value.+    --+    -- -   Maximum key length: 128 Unicode characters in UTF-8+    --+    -- -   Maximum value length: 256 Unicode characters in UTF-8+    --+    -- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+    --     characters: + - = . _ : \/ \@.+    --+    -- -   Cannot use \"aws:\" as a prefix for a key.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Specifies the @MapConfiguration@, including the map style, for the map+    -- resource that you create. The map style defines the look of maps and the+    -- data provider for your map resource.+    configuration :: MapConfiguration,+    -- | The name for the map resource.+    --+    -- Requirements:+    --+    -- -   Must contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens+    --     (-), periods (.), and underscores (_).+    --+    -- -   Must be a unique map resource name.+    --+    -- -   No spaces allowed. For example, @ExampleMap@.+    mapName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateMap' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'createMap_description' - An optional description for the map resource.+--+-- 'pricingPlan', 'createMap_pricingPlan' - No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+--+-- 'tags', 'createMap_tags' - Applies one or more tags to the map resource. A tag is a key-value pair+-- helps manage, identify, search, and filter your resources by labelling+-- them.+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource+--+-- -   Each resource tag must be unique with a maximum of one value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8+--+-- -   Maximum value length: 256 Unicode characters in UTF-8+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@.+--+-- -   Cannot use \"aws:\" as a prefix for a key.+--+-- 'configuration', 'createMap_configuration' - Specifies the @MapConfiguration@, including the map style, for the map+-- resource that you create. The map style defines the look of maps and the+-- data provider for your map resource.+--+-- 'mapName', 'createMap_mapName' - The name for the map resource.+--+-- Requirements:+--+-- -   Must contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens+--     (-), periods (.), and underscores (_).+--+-- -   Must be a unique map resource name.+--+-- -   No spaces allowed. For example, @ExampleMap@.+newCreateMap ::+  -- | 'configuration'+  MapConfiguration ->+  -- | 'mapName'+  Prelude.Text ->+  CreateMap+newCreateMap pConfiguration_ pMapName_ =+  CreateMap'+    { description = Prelude.Nothing,+      pricingPlan = Prelude.Nothing,+      tags = Prelude.Nothing,+      configuration = pConfiguration_,+      mapName = pMapName_+    }++-- | An optional description for the map resource.+createMap_description :: Lens.Lens' CreateMap (Prelude.Maybe Prelude.Text)+createMap_description = Lens.lens (\CreateMap' {description} -> description) (\s@CreateMap' {} a -> s {description = a} :: CreateMap)++-- | No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+createMap_pricingPlan :: Lens.Lens' CreateMap (Prelude.Maybe PricingPlan)+createMap_pricingPlan = Lens.lens (\CreateMap' {pricingPlan} -> pricingPlan) (\s@CreateMap' {} a -> s {pricingPlan = a} :: CreateMap)++-- | Applies one or more tags to the map resource. A tag is a key-value pair+-- helps manage, identify, search, and filter your resources by labelling+-- them.+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource+--+-- -   Each resource tag must be unique with a maximum of one value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8+--+-- -   Maximum value length: 256 Unicode characters in UTF-8+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@.+--+-- -   Cannot use \"aws:\" as a prefix for a key.+createMap_tags :: Lens.Lens' CreateMap (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createMap_tags = Lens.lens (\CreateMap' {tags} -> tags) (\s@CreateMap' {} a -> s {tags = a} :: CreateMap) Prelude.. Lens.mapping Lens.coerced++-- | Specifies the @MapConfiguration@, including the map style, for the map+-- resource that you create. The map style defines the look of maps and the+-- data provider for your map resource.+createMap_configuration :: Lens.Lens' CreateMap MapConfiguration+createMap_configuration = Lens.lens (\CreateMap' {configuration} -> configuration) (\s@CreateMap' {} a -> s {configuration = a} :: CreateMap)++-- | The name for the map resource.+--+-- Requirements:+--+-- -   Must contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens+--     (-), periods (.), and underscores (_).+--+-- -   Must be a unique map resource name.+--+-- -   No spaces allowed. For example, @ExampleMap@.+createMap_mapName :: Lens.Lens' CreateMap Prelude.Text+createMap_mapName = Lens.lens (\CreateMap' {mapName} -> mapName) (\s@CreateMap' {} a -> s {mapName = a} :: CreateMap)++instance Core.AWSRequest CreateMap where+  type AWSResponse CreateMap = CreateMapResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateMapResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CreateTime")+            Prelude.<*> (x Data..:> "MapArn")+            Prelude.<*> (x Data..:> "MapName")+      )++instance Prelude.Hashable CreateMap where+  hashWithSalt _salt CreateMap' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` configuration+      `Prelude.hashWithSalt` mapName++instance Prelude.NFData CreateMap where+  rnf CreateMap' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf configuration+      `Prelude.seq` Prelude.rnf mapName++instance Data.ToHeaders CreateMap where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateMap where+  toJSON CreateMap' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("Configuration" Data..= configuration),+            Prelude.Just ("MapName" Data..= mapName)+          ]+      )++instance Data.ToPath CreateMap where+  toPath = Prelude.const "/maps/v0/maps"++instance Data.ToQuery CreateMap where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateMapResponse' smart constructor.+data CreateMapResponse = CreateMapResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The timestamp for when the map resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    createTime :: Data.ISO8601,+    -- | The Amazon Resource Name (ARN) for the map resource. Used to specify a+    -- resource across all AWS.+    --+    -- -   Format example: @arn:aws:geo:region:account-id:map\/ExampleMap@+    mapArn :: Prelude.Text,+    -- | The name of the map resource.+    mapName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateMapResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createMapResponse_httpStatus' - The response's http status code.+--+-- 'createTime', 'createMapResponse_createTime' - The timestamp for when the map resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'mapArn', 'createMapResponse_mapArn' - The Amazon Resource Name (ARN) for the map resource. Used to specify a+-- resource across all AWS.+--+-- -   Format example: @arn:aws:geo:region:account-id:map\/ExampleMap@+--+-- 'mapName', 'createMapResponse_mapName' - The name of the map resource.+newCreateMapResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'mapArn'+  Prelude.Text ->+  -- | 'mapName'+  Prelude.Text ->+  CreateMapResponse+newCreateMapResponse+  pHttpStatus_+  pCreateTime_+  pMapArn_+  pMapName_ =+    CreateMapResponse'+      { httpStatus = pHttpStatus_,+        createTime = Data._Time Lens.# pCreateTime_,+        mapArn = pMapArn_,+        mapName = pMapName_+      }++-- | The response's http status code.+createMapResponse_httpStatus :: Lens.Lens' CreateMapResponse Prelude.Int+createMapResponse_httpStatus = Lens.lens (\CreateMapResponse' {httpStatus} -> httpStatus) (\s@CreateMapResponse' {} a -> s {httpStatus = a} :: CreateMapResponse)++-- | The timestamp for when the map resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+createMapResponse_createTime :: Lens.Lens' CreateMapResponse Prelude.UTCTime+createMapResponse_createTime = Lens.lens (\CreateMapResponse' {createTime} -> createTime) (\s@CreateMapResponse' {} a -> s {createTime = a} :: CreateMapResponse) Prelude.. Data._Time++-- | The Amazon Resource Name (ARN) for the map resource. Used to specify a+-- resource across all AWS.+--+-- -   Format example: @arn:aws:geo:region:account-id:map\/ExampleMap@+createMapResponse_mapArn :: Lens.Lens' CreateMapResponse Prelude.Text+createMapResponse_mapArn = Lens.lens (\CreateMapResponse' {mapArn} -> mapArn) (\s@CreateMapResponse' {} a -> s {mapArn = a} :: CreateMapResponse)++-- | The name of the map resource.+createMapResponse_mapName :: Lens.Lens' CreateMapResponse Prelude.Text+createMapResponse_mapName = Lens.lens (\CreateMapResponse' {mapName} -> mapName) (\s@CreateMapResponse' {} a -> s {mapName = a} :: CreateMapResponse)++instance Prelude.NFData CreateMapResponse where+  rnf CreateMapResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf mapArn+      `Prelude.seq` Prelude.rnf mapName
+ gen/Amazonka/Location/CreatePlaceIndex.hs view
@@ -0,0 +1,468 @@+{-# 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.Location.CreatePlaceIndex+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a place index resource in your AWS account. Use a place index+-- resource to geocode addresses and other text queries by using the+-- @SearchPlaceIndexForText@ operation, and reverse geocode coordinates by+-- using the @SearchPlaceIndexForPosition@ operation, and enable+-- autosuggestions by using the @SearchPlaceIndexForSuggestions@ operation.+--+-- If your application is tracking or routing assets you use in your+-- business, such as delivery vehicles or employees, you may only use HERE+-- as your geolocation provider. See section 82 of the+-- <http://aws.amazon.com/service-terms AWS service terms> for more+-- details.+module Amazonka.Location.CreatePlaceIndex+  ( -- * Creating a Request+    CreatePlaceIndex (..),+    newCreatePlaceIndex,++    -- * Request Lenses+    createPlaceIndex_dataSourceConfiguration,+    createPlaceIndex_description,+    createPlaceIndex_pricingPlan,+    createPlaceIndex_tags,+    createPlaceIndex_dataSource,+    createPlaceIndex_indexName,++    -- * Destructuring the Response+    CreatePlaceIndexResponse (..),+    newCreatePlaceIndexResponse,++    -- * Response Lenses+    createPlaceIndexResponse_httpStatus,+    createPlaceIndexResponse_createTime,+    createPlaceIndexResponse_indexArn,+    createPlaceIndexResponse_indexName,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreatePlaceIndex' smart constructor.+data CreatePlaceIndex = CreatePlaceIndex'+  { -- | Specifies the data storage option requesting Places.+    dataSourceConfiguration :: Prelude.Maybe DataSourceConfiguration,+    -- | The optional description for the place index resource.+    description :: Prelude.Maybe Prelude.Text,+    -- | No longer used. If included, the only allowed value is+    -- @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | Applies one or more tags to the place index resource. A tag is a+    -- key-value pair that helps you manage, identify, search, and filter your+    -- resources.+    --+    -- Format: @\"key\" : \"value\"@+    --+    -- Restrictions:+    --+    -- -   Maximum 50 tags per resource.+    --+    -- -   Each tag key must be unique and must have exactly one associated+    --     value.+    --+    -- -   Maximum key length: 128 Unicode characters in UTF-8.+    --+    -- -   Maximum value length: 256 Unicode characters in UTF-8.+    --+    -- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+    --     characters: + - = . _ : \/ \@+    --+    -- -   Cannot use \"aws:\" as a prefix for a key.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Specifies the geospatial data provider for the new place index.+    --+    -- This field is case-sensitive. Enter the valid values as shown. For+    -- example, entering @HERE@ returns an error.+    --+    -- Valid values include:+    --+    -- -   @Esri@ – For additional information about+    --     <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri>\'s+    --     coverage in your region of interest, see+    --     <https://developers.arcgis.com/rest/geocode/api-reference/geocode-coverage.htm Esri details on geocoding coverage>.+    --+    -- -   @Here@ – For additional information about+    --     <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies>\'+    --     coverage in your region of interest, see+    --     <https://developer.here.com/documentation/geocoder/dev_guide/topics/coverage-geocoder.html HERE details on goecoding coverage>.+    --+    --     If you specify HERE Technologies (@Here@) as the data provider, you+    --     may not+    --     <https://docs.aws.amazon.com/location-places/latest/APIReference/API_DataSourceConfiguration.html store results>+    --     for locations in Japan. For more information, see the+    --     <https://aws.amazon.com/service-terms/ AWS Service Terms> for Amazon+    --     Location Service.+    --+    -- For additional information , see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Data providers>+    -- on the /Amazon Location Service Developer Guide/.+    dataSource :: Prelude.Text,+    -- | The name of the place index resource.+    --+    -- Requirements:+    --+    -- -   Contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens (-),+    --     periods (.), and underscores (_).+    --+    -- -   Must be a unique place index resource name.+    --+    -- -   No spaces allowed. For example, @ExamplePlaceIndex@.+    indexName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreatePlaceIndex' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataSourceConfiguration', 'createPlaceIndex_dataSourceConfiguration' - Specifies the data storage option requesting Places.+--+-- 'description', 'createPlaceIndex_description' - The optional description for the place index resource.+--+-- 'pricingPlan', 'createPlaceIndex_pricingPlan' - No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+--+-- 'tags', 'createPlaceIndex_tags' - Applies one or more tags to the place index resource. A tag is a+-- key-value pair that helps you manage, identify, search, and filter your+-- resources.+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource.+--+-- -   Each tag key must be unique and must have exactly one associated+--     value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8.+--+-- -   Maximum value length: 256 Unicode characters in UTF-8.+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@+--+-- -   Cannot use \"aws:\" as a prefix for a key.+--+-- 'dataSource', 'createPlaceIndex_dataSource' - Specifies the geospatial data provider for the new place index.+--+-- This field is case-sensitive. Enter the valid values as shown. For+-- example, entering @HERE@ returns an error.+--+-- Valid values include:+--+-- -   @Esri@ – For additional information about+--     <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri>\'s+--     coverage in your region of interest, see+--     <https://developers.arcgis.com/rest/geocode/api-reference/geocode-coverage.htm Esri details on geocoding coverage>.+--+-- -   @Here@ – For additional information about+--     <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies>\'+--     coverage in your region of interest, see+--     <https://developer.here.com/documentation/geocoder/dev_guide/topics/coverage-geocoder.html HERE details on goecoding coverage>.+--+--     If you specify HERE Technologies (@Here@) as the data provider, you+--     may not+--     <https://docs.aws.amazon.com/location-places/latest/APIReference/API_DataSourceConfiguration.html store results>+--     for locations in Japan. For more information, see the+--     <https://aws.amazon.com/service-terms/ AWS Service Terms> for Amazon+--     Location Service.+--+-- For additional information , see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Data providers>+-- on the /Amazon Location Service Developer Guide/.+--+-- 'indexName', 'createPlaceIndex_indexName' - The name of the place index resource.+--+-- Requirements:+--+-- -   Contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens (-),+--     periods (.), and underscores (_).+--+-- -   Must be a unique place index resource name.+--+-- -   No spaces allowed. For example, @ExamplePlaceIndex@.+newCreatePlaceIndex ::+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'indexName'+  Prelude.Text ->+  CreatePlaceIndex+newCreatePlaceIndex pDataSource_ pIndexName_ =+  CreatePlaceIndex'+    { dataSourceConfiguration =+        Prelude.Nothing,+      description = Prelude.Nothing,+      pricingPlan = Prelude.Nothing,+      tags = Prelude.Nothing,+      dataSource = pDataSource_,+      indexName = pIndexName_+    }++-- | Specifies the data storage option requesting Places.+createPlaceIndex_dataSourceConfiguration :: Lens.Lens' CreatePlaceIndex (Prelude.Maybe DataSourceConfiguration)+createPlaceIndex_dataSourceConfiguration = Lens.lens (\CreatePlaceIndex' {dataSourceConfiguration} -> dataSourceConfiguration) (\s@CreatePlaceIndex' {} a -> s {dataSourceConfiguration = a} :: CreatePlaceIndex)++-- | The optional description for the place index resource.+createPlaceIndex_description :: Lens.Lens' CreatePlaceIndex (Prelude.Maybe Prelude.Text)+createPlaceIndex_description = Lens.lens (\CreatePlaceIndex' {description} -> description) (\s@CreatePlaceIndex' {} a -> s {description = a} :: CreatePlaceIndex)++-- | No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+createPlaceIndex_pricingPlan :: Lens.Lens' CreatePlaceIndex (Prelude.Maybe PricingPlan)+createPlaceIndex_pricingPlan = Lens.lens (\CreatePlaceIndex' {pricingPlan} -> pricingPlan) (\s@CreatePlaceIndex' {} a -> s {pricingPlan = a} :: CreatePlaceIndex)++-- | Applies one or more tags to the place index resource. A tag is a+-- key-value pair that helps you manage, identify, search, and filter your+-- resources.+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource.+--+-- -   Each tag key must be unique and must have exactly one associated+--     value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8.+--+-- -   Maximum value length: 256 Unicode characters in UTF-8.+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@+--+-- -   Cannot use \"aws:\" as a prefix for a key.+createPlaceIndex_tags :: Lens.Lens' CreatePlaceIndex (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createPlaceIndex_tags = Lens.lens (\CreatePlaceIndex' {tags} -> tags) (\s@CreatePlaceIndex' {} a -> s {tags = a} :: CreatePlaceIndex) Prelude.. Lens.mapping Lens.coerced++-- | Specifies the geospatial data provider for the new place index.+--+-- This field is case-sensitive. Enter the valid values as shown. For+-- example, entering @HERE@ returns an error.+--+-- Valid values include:+--+-- -   @Esri@ – For additional information about+--     <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri>\'s+--     coverage in your region of interest, see+--     <https://developers.arcgis.com/rest/geocode/api-reference/geocode-coverage.htm Esri details on geocoding coverage>.+--+-- -   @Here@ – For additional information about+--     <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies>\'+--     coverage in your region of interest, see+--     <https://developer.here.com/documentation/geocoder/dev_guide/topics/coverage-geocoder.html HERE details on goecoding coverage>.+--+--     If you specify HERE Technologies (@Here@) as the data provider, you+--     may not+--     <https://docs.aws.amazon.com/location-places/latest/APIReference/API_DataSourceConfiguration.html store results>+--     for locations in Japan. For more information, see the+--     <https://aws.amazon.com/service-terms/ AWS Service Terms> for Amazon+--     Location Service.+--+-- For additional information , see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Data providers>+-- on the /Amazon Location Service Developer Guide/.+createPlaceIndex_dataSource :: Lens.Lens' CreatePlaceIndex Prelude.Text+createPlaceIndex_dataSource = Lens.lens (\CreatePlaceIndex' {dataSource} -> dataSource) (\s@CreatePlaceIndex' {} a -> s {dataSource = a} :: CreatePlaceIndex)++-- | The name of the place index resource.+--+-- Requirements:+--+-- -   Contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens (-),+--     periods (.), and underscores (_).+--+-- -   Must be a unique place index resource name.+--+-- -   No spaces allowed. For example, @ExamplePlaceIndex@.+createPlaceIndex_indexName :: Lens.Lens' CreatePlaceIndex Prelude.Text+createPlaceIndex_indexName = Lens.lens (\CreatePlaceIndex' {indexName} -> indexName) (\s@CreatePlaceIndex' {} a -> s {indexName = a} :: CreatePlaceIndex)++instance Core.AWSRequest CreatePlaceIndex where+  type+    AWSResponse CreatePlaceIndex =+      CreatePlaceIndexResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreatePlaceIndexResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CreateTime")+            Prelude.<*> (x Data..:> "IndexArn")+            Prelude.<*> (x Data..:> "IndexName")+      )++instance Prelude.Hashable CreatePlaceIndex where+  hashWithSalt _salt CreatePlaceIndex' {..} =+    _salt+      `Prelude.hashWithSalt` dataSourceConfiguration+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` dataSource+      `Prelude.hashWithSalt` indexName++instance Prelude.NFData CreatePlaceIndex where+  rnf CreatePlaceIndex' {..} =+    Prelude.rnf dataSourceConfiguration+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf indexName++instance Data.ToHeaders CreatePlaceIndex where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreatePlaceIndex where+  toJSON CreatePlaceIndex' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DataSourceConfiguration" Data..=)+              Prelude.<$> dataSourceConfiguration,+            ("Description" Data..=) Prelude.<$> description,+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("DataSource" Data..= dataSource),+            Prelude.Just ("IndexName" Data..= indexName)+          ]+      )++instance Data.ToPath CreatePlaceIndex where+  toPath = Prelude.const "/places/v0/indexes"++instance Data.ToQuery CreatePlaceIndex where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreatePlaceIndexResponse' smart constructor.+data CreatePlaceIndexResponse = CreatePlaceIndexResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The timestamp for when the place index resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    createTime :: Data.ISO8601,+    -- | The Amazon Resource Name (ARN) for the place index resource. Used to+    -- specify a resource across AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:place-index\/ExamplePlaceIndex@+    indexArn :: Prelude.Text,+    -- | The name for the place index resource.+    indexName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreatePlaceIndexResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createPlaceIndexResponse_httpStatus' - The response's http status code.+--+-- 'createTime', 'createPlaceIndexResponse_createTime' - The timestamp for when the place index resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'indexArn', 'createPlaceIndexResponse_indexArn' - The Amazon Resource Name (ARN) for the place index resource. Used to+-- specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:place-index\/ExamplePlaceIndex@+--+-- 'indexName', 'createPlaceIndexResponse_indexName' - The name for the place index resource.+newCreatePlaceIndexResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'indexArn'+  Prelude.Text ->+  -- | 'indexName'+  Prelude.Text ->+  CreatePlaceIndexResponse+newCreatePlaceIndexResponse+  pHttpStatus_+  pCreateTime_+  pIndexArn_+  pIndexName_ =+    CreatePlaceIndexResponse'+      { httpStatus =+          pHttpStatus_,+        createTime = Data._Time Lens.# pCreateTime_,+        indexArn = pIndexArn_,+        indexName = pIndexName_+      }++-- | The response's http status code.+createPlaceIndexResponse_httpStatus :: Lens.Lens' CreatePlaceIndexResponse Prelude.Int+createPlaceIndexResponse_httpStatus = Lens.lens (\CreatePlaceIndexResponse' {httpStatus} -> httpStatus) (\s@CreatePlaceIndexResponse' {} a -> s {httpStatus = a} :: CreatePlaceIndexResponse)++-- | The timestamp for when the place index resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+createPlaceIndexResponse_createTime :: Lens.Lens' CreatePlaceIndexResponse Prelude.UTCTime+createPlaceIndexResponse_createTime = Lens.lens (\CreatePlaceIndexResponse' {createTime} -> createTime) (\s@CreatePlaceIndexResponse' {} a -> s {createTime = a} :: CreatePlaceIndexResponse) Prelude.. Data._Time++-- | The Amazon Resource Name (ARN) for the place index resource. Used to+-- specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:place-index\/ExamplePlaceIndex@+createPlaceIndexResponse_indexArn :: Lens.Lens' CreatePlaceIndexResponse Prelude.Text+createPlaceIndexResponse_indexArn = Lens.lens (\CreatePlaceIndexResponse' {indexArn} -> indexArn) (\s@CreatePlaceIndexResponse' {} a -> s {indexArn = a} :: CreatePlaceIndexResponse)++-- | The name for the place index resource.+createPlaceIndexResponse_indexName :: Lens.Lens' CreatePlaceIndexResponse Prelude.Text+createPlaceIndexResponse_indexName = Lens.lens (\CreatePlaceIndexResponse' {indexName} -> indexName) (\s@CreatePlaceIndexResponse' {} a -> s {indexName = a} :: CreatePlaceIndexResponse)++instance Prelude.NFData CreatePlaceIndexResponse where+  rnf CreatePlaceIndexResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf indexArn+      `Prelude.seq` Prelude.rnf indexName
+ gen/Amazonka/Location/CreateRouteCalculator.hs view
@@ -0,0 +1,463 @@+{-# 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.Location.CreateRouteCalculator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a route calculator resource in your AWS account.+--+-- You can send requests to a route calculator resource to estimate travel+-- time, distance, and get directions. A route calculator sources traffic+-- and road network data from your chosen data provider.+--+-- If your application is tracking or routing assets you use in your+-- business, such as delivery vehicles or employees, you may only use HERE+-- as your geolocation provider. See section 82 of the+-- <http://aws.amazon.com/service-terms AWS service terms> for more+-- details.+module Amazonka.Location.CreateRouteCalculator+  ( -- * Creating a Request+    CreateRouteCalculator (..),+    newCreateRouteCalculator,++    -- * Request Lenses+    createRouteCalculator_description,+    createRouteCalculator_pricingPlan,+    createRouteCalculator_tags,+    createRouteCalculator_calculatorName,+    createRouteCalculator_dataSource,++    -- * Destructuring the Response+    CreateRouteCalculatorResponse (..),+    newCreateRouteCalculatorResponse,++    -- * Response Lenses+    createRouteCalculatorResponse_httpStatus,+    createRouteCalculatorResponse_calculatorArn,+    createRouteCalculatorResponse_calculatorName,+    createRouteCalculatorResponse_createTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateRouteCalculator' smart constructor.+data CreateRouteCalculator = CreateRouteCalculator'+  { -- | The optional description for the route calculator resource.+    description :: Prelude.Maybe Prelude.Text,+    -- | No longer used. If included, the only allowed value is+    -- @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | Applies one or more tags to the route calculator resource. A tag is a+    -- key-value pair helps manage, identify, search, and filter your resources+    -- by labelling them.+    --+    -- -   For example: { @\"tag1\" : \"value1\"@, @\"tag2\" : \"value2\"@}+    --+    -- Format: @\"key\" : \"value\"@+    --+    -- Restrictions:+    --+    -- -   Maximum 50 tags per resource+    --+    -- -   Each resource tag must be unique with a maximum of one value.+    --+    -- -   Maximum key length: 128 Unicode characters in UTF-8+    --+    -- -   Maximum value length: 256 Unicode characters in UTF-8+    --+    -- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+    --     characters: + - = . _ : \/ \@.+    --+    -- -   Cannot use \"aws:\" as a prefix for a key.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the route calculator resource.+    --+    -- Requirements:+    --+    -- -   Can use alphanumeric characters (A–Z, a–z, 0–9) , hyphens (-),+    --     periods (.), and underscores (_).+    --+    -- -   Must be a unique Route calculator resource name.+    --+    -- -   No spaces allowed. For example, @ExampleRouteCalculator@.+    calculatorName :: Prelude.Text,+    -- | Specifies the data provider of traffic and road network data.+    --+    -- This field is case-sensitive. Enter the valid values as shown. For+    -- example, entering @HERE@ returns an error. Route calculators that use+    -- Esri as a data source only calculate routes that are shorter than 400+    -- km.+    --+    -- Valid values include:+    --+    -- -   @Esri@ – For additional information about+    --     <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri>\'s+    --     coverage in your region of interest, see+    --     <https://doc.arcgis.com/en/arcgis-online/reference/network-coverage.htm Esri details on street networks and traffic coverage>.+    --+    -- -   @Here@ – For additional information about+    --     <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies>\'+    --     coverage in your region of interest, see+    --     <https://developer.here.com/documentation/routing-api/dev_guide/topics/coverage/car-routing.html HERE car routing coverage>+    --     and+    --     <https://developer.here.com/documentation/routing-api/dev_guide/topics/coverage/truck-routing.html HERE truck routing coverage>.+    --+    -- For additional information , see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Data providers>+    -- on the /Amazon Location Service Developer Guide/.+    dataSource :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateRouteCalculator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'createRouteCalculator_description' - The optional description for the route calculator resource.+--+-- 'pricingPlan', 'createRouteCalculator_pricingPlan' - No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+--+-- 'tags', 'createRouteCalculator_tags' - Applies one or more tags to the route calculator resource. A tag is a+-- key-value pair helps manage, identify, search, and filter your resources+-- by labelling them.+--+-- -   For example: { @\"tag1\" : \"value1\"@, @\"tag2\" : \"value2\"@}+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource+--+-- -   Each resource tag must be unique with a maximum of one value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8+--+-- -   Maximum value length: 256 Unicode characters in UTF-8+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@.+--+-- -   Cannot use \"aws:\" as a prefix for a key.+--+-- 'calculatorName', 'createRouteCalculator_calculatorName' - The name of the route calculator resource.+--+-- Requirements:+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9) , hyphens (-),+--     periods (.), and underscores (_).+--+-- -   Must be a unique Route calculator resource name.+--+-- -   No spaces allowed. For example, @ExampleRouteCalculator@.+--+-- 'dataSource', 'createRouteCalculator_dataSource' - Specifies the data provider of traffic and road network data.+--+-- This field is case-sensitive. Enter the valid values as shown. For+-- example, entering @HERE@ returns an error. Route calculators that use+-- Esri as a data source only calculate routes that are shorter than 400+-- km.+--+-- Valid values include:+--+-- -   @Esri@ – For additional information about+--     <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri>\'s+--     coverage in your region of interest, see+--     <https://doc.arcgis.com/en/arcgis-online/reference/network-coverage.htm Esri details on street networks and traffic coverage>.+--+-- -   @Here@ – For additional information about+--     <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies>\'+--     coverage in your region of interest, see+--     <https://developer.here.com/documentation/routing-api/dev_guide/topics/coverage/car-routing.html HERE car routing coverage>+--     and+--     <https://developer.here.com/documentation/routing-api/dev_guide/topics/coverage/truck-routing.html HERE truck routing coverage>.+--+-- For additional information , see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Data providers>+-- on the /Amazon Location Service Developer Guide/.+newCreateRouteCalculator ::+  -- | 'calculatorName'+  Prelude.Text ->+  -- | 'dataSource'+  Prelude.Text ->+  CreateRouteCalculator+newCreateRouteCalculator+  pCalculatorName_+  pDataSource_ =+    CreateRouteCalculator'+      { description =+          Prelude.Nothing,+        pricingPlan = Prelude.Nothing,+        tags = Prelude.Nothing,+        calculatorName = pCalculatorName_,+        dataSource = pDataSource_+      }++-- | The optional description for the route calculator resource.+createRouteCalculator_description :: Lens.Lens' CreateRouteCalculator (Prelude.Maybe Prelude.Text)+createRouteCalculator_description = Lens.lens (\CreateRouteCalculator' {description} -> description) (\s@CreateRouteCalculator' {} a -> s {description = a} :: CreateRouteCalculator)++-- | No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+createRouteCalculator_pricingPlan :: Lens.Lens' CreateRouteCalculator (Prelude.Maybe PricingPlan)+createRouteCalculator_pricingPlan = Lens.lens (\CreateRouteCalculator' {pricingPlan} -> pricingPlan) (\s@CreateRouteCalculator' {} a -> s {pricingPlan = a} :: CreateRouteCalculator)++-- | Applies one or more tags to the route calculator resource. A tag is a+-- key-value pair helps manage, identify, search, and filter your resources+-- by labelling them.+--+-- -   For example: { @\"tag1\" : \"value1\"@, @\"tag2\" : \"value2\"@}+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource+--+-- -   Each resource tag must be unique with a maximum of one value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8+--+-- -   Maximum value length: 256 Unicode characters in UTF-8+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@.+--+-- -   Cannot use \"aws:\" as a prefix for a key.+createRouteCalculator_tags :: Lens.Lens' CreateRouteCalculator (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createRouteCalculator_tags = Lens.lens (\CreateRouteCalculator' {tags} -> tags) (\s@CreateRouteCalculator' {} a -> s {tags = a} :: CreateRouteCalculator) Prelude.. Lens.mapping Lens.coerced++-- | The name of the route calculator resource.+--+-- Requirements:+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9) , hyphens (-),+--     periods (.), and underscores (_).+--+-- -   Must be a unique Route calculator resource name.+--+-- -   No spaces allowed. For example, @ExampleRouteCalculator@.+createRouteCalculator_calculatorName :: Lens.Lens' CreateRouteCalculator Prelude.Text+createRouteCalculator_calculatorName = Lens.lens (\CreateRouteCalculator' {calculatorName} -> calculatorName) (\s@CreateRouteCalculator' {} a -> s {calculatorName = a} :: CreateRouteCalculator)++-- | Specifies the data provider of traffic and road network data.+--+-- This field is case-sensitive. Enter the valid values as shown. For+-- example, entering @HERE@ returns an error. Route calculators that use+-- Esri as a data source only calculate routes that are shorter than 400+-- km.+--+-- Valid values include:+--+-- -   @Esri@ – For additional information about+--     <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri>\'s+--     coverage in your region of interest, see+--     <https://doc.arcgis.com/en/arcgis-online/reference/network-coverage.htm Esri details on street networks and traffic coverage>.+--+-- -   @Here@ – For additional information about+--     <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies>\'+--     coverage in your region of interest, see+--     <https://developer.here.com/documentation/routing-api/dev_guide/topics/coverage/car-routing.html HERE car routing coverage>+--     and+--     <https://developer.here.com/documentation/routing-api/dev_guide/topics/coverage/truck-routing.html HERE truck routing coverage>.+--+-- For additional information , see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Data providers>+-- on the /Amazon Location Service Developer Guide/.+createRouteCalculator_dataSource :: Lens.Lens' CreateRouteCalculator Prelude.Text+createRouteCalculator_dataSource = Lens.lens (\CreateRouteCalculator' {dataSource} -> dataSource) (\s@CreateRouteCalculator' {} a -> s {dataSource = a} :: CreateRouteCalculator)++instance Core.AWSRequest CreateRouteCalculator where+  type+    AWSResponse CreateRouteCalculator =+      CreateRouteCalculatorResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateRouteCalculatorResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CalculatorArn")+            Prelude.<*> (x Data..:> "CalculatorName")+            Prelude.<*> (x Data..:> "CreateTime")+      )++instance Prelude.Hashable CreateRouteCalculator where+  hashWithSalt _salt CreateRouteCalculator' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` calculatorName+      `Prelude.hashWithSalt` dataSource++instance Prelude.NFData CreateRouteCalculator where+  rnf CreateRouteCalculator' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf calculatorName+      `Prelude.seq` Prelude.rnf dataSource++instance Data.ToHeaders CreateRouteCalculator where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateRouteCalculator where+  toJSON CreateRouteCalculator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("CalculatorName" Data..= calculatorName),+            Prelude.Just ("DataSource" Data..= dataSource)+          ]+      )++instance Data.ToPath CreateRouteCalculator where+  toPath = Prelude.const "/routes/v0/calculators"++instance Data.ToQuery CreateRouteCalculator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateRouteCalculatorResponse' smart constructor.+data CreateRouteCalculatorResponse = CreateRouteCalculatorResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The Amazon Resource Name (ARN) for the route calculator resource. Use+    -- the ARN when you specify a resource across all AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:route-calculator\/ExampleCalculator@+    calculatorArn :: Prelude.Text,+    -- | The name of the route calculator resource.+    --+    -- -   For example, @ExampleRouteCalculator@.+    calculatorName :: Prelude.Text,+    -- | The timestamp when the route calculator resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    --+    -- -   For example, @2020–07-2T12:15:20.000Z+01:00@+    createTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateRouteCalculatorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createRouteCalculatorResponse_httpStatus' - The response's http status code.+--+-- 'calculatorArn', 'createRouteCalculatorResponse_calculatorArn' - The Amazon Resource Name (ARN) for the route calculator resource. Use+-- the ARN when you specify a resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:route-calculator\/ExampleCalculator@+--+-- 'calculatorName', 'createRouteCalculatorResponse_calculatorName' - The name of the route calculator resource.+--+-- -   For example, @ExampleRouteCalculator@.+--+-- 'createTime', 'createRouteCalculatorResponse_createTime' - The timestamp when the route calculator resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- -   For example, @2020–07-2T12:15:20.000Z+01:00@+newCreateRouteCalculatorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'calculatorArn'+  Prelude.Text ->+  -- | 'calculatorName'+  Prelude.Text ->+  -- | 'createTime'+  Prelude.UTCTime ->+  CreateRouteCalculatorResponse+newCreateRouteCalculatorResponse+  pHttpStatus_+  pCalculatorArn_+  pCalculatorName_+  pCreateTime_ =+    CreateRouteCalculatorResponse'+      { httpStatus =+          pHttpStatus_,+        calculatorArn = pCalculatorArn_,+        calculatorName = pCalculatorName_,+        createTime = Data._Time Lens.# pCreateTime_+      }++-- | The response's http status code.+createRouteCalculatorResponse_httpStatus :: Lens.Lens' CreateRouteCalculatorResponse Prelude.Int+createRouteCalculatorResponse_httpStatus = Lens.lens (\CreateRouteCalculatorResponse' {httpStatus} -> httpStatus) (\s@CreateRouteCalculatorResponse' {} a -> s {httpStatus = a} :: CreateRouteCalculatorResponse)++-- | The Amazon Resource Name (ARN) for the route calculator resource. Use+-- the ARN when you specify a resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:route-calculator\/ExampleCalculator@+createRouteCalculatorResponse_calculatorArn :: Lens.Lens' CreateRouteCalculatorResponse Prelude.Text+createRouteCalculatorResponse_calculatorArn = Lens.lens (\CreateRouteCalculatorResponse' {calculatorArn} -> calculatorArn) (\s@CreateRouteCalculatorResponse' {} a -> s {calculatorArn = a} :: CreateRouteCalculatorResponse)++-- | The name of the route calculator resource.+--+-- -   For example, @ExampleRouteCalculator@.+createRouteCalculatorResponse_calculatorName :: Lens.Lens' CreateRouteCalculatorResponse Prelude.Text+createRouteCalculatorResponse_calculatorName = Lens.lens (\CreateRouteCalculatorResponse' {calculatorName} -> calculatorName) (\s@CreateRouteCalculatorResponse' {} a -> s {calculatorName = a} :: CreateRouteCalculatorResponse)++-- | The timestamp when the route calculator resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- -   For example, @2020–07-2T12:15:20.000Z+01:00@+createRouteCalculatorResponse_createTime :: Lens.Lens' CreateRouteCalculatorResponse Prelude.UTCTime+createRouteCalculatorResponse_createTime = Lens.lens (\CreateRouteCalculatorResponse' {createTime} -> createTime) (\s@CreateRouteCalculatorResponse' {} a -> s {createTime = a} :: CreateRouteCalculatorResponse) Prelude.. Data._Time++instance Prelude.NFData CreateRouteCalculatorResponse where+  rnf CreateRouteCalculatorResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf calculatorArn+      `Prelude.seq` Prelude.rnf calculatorName+      `Prelude.seq` Prelude.rnf createTime
+ gen/Amazonka/Location/CreateTracker.hs view
@@ -0,0 +1,478 @@+{-# 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.Location.CreateTracker+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a tracker resource in your AWS account, which lets you retrieve+-- current and historical location of devices.+module Amazonka.Location.CreateTracker+  ( -- * Creating a Request+    CreateTracker (..),+    newCreateTracker,++    -- * Request Lenses+    createTracker_description,+    createTracker_kmsKeyId,+    createTracker_positionFiltering,+    createTracker_pricingPlan,+    createTracker_pricingPlanDataSource,+    createTracker_tags,+    createTracker_trackerName,++    -- * Destructuring the Response+    CreateTrackerResponse (..),+    newCreateTrackerResponse,++    -- * Response Lenses+    createTrackerResponse_httpStatus,+    createTrackerResponse_createTime,+    createTrackerResponse_trackerArn,+    createTrackerResponse_trackerName,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateTracker' smart constructor.+data CreateTracker = CreateTracker'+  { -- | An optional description for the tracker resource.+    description :: Prelude.Maybe Prelude.Text,+    -- | A key identifier for an+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>.+    -- Enter a key ID, key ARN, alias name, or alias ARN.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | Specifies the position filtering for the tracker resource.+    --+    -- Valid values:+    --+    -- -   @TimeBased@ - Location updates are evaluated against linked geofence+    --     collections, but not every location update is stored. If your update+    --     frequency is more often than 30 seconds, only one update per 30+    --     seconds is stored for each unique device ID.+    --+    -- -   @DistanceBased@ - If the device has moved less than 30 m (98.4 ft),+    --     location updates are ignored. Location updates within this area are+    --     neither evaluated against linked geofence collections, nor stored.+    --     This helps control costs by reducing the number of geofence+    --     evaluations and historical device positions to paginate through.+    --     Distance-based filtering can also reduce the effects of GPS noise+    --     when displaying device trajectories on a map.+    --+    -- -   @AccuracyBased@ - If the device has moved less than the measured+    --     accuracy, location updates are ignored. For example, if two+    --     consecutive updates from a device have a horizontal accuracy of 5 m+    --     and 10 m, the second update is ignored if the device has moved less+    --     than 15 m. Ignored location updates are neither evaluated against+    --     linked geofence collections, nor stored. This can reduce the effects+    --     of GPS noise when displaying device trajectories on a map, and can+    --     help control your costs by reducing the number of geofence+    --     evaluations.+    --+    -- This field is optional. If not specified, the default value is+    -- @TimeBased@.+    positionFiltering :: Prelude.Maybe PositionFiltering,+    -- | No longer used. If included, the only allowed value is+    -- @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | This parameter is no longer used.+    pricingPlanDataSource :: Prelude.Maybe Prelude.Text,+    -- | Applies one or more tags to the tracker resource. A tag is a key-value+    -- pair helps manage, identify, search, and filter your resources by+    -- labelling them.+    --+    -- Format: @\"key\" : \"value\"@+    --+    -- Restrictions:+    --+    -- -   Maximum 50 tags per resource+    --+    -- -   Each resource tag must be unique with a maximum of one value.+    --+    -- -   Maximum key length: 128 Unicode characters in UTF-8+    --+    -- -   Maximum value length: 256 Unicode characters in UTF-8+    --+    -- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+    --     characters: + - = . _ : \/ \@.+    --+    -- -   Cannot use \"aws:\" as a prefix for a key.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name for the tracker resource.+    --+    -- Requirements:+    --+    -- -   Contain only alphanumeric characters (A-Z, a-z, 0-9) , hyphens (-),+    --     periods (.), and underscores (_).+    --+    -- -   Must be a unique tracker resource name.+    --+    -- -   No spaces allowed. For example, @ExampleTracker@.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateTracker' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'createTracker_description' - An optional description for the tracker resource.+--+-- 'kmsKeyId', 'createTracker_kmsKeyId' - A key identifier for an+-- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>.+-- Enter a key ID, key ARN, alias name, or alias ARN.+--+-- 'positionFiltering', 'createTracker_positionFiltering' - Specifies the position filtering for the tracker resource.+--+-- Valid values:+--+-- -   @TimeBased@ - Location updates are evaluated against linked geofence+--     collections, but not every location update is stored. If your update+--     frequency is more often than 30 seconds, only one update per 30+--     seconds is stored for each unique device ID.+--+-- -   @DistanceBased@ - If the device has moved less than 30 m (98.4 ft),+--     location updates are ignored. Location updates within this area are+--     neither evaluated against linked geofence collections, nor stored.+--     This helps control costs by reducing the number of geofence+--     evaluations and historical device positions to paginate through.+--     Distance-based filtering can also reduce the effects of GPS noise+--     when displaying device trajectories on a map.+--+-- -   @AccuracyBased@ - If the device has moved less than the measured+--     accuracy, location updates are ignored. For example, if two+--     consecutive updates from a device have a horizontal accuracy of 5 m+--     and 10 m, the second update is ignored if the device has moved less+--     than 15 m. Ignored location updates are neither evaluated against+--     linked geofence collections, nor stored. This can reduce the effects+--     of GPS noise when displaying device trajectories on a map, and can+--     help control your costs by reducing the number of geofence+--     evaluations.+--+-- This field is optional. If not specified, the default value is+-- @TimeBased@.+--+-- 'pricingPlan', 'createTracker_pricingPlan' - No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+--+-- 'pricingPlanDataSource', 'createTracker_pricingPlanDataSource' - This parameter is no longer used.+--+-- 'tags', 'createTracker_tags' - Applies one or more tags to the tracker resource. A tag is a key-value+-- pair helps manage, identify, search, and filter your resources by+-- labelling them.+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource+--+-- -   Each resource tag must be unique with a maximum of one value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8+--+-- -   Maximum value length: 256 Unicode characters in UTF-8+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@.+--+-- -   Cannot use \"aws:\" as a prefix for a key.+--+-- 'trackerName', 'createTracker_trackerName' - The name for the tracker resource.+--+-- Requirements:+--+-- -   Contain only alphanumeric characters (A-Z, a-z, 0-9) , hyphens (-),+--     periods (.), and underscores (_).+--+-- -   Must be a unique tracker resource name.+--+-- -   No spaces allowed. For example, @ExampleTracker@.+newCreateTracker ::+  -- | 'trackerName'+  Prelude.Text ->+  CreateTracker+newCreateTracker pTrackerName_ =+  CreateTracker'+    { description = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      positionFiltering = Prelude.Nothing,+      pricingPlan = Prelude.Nothing,+      pricingPlanDataSource = Prelude.Nothing,+      tags = Prelude.Nothing,+      trackerName = pTrackerName_+    }++-- | An optional description for the tracker resource.+createTracker_description :: Lens.Lens' CreateTracker (Prelude.Maybe Prelude.Text)+createTracker_description = Lens.lens (\CreateTracker' {description} -> description) (\s@CreateTracker' {} a -> s {description = a} :: CreateTracker)++-- | A key identifier for an+-- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>.+-- Enter a key ID, key ARN, alias name, or alias ARN.+createTracker_kmsKeyId :: Lens.Lens' CreateTracker (Prelude.Maybe Prelude.Text)+createTracker_kmsKeyId = Lens.lens (\CreateTracker' {kmsKeyId} -> kmsKeyId) (\s@CreateTracker' {} a -> s {kmsKeyId = a} :: CreateTracker)++-- | Specifies the position filtering for the tracker resource.+--+-- Valid values:+--+-- -   @TimeBased@ - Location updates are evaluated against linked geofence+--     collections, but not every location update is stored. If your update+--     frequency is more often than 30 seconds, only one update per 30+--     seconds is stored for each unique device ID.+--+-- -   @DistanceBased@ - If the device has moved less than 30 m (98.4 ft),+--     location updates are ignored. Location updates within this area are+--     neither evaluated against linked geofence collections, nor stored.+--     This helps control costs by reducing the number of geofence+--     evaluations and historical device positions to paginate through.+--     Distance-based filtering can also reduce the effects of GPS noise+--     when displaying device trajectories on a map.+--+-- -   @AccuracyBased@ - If the device has moved less than the measured+--     accuracy, location updates are ignored. For example, if two+--     consecutive updates from a device have a horizontal accuracy of 5 m+--     and 10 m, the second update is ignored if the device has moved less+--     than 15 m. Ignored location updates are neither evaluated against+--     linked geofence collections, nor stored. This can reduce the effects+--     of GPS noise when displaying device trajectories on a map, and can+--     help control your costs by reducing the number of geofence+--     evaluations.+--+-- This field is optional. If not specified, the default value is+-- @TimeBased@.+createTracker_positionFiltering :: Lens.Lens' CreateTracker (Prelude.Maybe PositionFiltering)+createTracker_positionFiltering = Lens.lens (\CreateTracker' {positionFiltering} -> positionFiltering) (\s@CreateTracker' {} a -> s {positionFiltering = a} :: CreateTracker)++-- | No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+createTracker_pricingPlan :: Lens.Lens' CreateTracker (Prelude.Maybe PricingPlan)+createTracker_pricingPlan = Lens.lens (\CreateTracker' {pricingPlan} -> pricingPlan) (\s@CreateTracker' {} a -> s {pricingPlan = a} :: CreateTracker)++-- | This parameter is no longer used.+createTracker_pricingPlanDataSource :: Lens.Lens' CreateTracker (Prelude.Maybe Prelude.Text)+createTracker_pricingPlanDataSource = Lens.lens (\CreateTracker' {pricingPlanDataSource} -> pricingPlanDataSource) (\s@CreateTracker' {} a -> s {pricingPlanDataSource = a} :: CreateTracker)++-- | Applies one or more tags to the tracker resource. A tag is a key-value+-- pair helps manage, identify, search, and filter your resources by+-- labelling them.+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource+--+-- -   Each resource tag must be unique with a maximum of one value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8+--+-- -   Maximum value length: 256 Unicode characters in UTF-8+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@.+--+-- -   Cannot use \"aws:\" as a prefix for a key.+createTracker_tags :: Lens.Lens' CreateTracker (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createTracker_tags = Lens.lens (\CreateTracker' {tags} -> tags) (\s@CreateTracker' {} a -> s {tags = a} :: CreateTracker) Prelude.. Lens.mapping Lens.coerced++-- | The name for the tracker resource.+--+-- Requirements:+--+-- -   Contain only alphanumeric characters (A-Z, a-z, 0-9) , hyphens (-),+--     periods (.), and underscores (_).+--+-- -   Must be a unique tracker resource name.+--+-- -   No spaces allowed. For example, @ExampleTracker@.+createTracker_trackerName :: Lens.Lens' CreateTracker Prelude.Text+createTracker_trackerName = Lens.lens (\CreateTracker' {trackerName} -> trackerName) (\s@CreateTracker' {} a -> s {trackerName = a} :: CreateTracker)++instance Core.AWSRequest CreateTracker where+  type+    AWSResponse CreateTracker =+      CreateTrackerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateTrackerResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CreateTime")+            Prelude.<*> (x Data..:> "TrackerArn")+            Prelude.<*> (x Data..:> "TrackerName")+      )++instance Prelude.Hashable CreateTracker where+  hashWithSalt _salt CreateTracker' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` positionFiltering+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` pricingPlanDataSource+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` trackerName++instance Prelude.NFData CreateTracker where+  rnf CreateTracker' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf positionFiltering+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf pricingPlanDataSource+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf trackerName++instance Data.ToHeaders CreateTracker where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateTracker where+  toJSON CreateTracker' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("PositionFiltering" Data..=)+              Prelude.<$> positionFiltering,+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan,+            ("PricingPlanDataSource" Data..=)+              Prelude.<$> pricingPlanDataSource,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("TrackerName" Data..= trackerName)+          ]+      )++instance Data.ToPath CreateTracker where+  toPath = Prelude.const "/tracking/v0/trackers"++instance Data.ToQuery CreateTracker where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateTrackerResponse' smart constructor.+data CreateTrackerResponse = CreateTrackerResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The timestamp for when the tracker resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    createTime :: Data.ISO8601,+    -- | The Amazon Resource Name (ARN) for the tracker resource. Used when you+    -- need to specify a resource across all AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:tracker\/ExampleTracker@+    trackerArn :: Prelude.Text,+    -- | The name of the tracker resource.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateTrackerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createTrackerResponse_httpStatus' - The response's http status code.+--+-- 'createTime', 'createTrackerResponse_createTime' - The timestamp for when the tracker resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'trackerArn', 'createTrackerResponse_trackerArn' - The Amazon Resource Name (ARN) for the tracker resource. Used when you+-- need to specify a resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:tracker\/ExampleTracker@+--+-- 'trackerName', 'createTrackerResponse_trackerName' - The name of the tracker resource.+newCreateTrackerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'trackerArn'+  Prelude.Text ->+  -- | 'trackerName'+  Prelude.Text ->+  CreateTrackerResponse+newCreateTrackerResponse+  pHttpStatus_+  pCreateTime_+  pTrackerArn_+  pTrackerName_ =+    CreateTrackerResponse'+      { httpStatus = pHttpStatus_,+        createTime = Data._Time Lens.# pCreateTime_,+        trackerArn = pTrackerArn_,+        trackerName = pTrackerName_+      }++-- | The response's http status code.+createTrackerResponse_httpStatus :: Lens.Lens' CreateTrackerResponse Prelude.Int+createTrackerResponse_httpStatus = Lens.lens (\CreateTrackerResponse' {httpStatus} -> httpStatus) (\s@CreateTrackerResponse' {} a -> s {httpStatus = a} :: CreateTrackerResponse)++-- | The timestamp for when the tracker resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+createTrackerResponse_createTime :: Lens.Lens' CreateTrackerResponse Prelude.UTCTime+createTrackerResponse_createTime = Lens.lens (\CreateTrackerResponse' {createTime} -> createTime) (\s@CreateTrackerResponse' {} a -> s {createTime = a} :: CreateTrackerResponse) Prelude.. Data._Time++-- | The Amazon Resource Name (ARN) for the tracker resource. Used when you+-- need to specify a resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:tracker\/ExampleTracker@+createTrackerResponse_trackerArn :: Lens.Lens' CreateTrackerResponse Prelude.Text+createTrackerResponse_trackerArn = Lens.lens (\CreateTrackerResponse' {trackerArn} -> trackerArn) (\s@CreateTrackerResponse' {} a -> s {trackerArn = a} :: CreateTrackerResponse)++-- | The name of the tracker resource.+createTrackerResponse_trackerName :: Lens.Lens' CreateTrackerResponse Prelude.Text+createTrackerResponse_trackerName = Lens.lens (\CreateTrackerResponse' {trackerName} -> trackerName) (\s@CreateTrackerResponse' {} a -> s {trackerName = a} :: CreateTrackerResponse)++instance Prelude.NFData CreateTrackerResponse where+  rnf CreateTrackerResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf trackerArn+      `Prelude.seq` Prelude.rnf trackerName
+ gen/Amazonka/Location/DeleteGeofenceCollection.hs view
@@ -0,0 +1,160 @@+{-# 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.Location.DeleteGeofenceCollection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a geofence collection from your AWS account.+--+-- This operation deletes the resource permanently. If the geofence+-- collection is the target of a tracker resource, the devices will no+-- longer be monitored.+module Amazonka.Location.DeleteGeofenceCollection+  ( -- * Creating a Request+    DeleteGeofenceCollection (..),+    newDeleteGeofenceCollection,++    -- * Request Lenses+    deleteGeofenceCollection_collectionName,++    -- * Destructuring the Response+    DeleteGeofenceCollectionResponse (..),+    newDeleteGeofenceCollectionResponse,++    -- * Response Lenses+    deleteGeofenceCollectionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteGeofenceCollection' smart constructor.+data DeleteGeofenceCollection = DeleteGeofenceCollection'+  { -- | The name of the geofence collection to be deleted.+    collectionName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteGeofenceCollection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'collectionName', 'deleteGeofenceCollection_collectionName' - The name of the geofence collection to be deleted.+newDeleteGeofenceCollection ::+  -- | 'collectionName'+  Prelude.Text ->+  DeleteGeofenceCollection+newDeleteGeofenceCollection pCollectionName_ =+  DeleteGeofenceCollection'+    { collectionName =+        pCollectionName_+    }++-- | The name of the geofence collection to be deleted.+deleteGeofenceCollection_collectionName :: Lens.Lens' DeleteGeofenceCollection Prelude.Text+deleteGeofenceCollection_collectionName = Lens.lens (\DeleteGeofenceCollection' {collectionName} -> collectionName) (\s@DeleteGeofenceCollection' {} a -> s {collectionName = a} :: DeleteGeofenceCollection)++instance Core.AWSRequest DeleteGeofenceCollection where+  type+    AWSResponse DeleteGeofenceCollection =+      DeleteGeofenceCollectionResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteGeofenceCollectionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteGeofenceCollection where+  hashWithSalt _salt DeleteGeofenceCollection' {..} =+    _salt `Prelude.hashWithSalt` collectionName++instance Prelude.NFData DeleteGeofenceCollection where+  rnf DeleteGeofenceCollection' {..} =+    Prelude.rnf collectionName++instance Data.ToHeaders DeleteGeofenceCollection where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteGeofenceCollection where+  toPath DeleteGeofenceCollection' {..} =+    Prelude.mconcat+      [ "/geofencing/v0/collections/",+        Data.toBS collectionName+      ]++instance Data.ToQuery DeleteGeofenceCollection where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteGeofenceCollectionResponse' smart constructor.+data DeleteGeofenceCollectionResponse = DeleteGeofenceCollectionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteGeofenceCollectionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteGeofenceCollectionResponse_httpStatus' - The response's http status code.+newDeleteGeofenceCollectionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteGeofenceCollectionResponse+newDeleteGeofenceCollectionResponse pHttpStatus_ =+  DeleteGeofenceCollectionResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteGeofenceCollectionResponse_httpStatus :: Lens.Lens' DeleteGeofenceCollectionResponse Prelude.Int+deleteGeofenceCollectionResponse_httpStatus = Lens.lens (\DeleteGeofenceCollectionResponse' {httpStatus} -> httpStatus) (\s@DeleteGeofenceCollectionResponse' {} a -> s {httpStatus = a} :: DeleteGeofenceCollectionResponse)++instance+  Prelude.NFData+    DeleteGeofenceCollectionResponse+  where+  rnf DeleteGeofenceCollectionResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Location/DeleteMap.hs view
@@ -0,0 +1,144 @@+{-# 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.Location.DeleteMap+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a map resource from your AWS account.+--+-- This operation deletes the resource permanently. If the map is being+-- used in an application, the map may not render.+module Amazonka.Location.DeleteMap+  ( -- * Creating a Request+    DeleteMap (..),+    newDeleteMap,++    -- * Request Lenses+    deleteMap_mapName,++    -- * Destructuring the Response+    DeleteMapResponse (..),+    newDeleteMapResponse,++    -- * Response Lenses+    deleteMapResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteMap' smart constructor.+data DeleteMap = DeleteMap'+  { -- | The name of the map resource to be deleted.+    mapName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteMap' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'mapName', 'deleteMap_mapName' - The name of the map resource to be deleted.+newDeleteMap ::+  -- | 'mapName'+  Prelude.Text ->+  DeleteMap+newDeleteMap pMapName_ =+  DeleteMap' {mapName = pMapName_}++-- | The name of the map resource to be deleted.+deleteMap_mapName :: Lens.Lens' DeleteMap Prelude.Text+deleteMap_mapName = Lens.lens (\DeleteMap' {mapName} -> mapName) (\s@DeleteMap' {} a -> s {mapName = a} :: DeleteMap)++instance Core.AWSRequest DeleteMap where+  type AWSResponse DeleteMap = DeleteMapResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteMapResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteMap where+  hashWithSalt _salt DeleteMap' {..} =+    _salt `Prelude.hashWithSalt` mapName++instance Prelude.NFData DeleteMap where+  rnf DeleteMap' {..} = Prelude.rnf mapName++instance Data.ToHeaders DeleteMap where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteMap where+  toPath DeleteMap' {..} =+    Prelude.mconcat+      ["/maps/v0/maps/", Data.toBS mapName]++instance Data.ToQuery DeleteMap where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteMapResponse' smart constructor.+data DeleteMapResponse = DeleteMapResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteMapResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteMapResponse_httpStatus' - The response's http status code.+newDeleteMapResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteMapResponse+newDeleteMapResponse pHttpStatus_ =+  DeleteMapResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteMapResponse_httpStatus :: Lens.Lens' DeleteMapResponse Prelude.Int+deleteMapResponse_httpStatus = Lens.lens (\DeleteMapResponse' {httpStatus} -> httpStatus) (\s@DeleteMapResponse' {} a -> s {httpStatus = a} :: DeleteMapResponse)++instance Prelude.NFData DeleteMapResponse where+  rnf DeleteMapResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/Location/DeletePlaceIndex.hs view
@@ -0,0 +1,149 @@+{-# 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.Location.DeletePlaceIndex+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a place index resource from your AWS account.+--+-- This operation deletes the resource permanently.+module Amazonka.Location.DeletePlaceIndex+  ( -- * Creating a Request+    DeletePlaceIndex (..),+    newDeletePlaceIndex,++    -- * Request Lenses+    deletePlaceIndex_indexName,++    -- * Destructuring the Response+    DeletePlaceIndexResponse (..),+    newDeletePlaceIndexResponse,++    -- * Response Lenses+    deletePlaceIndexResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeletePlaceIndex' smart constructor.+data DeletePlaceIndex = DeletePlaceIndex'+  { -- | The name of the place index resource to be deleted.+    indexName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeletePlaceIndex' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'indexName', 'deletePlaceIndex_indexName' - The name of the place index resource to be deleted.+newDeletePlaceIndex ::+  -- | 'indexName'+  Prelude.Text ->+  DeletePlaceIndex+newDeletePlaceIndex pIndexName_ =+  DeletePlaceIndex' {indexName = pIndexName_}++-- | The name of the place index resource to be deleted.+deletePlaceIndex_indexName :: Lens.Lens' DeletePlaceIndex Prelude.Text+deletePlaceIndex_indexName = Lens.lens (\DeletePlaceIndex' {indexName} -> indexName) (\s@DeletePlaceIndex' {} a -> s {indexName = a} :: DeletePlaceIndex)++instance Core.AWSRequest DeletePlaceIndex where+  type+    AWSResponse DeletePlaceIndex =+      DeletePlaceIndexResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeletePlaceIndexResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeletePlaceIndex where+  hashWithSalt _salt DeletePlaceIndex' {..} =+    _salt `Prelude.hashWithSalt` indexName++instance Prelude.NFData DeletePlaceIndex where+  rnf DeletePlaceIndex' {..} = Prelude.rnf indexName++instance Data.ToHeaders DeletePlaceIndex where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeletePlaceIndex where+  toPath DeletePlaceIndex' {..} =+    Prelude.mconcat+      ["/places/v0/indexes/", Data.toBS indexName]++instance Data.ToQuery DeletePlaceIndex where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeletePlaceIndexResponse' smart constructor.+data DeletePlaceIndexResponse = DeletePlaceIndexResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeletePlaceIndexResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deletePlaceIndexResponse_httpStatus' - The response's http status code.+newDeletePlaceIndexResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeletePlaceIndexResponse+newDeletePlaceIndexResponse pHttpStatus_ =+  DeletePlaceIndexResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deletePlaceIndexResponse_httpStatus :: Lens.Lens' DeletePlaceIndexResponse Prelude.Int+deletePlaceIndexResponse_httpStatus = Lens.lens (\DeletePlaceIndexResponse' {httpStatus} -> httpStatus) (\s@DeletePlaceIndexResponse' {} a -> s {httpStatus = a} :: DeletePlaceIndexResponse)++instance Prelude.NFData DeletePlaceIndexResponse where+  rnf DeletePlaceIndexResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Location/DeleteRouteCalculator.hs view
@@ -0,0 +1,153 @@+{-# 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.Location.DeleteRouteCalculator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a route calculator resource from your AWS account.+--+-- This operation deletes the resource permanently.+module Amazonka.Location.DeleteRouteCalculator+  ( -- * Creating a Request+    DeleteRouteCalculator (..),+    newDeleteRouteCalculator,++    -- * Request Lenses+    deleteRouteCalculator_calculatorName,++    -- * Destructuring the Response+    DeleteRouteCalculatorResponse (..),+    newDeleteRouteCalculatorResponse,++    -- * Response Lenses+    deleteRouteCalculatorResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteRouteCalculator' smart constructor.+data DeleteRouteCalculator = DeleteRouteCalculator'+  { -- | The name of the route calculator resource to be deleted.+    calculatorName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRouteCalculator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'calculatorName', 'deleteRouteCalculator_calculatorName' - The name of the route calculator resource to be deleted.+newDeleteRouteCalculator ::+  -- | 'calculatorName'+  Prelude.Text ->+  DeleteRouteCalculator+newDeleteRouteCalculator pCalculatorName_ =+  DeleteRouteCalculator'+    { calculatorName =+        pCalculatorName_+    }++-- | The name of the route calculator resource to be deleted.+deleteRouteCalculator_calculatorName :: Lens.Lens' DeleteRouteCalculator Prelude.Text+deleteRouteCalculator_calculatorName = Lens.lens (\DeleteRouteCalculator' {calculatorName} -> calculatorName) (\s@DeleteRouteCalculator' {} a -> s {calculatorName = a} :: DeleteRouteCalculator)++instance Core.AWSRequest DeleteRouteCalculator where+  type+    AWSResponse DeleteRouteCalculator =+      DeleteRouteCalculatorResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteRouteCalculatorResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteRouteCalculator where+  hashWithSalt _salt DeleteRouteCalculator' {..} =+    _salt `Prelude.hashWithSalt` calculatorName++instance Prelude.NFData DeleteRouteCalculator where+  rnf DeleteRouteCalculator' {..} =+    Prelude.rnf calculatorName++instance Data.ToHeaders DeleteRouteCalculator where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteRouteCalculator where+  toPath DeleteRouteCalculator' {..} =+    Prelude.mconcat+      ["/routes/v0/calculators/", Data.toBS calculatorName]++instance Data.ToQuery DeleteRouteCalculator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteRouteCalculatorResponse' smart constructor.+data DeleteRouteCalculatorResponse = DeleteRouteCalculatorResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRouteCalculatorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteRouteCalculatorResponse_httpStatus' - The response's http status code.+newDeleteRouteCalculatorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteRouteCalculatorResponse+newDeleteRouteCalculatorResponse pHttpStatus_ =+  DeleteRouteCalculatorResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteRouteCalculatorResponse_httpStatus :: Lens.Lens' DeleteRouteCalculatorResponse Prelude.Int+deleteRouteCalculatorResponse_httpStatus = Lens.lens (\DeleteRouteCalculatorResponse' {httpStatus} -> httpStatus) (\s@DeleteRouteCalculatorResponse' {} a -> s {httpStatus = a} :: DeleteRouteCalculatorResponse)++instance Prelude.NFData DeleteRouteCalculatorResponse where+  rnf DeleteRouteCalculatorResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Location/DeleteTracker.hs view
@@ -0,0 +1,148 @@+{-# 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.Location.DeleteTracker+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a tracker resource from your AWS account.+--+-- This operation deletes the resource permanently. If the tracker resource+-- is in use, you may encounter an error. Make sure that the target+-- resource isn\'t a dependency for your applications.+module Amazonka.Location.DeleteTracker+  ( -- * Creating a Request+    DeleteTracker (..),+    newDeleteTracker,++    -- * Request Lenses+    deleteTracker_trackerName,++    -- * Destructuring the Response+    DeleteTrackerResponse (..),+    newDeleteTrackerResponse,++    -- * Response Lenses+    deleteTrackerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteTracker' smart constructor.+data DeleteTracker = DeleteTracker'+  { -- | The name of the tracker resource to be deleted.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteTracker' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'trackerName', 'deleteTracker_trackerName' - The name of the tracker resource to be deleted.+newDeleteTracker ::+  -- | 'trackerName'+  Prelude.Text ->+  DeleteTracker+newDeleteTracker pTrackerName_ =+  DeleteTracker' {trackerName = pTrackerName_}++-- | The name of the tracker resource to be deleted.+deleteTracker_trackerName :: Lens.Lens' DeleteTracker Prelude.Text+deleteTracker_trackerName = Lens.lens (\DeleteTracker' {trackerName} -> trackerName) (\s@DeleteTracker' {} a -> s {trackerName = a} :: DeleteTracker)++instance Core.AWSRequest DeleteTracker where+  type+    AWSResponse DeleteTracker =+      DeleteTrackerResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteTrackerResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteTracker where+  hashWithSalt _salt DeleteTracker' {..} =+    _salt `Prelude.hashWithSalt` trackerName++instance Prelude.NFData DeleteTracker where+  rnf DeleteTracker' {..} = Prelude.rnf trackerName++instance Data.ToHeaders DeleteTracker where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteTracker where+  toPath DeleteTracker' {..} =+    Prelude.mconcat+      ["/tracking/v0/trackers/", Data.toBS trackerName]++instance Data.ToQuery DeleteTracker where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteTrackerResponse' smart constructor.+data DeleteTrackerResponse = DeleteTrackerResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteTrackerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteTrackerResponse_httpStatus' - The response's http status code.+newDeleteTrackerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteTrackerResponse+newDeleteTrackerResponse pHttpStatus_ =+  DeleteTrackerResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteTrackerResponse_httpStatus :: Lens.Lens' DeleteTrackerResponse Prelude.Int+deleteTrackerResponse_httpStatus = Lens.lens (\DeleteTrackerResponse' {httpStatus} -> httpStatus) (\s@DeleteTrackerResponse' {} a -> s {httpStatus = a} :: DeleteTrackerResponse)++instance Prelude.NFData DeleteTrackerResponse where+  rnf DeleteTrackerResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Location/DescribeGeofenceCollection.hs view
@@ -0,0 +1,312 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.DescribeGeofenceCollection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the geofence collection details.+module Amazonka.Location.DescribeGeofenceCollection+  ( -- * Creating a Request+    DescribeGeofenceCollection (..),+    newDescribeGeofenceCollection,++    -- * Request Lenses+    describeGeofenceCollection_collectionName,++    -- * Destructuring the Response+    DescribeGeofenceCollectionResponse (..),+    newDescribeGeofenceCollectionResponse,++    -- * Response Lenses+    describeGeofenceCollectionResponse_kmsKeyId,+    describeGeofenceCollectionResponse_pricingPlan,+    describeGeofenceCollectionResponse_pricingPlanDataSource,+    describeGeofenceCollectionResponse_tags,+    describeGeofenceCollectionResponse_httpStatus,+    describeGeofenceCollectionResponse_collectionArn,+    describeGeofenceCollectionResponse_collectionName,+    describeGeofenceCollectionResponse_createTime,+    describeGeofenceCollectionResponse_description,+    describeGeofenceCollectionResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeGeofenceCollection' smart constructor.+data DescribeGeofenceCollection = DescribeGeofenceCollection'+  { -- | The name of the geofence collection.+    collectionName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeGeofenceCollection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'collectionName', 'describeGeofenceCollection_collectionName' - The name of the geofence collection.+newDescribeGeofenceCollection ::+  -- | 'collectionName'+  Prelude.Text ->+  DescribeGeofenceCollection+newDescribeGeofenceCollection pCollectionName_ =+  DescribeGeofenceCollection'+    { collectionName =+        pCollectionName_+    }++-- | The name of the geofence collection.+describeGeofenceCollection_collectionName :: Lens.Lens' DescribeGeofenceCollection Prelude.Text+describeGeofenceCollection_collectionName = Lens.lens (\DescribeGeofenceCollection' {collectionName} -> collectionName) (\s@DescribeGeofenceCollection' {} a -> s {collectionName = a} :: DescribeGeofenceCollection)++instance Core.AWSRequest DescribeGeofenceCollection where+  type+    AWSResponse DescribeGeofenceCollection =+      DescribeGeofenceCollectionResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeGeofenceCollectionResponse'+            Prelude.<$> (x Data..?> "KmsKeyId")+            Prelude.<*> (x Data..?> "PricingPlan")+            Prelude.<*> (x Data..?> "PricingPlanDataSource")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CollectionArn")+            Prelude.<*> (x Data..:> "CollectionName")+            Prelude.<*> (x Data..:> "CreateTime")+            Prelude.<*> (x Data..:> "Description")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable DescribeGeofenceCollection where+  hashWithSalt _salt DescribeGeofenceCollection' {..} =+    _salt `Prelude.hashWithSalt` collectionName++instance Prelude.NFData DescribeGeofenceCollection where+  rnf DescribeGeofenceCollection' {..} =+    Prelude.rnf collectionName++instance Data.ToHeaders DescribeGeofenceCollection where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeGeofenceCollection where+  toPath DescribeGeofenceCollection' {..} =+    Prelude.mconcat+      [ "/geofencing/v0/collections/",+        Data.toBS collectionName+      ]++instance Data.ToQuery DescribeGeofenceCollection where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeGeofenceCollectionResponse' smart constructor.+data DescribeGeofenceCollectionResponse = DescribeGeofenceCollectionResponse'+  { -- | A key identifier for an+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>+    -- assigned to the Amazon Location resource+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | No longer used. Always returns @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | No longer used. Always returns an empty string.+    pricingPlanDataSource :: Prelude.Maybe Prelude.Text,+    -- | Displays the key, value pairs of tags associated with this resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The Amazon Resource Name (ARN) for the geofence collection resource.+    -- Used when you need to specify a resource across all AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollection@+    collectionArn :: Prelude.Text,+    -- | The name of the geofence collection.+    collectionName :: Prelude.Text,+    -- | The timestamp for when the geofence resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    createTime :: Data.ISO8601,+    -- | The optional description for the geofence collection.+    description :: Prelude.Text,+    -- | The timestamp for when the geofence collection was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeGeofenceCollectionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'kmsKeyId', 'describeGeofenceCollectionResponse_kmsKeyId' - A key identifier for an+-- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>+-- assigned to the Amazon Location resource+--+-- 'pricingPlan', 'describeGeofenceCollectionResponse_pricingPlan' - No longer used. Always returns @RequestBasedUsage@.+--+-- 'pricingPlanDataSource', 'describeGeofenceCollectionResponse_pricingPlanDataSource' - No longer used. Always returns an empty string.+--+-- 'tags', 'describeGeofenceCollectionResponse_tags' - Displays the key, value pairs of tags associated with this resource.+--+-- 'httpStatus', 'describeGeofenceCollectionResponse_httpStatus' - The response's http status code.+--+-- 'collectionArn', 'describeGeofenceCollectionResponse_collectionArn' - The Amazon Resource Name (ARN) for the geofence collection resource.+-- Used when you need to specify a resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollection@+--+-- 'collectionName', 'describeGeofenceCollectionResponse_collectionName' - The name of the geofence collection.+--+-- 'createTime', 'describeGeofenceCollectionResponse_createTime' - The timestamp for when the geofence resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+--+-- 'description', 'describeGeofenceCollectionResponse_description' - The optional description for the geofence collection.+--+-- 'updateTime', 'describeGeofenceCollectionResponse_updateTime' - The timestamp for when the geofence collection was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+newDescribeGeofenceCollectionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'collectionArn'+  Prelude.Text ->+  -- | 'collectionName'+  Prelude.Text ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'description'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  DescribeGeofenceCollectionResponse+newDescribeGeofenceCollectionResponse+  pHttpStatus_+  pCollectionArn_+  pCollectionName_+  pCreateTime_+  pDescription_+  pUpdateTime_ =+    DescribeGeofenceCollectionResponse'+      { kmsKeyId =+          Prelude.Nothing,+        pricingPlan = Prelude.Nothing,+        pricingPlanDataSource = Prelude.Nothing,+        tags = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        collectionArn = pCollectionArn_,+        collectionName = pCollectionName_,+        createTime =+          Data._Time Lens.# pCreateTime_,+        description = pDescription_,+        updateTime =+          Data._Time Lens.# pUpdateTime_+      }++-- | A key identifier for an+-- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>+-- assigned to the Amazon Location resource+describeGeofenceCollectionResponse_kmsKeyId :: Lens.Lens' DescribeGeofenceCollectionResponse (Prelude.Maybe Prelude.Text)+describeGeofenceCollectionResponse_kmsKeyId = Lens.lens (\DescribeGeofenceCollectionResponse' {kmsKeyId} -> kmsKeyId) (\s@DescribeGeofenceCollectionResponse' {} a -> s {kmsKeyId = a} :: DescribeGeofenceCollectionResponse)++-- | No longer used. Always returns @RequestBasedUsage@.+describeGeofenceCollectionResponse_pricingPlan :: Lens.Lens' DescribeGeofenceCollectionResponse (Prelude.Maybe PricingPlan)+describeGeofenceCollectionResponse_pricingPlan = Lens.lens (\DescribeGeofenceCollectionResponse' {pricingPlan} -> pricingPlan) (\s@DescribeGeofenceCollectionResponse' {} a -> s {pricingPlan = a} :: DescribeGeofenceCollectionResponse)++-- | No longer used. Always returns an empty string.+describeGeofenceCollectionResponse_pricingPlanDataSource :: Lens.Lens' DescribeGeofenceCollectionResponse (Prelude.Maybe Prelude.Text)+describeGeofenceCollectionResponse_pricingPlanDataSource = Lens.lens (\DescribeGeofenceCollectionResponse' {pricingPlanDataSource} -> pricingPlanDataSource) (\s@DescribeGeofenceCollectionResponse' {} a -> s {pricingPlanDataSource = a} :: DescribeGeofenceCollectionResponse)++-- | Displays the key, value pairs of tags associated with this resource.+describeGeofenceCollectionResponse_tags :: Lens.Lens' DescribeGeofenceCollectionResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+describeGeofenceCollectionResponse_tags = Lens.lens (\DescribeGeofenceCollectionResponse' {tags} -> tags) (\s@DescribeGeofenceCollectionResponse' {} a -> s {tags = a} :: DescribeGeofenceCollectionResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeGeofenceCollectionResponse_httpStatus :: Lens.Lens' DescribeGeofenceCollectionResponse Prelude.Int+describeGeofenceCollectionResponse_httpStatus = Lens.lens (\DescribeGeofenceCollectionResponse' {httpStatus} -> httpStatus) (\s@DescribeGeofenceCollectionResponse' {} a -> s {httpStatus = a} :: DescribeGeofenceCollectionResponse)++-- | The Amazon Resource Name (ARN) for the geofence collection resource.+-- Used when you need to specify a resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollection@+describeGeofenceCollectionResponse_collectionArn :: Lens.Lens' DescribeGeofenceCollectionResponse Prelude.Text+describeGeofenceCollectionResponse_collectionArn = Lens.lens (\DescribeGeofenceCollectionResponse' {collectionArn} -> collectionArn) (\s@DescribeGeofenceCollectionResponse' {} a -> s {collectionArn = a} :: DescribeGeofenceCollectionResponse)++-- | The name of the geofence collection.+describeGeofenceCollectionResponse_collectionName :: Lens.Lens' DescribeGeofenceCollectionResponse Prelude.Text+describeGeofenceCollectionResponse_collectionName = Lens.lens (\DescribeGeofenceCollectionResponse' {collectionName} -> collectionName) (\s@DescribeGeofenceCollectionResponse' {} a -> s {collectionName = a} :: DescribeGeofenceCollectionResponse)++-- | The timestamp for when the geofence resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+describeGeofenceCollectionResponse_createTime :: Lens.Lens' DescribeGeofenceCollectionResponse Prelude.UTCTime+describeGeofenceCollectionResponse_createTime = Lens.lens (\DescribeGeofenceCollectionResponse' {createTime} -> createTime) (\s@DescribeGeofenceCollectionResponse' {} a -> s {createTime = a} :: DescribeGeofenceCollectionResponse) Prelude.. Data._Time++-- | The optional description for the geofence collection.+describeGeofenceCollectionResponse_description :: Lens.Lens' DescribeGeofenceCollectionResponse Prelude.Text+describeGeofenceCollectionResponse_description = Lens.lens (\DescribeGeofenceCollectionResponse' {description} -> description) (\s@DescribeGeofenceCollectionResponse' {} a -> s {description = a} :: DescribeGeofenceCollectionResponse)++-- | The timestamp for when the geofence collection was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+describeGeofenceCollectionResponse_updateTime :: Lens.Lens' DescribeGeofenceCollectionResponse Prelude.UTCTime+describeGeofenceCollectionResponse_updateTime = Lens.lens (\DescribeGeofenceCollectionResponse' {updateTime} -> updateTime) (\s@DescribeGeofenceCollectionResponse' {} a -> s {updateTime = a} :: DescribeGeofenceCollectionResponse) Prelude.. Data._Time++instance+  Prelude.NFData+    DescribeGeofenceCollectionResponse+  where+  rnf DescribeGeofenceCollectionResponse' {..} =+    Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf pricingPlanDataSource+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf collectionArn+      `Prelude.seq` Prelude.rnf collectionName+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/DescribeMap.hs view
@@ -0,0 +1,295 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.DescribeMap+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the map resource details.+module Amazonka.Location.DescribeMap+  ( -- * Creating a Request+    DescribeMap (..),+    newDescribeMap,++    -- * Request Lenses+    describeMap_mapName,++    -- * Destructuring the Response+    DescribeMapResponse (..),+    newDescribeMapResponse,++    -- * Response Lenses+    describeMapResponse_pricingPlan,+    describeMapResponse_tags,+    describeMapResponse_httpStatus,+    describeMapResponse_configuration,+    describeMapResponse_createTime,+    describeMapResponse_dataSource,+    describeMapResponse_description,+    describeMapResponse_mapArn,+    describeMapResponse_mapName,+    describeMapResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeMap' smart constructor.+data DescribeMap = DescribeMap'+  { -- | The name of the map resource.+    mapName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeMap' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'mapName', 'describeMap_mapName' - The name of the map resource.+newDescribeMap ::+  -- | 'mapName'+  Prelude.Text ->+  DescribeMap+newDescribeMap pMapName_ =+  DescribeMap' {mapName = pMapName_}++-- | The name of the map resource.+describeMap_mapName :: Lens.Lens' DescribeMap Prelude.Text+describeMap_mapName = Lens.lens (\DescribeMap' {mapName} -> mapName) (\s@DescribeMap' {} a -> s {mapName = a} :: DescribeMap)++instance Core.AWSRequest DescribeMap where+  type AWSResponse DescribeMap = DescribeMapResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeMapResponse'+            Prelude.<$> (x Data..?> "PricingPlan")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "Configuration")+            Prelude.<*> (x Data..:> "CreateTime")+            Prelude.<*> (x Data..:> "DataSource")+            Prelude.<*> (x Data..:> "Description")+            Prelude.<*> (x Data..:> "MapArn")+            Prelude.<*> (x Data..:> "MapName")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable DescribeMap where+  hashWithSalt _salt DescribeMap' {..} =+    _salt `Prelude.hashWithSalt` mapName++instance Prelude.NFData DescribeMap where+  rnf DescribeMap' {..} = Prelude.rnf mapName++instance Data.ToHeaders DescribeMap where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeMap where+  toPath DescribeMap' {..} =+    Prelude.mconcat+      ["/maps/v0/maps/", Data.toBS mapName]++instance Data.ToQuery DescribeMap where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeMapResponse' smart constructor.+data DescribeMapResponse = DescribeMapResponse'+  { -- | No longer used. Always returns @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | Tags associated with the map resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Specifies the map tile style selected from a partner data provider.+    configuration :: MapConfiguration,+    -- | The timestamp for when the map resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    createTime :: Data.ISO8601,+    -- | Specifies the data provider for the associated map tiles.+    dataSource :: Prelude.Text,+    -- | The optional description for the map resource.+    description :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) for the map resource. Used to specify a+    -- resource across all AWS.+    --+    -- -   Format example: @arn:aws:geo:region:account-id:map\/ExampleMap@+    mapArn :: Prelude.Text,+    -- | The map style selected from an available provider.+    mapName :: Prelude.Text,+    -- | The timestamp for when the map resource was last update in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeMapResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pricingPlan', 'describeMapResponse_pricingPlan' - No longer used. Always returns @RequestBasedUsage@.+--+-- 'tags', 'describeMapResponse_tags' - Tags associated with the map resource.+--+-- 'httpStatus', 'describeMapResponse_httpStatus' - The response's http status code.+--+-- 'configuration', 'describeMapResponse_configuration' - Specifies the map tile style selected from a partner data provider.+--+-- 'createTime', 'describeMapResponse_createTime' - The timestamp for when the map resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'dataSource', 'describeMapResponse_dataSource' - Specifies the data provider for the associated map tiles.+--+-- 'description', 'describeMapResponse_description' - The optional description for the map resource.+--+-- 'mapArn', 'describeMapResponse_mapArn' - The Amazon Resource Name (ARN) for the map resource. Used to specify a+-- resource across all AWS.+--+-- -   Format example: @arn:aws:geo:region:account-id:map\/ExampleMap@+--+-- 'mapName', 'describeMapResponse_mapName' - The map style selected from an available provider.+--+-- 'updateTime', 'describeMapResponse_updateTime' - The timestamp for when the map resource was last update in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newDescribeMapResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'configuration'+  MapConfiguration ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  -- | 'mapArn'+  Prelude.Text ->+  -- | 'mapName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  DescribeMapResponse+newDescribeMapResponse+  pHttpStatus_+  pConfiguration_+  pCreateTime_+  pDataSource_+  pDescription_+  pMapArn_+  pMapName_+  pUpdateTime_ =+    DescribeMapResponse'+      { pricingPlan = Prelude.Nothing,+        tags = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        configuration = pConfiguration_,+        createTime = Data._Time Lens.# pCreateTime_,+        dataSource = pDataSource_,+        description = pDescription_,+        mapArn = pMapArn_,+        mapName = pMapName_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | No longer used. Always returns @RequestBasedUsage@.+describeMapResponse_pricingPlan :: Lens.Lens' DescribeMapResponse (Prelude.Maybe PricingPlan)+describeMapResponse_pricingPlan = Lens.lens (\DescribeMapResponse' {pricingPlan} -> pricingPlan) (\s@DescribeMapResponse' {} a -> s {pricingPlan = a} :: DescribeMapResponse)++-- | Tags associated with the map resource.+describeMapResponse_tags :: Lens.Lens' DescribeMapResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+describeMapResponse_tags = Lens.lens (\DescribeMapResponse' {tags} -> tags) (\s@DescribeMapResponse' {} a -> s {tags = a} :: DescribeMapResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeMapResponse_httpStatus :: Lens.Lens' DescribeMapResponse Prelude.Int+describeMapResponse_httpStatus = Lens.lens (\DescribeMapResponse' {httpStatus} -> httpStatus) (\s@DescribeMapResponse' {} a -> s {httpStatus = a} :: DescribeMapResponse)++-- | Specifies the map tile style selected from a partner data provider.+describeMapResponse_configuration :: Lens.Lens' DescribeMapResponse MapConfiguration+describeMapResponse_configuration = Lens.lens (\DescribeMapResponse' {configuration} -> configuration) (\s@DescribeMapResponse' {} a -> s {configuration = a} :: DescribeMapResponse)++-- | The timestamp for when the map resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+describeMapResponse_createTime :: Lens.Lens' DescribeMapResponse Prelude.UTCTime+describeMapResponse_createTime = Lens.lens (\DescribeMapResponse' {createTime} -> createTime) (\s@DescribeMapResponse' {} a -> s {createTime = a} :: DescribeMapResponse) Prelude.. Data._Time++-- | Specifies the data provider for the associated map tiles.+describeMapResponse_dataSource :: Lens.Lens' DescribeMapResponse Prelude.Text+describeMapResponse_dataSource = Lens.lens (\DescribeMapResponse' {dataSource} -> dataSource) (\s@DescribeMapResponse' {} a -> s {dataSource = a} :: DescribeMapResponse)++-- | The optional description for the map resource.+describeMapResponse_description :: Lens.Lens' DescribeMapResponse Prelude.Text+describeMapResponse_description = Lens.lens (\DescribeMapResponse' {description} -> description) (\s@DescribeMapResponse' {} a -> s {description = a} :: DescribeMapResponse)++-- | The Amazon Resource Name (ARN) for the map resource. Used to specify a+-- resource across all AWS.+--+-- -   Format example: @arn:aws:geo:region:account-id:map\/ExampleMap@+describeMapResponse_mapArn :: Lens.Lens' DescribeMapResponse Prelude.Text+describeMapResponse_mapArn = Lens.lens (\DescribeMapResponse' {mapArn} -> mapArn) (\s@DescribeMapResponse' {} a -> s {mapArn = a} :: DescribeMapResponse)++-- | The map style selected from an available provider.+describeMapResponse_mapName :: Lens.Lens' DescribeMapResponse Prelude.Text+describeMapResponse_mapName = Lens.lens (\DescribeMapResponse' {mapName} -> mapName) (\s@DescribeMapResponse' {} a -> s {mapName = a} :: DescribeMapResponse)++-- | The timestamp for when the map resource was last update in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+describeMapResponse_updateTime :: Lens.Lens' DescribeMapResponse Prelude.UTCTime+describeMapResponse_updateTime = Lens.lens (\DescribeMapResponse' {updateTime} -> updateTime) (\s@DescribeMapResponse' {} a -> s {updateTime = a} :: DescribeMapResponse) Prelude.. Data._Time++instance Prelude.NFData DescribeMapResponse where+  rnf DescribeMapResponse' {..} =+    Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf configuration+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf mapArn+      `Prelude.seq` Prelude.rnf mapName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/DescribePlaceIndex.hs view
@@ -0,0 +1,326 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.DescribePlaceIndex+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the place index resource details.+module Amazonka.Location.DescribePlaceIndex+  ( -- * Creating a Request+    DescribePlaceIndex (..),+    newDescribePlaceIndex,++    -- * Request Lenses+    describePlaceIndex_indexName,++    -- * Destructuring the Response+    DescribePlaceIndexResponse (..),+    newDescribePlaceIndexResponse,++    -- * Response Lenses+    describePlaceIndexResponse_pricingPlan,+    describePlaceIndexResponse_tags,+    describePlaceIndexResponse_httpStatus,+    describePlaceIndexResponse_createTime,+    describePlaceIndexResponse_dataSource,+    describePlaceIndexResponse_dataSourceConfiguration,+    describePlaceIndexResponse_description,+    describePlaceIndexResponse_indexArn,+    describePlaceIndexResponse_indexName,+    describePlaceIndexResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribePlaceIndex' smart constructor.+data DescribePlaceIndex = DescribePlaceIndex'+  { -- | The name of the place index resource.+    indexName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribePlaceIndex' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'indexName', 'describePlaceIndex_indexName' - The name of the place index resource.+newDescribePlaceIndex ::+  -- | 'indexName'+  Prelude.Text ->+  DescribePlaceIndex+newDescribePlaceIndex pIndexName_ =+  DescribePlaceIndex' {indexName = pIndexName_}++-- | The name of the place index resource.+describePlaceIndex_indexName :: Lens.Lens' DescribePlaceIndex Prelude.Text+describePlaceIndex_indexName = Lens.lens (\DescribePlaceIndex' {indexName} -> indexName) (\s@DescribePlaceIndex' {} a -> s {indexName = a} :: DescribePlaceIndex)++instance Core.AWSRequest DescribePlaceIndex where+  type+    AWSResponse DescribePlaceIndex =+      DescribePlaceIndexResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribePlaceIndexResponse'+            Prelude.<$> (x Data..?> "PricingPlan")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CreateTime")+            Prelude.<*> (x Data..:> "DataSource")+            Prelude.<*> (x Data..:> "DataSourceConfiguration")+            Prelude.<*> (x Data..:> "Description")+            Prelude.<*> (x Data..:> "IndexArn")+            Prelude.<*> (x Data..:> "IndexName")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable DescribePlaceIndex where+  hashWithSalt _salt DescribePlaceIndex' {..} =+    _salt `Prelude.hashWithSalt` indexName++instance Prelude.NFData DescribePlaceIndex where+  rnf DescribePlaceIndex' {..} = Prelude.rnf indexName++instance Data.ToHeaders DescribePlaceIndex where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribePlaceIndex where+  toPath DescribePlaceIndex' {..} =+    Prelude.mconcat+      ["/places/v0/indexes/", Data.toBS indexName]++instance Data.ToQuery DescribePlaceIndex where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribePlaceIndexResponse' smart constructor.+data DescribePlaceIndexResponse = DescribePlaceIndexResponse'+  { -- | No longer used. Always returns @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | Tags associated with place index resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The timestamp for when the place index resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    createTime :: Data.ISO8601,+    -- | The data provider of geospatial data. Values can be one of the+    -- following:+    --+    -- -   @Esri@+    --+    -- -   @Here@+    --+    -- For more information about data providers, see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+    dataSource :: Prelude.Text,+    -- | The specified data storage option for requesting Places.+    dataSourceConfiguration :: DataSourceConfiguration,+    -- | The optional description for the place index resource.+    description :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) for the place index resource. Used to+    -- specify a resource across AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:place-index\/ExamplePlaceIndex@+    indexArn :: Prelude.Text,+    -- | The name of the place index resource being described.+    indexName :: Prelude.Text,+    -- | The timestamp for when the place index resource was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribePlaceIndexResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pricingPlan', 'describePlaceIndexResponse_pricingPlan' - No longer used. Always returns @RequestBasedUsage@.+--+-- 'tags', 'describePlaceIndexResponse_tags' - Tags associated with place index resource.+--+-- 'httpStatus', 'describePlaceIndexResponse_httpStatus' - The response's http status code.+--+-- 'createTime', 'describePlaceIndexResponse_createTime' - The timestamp for when the place index resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'dataSource', 'describePlaceIndexResponse_dataSource' - The data provider of geospatial data. Values can be one of the+-- following:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+--+-- 'dataSourceConfiguration', 'describePlaceIndexResponse_dataSourceConfiguration' - The specified data storage option for requesting Places.+--+-- 'description', 'describePlaceIndexResponse_description' - The optional description for the place index resource.+--+-- 'indexArn', 'describePlaceIndexResponse_indexArn' - The Amazon Resource Name (ARN) for the place index resource. Used to+-- specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:place-index\/ExamplePlaceIndex@+--+-- 'indexName', 'describePlaceIndexResponse_indexName' - The name of the place index resource being described.+--+-- 'updateTime', 'describePlaceIndexResponse_updateTime' - The timestamp for when the place index resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newDescribePlaceIndexResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'dataSourceConfiguration'+  DataSourceConfiguration ->+  -- | 'description'+  Prelude.Text ->+  -- | 'indexArn'+  Prelude.Text ->+  -- | 'indexName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  DescribePlaceIndexResponse+newDescribePlaceIndexResponse+  pHttpStatus_+  pCreateTime_+  pDataSource_+  pDataSourceConfiguration_+  pDescription_+  pIndexArn_+  pIndexName_+  pUpdateTime_ =+    DescribePlaceIndexResponse'+      { pricingPlan =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        createTime = Data._Time Lens.# pCreateTime_,+        dataSource = pDataSource_,+        dataSourceConfiguration =+          pDataSourceConfiguration_,+        description = pDescription_,+        indexArn = pIndexArn_,+        indexName = pIndexName_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | No longer used. Always returns @RequestBasedUsage@.+describePlaceIndexResponse_pricingPlan :: Lens.Lens' DescribePlaceIndexResponse (Prelude.Maybe PricingPlan)+describePlaceIndexResponse_pricingPlan = Lens.lens (\DescribePlaceIndexResponse' {pricingPlan} -> pricingPlan) (\s@DescribePlaceIndexResponse' {} a -> s {pricingPlan = a} :: DescribePlaceIndexResponse)++-- | Tags associated with place index resource.+describePlaceIndexResponse_tags :: Lens.Lens' DescribePlaceIndexResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+describePlaceIndexResponse_tags = Lens.lens (\DescribePlaceIndexResponse' {tags} -> tags) (\s@DescribePlaceIndexResponse' {} a -> s {tags = a} :: DescribePlaceIndexResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describePlaceIndexResponse_httpStatus :: Lens.Lens' DescribePlaceIndexResponse Prelude.Int+describePlaceIndexResponse_httpStatus = Lens.lens (\DescribePlaceIndexResponse' {httpStatus} -> httpStatus) (\s@DescribePlaceIndexResponse' {} a -> s {httpStatus = a} :: DescribePlaceIndexResponse)++-- | The timestamp for when the place index resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+describePlaceIndexResponse_createTime :: Lens.Lens' DescribePlaceIndexResponse Prelude.UTCTime+describePlaceIndexResponse_createTime = Lens.lens (\DescribePlaceIndexResponse' {createTime} -> createTime) (\s@DescribePlaceIndexResponse' {} a -> s {createTime = a} :: DescribePlaceIndexResponse) Prelude.. Data._Time++-- | The data provider of geospatial data. Values can be one of the+-- following:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+describePlaceIndexResponse_dataSource :: Lens.Lens' DescribePlaceIndexResponse Prelude.Text+describePlaceIndexResponse_dataSource = Lens.lens (\DescribePlaceIndexResponse' {dataSource} -> dataSource) (\s@DescribePlaceIndexResponse' {} a -> s {dataSource = a} :: DescribePlaceIndexResponse)++-- | The specified data storage option for requesting Places.+describePlaceIndexResponse_dataSourceConfiguration :: Lens.Lens' DescribePlaceIndexResponse DataSourceConfiguration+describePlaceIndexResponse_dataSourceConfiguration = Lens.lens (\DescribePlaceIndexResponse' {dataSourceConfiguration} -> dataSourceConfiguration) (\s@DescribePlaceIndexResponse' {} a -> s {dataSourceConfiguration = a} :: DescribePlaceIndexResponse)++-- | The optional description for the place index resource.+describePlaceIndexResponse_description :: Lens.Lens' DescribePlaceIndexResponse Prelude.Text+describePlaceIndexResponse_description = Lens.lens (\DescribePlaceIndexResponse' {description} -> description) (\s@DescribePlaceIndexResponse' {} a -> s {description = a} :: DescribePlaceIndexResponse)++-- | The Amazon Resource Name (ARN) for the place index resource. Used to+-- specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:place-index\/ExamplePlaceIndex@+describePlaceIndexResponse_indexArn :: Lens.Lens' DescribePlaceIndexResponse Prelude.Text+describePlaceIndexResponse_indexArn = Lens.lens (\DescribePlaceIndexResponse' {indexArn} -> indexArn) (\s@DescribePlaceIndexResponse' {} a -> s {indexArn = a} :: DescribePlaceIndexResponse)++-- | The name of the place index resource being described.+describePlaceIndexResponse_indexName :: Lens.Lens' DescribePlaceIndexResponse Prelude.Text+describePlaceIndexResponse_indexName = Lens.lens (\DescribePlaceIndexResponse' {indexName} -> indexName) (\s@DescribePlaceIndexResponse' {} a -> s {indexName = a} :: DescribePlaceIndexResponse)++-- | The timestamp for when the place index resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+describePlaceIndexResponse_updateTime :: Lens.Lens' DescribePlaceIndexResponse Prelude.UTCTime+describePlaceIndexResponse_updateTime = Lens.lens (\DescribePlaceIndexResponse' {updateTime} -> updateTime) (\s@DescribePlaceIndexResponse' {} a -> s {updateTime = a} :: DescribePlaceIndexResponse) Prelude.. Data._Time++instance Prelude.NFData DescribePlaceIndexResponse where+  rnf DescribePlaceIndexResponse' {..} =+    Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf dataSourceConfiguration+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf indexArn+      `Prelude.seq` Prelude.rnf indexName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/DescribeRouteCalculator.hs view
@@ -0,0 +1,331 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.DescribeRouteCalculator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the route calculator resource details.+module Amazonka.Location.DescribeRouteCalculator+  ( -- * Creating a Request+    DescribeRouteCalculator (..),+    newDescribeRouteCalculator,++    -- * Request Lenses+    describeRouteCalculator_calculatorName,++    -- * Destructuring the Response+    DescribeRouteCalculatorResponse (..),+    newDescribeRouteCalculatorResponse,++    -- * Response Lenses+    describeRouteCalculatorResponse_pricingPlan,+    describeRouteCalculatorResponse_tags,+    describeRouteCalculatorResponse_httpStatus,+    describeRouteCalculatorResponse_calculatorArn,+    describeRouteCalculatorResponse_calculatorName,+    describeRouteCalculatorResponse_createTime,+    describeRouteCalculatorResponse_dataSource,+    describeRouteCalculatorResponse_description,+    describeRouteCalculatorResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeRouteCalculator' smart constructor.+data DescribeRouteCalculator = DescribeRouteCalculator'+  { -- | The name of the route calculator resource.+    calculatorName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRouteCalculator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'calculatorName', 'describeRouteCalculator_calculatorName' - The name of the route calculator resource.+newDescribeRouteCalculator ::+  -- | 'calculatorName'+  Prelude.Text ->+  DescribeRouteCalculator+newDescribeRouteCalculator pCalculatorName_ =+  DescribeRouteCalculator'+    { calculatorName =+        pCalculatorName_+    }++-- | The name of the route calculator resource.+describeRouteCalculator_calculatorName :: Lens.Lens' DescribeRouteCalculator Prelude.Text+describeRouteCalculator_calculatorName = Lens.lens (\DescribeRouteCalculator' {calculatorName} -> calculatorName) (\s@DescribeRouteCalculator' {} a -> s {calculatorName = a} :: DescribeRouteCalculator)++instance Core.AWSRequest DescribeRouteCalculator where+  type+    AWSResponse DescribeRouteCalculator =+      DescribeRouteCalculatorResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeRouteCalculatorResponse'+            Prelude.<$> (x Data..?> "PricingPlan")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CalculatorArn")+            Prelude.<*> (x Data..:> "CalculatorName")+            Prelude.<*> (x Data..:> "CreateTime")+            Prelude.<*> (x Data..:> "DataSource")+            Prelude.<*> (x Data..:> "Description")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable DescribeRouteCalculator where+  hashWithSalt _salt DescribeRouteCalculator' {..} =+    _salt `Prelude.hashWithSalt` calculatorName++instance Prelude.NFData DescribeRouteCalculator where+  rnf DescribeRouteCalculator' {..} =+    Prelude.rnf calculatorName++instance Data.ToHeaders DescribeRouteCalculator where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeRouteCalculator where+  toPath DescribeRouteCalculator' {..} =+    Prelude.mconcat+      ["/routes/v0/calculators/", Data.toBS calculatorName]++instance Data.ToQuery DescribeRouteCalculator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeRouteCalculatorResponse' smart constructor.+data DescribeRouteCalculatorResponse = DescribeRouteCalculatorResponse'+  { -- | Always returns @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | Tags associated with route calculator resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The Amazon Resource Name (ARN) for the Route calculator resource. Use+    -- the ARN when you specify a resource across AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:route-calculator\/ExampleCalculator@+    calculatorArn :: Prelude.Text,+    -- | The name of the route calculator resource being described.+    calculatorName :: Prelude.Text,+    -- | The timestamp when the route calculator resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    --+    -- -   For example, @2020–07-2T12:15:20.000Z+01:00@+    createTime :: Data.ISO8601,+    -- | The data provider of traffic and road network data. Indicates one of the+    -- available providers:+    --+    -- -   @Esri@+    --+    -- -   @Here@+    --+    -- For more information about data providers, see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+    dataSource :: Prelude.Text,+    -- | The optional description of the route calculator resource.+    description :: Prelude.Text,+    -- | The timestamp when the route calculator resource was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    --+    -- -   For example, @2020–07-2T12:15:20.000Z+01:00@+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRouteCalculatorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pricingPlan', 'describeRouteCalculatorResponse_pricingPlan' - Always returns @RequestBasedUsage@.+--+-- 'tags', 'describeRouteCalculatorResponse_tags' - Tags associated with route calculator resource.+--+-- 'httpStatus', 'describeRouteCalculatorResponse_httpStatus' - The response's http status code.+--+-- 'calculatorArn', 'describeRouteCalculatorResponse_calculatorArn' - The Amazon Resource Name (ARN) for the Route calculator resource. Use+-- the ARN when you specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:route-calculator\/ExampleCalculator@+--+-- 'calculatorName', 'describeRouteCalculatorResponse_calculatorName' - The name of the route calculator resource being described.+--+-- 'createTime', 'describeRouteCalculatorResponse_createTime' - The timestamp when the route calculator resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- -   For example, @2020–07-2T12:15:20.000Z+01:00@+--+-- 'dataSource', 'describeRouteCalculatorResponse_dataSource' - The data provider of traffic and road network data. Indicates one of the+-- available providers:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+--+-- 'description', 'describeRouteCalculatorResponse_description' - The optional description of the route calculator resource.+--+-- 'updateTime', 'describeRouteCalculatorResponse_updateTime' - The timestamp when the route calculator resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- -   For example, @2020–07-2T12:15:20.000Z+01:00@+newDescribeRouteCalculatorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'calculatorArn'+  Prelude.Text ->+  -- | 'calculatorName'+  Prelude.Text ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  DescribeRouteCalculatorResponse+newDescribeRouteCalculatorResponse+  pHttpStatus_+  pCalculatorArn_+  pCalculatorName_+  pCreateTime_+  pDataSource_+  pDescription_+  pUpdateTime_ =+    DescribeRouteCalculatorResponse'+      { pricingPlan =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        calculatorArn = pCalculatorArn_,+        calculatorName = pCalculatorName_,+        createTime =+          Data._Time Lens.# pCreateTime_,+        dataSource = pDataSource_,+        description = pDescription_,+        updateTime =+          Data._Time Lens.# pUpdateTime_+      }++-- | Always returns @RequestBasedUsage@.+describeRouteCalculatorResponse_pricingPlan :: Lens.Lens' DescribeRouteCalculatorResponse (Prelude.Maybe PricingPlan)+describeRouteCalculatorResponse_pricingPlan = Lens.lens (\DescribeRouteCalculatorResponse' {pricingPlan} -> pricingPlan) (\s@DescribeRouteCalculatorResponse' {} a -> s {pricingPlan = a} :: DescribeRouteCalculatorResponse)++-- | Tags associated with route calculator resource.+describeRouteCalculatorResponse_tags :: Lens.Lens' DescribeRouteCalculatorResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+describeRouteCalculatorResponse_tags = Lens.lens (\DescribeRouteCalculatorResponse' {tags} -> tags) (\s@DescribeRouteCalculatorResponse' {} a -> s {tags = a} :: DescribeRouteCalculatorResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeRouteCalculatorResponse_httpStatus :: Lens.Lens' DescribeRouteCalculatorResponse Prelude.Int+describeRouteCalculatorResponse_httpStatus = Lens.lens (\DescribeRouteCalculatorResponse' {httpStatus} -> httpStatus) (\s@DescribeRouteCalculatorResponse' {} a -> s {httpStatus = a} :: DescribeRouteCalculatorResponse)++-- | The Amazon Resource Name (ARN) for the Route calculator resource. Use+-- the ARN when you specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:route-calculator\/ExampleCalculator@+describeRouteCalculatorResponse_calculatorArn :: Lens.Lens' DescribeRouteCalculatorResponse Prelude.Text+describeRouteCalculatorResponse_calculatorArn = Lens.lens (\DescribeRouteCalculatorResponse' {calculatorArn} -> calculatorArn) (\s@DescribeRouteCalculatorResponse' {} a -> s {calculatorArn = a} :: DescribeRouteCalculatorResponse)++-- | The name of the route calculator resource being described.+describeRouteCalculatorResponse_calculatorName :: Lens.Lens' DescribeRouteCalculatorResponse Prelude.Text+describeRouteCalculatorResponse_calculatorName = Lens.lens (\DescribeRouteCalculatorResponse' {calculatorName} -> calculatorName) (\s@DescribeRouteCalculatorResponse' {} a -> s {calculatorName = a} :: DescribeRouteCalculatorResponse)++-- | The timestamp when the route calculator resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- -   For example, @2020–07-2T12:15:20.000Z+01:00@+describeRouteCalculatorResponse_createTime :: Lens.Lens' DescribeRouteCalculatorResponse Prelude.UTCTime+describeRouteCalculatorResponse_createTime = Lens.lens (\DescribeRouteCalculatorResponse' {createTime} -> createTime) (\s@DescribeRouteCalculatorResponse' {} a -> s {createTime = a} :: DescribeRouteCalculatorResponse) Prelude.. Data._Time++-- | The data provider of traffic and road network data. Indicates one of the+-- available providers:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+describeRouteCalculatorResponse_dataSource :: Lens.Lens' DescribeRouteCalculatorResponse Prelude.Text+describeRouteCalculatorResponse_dataSource = Lens.lens (\DescribeRouteCalculatorResponse' {dataSource} -> dataSource) (\s@DescribeRouteCalculatorResponse' {} a -> s {dataSource = a} :: DescribeRouteCalculatorResponse)++-- | The optional description of the route calculator resource.+describeRouteCalculatorResponse_description :: Lens.Lens' DescribeRouteCalculatorResponse Prelude.Text+describeRouteCalculatorResponse_description = Lens.lens (\DescribeRouteCalculatorResponse' {description} -> description) (\s@DescribeRouteCalculatorResponse' {} a -> s {description = a} :: DescribeRouteCalculatorResponse)++-- | The timestamp when the route calculator resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- -   For example, @2020–07-2T12:15:20.000Z+01:00@+describeRouteCalculatorResponse_updateTime :: Lens.Lens' DescribeRouteCalculatorResponse Prelude.UTCTime+describeRouteCalculatorResponse_updateTime = Lens.lens (\DescribeRouteCalculatorResponse' {updateTime} -> updateTime) (\s@DescribeRouteCalculatorResponse' {} a -> s {updateTime = a} :: DescribeRouteCalculatorResponse) Prelude.. Data._Time++instance+  Prelude.NFData+    DescribeRouteCalculatorResponse+  where+  rnf DescribeRouteCalculatorResponse' {..} =+    Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf calculatorArn+      `Prelude.seq` Prelude.rnf calculatorName+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/DescribeTracker.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.Location.DescribeTracker+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the tracker resource details.+module Amazonka.Location.DescribeTracker+  ( -- * Creating a Request+    DescribeTracker (..),+    newDescribeTracker,++    -- * Request Lenses+    describeTracker_trackerName,++    -- * Destructuring the Response+    DescribeTrackerResponse (..),+    newDescribeTrackerResponse,++    -- * Response Lenses+    describeTrackerResponse_kmsKeyId,+    describeTrackerResponse_positionFiltering,+    describeTrackerResponse_pricingPlan,+    describeTrackerResponse_pricingPlanDataSource,+    describeTrackerResponse_tags,+    describeTrackerResponse_httpStatus,+    describeTrackerResponse_createTime,+    describeTrackerResponse_description,+    describeTrackerResponse_trackerArn,+    describeTrackerResponse_trackerName,+    describeTrackerResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeTracker' smart constructor.+data DescribeTracker = DescribeTracker'+  { -- | The name of the tracker resource.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeTracker' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'trackerName', 'describeTracker_trackerName' - The name of the tracker resource.+newDescribeTracker ::+  -- | 'trackerName'+  Prelude.Text ->+  DescribeTracker+newDescribeTracker pTrackerName_ =+  DescribeTracker' {trackerName = pTrackerName_}++-- | The name of the tracker resource.+describeTracker_trackerName :: Lens.Lens' DescribeTracker Prelude.Text+describeTracker_trackerName = Lens.lens (\DescribeTracker' {trackerName} -> trackerName) (\s@DescribeTracker' {} a -> s {trackerName = a} :: DescribeTracker)++instance Core.AWSRequest DescribeTracker where+  type+    AWSResponse DescribeTracker =+      DescribeTrackerResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeTrackerResponse'+            Prelude.<$> (x Data..?> "KmsKeyId")+            Prelude.<*> (x Data..?> "PositionFiltering")+            Prelude.<*> (x Data..?> "PricingPlan")+            Prelude.<*> (x Data..?> "PricingPlanDataSource")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CreateTime")+            Prelude.<*> (x Data..:> "Description")+            Prelude.<*> (x Data..:> "TrackerArn")+            Prelude.<*> (x Data..:> "TrackerName")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable DescribeTracker where+  hashWithSalt _salt DescribeTracker' {..} =+    _salt `Prelude.hashWithSalt` trackerName++instance Prelude.NFData DescribeTracker where+  rnf DescribeTracker' {..} = Prelude.rnf trackerName++instance Data.ToHeaders DescribeTracker where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeTracker where+  toPath DescribeTracker' {..} =+    Prelude.mconcat+      ["/tracking/v0/trackers/", Data.toBS trackerName]++instance Data.ToQuery DescribeTracker where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeTrackerResponse' smart constructor.+data DescribeTrackerResponse = DescribeTrackerResponse'+  { -- | A key identifier for an+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>+    -- assigned to the Amazon Location resource.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The position filtering method of the tracker resource.+    positionFiltering :: Prelude.Maybe PositionFiltering,+    -- | Always returns @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | No longer used. Always returns an empty string.+    pricingPlanDataSource :: Prelude.Maybe Prelude.Text,+    -- | The tags associated with the tracker resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The timestamp for when the tracker resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    createTime :: Data.ISO8601,+    -- | The optional description for the tracker resource.+    description :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) for the tracker resource. Used when you+    -- need to specify a resource across all AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:tracker\/ExampleTracker@+    trackerArn :: Prelude.Text,+    -- | The name of the tracker resource.+    trackerName :: Prelude.Text,+    -- | The timestamp for when the tracker resource was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeTrackerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'kmsKeyId', 'describeTrackerResponse_kmsKeyId' - A key identifier for an+-- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>+-- assigned to the Amazon Location resource.+--+-- 'positionFiltering', 'describeTrackerResponse_positionFiltering' - The position filtering method of the tracker resource.+--+-- 'pricingPlan', 'describeTrackerResponse_pricingPlan' - Always returns @RequestBasedUsage@.+--+-- 'pricingPlanDataSource', 'describeTrackerResponse_pricingPlanDataSource' - No longer used. Always returns an empty string.+--+-- 'tags', 'describeTrackerResponse_tags' - The tags associated with the tracker resource.+--+-- 'httpStatus', 'describeTrackerResponse_httpStatus' - The response's http status code.+--+-- 'createTime', 'describeTrackerResponse_createTime' - The timestamp for when the tracker resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'description', 'describeTrackerResponse_description' - The optional description for the tracker resource.+--+-- 'trackerArn', 'describeTrackerResponse_trackerArn' - The Amazon Resource Name (ARN) for the tracker resource. Used when you+-- need to specify a resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:tracker\/ExampleTracker@+--+-- 'trackerName', 'describeTrackerResponse_trackerName' - The name of the tracker resource.+--+-- 'updateTime', 'describeTrackerResponse_updateTime' - The timestamp for when the tracker resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newDescribeTrackerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'description'+  Prelude.Text ->+  -- | 'trackerArn'+  Prelude.Text ->+  -- | 'trackerName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  DescribeTrackerResponse+newDescribeTrackerResponse+  pHttpStatus_+  pCreateTime_+  pDescription_+  pTrackerArn_+  pTrackerName_+  pUpdateTime_ =+    DescribeTrackerResponse'+      { kmsKeyId =+          Prelude.Nothing,+        positionFiltering = Prelude.Nothing,+        pricingPlan = Prelude.Nothing,+        pricingPlanDataSource = Prelude.Nothing,+        tags = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        createTime = Data._Time Lens.# pCreateTime_,+        description = pDescription_,+        trackerArn = pTrackerArn_,+        trackerName = pTrackerName_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | A key identifier for an+-- <https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html AWS KMS customer managed key>+-- assigned to the Amazon Location resource.+describeTrackerResponse_kmsKeyId :: Lens.Lens' DescribeTrackerResponse (Prelude.Maybe Prelude.Text)+describeTrackerResponse_kmsKeyId = Lens.lens (\DescribeTrackerResponse' {kmsKeyId} -> kmsKeyId) (\s@DescribeTrackerResponse' {} a -> s {kmsKeyId = a} :: DescribeTrackerResponse)++-- | The position filtering method of the tracker resource.+describeTrackerResponse_positionFiltering :: Lens.Lens' DescribeTrackerResponse (Prelude.Maybe PositionFiltering)+describeTrackerResponse_positionFiltering = Lens.lens (\DescribeTrackerResponse' {positionFiltering} -> positionFiltering) (\s@DescribeTrackerResponse' {} a -> s {positionFiltering = a} :: DescribeTrackerResponse)++-- | Always returns @RequestBasedUsage@.+describeTrackerResponse_pricingPlan :: Lens.Lens' DescribeTrackerResponse (Prelude.Maybe PricingPlan)+describeTrackerResponse_pricingPlan = Lens.lens (\DescribeTrackerResponse' {pricingPlan} -> pricingPlan) (\s@DescribeTrackerResponse' {} a -> s {pricingPlan = a} :: DescribeTrackerResponse)++-- | No longer used. Always returns an empty string.+describeTrackerResponse_pricingPlanDataSource :: Lens.Lens' DescribeTrackerResponse (Prelude.Maybe Prelude.Text)+describeTrackerResponse_pricingPlanDataSource = Lens.lens (\DescribeTrackerResponse' {pricingPlanDataSource} -> pricingPlanDataSource) (\s@DescribeTrackerResponse' {} a -> s {pricingPlanDataSource = a} :: DescribeTrackerResponse)++-- | The tags associated with the tracker resource.+describeTrackerResponse_tags :: Lens.Lens' DescribeTrackerResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+describeTrackerResponse_tags = Lens.lens (\DescribeTrackerResponse' {tags} -> tags) (\s@DescribeTrackerResponse' {} a -> s {tags = a} :: DescribeTrackerResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeTrackerResponse_httpStatus :: Lens.Lens' DescribeTrackerResponse Prelude.Int+describeTrackerResponse_httpStatus = Lens.lens (\DescribeTrackerResponse' {httpStatus} -> httpStatus) (\s@DescribeTrackerResponse' {} a -> s {httpStatus = a} :: DescribeTrackerResponse)++-- | The timestamp for when the tracker resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+describeTrackerResponse_createTime :: Lens.Lens' DescribeTrackerResponse Prelude.UTCTime+describeTrackerResponse_createTime = Lens.lens (\DescribeTrackerResponse' {createTime} -> createTime) (\s@DescribeTrackerResponse' {} a -> s {createTime = a} :: DescribeTrackerResponse) Prelude.. Data._Time++-- | The optional description for the tracker resource.+describeTrackerResponse_description :: Lens.Lens' DescribeTrackerResponse Prelude.Text+describeTrackerResponse_description = Lens.lens (\DescribeTrackerResponse' {description} -> description) (\s@DescribeTrackerResponse' {} a -> s {description = a} :: DescribeTrackerResponse)++-- | The Amazon Resource Name (ARN) for the tracker resource. Used when you+-- need to specify a resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:tracker\/ExampleTracker@+describeTrackerResponse_trackerArn :: Lens.Lens' DescribeTrackerResponse Prelude.Text+describeTrackerResponse_trackerArn = Lens.lens (\DescribeTrackerResponse' {trackerArn} -> trackerArn) (\s@DescribeTrackerResponse' {} a -> s {trackerArn = a} :: DescribeTrackerResponse)++-- | The name of the tracker resource.+describeTrackerResponse_trackerName :: Lens.Lens' DescribeTrackerResponse Prelude.Text+describeTrackerResponse_trackerName = Lens.lens (\DescribeTrackerResponse' {trackerName} -> trackerName) (\s@DescribeTrackerResponse' {} a -> s {trackerName = a} :: DescribeTrackerResponse)++-- | The timestamp for when the tracker resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+describeTrackerResponse_updateTime :: Lens.Lens' DescribeTrackerResponse Prelude.UTCTime+describeTrackerResponse_updateTime = Lens.lens (\DescribeTrackerResponse' {updateTime} -> updateTime) (\s@DescribeTrackerResponse' {} a -> s {updateTime = a} :: DescribeTrackerResponse) Prelude.. Data._Time++instance Prelude.NFData DescribeTrackerResponse where+  rnf DescribeTrackerResponse' {..} =+    Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf positionFiltering+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf pricingPlanDataSource+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf trackerArn+      `Prelude.seq` Prelude.rnf trackerName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/DisassociateTrackerConsumer.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.Location.DisassociateTrackerConsumer+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Removes the association between a tracker resource and a geofence+-- collection.+--+-- Once you unlink a tracker resource from a geofence collection, the+-- tracker positions will no longer be automatically evaluated against+-- geofences.+module Amazonka.Location.DisassociateTrackerConsumer+  ( -- * Creating a Request+    DisassociateTrackerConsumer (..),+    newDisassociateTrackerConsumer,++    -- * Request Lenses+    disassociateTrackerConsumer_consumerArn,+    disassociateTrackerConsumer_trackerName,++    -- * Destructuring the Response+    DisassociateTrackerConsumerResponse (..),+    newDisassociateTrackerConsumerResponse,++    -- * Response Lenses+    disassociateTrackerConsumerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDisassociateTrackerConsumer' smart constructor.+data DisassociateTrackerConsumer = DisassociateTrackerConsumer'+  { -- | The Amazon Resource Name (ARN) for the geofence collection to be+    -- disassociated from the tracker resource. Used when you need to specify a+    -- resource across all AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollectionConsumer@+    consumerArn :: Prelude.Text,+    -- | The name of the tracker resource to be dissociated from the consumer.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateTrackerConsumer' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'consumerArn', 'disassociateTrackerConsumer_consumerArn' - The Amazon Resource Name (ARN) for the geofence collection to be+-- disassociated from the tracker resource. Used when you need to specify a+-- resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollectionConsumer@+--+-- 'trackerName', 'disassociateTrackerConsumer_trackerName' - The name of the tracker resource to be dissociated from the consumer.+newDisassociateTrackerConsumer ::+  -- | 'consumerArn'+  Prelude.Text ->+  -- | 'trackerName'+  Prelude.Text ->+  DisassociateTrackerConsumer+newDisassociateTrackerConsumer+  pConsumerArn_+  pTrackerName_ =+    DisassociateTrackerConsumer'+      { consumerArn =+          pConsumerArn_,+        trackerName = pTrackerName_+      }++-- | The Amazon Resource Name (ARN) for the geofence collection to be+-- disassociated from the tracker resource. Used when you need to specify a+-- resource across all AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollectionConsumer@+disassociateTrackerConsumer_consumerArn :: Lens.Lens' DisassociateTrackerConsumer Prelude.Text+disassociateTrackerConsumer_consumerArn = Lens.lens (\DisassociateTrackerConsumer' {consumerArn} -> consumerArn) (\s@DisassociateTrackerConsumer' {} a -> s {consumerArn = a} :: DisassociateTrackerConsumer)++-- | The name of the tracker resource to be dissociated from the consumer.+disassociateTrackerConsumer_trackerName :: Lens.Lens' DisassociateTrackerConsumer Prelude.Text+disassociateTrackerConsumer_trackerName = Lens.lens (\DisassociateTrackerConsumer' {trackerName} -> trackerName) (\s@DisassociateTrackerConsumer' {} a -> s {trackerName = a} :: DisassociateTrackerConsumer)++instance Core.AWSRequest DisassociateTrackerConsumer where+  type+    AWSResponse DisassociateTrackerConsumer =+      DisassociateTrackerConsumerResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DisassociateTrackerConsumerResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DisassociateTrackerConsumer where+  hashWithSalt _salt DisassociateTrackerConsumer' {..} =+    _salt+      `Prelude.hashWithSalt` consumerArn+      `Prelude.hashWithSalt` trackerName++instance Prelude.NFData DisassociateTrackerConsumer where+  rnf DisassociateTrackerConsumer' {..} =+    Prelude.rnf consumerArn+      `Prelude.seq` Prelude.rnf trackerName++instance Data.ToHeaders DisassociateTrackerConsumer where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DisassociateTrackerConsumer where+  toPath DisassociateTrackerConsumer' {..} =+    Prelude.mconcat+      [ "/tracking/v0/trackers/",+        Data.toBS trackerName,+        "/consumers/",+        Data.toBS consumerArn+      ]++instance Data.ToQuery DisassociateTrackerConsumer where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDisassociateTrackerConsumerResponse' smart constructor.+data DisassociateTrackerConsumerResponse = DisassociateTrackerConsumerResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateTrackerConsumerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'disassociateTrackerConsumerResponse_httpStatus' - The response's http status code.+newDisassociateTrackerConsumerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DisassociateTrackerConsumerResponse+newDisassociateTrackerConsumerResponse pHttpStatus_ =+  DisassociateTrackerConsumerResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+disassociateTrackerConsumerResponse_httpStatus :: Lens.Lens' DisassociateTrackerConsumerResponse Prelude.Int+disassociateTrackerConsumerResponse_httpStatus = Lens.lens (\DisassociateTrackerConsumerResponse' {httpStatus} -> httpStatus) (\s@DisassociateTrackerConsumerResponse' {} a -> s {httpStatus = a} :: DisassociateTrackerConsumerResponse)++instance+  Prelude.NFData+    DisassociateTrackerConsumerResponse+  where+  rnf DisassociateTrackerConsumerResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/Location/GetDevicePosition.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.Location.GetDevicePosition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves a device\'s most recent position according to its sample time.+--+-- Device positions are deleted after 30 days.+module Amazonka.Location.GetDevicePosition+  ( -- * Creating a Request+    GetDevicePosition (..),+    newGetDevicePosition,++    -- * Request Lenses+    getDevicePosition_deviceId,+    getDevicePosition_trackerName,++    -- * Destructuring the Response+    GetDevicePositionResponse (..),+    newGetDevicePositionResponse,++    -- * Response Lenses+    getDevicePositionResponse_accuracy,+    getDevicePositionResponse_deviceId,+    getDevicePositionResponse_positionProperties,+    getDevicePositionResponse_httpStatus,+    getDevicePositionResponse_position,+    getDevicePositionResponse_receivedTime,+    getDevicePositionResponse_sampleTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetDevicePosition' smart constructor.+data GetDevicePosition = GetDevicePosition'+  { -- | The device whose position you want to retrieve.+    deviceId :: Prelude.Text,+    -- | The tracker resource receiving the position update.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDevicePosition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deviceId', 'getDevicePosition_deviceId' - The device whose position you want to retrieve.+--+-- 'trackerName', 'getDevicePosition_trackerName' - The tracker resource receiving the position update.+newGetDevicePosition ::+  -- | 'deviceId'+  Prelude.Text ->+  -- | 'trackerName'+  Prelude.Text ->+  GetDevicePosition+newGetDevicePosition pDeviceId_ pTrackerName_ =+  GetDevicePosition'+    { deviceId = pDeviceId_,+      trackerName = pTrackerName_+    }++-- | The device whose position you want to retrieve.+getDevicePosition_deviceId :: Lens.Lens' GetDevicePosition Prelude.Text+getDevicePosition_deviceId = Lens.lens (\GetDevicePosition' {deviceId} -> deviceId) (\s@GetDevicePosition' {} a -> s {deviceId = a} :: GetDevicePosition)++-- | The tracker resource receiving the position update.+getDevicePosition_trackerName :: Lens.Lens' GetDevicePosition Prelude.Text+getDevicePosition_trackerName = Lens.lens (\GetDevicePosition' {trackerName} -> trackerName) (\s@GetDevicePosition' {} a -> s {trackerName = a} :: GetDevicePosition)++instance Core.AWSRequest GetDevicePosition where+  type+    AWSResponse GetDevicePosition =+      GetDevicePositionResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDevicePositionResponse'+            Prelude.<$> (x Data..?> "Accuracy")+            Prelude.<*> (x Data..?> "DeviceId")+            Prelude.<*> ( x+                            Data..?> "PositionProperties"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "Position")+            Prelude.<*> (x Data..:> "ReceivedTime")+            Prelude.<*> (x Data..:> "SampleTime")+      )++instance Prelude.Hashable GetDevicePosition where+  hashWithSalt _salt GetDevicePosition' {..} =+    _salt+      `Prelude.hashWithSalt` deviceId+      `Prelude.hashWithSalt` trackerName++instance Prelude.NFData GetDevicePosition where+  rnf GetDevicePosition' {..} =+    Prelude.rnf deviceId+      `Prelude.seq` Prelude.rnf trackerName++instance Data.ToHeaders GetDevicePosition where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetDevicePosition where+  toPath GetDevicePosition' {..} =+    Prelude.mconcat+      [ "/tracking/v0/trackers/",+        Data.toBS trackerName,+        "/devices/",+        Data.toBS deviceId,+        "/positions/latest"+      ]++instance Data.ToQuery GetDevicePosition where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetDevicePositionResponse' smart constructor.+data GetDevicePositionResponse = GetDevicePositionResponse'+  { -- | The accuracy of the device position.+    accuracy :: Prelude.Maybe PositionalAccuracy,+    -- | The device whose position you retrieved.+    deviceId :: Prelude.Maybe Prelude.Text,+    -- | The properties associated with the position.+    positionProperties :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The last known device position.+    position :: Data.Sensitive (Prelude.NonEmpty Prelude.Double),+    -- | The timestamp for when the tracker resource received the device position+    -- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    receivedTime :: Data.ISO8601,+    -- | The timestamp at which the device\'s position was determined. Uses+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    sampleTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDevicePositionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accuracy', 'getDevicePositionResponse_accuracy' - The accuracy of the device position.+--+-- 'deviceId', 'getDevicePositionResponse_deviceId' - The device whose position you retrieved.+--+-- 'positionProperties', 'getDevicePositionResponse_positionProperties' - The properties associated with the position.+--+-- 'httpStatus', 'getDevicePositionResponse_httpStatus' - The response's http status code.+--+-- 'position', 'getDevicePositionResponse_position' - The last known device position.+--+-- 'receivedTime', 'getDevicePositionResponse_receivedTime' - The timestamp for when the tracker resource received the device position+-- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'sampleTime', 'getDevicePositionResponse_sampleTime' - The timestamp at which the device\'s position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newGetDevicePositionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'position'+  Prelude.NonEmpty Prelude.Double ->+  -- | 'receivedTime'+  Prelude.UTCTime ->+  -- | 'sampleTime'+  Prelude.UTCTime ->+  GetDevicePositionResponse+newGetDevicePositionResponse+  pHttpStatus_+  pPosition_+  pReceivedTime_+  pSampleTime_ =+    GetDevicePositionResponse'+      { accuracy =+          Prelude.Nothing,+        deviceId = Prelude.Nothing,+        positionProperties = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        position =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pPosition_,+        receivedTime = Data._Time Lens.# pReceivedTime_,+        sampleTime = Data._Time Lens.# pSampleTime_+      }++-- | The accuracy of the device position.+getDevicePositionResponse_accuracy :: Lens.Lens' GetDevicePositionResponse (Prelude.Maybe PositionalAccuracy)+getDevicePositionResponse_accuracy = Lens.lens (\GetDevicePositionResponse' {accuracy} -> accuracy) (\s@GetDevicePositionResponse' {} a -> s {accuracy = a} :: GetDevicePositionResponse)++-- | The device whose position you retrieved.+getDevicePositionResponse_deviceId :: Lens.Lens' GetDevicePositionResponse (Prelude.Maybe Prelude.Text)+getDevicePositionResponse_deviceId = Lens.lens (\GetDevicePositionResponse' {deviceId} -> deviceId) (\s@GetDevicePositionResponse' {} a -> s {deviceId = a} :: GetDevicePositionResponse)++-- | The properties associated with the position.+getDevicePositionResponse_positionProperties :: Lens.Lens' GetDevicePositionResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+getDevicePositionResponse_positionProperties = Lens.lens (\GetDevicePositionResponse' {positionProperties} -> positionProperties) (\s@GetDevicePositionResponse' {} a -> s {positionProperties = a} :: GetDevicePositionResponse) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | The response's http status code.+getDevicePositionResponse_httpStatus :: Lens.Lens' GetDevicePositionResponse Prelude.Int+getDevicePositionResponse_httpStatus = Lens.lens (\GetDevicePositionResponse' {httpStatus} -> httpStatus) (\s@GetDevicePositionResponse' {} a -> s {httpStatus = a} :: GetDevicePositionResponse)++-- | The last known device position.+getDevicePositionResponse_position :: Lens.Lens' GetDevicePositionResponse (Prelude.NonEmpty Prelude.Double)+getDevicePositionResponse_position = Lens.lens (\GetDevicePositionResponse' {position} -> position) (\s@GetDevicePositionResponse' {} a -> s {position = a} :: GetDevicePositionResponse) Prelude.. Data._Sensitive Prelude.. Lens.coerced++-- | The timestamp for when the tracker resource received the device position+-- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+getDevicePositionResponse_receivedTime :: Lens.Lens' GetDevicePositionResponse Prelude.UTCTime+getDevicePositionResponse_receivedTime = Lens.lens (\GetDevicePositionResponse' {receivedTime} -> receivedTime) (\s@GetDevicePositionResponse' {} a -> s {receivedTime = a} :: GetDevicePositionResponse) Prelude.. Data._Time++-- | The timestamp at which the device\'s position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+getDevicePositionResponse_sampleTime :: Lens.Lens' GetDevicePositionResponse Prelude.UTCTime+getDevicePositionResponse_sampleTime = Lens.lens (\GetDevicePositionResponse' {sampleTime} -> sampleTime) (\s@GetDevicePositionResponse' {} a -> s {sampleTime = a} :: GetDevicePositionResponse) Prelude.. Data._Time++instance Prelude.NFData GetDevicePositionResponse where+  rnf GetDevicePositionResponse' {..} =+    Prelude.rnf accuracy+      `Prelude.seq` Prelude.rnf deviceId+      `Prelude.seq` Prelude.rnf positionProperties+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf position+      `Prelude.seq` Prelude.rnf receivedTime+      `Prelude.seq` Prelude.rnf sampleTime
+ gen/Amazonka/Location/GetDevicePositionHistory.hs view
@@ -0,0 +1,363 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.GetDevicePositionHistory+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the device position history from a tracker resource within a+-- specified range of time.+--+-- Device positions are deleted after 30 days.+--+-- This operation returns paginated results.+module Amazonka.Location.GetDevicePositionHistory+  ( -- * Creating a Request+    GetDevicePositionHistory (..),+    newGetDevicePositionHistory,++    -- * Request Lenses+    getDevicePositionHistory_endTimeExclusive,+    getDevicePositionHistory_maxResults,+    getDevicePositionHistory_nextToken,+    getDevicePositionHistory_startTimeInclusive,+    getDevicePositionHistory_deviceId,+    getDevicePositionHistory_trackerName,++    -- * Destructuring the Response+    GetDevicePositionHistoryResponse (..),+    newGetDevicePositionHistoryResponse,++    -- * Response Lenses+    getDevicePositionHistoryResponse_nextToken,+    getDevicePositionHistoryResponse_httpStatus,+    getDevicePositionHistoryResponse_devicePositions,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetDevicePositionHistory' smart constructor.+data GetDevicePositionHistory = GetDevicePositionHistory'+  { -- | Specify the end time for the position history in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@. By default, the value will be the+    -- time that the request is made.+    --+    -- Requirement:+    --+    -- -   The time specified for @EndTimeExclusive@ must be after the time for+    --     @StartTimeInclusive@.+    endTimeExclusive :: Prelude.Maybe Data.ISO8601,+    -- | An optional limit for the number of device positions returned in a+    -- single call.+    --+    -- Default value: @100@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token specifying which page of results to return in the+    -- response. If no token is provided, the default page is the first page.+    --+    -- Default value: @null@+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Specify the start time for the position history in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@. By default, the value will be 24+    -- hours prior to the time that the request is made.+    --+    -- Requirement:+    --+    -- -   The time specified for @StartTimeInclusive@ must be before+    --     @EndTimeExclusive@.+    startTimeInclusive :: Prelude.Maybe Data.ISO8601,+    -- | The device whose position history you want to retrieve.+    deviceId :: Prelude.Text,+    -- | The tracker resource receiving the request for the device position+    -- history.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDevicePositionHistory' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endTimeExclusive', 'getDevicePositionHistory_endTimeExclusive' - Specify the end time for the position history in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@. By default, the value will be the+-- time that the request is made.+--+-- Requirement:+--+-- -   The time specified for @EndTimeExclusive@ must be after the time for+--     @StartTimeInclusive@.+--+-- 'maxResults', 'getDevicePositionHistory_maxResults' - An optional limit for the number of device positions returned in a+-- single call.+--+-- Default value: @100@+--+-- 'nextToken', 'getDevicePositionHistory_nextToken' - The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+--+-- 'startTimeInclusive', 'getDevicePositionHistory_startTimeInclusive' - Specify the start time for the position history in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@. By default, the value will be 24+-- hours prior to the time that the request is made.+--+-- Requirement:+--+-- -   The time specified for @StartTimeInclusive@ must be before+--     @EndTimeExclusive@.+--+-- 'deviceId', 'getDevicePositionHistory_deviceId' - The device whose position history you want to retrieve.+--+-- 'trackerName', 'getDevicePositionHistory_trackerName' - The tracker resource receiving the request for the device position+-- history.+newGetDevicePositionHistory ::+  -- | 'deviceId'+  Prelude.Text ->+  -- | 'trackerName'+  Prelude.Text ->+  GetDevicePositionHistory+newGetDevicePositionHistory pDeviceId_ pTrackerName_ =+  GetDevicePositionHistory'+    { endTimeExclusive =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      startTimeInclusive = Prelude.Nothing,+      deviceId = pDeviceId_,+      trackerName = pTrackerName_+    }++-- | Specify the end time for the position history in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@. By default, the value will be the+-- time that the request is made.+--+-- Requirement:+--+-- -   The time specified for @EndTimeExclusive@ must be after the time for+--     @StartTimeInclusive@.+getDevicePositionHistory_endTimeExclusive :: Lens.Lens' GetDevicePositionHistory (Prelude.Maybe Prelude.UTCTime)+getDevicePositionHistory_endTimeExclusive = Lens.lens (\GetDevicePositionHistory' {endTimeExclusive} -> endTimeExclusive) (\s@GetDevicePositionHistory' {} a -> s {endTimeExclusive = a} :: GetDevicePositionHistory) Prelude.. Lens.mapping Data._Time++-- | An optional limit for the number of device positions returned in a+-- single call.+--+-- Default value: @100@+getDevicePositionHistory_maxResults :: Lens.Lens' GetDevicePositionHistory (Prelude.Maybe Prelude.Natural)+getDevicePositionHistory_maxResults = Lens.lens (\GetDevicePositionHistory' {maxResults} -> maxResults) (\s@GetDevicePositionHistory' {} a -> s {maxResults = a} :: GetDevicePositionHistory)++-- | The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+getDevicePositionHistory_nextToken :: Lens.Lens' GetDevicePositionHistory (Prelude.Maybe Prelude.Text)+getDevicePositionHistory_nextToken = Lens.lens (\GetDevicePositionHistory' {nextToken} -> nextToken) (\s@GetDevicePositionHistory' {} a -> s {nextToken = a} :: GetDevicePositionHistory)++-- | Specify the start time for the position history in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@. By default, the value will be 24+-- hours prior to the time that the request is made.+--+-- Requirement:+--+-- -   The time specified for @StartTimeInclusive@ must be before+--     @EndTimeExclusive@.+getDevicePositionHistory_startTimeInclusive :: Lens.Lens' GetDevicePositionHistory (Prelude.Maybe Prelude.UTCTime)+getDevicePositionHistory_startTimeInclusive = Lens.lens (\GetDevicePositionHistory' {startTimeInclusive} -> startTimeInclusive) (\s@GetDevicePositionHistory' {} a -> s {startTimeInclusive = a} :: GetDevicePositionHistory) Prelude.. Lens.mapping Data._Time++-- | The device whose position history you want to retrieve.+getDevicePositionHistory_deviceId :: Lens.Lens' GetDevicePositionHistory Prelude.Text+getDevicePositionHistory_deviceId = Lens.lens (\GetDevicePositionHistory' {deviceId} -> deviceId) (\s@GetDevicePositionHistory' {} a -> s {deviceId = a} :: GetDevicePositionHistory)++-- | The tracker resource receiving the request for the device position+-- history.+getDevicePositionHistory_trackerName :: Lens.Lens' GetDevicePositionHistory Prelude.Text+getDevicePositionHistory_trackerName = Lens.lens (\GetDevicePositionHistory' {trackerName} -> trackerName) (\s@GetDevicePositionHistory' {} a -> s {trackerName = a} :: GetDevicePositionHistory)++instance Core.AWSPager GetDevicePositionHistory where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? getDevicePositionHistoryResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. getDevicePositionHistoryResponse_devicePositions+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& getDevicePositionHistory_nextToken+          Lens..~ rs+          Lens.^? getDevicePositionHistoryResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest GetDevicePositionHistory where+  type+    AWSResponse GetDevicePositionHistory =+      GetDevicePositionHistoryResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDevicePositionHistoryResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "DevicePositions"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable GetDevicePositionHistory where+  hashWithSalt _salt GetDevicePositionHistory' {..} =+    _salt+      `Prelude.hashWithSalt` endTimeExclusive+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` startTimeInclusive+      `Prelude.hashWithSalt` deviceId+      `Prelude.hashWithSalt` trackerName++instance Prelude.NFData GetDevicePositionHistory where+  rnf GetDevicePositionHistory' {..} =+    Prelude.rnf endTimeExclusive+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf startTimeInclusive+      `Prelude.seq` Prelude.rnf deviceId+      `Prelude.seq` Prelude.rnf trackerName++instance Data.ToHeaders GetDevicePositionHistory where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetDevicePositionHistory where+  toJSON GetDevicePositionHistory' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("EndTimeExclusive" Data..=)+              Prelude.<$> endTimeExclusive,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("StartTimeInclusive" Data..=)+              Prelude.<$> startTimeInclusive+          ]+      )++instance Data.ToPath GetDevicePositionHistory where+  toPath GetDevicePositionHistory' {..} =+    Prelude.mconcat+      [ "/tracking/v0/trackers/",+        Data.toBS trackerName,+        "/devices/",+        Data.toBS deviceId,+        "/list-positions"+      ]++instance Data.ToQuery GetDevicePositionHistory where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetDevicePositionHistoryResponse' smart constructor.+data GetDevicePositionHistoryResponse = GetDevicePositionHistoryResponse'+  { -- | A pagination token indicating there are additional pages available. You+    -- can use the token in a following request to fetch the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains the position history details for the requested device.+    devicePositions :: [DevicePosition]+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDevicePositionHistoryResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getDevicePositionHistoryResponse_nextToken' - A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+--+-- 'httpStatus', 'getDevicePositionHistoryResponse_httpStatus' - The response's http status code.+--+-- 'devicePositions', 'getDevicePositionHistoryResponse_devicePositions' - Contains the position history details for the requested device.+newGetDevicePositionHistoryResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetDevicePositionHistoryResponse+newGetDevicePositionHistoryResponse pHttpStatus_ =+  GetDevicePositionHistoryResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      devicePositions = Prelude.mempty+    }++-- | A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+getDevicePositionHistoryResponse_nextToken :: Lens.Lens' GetDevicePositionHistoryResponse (Prelude.Maybe Prelude.Text)+getDevicePositionHistoryResponse_nextToken = Lens.lens (\GetDevicePositionHistoryResponse' {nextToken} -> nextToken) (\s@GetDevicePositionHistoryResponse' {} a -> s {nextToken = a} :: GetDevicePositionHistoryResponse)++-- | The response's http status code.+getDevicePositionHistoryResponse_httpStatus :: Lens.Lens' GetDevicePositionHistoryResponse Prelude.Int+getDevicePositionHistoryResponse_httpStatus = Lens.lens (\GetDevicePositionHistoryResponse' {httpStatus} -> httpStatus) (\s@GetDevicePositionHistoryResponse' {} a -> s {httpStatus = a} :: GetDevicePositionHistoryResponse)++-- | Contains the position history details for the requested device.+getDevicePositionHistoryResponse_devicePositions :: Lens.Lens' GetDevicePositionHistoryResponse [DevicePosition]+getDevicePositionHistoryResponse_devicePositions = Lens.lens (\GetDevicePositionHistoryResponse' {devicePositions} -> devicePositions) (\s@GetDevicePositionHistoryResponse' {} a -> s {devicePositions = a} :: GetDevicePositionHistoryResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    GetDevicePositionHistoryResponse+  where+  rnf GetDevicePositionHistoryResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf devicePositions
+ gen/Amazonka/Location/GetGeofence.hs view
@@ -0,0 +1,287 @@+{-# 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.Location.GetGeofence+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the geofence details from a geofence collection.+module Amazonka.Location.GetGeofence+  ( -- * Creating a Request+    GetGeofence (..),+    newGetGeofence,++    -- * Request Lenses+    getGeofence_collectionName,+    getGeofence_geofenceId,++    -- * Destructuring the Response+    GetGeofenceResponse (..),+    newGetGeofenceResponse,++    -- * Response Lenses+    getGeofenceResponse_httpStatus,+    getGeofenceResponse_createTime,+    getGeofenceResponse_geofenceId,+    getGeofenceResponse_geometry,+    getGeofenceResponse_status,+    getGeofenceResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetGeofence' smart constructor.+data GetGeofence = GetGeofence'+  { -- | The geofence collection storing the target geofence.+    collectionName :: Prelude.Text,+    -- | The geofence you\'re retrieving details for.+    geofenceId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetGeofence' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'collectionName', 'getGeofence_collectionName' - The geofence collection storing the target geofence.+--+-- 'geofenceId', 'getGeofence_geofenceId' - The geofence you\'re retrieving details for.+newGetGeofence ::+  -- | 'collectionName'+  Prelude.Text ->+  -- | 'geofenceId'+  Prelude.Text ->+  GetGeofence+newGetGeofence pCollectionName_ pGeofenceId_ =+  GetGeofence'+    { collectionName = pCollectionName_,+      geofenceId = pGeofenceId_+    }++-- | The geofence collection storing the target geofence.+getGeofence_collectionName :: Lens.Lens' GetGeofence Prelude.Text+getGeofence_collectionName = Lens.lens (\GetGeofence' {collectionName} -> collectionName) (\s@GetGeofence' {} a -> s {collectionName = a} :: GetGeofence)++-- | The geofence you\'re retrieving details for.+getGeofence_geofenceId :: Lens.Lens' GetGeofence Prelude.Text+getGeofence_geofenceId = Lens.lens (\GetGeofence' {geofenceId} -> geofenceId) (\s@GetGeofence' {} a -> s {geofenceId = a} :: GetGeofence)++instance Core.AWSRequest GetGeofence where+  type AWSResponse GetGeofence = GetGeofenceResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetGeofenceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CreateTime")+            Prelude.<*> (x Data..:> "GeofenceId")+            Prelude.<*> (x Data..:> "Geometry")+            Prelude.<*> (x Data..:> "Status")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable GetGeofence where+  hashWithSalt _salt GetGeofence' {..} =+    _salt+      `Prelude.hashWithSalt` collectionName+      `Prelude.hashWithSalt` geofenceId++instance Prelude.NFData GetGeofence where+  rnf GetGeofence' {..} =+    Prelude.rnf collectionName+      `Prelude.seq` Prelude.rnf geofenceId++instance Data.ToHeaders GetGeofence where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetGeofence where+  toPath GetGeofence' {..} =+    Prelude.mconcat+      [ "/geofencing/v0/collections/",+        Data.toBS collectionName,+        "/geofences/",+        Data.toBS geofenceId+      ]++instance Data.ToQuery GetGeofence where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetGeofenceResponse' smart constructor.+data GetGeofenceResponse = GetGeofenceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The timestamp for when the geofence collection was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    createTime :: Data.ISO8601,+    -- | The geofence identifier.+    geofenceId :: Prelude.Text,+    -- | Contains the geofence geometry details describing a polygon or a circle.+    geometry :: GeofenceGeometry,+    -- | Identifies the state of the geofence. A geofence will hold one of the+    -- following states:+    --+    -- -   @ACTIVE@ — The geofence has been indexed by the system.+    --+    -- -   @PENDING@ — The geofence is being processed by the system.+    --+    -- -   @FAILED@ — The geofence failed to be indexed by the system.+    --+    -- -   @DELETED@ — The geofence has been deleted from the system index.+    --+    -- -   @DELETING@ — The geofence is being deleted from the system index.+    status :: Prelude.Text,+    -- | The timestamp for when the geofence collection was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetGeofenceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getGeofenceResponse_httpStatus' - The response's http status code.+--+-- 'createTime', 'getGeofenceResponse_createTime' - The timestamp for when the geofence collection was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+--+-- 'geofenceId', 'getGeofenceResponse_geofenceId' - The geofence identifier.+--+-- 'geometry', 'getGeofenceResponse_geometry' - Contains the geofence geometry details describing a polygon or a circle.+--+-- 'status', 'getGeofenceResponse_status' - Identifies the state of the geofence. A geofence will hold one of the+-- following states:+--+-- -   @ACTIVE@ — The geofence has been indexed by the system.+--+-- -   @PENDING@ — The geofence is being processed by the system.+--+-- -   @FAILED@ — The geofence failed to be indexed by the system.+--+-- -   @DELETED@ — The geofence has been deleted from the system index.+--+-- -   @DELETING@ — The geofence is being deleted from the system index.+--+-- 'updateTime', 'getGeofenceResponse_updateTime' - The timestamp for when the geofence collection was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+newGetGeofenceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'geofenceId'+  Prelude.Text ->+  -- | 'geometry'+  GeofenceGeometry ->+  -- | 'status'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  GetGeofenceResponse+newGetGeofenceResponse+  pHttpStatus_+  pCreateTime_+  pGeofenceId_+  pGeometry_+  pStatus_+  pUpdateTime_ =+    GetGeofenceResponse'+      { httpStatus = pHttpStatus_,+        createTime = Data._Time Lens.# pCreateTime_,+        geofenceId = pGeofenceId_,+        geometry = pGeometry_,+        status = pStatus_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | The response's http status code.+getGeofenceResponse_httpStatus :: Lens.Lens' GetGeofenceResponse Prelude.Int+getGeofenceResponse_httpStatus = Lens.lens (\GetGeofenceResponse' {httpStatus} -> httpStatus) (\s@GetGeofenceResponse' {} a -> s {httpStatus = a} :: GetGeofenceResponse)++-- | The timestamp for when the geofence collection was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+getGeofenceResponse_createTime :: Lens.Lens' GetGeofenceResponse Prelude.UTCTime+getGeofenceResponse_createTime = Lens.lens (\GetGeofenceResponse' {createTime} -> createTime) (\s@GetGeofenceResponse' {} a -> s {createTime = a} :: GetGeofenceResponse) Prelude.. Data._Time++-- | The geofence identifier.+getGeofenceResponse_geofenceId :: Lens.Lens' GetGeofenceResponse Prelude.Text+getGeofenceResponse_geofenceId = Lens.lens (\GetGeofenceResponse' {geofenceId} -> geofenceId) (\s@GetGeofenceResponse' {} a -> s {geofenceId = a} :: GetGeofenceResponse)++-- | Contains the geofence geometry details describing a polygon or a circle.+getGeofenceResponse_geometry :: Lens.Lens' GetGeofenceResponse GeofenceGeometry+getGeofenceResponse_geometry = Lens.lens (\GetGeofenceResponse' {geometry} -> geometry) (\s@GetGeofenceResponse' {} a -> s {geometry = a} :: GetGeofenceResponse)++-- | Identifies the state of the geofence. A geofence will hold one of the+-- following states:+--+-- -   @ACTIVE@ — The geofence has been indexed by the system.+--+-- -   @PENDING@ — The geofence is being processed by the system.+--+-- -   @FAILED@ — The geofence failed to be indexed by the system.+--+-- -   @DELETED@ — The geofence has been deleted from the system index.+--+-- -   @DELETING@ — The geofence is being deleted from the system index.+getGeofenceResponse_status :: Lens.Lens' GetGeofenceResponse Prelude.Text+getGeofenceResponse_status = Lens.lens (\GetGeofenceResponse' {status} -> status) (\s@GetGeofenceResponse' {} a -> s {status = a} :: GetGeofenceResponse)++-- | The timestamp for when the geofence collection was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+getGeofenceResponse_updateTime :: Lens.Lens' GetGeofenceResponse Prelude.UTCTime+getGeofenceResponse_updateTime = Lens.lens (\GetGeofenceResponse' {updateTime} -> updateTime) (\s@GetGeofenceResponse' {} a -> s {updateTime = a} :: GetGeofenceResponse) Prelude.. Data._Time++instance Prelude.NFData GetGeofenceResponse where+  rnf GetGeofenceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf geofenceId+      `Prelude.seq` Prelude.rnf geometry+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/GetMapGlyphs.hs view
@@ -0,0 +1,356 @@+{-# 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.Location.GetMapGlyphs+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves glyphs used to display labels on a map.+module Amazonka.Location.GetMapGlyphs+  ( -- * Creating a Request+    GetMapGlyphs (..),+    newGetMapGlyphs,++    -- * Request Lenses+    getMapGlyphs_fontStack,+    getMapGlyphs_fontUnicodeRange,+    getMapGlyphs_mapName,++    -- * Destructuring the Response+    GetMapGlyphsResponse (..),+    newGetMapGlyphsResponse,++    -- * Response Lenses+    getMapGlyphsResponse_blob,+    getMapGlyphsResponse_contentType,+    getMapGlyphsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetMapGlyphs' smart constructor.+data GetMapGlyphs = GetMapGlyphs'+  { -- | A comma-separated list of fonts to load glyphs from in order of+    -- preference. For example, @Noto Sans Regular, Arial Unicode@.+    --+    -- Valid fonts stacks for+    -- <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri>+    -- styles:+    --+    -- -   VectorEsriDarkGrayCanvas – @Ubuntu Medium Italic@ | @Ubuntu Medium@+    --     | @Ubuntu Italic@ | @Ubuntu Regular@ | @Ubuntu Bold@+    --+    -- -   VectorEsriLightGrayCanvas – @Ubuntu Italic@ | @Ubuntu Regular@ |+    --     @Ubuntu Light@ | @Ubuntu Bold@+    --+    -- -   VectorEsriTopographic – @Noto Sans Italic@ | @Noto Sans Regular@ |+    --     @Noto Sans Bold@ | @Noto Serif Regular@ |+    --     @Roboto Condensed Light Italic@+    --+    -- -   VectorEsriStreets – @Arial Regular@ | @Arial Italic@ | @Arial Bold@+    --+    -- -   VectorEsriNavigation – @Arial Regular@ | @Arial Italic@ |+    --     @Arial Bold@+    --+    -- Valid font stacks for+    -- <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies>+    -- styles:+    --+    -- -   VectorHereContrast – @Fira GO Regular@ | @Fira GO Bold@+    --+    -- -   VectorHereExplore, VectorHereExploreTruck,+    --     HybridHereExploreSatellite – @Fira GO Italic@ | @Fira GO Map@ |+    --     @Fira GO Map Bold@ | @Noto Sans CJK JP Bold@ |+    --     @Noto Sans CJK JP Light@ | @Noto Sans CJK JP Regular@+    --+    -- Valid font stacks for+    -- <https://docs.aws.amazon.com/location/latest/developerguide/open-data.html Open Data (Preview)>+    -- styles:+    --+    -- -   VectorOpenDataStandardLight –+    --     @Amazon Ember Regular,Noto Sans Regular@ |+    --     @Amazon Ember Bold,Noto Sans Bold@ |+    --     @Amazon Ember Medium,Noto Sans Medium@ |+    --     @Amazon Ember Regular Italic,Noto Sans Italic@ |+    --     @Amazon Ember Condensed RC Regular,Noto Sans Regular@ |+    --     @Amazon Ember Condensed RC Bold,Noto Sans Bold@+    --+    -- The fonts used by @VectorOpenDataStandardLight@ are combined fonts that+    -- use @Amazon Ember@ for most glyphs but @Noto Sans@ for glyphs+    -- unsupported by @Amazon Ember@.+    fontStack :: Prelude.Text,+    -- | A Unicode range of characters to download glyphs for. Each response will+    -- contain 256 characters. For example, 0–255 includes all characters from+    -- range @U+0000@ to @00FF@. Must be aligned to multiples of 256.+    fontUnicodeRange :: Prelude.Text,+    -- | The map resource associated with the glyph file.+    mapName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetMapGlyphs' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fontStack', 'getMapGlyphs_fontStack' - A comma-separated list of fonts to load glyphs from in order of+-- preference. For example, @Noto Sans Regular, Arial Unicode@.+--+-- Valid fonts stacks for+-- <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri>+-- styles:+--+-- -   VectorEsriDarkGrayCanvas – @Ubuntu Medium Italic@ | @Ubuntu Medium@+--     | @Ubuntu Italic@ | @Ubuntu Regular@ | @Ubuntu Bold@+--+-- -   VectorEsriLightGrayCanvas – @Ubuntu Italic@ | @Ubuntu Regular@ |+--     @Ubuntu Light@ | @Ubuntu Bold@+--+-- -   VectorEsriTopographic – @Noto Sans Italic@ | @Noto Sans Regular@ |+--     @Noto Sans Bold@ | @Noto Serif Regular@ |+--     @Roboto Condensed Light Italic@+--+-- -   VectorEsriStreets – @Arial Regular@ | @Arial Italic@ | @Arial Bold@+--+-- -   VectorEsriNavigation – @Arial Regular@ | @Arial Italic@ |+--     @Arial Bold@+--+-- Valid font stacks for+-- <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies>+-- styles:+--+-- -   VectorHereContrast – @Fira GO Regular@ | @Fira GO Bold@+--+-- -   VectorHereExplore, VectorHereExploreTruck,+--     HybridHereExploreSatellite – @Fira GO Italic@ | @Fira GO Map@ |+--     @Fira GO Map Bold@ | @Noto Sans CJK JP Bold@ |+--     @Noto Sans CJK JP Light@ | @Noto Sans CJK JP Regular@+--+-- Valid font stacks for+-- <https://docs.aws.amazon.com/location/latest/developerguide/open-data.html Open Data (Preview)>+-- styles:+--+-- -   VectorOpenDataStandardLight –+--     @Amazon Ember Regular,Noto Sans Regular@ |+--     @Amazon Ember Bold,Noto Sans Bold@ |+--     @Amazon Ember Medium,Noto Sans Medium@ |+--     @Amazon Ember Regular Italic,Noto Sans Italic@ |+--     @Amazon Ember Condensed RC Regular,Noto Sans Regular@ |+--     @Amazon Ember Condensed RC Bold,Noto Sans Bold@+--+-- The fonts used by @VectorOpenDataStandardLight@ are combined fonts that+-- use @Amazon Ember@ for most glyphs but @Noto Sans@ for glyphs+-- unsupported by @Amazon Ember@.+--+-- 'fontUnicodeRange', 'getMapGlyphs_fontUnicodeRange' - A Unicode range of characters to download glyphs for. Each response will+-- contain 256 characters. For example, 0–255 includes all characters from+-- range @U+0000@ to @00FF@. Must be aligned to multiples of 256.+--+-- 'mapName', 'getMapGlyphs_mapName' - The map resource associated with the glyph file.+newGetMapGlyphs ::+  -- | 'fontStack'+  Prelude.Text ->+  -- | 'fontUnicodeRange'+  Prelude.Text ->+  -- | 'mapName'+  Prelude.Text ->+  GetMapGlyphs+newGetMapGlyphs+  pFontStack_+  pFontUnicodeRange_+  pMapName_ =+    GetMapGlyphs'+      { fontStack = pFontStack_,+        fontUnicodeRange = pFontUnicodeRange_,+        mapName = pMapName_+      }++-- | A comma-separated list of fonts to load glyphs from in order of+-- preference. For example, @Noto Sans Regular, Arial Unicode@.+--+-- Valid fonts stacks for+-- <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri>+-- styles:+--+-- -   VectorEsriDarkGrayCanvas – @Ubuntu Medium Italic@ | @Ubuntu Medium@+--     | @Ubuntu Italic@ | @Ubuntu Regular@ | @Ubuntu Bold@+--+-- -   VectorEsriLightGrayCanvas – @Ubuntu Italic@ | @Ubuntu Regular@ |+--     @Ubuntu Light@ | @Ubuntu Bold@+--+-- -   VectorEsriTopographic – @Noto Sans Italic@ | @Noto Sans Regular@ |+--     @Noto Sans Bold@ | @Noto Serif Regular@ |+--     @Roboto Condensed Light Italic@+--+-- -   VectorEsriStreets – @Arial Regular@ | @Arial Italic@ | @Arial Bold@+--+-- -   VectorEsriNavigation – @Arial Regular@ | @Arial Italic@ |+--     @Arial Bold@+--+-- Valid font stacks for+-- <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies>+-- styles:+--+-- -   VectorHereContrast – @Fira GO Regular@ | @Fira GO Bold@+--+-- -   VectorHereExplore, VectorHereExploreTruck,+--     HybridHereExploreSatellite – @Fira GO Italic@ | @Fira GO Map@ |+--     @Fira GO Map Bold@ | @Noto Sans CJK JP Bold@ |+--     @Noto Sans CJK JP Light@ | @Noto Sans CJK JP Regular@+--+-- Valid font stacks for+-- <https://docs.aws.amazon.com/location/latest/developerguide/open-data.html Open Data (Preview)>+-- styles:+--+-- -   VectorOpenDataStandardLight –+--     @Amazon Ember Regular,Noto Sans Regular@ |+--     @Amazon Ember Bold,Noto Sans Bold@ |+--     @Amazon Ember Medium,Noto Sans Medium@ |+--     @Amazon Ember Regular Italic,Noto Sans Italic@ |+--     @Amazon Ember Condensed RC Regular,Noto Sans Regular@ |+--     @Amazon Ember Condensed RC Bold,Noto Sans Bold@+--+-- The fonts used by @VectorOpenDataStandardLight@ are combined fonts that+-- use @Amazon Ember@ for most glyphs but @Noto Sans@ for glyphs+-- unsupported by @Amazon Ember@.+getMapGlyphs_fontStack :: Lens.Lens' GetMapGlyphs Prelude.Text+getMapGlyphs_fontStack = Lens.lens (\GetMapGlyphs' {fontStack} -> fontStack) (\s@GetMapGlyphs' {} a -> s {fontStack = a} :: GetMapGlyphs)++-- | A Unicode range of characters to download glyphs for. Each response will+-- contain 256 characters. For example, 0–255 includes all characters from+-- range @U+0000@ to @00FF@. Must be aligned to multiples of 256.+getMapGlyphs_fontUnicodeRange :: Lens.Lens' GetMapGlyphs Prelude.Text+getMapGlyphs_fontUnicodeRange = Lens.lens (\GetMapGlyphs' {fontUnicodeRange} -> fontUnicodeRange) (\s@GetMapGlyphs' {} a -> s {fontUnicodeRange = a} :: GetMapGlyphs)++-- | The map resource associated with the glyph file.+getMapGlyphs_mapName :: Lens.Lens' GetMapGlyphs Prelude.Text+getMapGlyphs_mapName = Lens.lens (\GetMapGlyphs' {mapName} -> mapName) (\s@GetMapGlyphs' {} a -> s {mapName = a} :: GetMapGlyphs)++instance Core.AWSRequest GetMapGlyphs where+  type AWSResponse GetMapGlyphs = GetMapGlyphsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveBytes+      ( \s h x ->+          GetMapGlyphsResponse'+            Prelude.<$> (Prelude.pure (Prelude.Just (Prelude.coerce x)))+            Prelude.<*> (h Data..#? "Content-Type")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetMapGlyphs where+  hashWithSalt _salt GetMapGlyphs' {..} =+    _salt+      `Prelude.hashWithSalt` fontStack+      `Prelude.hashWithSalt` fontUnicodeRange+      `Prelude.hashWithSalt` mapName++instance Prelude.NFData GetMapGlyphs where+  rnf GetMapGlyphs' {..} =+    Prelude.rnf fontStack+      `Prelude.seq` Prelude.rnf fontUnicodeRange+      `Prelude.seq` Prelude.rnf mapName++instance Data.ToHeaders GetMapGlyphs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetMapGlyphs where+  toPath GetMapGlyphs' {..} =+    Prelude.mconcat+      [ "/maps/v0/maps/",+        Data.toBS mapName,+        "/glyphs/",+        Data.toBS fontStack,+        "/",+        Data.toBS fontUnicodeRange+      ]++instance Data.ToQuery GetMapGlyphs where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetMapGlyphsResponse' smart constructor.+data GetMapGlyphsResponse = GetMapGlyphsResponse'+  { -- | The blob\'s content type.+    blob :: Prelude.Maybe Prelude.ByteString,+    -- | The map glyph content type. For example, @application\/octet-stream@.+    contentType :: 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 'GetMapGlyphsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'blob', 'getMapGlyphsResponse_blob' - The blob\'s content type.+--+-- 'contentType', 'getMapGlyphsResponse_contentType' - The map glyph content type. For example, @application\/octet-stream@.+--+-- 'httpStatus', 'getMapGlyphsResponse_httpStatus' - The response's http status code.+newGetMapGlyphsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetMapGlyphsResponse+newGetMapGlyphsResponse pHttpStatus_ =+  GetMapGlyphsResponse'+    { blob = Prelude.Nothing,+      contentType = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The blob\'s content type.+getMapGlyphsResponse_blob :: Lens.Lens' GetMapGlyphsResponse (Prelude.Maybe Prelude.ByteString)+getMapGlyphsResponse_blob = Lens.lens (\GetMapGlyphsResponse' {blob} -> blob) (\s@GetMapGlyphsResponse' {} a -> s {blob = a} :: GetMapGlyphsResponse)++-- | The map glyph content type. For example, @application\/octet-stream@.+getMapGlyphsResponse_contentType :: Lens.Lens' GetMapGlyphsResponse (Prelude.Maybe Prelude.Text)+getMapGlyphsResponse_contentType = Lens.lens (\GetMapGlyphsResponse' {contentType} -> contentType) (\s@GetMapGlyphsResponse' {} a -> s {contentType = a} :: GetMapGlyphsResponse)++-- | The response's http status code.+getMapGlyphsResponse_httpStatus :: Lens.Lens' GetMapGlyphsResponse Prelude.Int+getMapGlyphsResponse_httpStatus = Lens.lens (\GetMapGlyphsResponse' {httpStatus} -> httpStatus) (\s@GetMapGlyphsResponse' {} a -> s {httpStatus = a} :: GetMapGlyphsResponse)++instance Prelude.NFData GetMapGlyphsResponse where+  rnf GetMapGlyphsResponse' {..} =+    Prelude.rnf blob+      `Prelude.seq` Prelude.rnf contentType+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Location/GetMapSprites.hs view
@@ -0,0 +1,236 @@+{-# 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.Location.GetMapSprites+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the sprite sheet corresponding to a map resource. The sprite+-- sheet is a PNG image paired with a JSON document describing the offsets+-- of individual icons that will be displayed on a rendered map.+module Amazonka.Location.GetMapSprites+  ( -- * Creating a Request+    GetMapSprites (..),+    newGetMapSprites,++    -- * Request Lenses+    getMapSprites_fileName,+    getMapSprites_mapName,++    -- * Destructuring the Response+    GetMapSpritesResponse (..),+    newGetMapSpritesResponse,++    -- * Response Lenses+    getMapSpritesResponse_blob,+    getMapSpritesResponse_contentType,+    getMapSpritesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetMapSprites' smart constructor.+data GetMapSprites = GetMapSprites'+  { -- | The name of the sprite file. Use the following file names for the sprite+    -- sheet:+    --+    -- -   @sprites.png@+    --+    -- -   @sprites\@2x.png@ for high pixel density displays+    --+    -- For the JSON document containing image offsets. Use the following file+    -- names:+    --+    -- -   @sprites.json@+    --+    -- -   @sprites\@2x.json@ for high pixel density displays+    fileName :: Prelude.Text,+    -- | The map resource associated with the sprite file.+    mapName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetMapSprites' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fileName', 'getMapSprites_fileName' - The name of the sprite file. Use the following file names for the sprite+-- sheet:+--+-- -   @sprites.png@+--+-- -   @sprites\@2x.png@ for high pixel density displays+--+-- For the JSON document containing image offsets. Use the following file+-- names:+--+-- -   @sprites.json@+--+-- -   @sprites\@2x.json@ for high pixel density displays+--+-- 'mapName', 'getMapSprites_mapName' - The map resource associated with the sprite file.+newGetMapSprites ::+  -- | 'fileName'+  Prelude.Text ->+  -- | 'mapName'+  Prelude.Text ->+  GetMapSprites+newGetMapSprites pFileName_ pMapName_ =+  GetMapSprites'+    { fileName = pFileName_,+      mapName = pMapName_+    }++-- | The name of the sprite file. Use the following file names for the sprite+-- sheet:+--+-- -   @sprites.png@+--+-- -   @sprites\@2x.png@ for high pixel density displays+--+-- For the JSON document containing image offsets. Use the following file+-- names:+--+-- -   @sprites.json@+--+-- -   @sprites\@2x.json@ for high pixel density displays+getMapSprites_fileName :: Lens.Lens' GetMapSprites Prelude.Text+getMapSprites_fileName = Lens.lens (\GetMapSprites' {fileName} -> fileName) (\s@GetMapSprites' {} a -> s {fileName = a} :: GetMapSprites)++-- | The map resource associated with the sprite file.+getMapSprites_mapName :: Lens.Lens' GetMapSprites Prelude.Text+getMapSprites_mapName = Lens.lens (\GetMapSprites' {mapName} -> mapName) (\s@GetMapSprites' {} a -> s {mapName = a} :: GetMapSprites)++instance Core.AWSRequest GetMapSprites where+  type+    AWSResponse GetMapSprites =+      GetMapSpritesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveBytes+      ( \s h x ->+          GetMapSpritesResponse'+            Prelude.<$> (Prelude.pure (Prelude.Just (Prelude.coerce x)))+            Prelude.<*> (h Data..#? "Content-Type")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetMapSprites where+  hashWithSalt _salt GetMapSprites' {..} =+    _salt+      `Prelude.hashWithSalt` fileName+      `Prelude.hashWithSalt` mapName++instance Prelude.NFData GetMapSprites where+  rnf GetMapSprites' {..} =+    Prelude.rnf fileName+      `Prelude.seq` Prelude.rnf mapName++instance Data.ToHeaders GetMapSprites where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetMapSprites where+  toPath GetMapSprites' {..} =+    Prelude.mconcat+      [ "/maps/v0/maps/",+        Data.toBS mapName,+        "/sprites/",+        Data.toBS fileName+      ]++instance Data.ToQuery GetMapSprites where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetMapSpritesResponse' smart constructor.+data GetMapSpritesResponse = GetMapSpritesResponse'+  { -- | Contains the body of the sprite sheet or JSON offset file.+    blob :: Prelude.Maybe Prelude.ByteString,+    -- | The content type of the sprite sheet and offsets. For example, the+    -- sprite sheet content type is @image\/png@, and the sprite offset JSON+    -- document is @application\/json@.+    contentType :: 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 'GetMapSpritesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'blob', 'getMapSpritesResponse_blob' - Contains the body of the sprite sheet or JSON offset file.+--+-- 'contentType', 'getMapSpritesResponse_contentType' - The content type of the sprite sheet and offsets. For example, the+-- sprite sheet content type is @image\/png@, and the sprite offset JSON+-- document is @application\/json@.+--+-- 'httpStatus', 'getMapSpritesResponse_httpStatus' - The response's http status code.+newGetMapSpritesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetMapSpritesResponse+newGetMapSpritesResponse pHttpStatus_ =+  GetMapSpritesResponse'+    { blob = Prelude.Nothing,+      contentType = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Contains the body of the sprite sheet or JSON offset file.+getMapSpritesResponse_blob :: Lens.Lens' GetMapSpritesResponse (Prelude.Maybe Prelude.ByteString)+getMapSpritesResponse_blob = Lens.lens (\GetMapSpritesResponse' {blob} -> blob) (\s@GetMapSpritesResponse' {} a -> s {blob = a} :: GetMapSpritesResponse)++-- | The content type of the sprite sheet and offsets. For example, the+-- sprite sheet content type is @image\/png@, and the sprite offset JSON+-- document is @application\/json@.+getMapSpritesResponse_contentType :: Lens.Lens' GetMapSpritesResponse (Prelude.Maybe Prelude.Text)+getMapSpritesResponse_contentType = Lens.lens (\GetMapSpritesResponse' {contentType} -> contentType) (\s@GetMapSpritesResponse' {} a -> s {contentType = a} :: GetMapSpritesResponse)++-- | The response's http status code.+getMapSpritesResponse_httpStatus :: Lens.Lens' GetMapSpritesResponse Prelude.Int+getMapSpritesResponse_httpStatus = Lens.lens (\GetMapSpritesResponse' {httpStatus} -> httpStatus) (\s@GetMapSpritesResponse' {} a -> s {httpStatus = a} :: GetMapSpritesResponse)++instance Prelude.NFData GetMapSpritesResponse where+  rnf GetMapSpritesResponse' {..} =+    Prelude.rnf blob+      `Prelude.seq` Prelude.rnf contentType+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Location/GetMapStyleDescriptor.hs view
@@ -0,0 +1,179 @@+{-# 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.Location.GetMapStyleDescriptor+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the map style descriptor from a map resource.+--+-- The style descriptor contains specifications on how features render on a+-- map. For example, what data to display, what order to display the data+-- in, and the style for the data. Style descriptors follow the Mapbox+-- Style Specification.+module Amazonka.Location.GetMapStyleDescriptor+  ( -- * Creating a Request+    GetMapStyleDescriptor (..),+    newGetMapStyleDescriptor,++    -- * Request Lenses+    getMapStyleDescriptor_mapName,++    -- * Destructuring the Response+    GetMapStyleDescriptorResponse (..),+    newGetMapStyleDescriptorResponse,++    -- * Response Lenses+    getMapStyleDescriptorResponse_blob,+    getMapStyleDescriptorResponse_contentType,+    getMapStyleDescriptorResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetMapStyleDescriptor' smart constructor.+data GetMapStyleDescriptor = GetMapStyleDescriptor'+  { -- | The map resource to retrieve the style descriptor from.+    mapName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetMapStyleDescriptor' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'mapName', 'getMapStyleDescriptor_mapName' - The map resource to retrieve the style descriptor from.+newGetMapStyleDescriptor ::+  -- | 'mapName'+  Prelude.Text ->+  GetMapStyleDescriptor+newGetMapStyleDescriptor pMapName_ =+  GetMapStyleDescriptor' {mapName = pMapName_}++-- | The map resource to retrieve the style descriptor from.+getMapStyleDescriptor_mapName :: Lens.Lens' GetMapStyleDescriptor Prelude.Text+getMapStyleDescriptor_mapName = Lens.lens (\GetMapStyleDescriptor' {mapName} -> mapName) (\s@GetMapStyleDescriptor' {} a -> s {mapName = a} :: GetMapStyleDescriptor)++instance Core.AWSRequest GetMapStyleDescriptor where+  type+    AWSResponse GetMapStyleDescriptor =+      GetMapStyleDescriptorResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveBytes+      ( \s h x ->+          GetMapStyleDescriptorResponse'+            Prelude.<$> (Prelude.pure (Prelude.Just (Prelude.coerce x)))+            Prelude.<*> (h Data..#? "Content-Type")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetMapStyleDescriptor where+  hashWithSalt _salt GetMapStyleDescriptor' {..} =+    _salt `Prelude.hashWithSalt` mapName++instance Prelude.NFData GetMapStyleDescriptor where+  rnf GetMapStyleDescriptor' {..} = Prelude.rnf mapName++instance Data.ToHeaders GetMapStyleDescriptor where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetMapStyleDescriptor where+  toPath GetMapStyleDescriptor' {..} =+    Prelude.mconcat+      [ "/maps/v0/maps/",+        Data.toBS mapName,+        "/style-descriptor"+      ]++instance Data.ToQuery GetMapStyleDescriptor where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetMapStyleDescriptorResponse' smart constructor.+data GetMapStyleDescriptorResponse = GetMapStyleDescriptorResponse'+  { -- | Contains the body of the style descriptor.+    blob :: Prelude.Maybe Prelude.ByteString,+    -- | The style descriptor\'s content type. For example, @application\/json@.+    contentType :: 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 'GetMapStyleDescriptorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'blob', 'getMapStyleDescriptorResponse_blob' - Contains the body of the style descriptor.+--+-- 'contentType', 'getMapStyleDescriptorResponse_contentType' - The style descriptor\'s content type. For example, @application\/json@.+--+-- 'httpStatus', 'getMapStyleDescriptorResponse_httpStatus' - The response's http status code.+newGetMapStyleDescriptorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetMapStyleDescriptorResponse+newGetMapStyleDescriptorResponse pHttpStatus_ =+  GetMapStyleDescriptorResponse'+    { blob =+        Prelude.Nothing,+      contentType = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Contains the body of the style descriptor.+getMapStyleDescriptorResponse_blob :: Lens.Lens' GetMapStyleDescriptorResponse (Prelude.Maybe Prelude.ByteString)+getMapStyleDescriptorResponse_blob = Lens.lens (\GetMapStyleDescriptorResponse' {blob} -> blob) (\s@GetMapStyleDescriptorResponse' {} a -> s {blob = a} :: GetMapStyleDescriptorResponse)++-- | The style descriptor\'s content type. For example, @application\/json@.+getMapStyleDescriptorResponse_contentType :: Lens.Lens' GetMapStyleDescriptorResponse (Prelude.Maybe Prelude.Text)+getMapStyleDescriptorResponse_contentType = Lens.lens (\GetMapStyleDescriptorResponse' {contentType} -> contentType) (\s@GetMapStyleDescriptorResponse' {} a -> s {contentType = a} :: GetMapStyleDescriptorResponse)++-- | The response's http status code.+getMapStyleDescriptorResponse_httpStatus :: Lens.Lens' GetMapStyleDescriptorResponse Prelude.Int+getMapStyleDescriptorResponse_httpStatus = Lens.lens (\GetMapStyleDescriptorResponse' {httpStatus} -> httpStatus) (\s@GetMapStyleDescriptorResponse' {} a -> s {httpStatus = a} :: GetMapStyleDescriptorResponse)++instance Prelude.NFData GetMapStyleDescriptorResponse where+  rnf GetMapStyleDescriptorResponse' {..} =+    Prelude.rnf blob+      `Prelude.seq` Prelude.rnf contentType+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Location/GetMapTile.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.Location.GetMapTile+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves a vector data tile from the map resource. Map tiles are used+-- by clients to render a map. they\'re addressed using a grid arrangement+-- with an X coordinate, Y coordinate, and Z (zoom) level.+--+-- The origin (0, 0) is the top left of the map. Increasing the zoom level+-- by 1 doubles both the X and Y dimensions, so a tile containing data for+-- the entire world at (0\/0\/0) will be split into 4 tiles at zoom 1+-- (1\/0\/0, 1\/0\/1, 1\/1\/0, 1\/1\/1).+module Amazonka.Location.GetMapTile+  ( -- * Creating a Request+    GetMapTile (..),+    newGetMapTile,++    -- * Request Lenses+    getMapTile_mapName,+    getMapTile_x,+    getMapTile_y,+    getMapTile_z,++    -- * Destructuring the Response+    GetMapTileResponse (..),+    newGetMapTileResponse,++    -- * Response Lenses+    getMapTileResponse_blob,+    getMapTileResponse_contentType,+    getMapTileResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetMapTile' smart constructor.+data GetMapTile = GetMapTile'+  { -- | The map resource to retrieve the map tiles from.+    mapName :: Prelude.Text,+    -- | The X axis value for the map tile.+    x :: Prelude.Text,+    -- | The Y axis value for the map tile.+    y :: Prelude.Text,+    -- | The zoom value for the map tile.+    z :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetMapTile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'mapName', 'getMapTile_mapName' - The map resource to retrieve the map tiles from.+--+-- 'x', 'getMapTile_x' - The X axis value for the map tile.+--+-- 'y', 'getMapTile_y' - The Y axis value for the map tile.+--+-- 'z', 'getMapTile_z' - The zoom value for the map tile.+newGetMapTile ::+  -- | 'mapName'+  Prelude.Text ->+  -- | 'x'+  Prelude.Text ->+  -- | 'y'+  Prelude.Text ->+  -- | 'z'+  Prelude.Text ->+  GetMapTile+newGetMapTile pMapName_ pX_ pY_ pZ_ =+  GetMapTile'+    { mapName = pMapName_,+      x = pX_,+      y = pY_,+      z = pZ_+    }++-- | The map resource to retrieve the map tiles from.+getMapTile_mapName :: Lens.Lens' GetMapTile Prelude.Text+getMapTile_mapName = Lens.lens (\GetMapTile' {mapName} -> mapName) (\s@GetMapTile' {} a -> s {mapName = a} :: GetMapTile)++-- | The X axis value for the map tile.+getMapTile_x :: Lens.Lens' GetMapTile Prelude.Text+getMapTile_x = Lens.lens (\GetMapTile' {x} -> x) (\s@GetMapTile' {} a -> s {x = a} :: GetMapTile)++-- | The Y axis value for the map tile.+getMapTile_y :: Lens.Lens' GetMapTile Prelude.Text+getMapTile_y = Lens.lens (\GetMapTile' {y} -> y) (\s@GetMapTile' {} a -> s {y = a} :: GetMapTile)++-- | The zoom value for the map tile.+getMapTile_z :: Lens.Lens' GetMapTile Prelude.Text+getMapTile_z = Lens.lens (\GetMapTile' {z} -> z) (\s@GetMapTile' {} a -> s {z = a} :: GetMapTile)++instance Core.AWSRequest GetMapTile where+  type AWSResponse GetMapTile = GetMapTileResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveBytes+      ( \s h x ->+          GetMapTileResponse'+            Prelude.<$> (Prelude.pure (Prelude.Just (Prelude.coerce x)))+            Prelude.<*> (h Data..#? "Content-Type")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetMapTile where+  hashWithSalt _salt GetMapTile' {..} =+    _salt+      `Prelude.hashWithSalt` mapName+      `Prelude.hashWithSalt` x+      `Prelude.hashWithSalt` y+      `Prelude.hashWithSalt` z++instance Prelude.NFData GetMapTile where+  rnf GetMapTile' {..} =+    Prelude.rnf mapName+      `Prelude.seq` Prelude.rnf x+      `Prelude.seq` Prelude.rnf y+      `Prelude.seq` Prelude.rnf z++instance Data.ToHeaders GetMapTile where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetMapTile where+  toPath GetMapTile' {..} =+    Prelude.mconcat+      [ "/maps/v0/maps/",+        Data.toBS mapName,+        "/tiles/",+        Data.toBS z,+        "/",+        Data.toBS x,+        "/",+        Data.toBS y+      ]++instance Data.ToQuery GetMapTile where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetMapTileResponse' smart constructor.+data GetMapTileResponse = GetMapTileResponse'+  { -- | Contains Mapbox Vector Tile (MVT) data.+    blob :: Prelude.Maybe Prelude.ByteString,+    -- | The map tile\'s content type. For example,+    -- @application\/vnd.mapbox-vector-tile@.+    contentType :: 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 'GetMapTileResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'blob', 'getMapTileResponse_blob' - Contains Mapbox Vector Tile (MVT) data.+--+-- 'contentType', 'getMapTileResponse_contentType' - The map tile\'s content type. For example,+-- @application\/vnd.mapbox-vector-tile@.+--+-- 'httpStatus', 'getMapTileResponse_httpStatus' - The response's http status code.+newGetMapTileResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetMapTileResponse+newGetMapTileResponse pHttpStatus_ =+  GetMapTileResponse'+    { blob = Prelude.Nothing,+      contentType = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Contains Mapbox Vector Tile (MVT) data.+getMapTileResponse_blob :: Lens.Lens' GetMapTileResponse (Prelude.Maybe Prelude.ByteString)+getMapTileResponse_blob = Lens.lens (\GetMapTileResponse' {blob} -> blob) (\s@GetMapTileResponse' {} a -> s {blob = a} :: GetMapTileResponse)++-- | The map tile\'s content type. For example,+-- @application\/vnd.mapbox-vector-tile@.+getMapTileResponse_contentType :: Lens.Lens' GetMapTileResponse (Prelude.Maybe Prelude.Text)+getMapTileResponse_contentType = Lens.lens (\GetMapTileResponse' {contentType} -> contentType) (\s@GetMapTileResponse' {} a -> s {contentType = a} :: GetMapTileResponse)++-- | The response's http status code.+getMapTileResponse_httpStatus :: Lens.Lens' GetMapTileResponse Prelude.Int+getMapTileResponse_httpStatus = Lens.lens (\GetMapTileResponse' {httpStatus} -> httpStatus) (\s@GetMapTileResponse' {} a -> s {httpStatus = a} :: GetMapTileResponse)++instance Prelude.NFData GetMapTileResponse where+  rnf GetMapTileResponse' {..} =+    Prelude.rnf blob+      `Prelude.seq` Prelude.rnf contentType+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/Location/GetPlace.hs view
@@ -0,0 +1,257 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.GetPlace+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Finds a place by its unique ID. A @PlaceId@ is returned by other search+-- operations.+--+-- A PlaceId is valid only if all of the following are the same in the+-- original search request and the call to @GetPlace@.+--+-- -   Customer AWS account+--+-- -   AWS Region+--+-- -   Data provider specified in the place index resource+module Amazonka.Location.GetPlace+  ( -- * Creating a Request+    GetPlace (..),+    newGetPlace,++    -- * Request Lenses+    getPlace_language,+    getPlace_indexName,+    getPlace_placeId,++    -- * Destructuring the Response+    GetPlaceResponse (..),+    newGetPlaceResponse,++    -- * Response Lenses+    getPlaceResponse_httpStatus,+    getPlaceResponse_place,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetPlace' smart constructor.+data GetPlace = GetPlace'+  { -- | The preferred language used to return results. The value must be a valid+    -- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+    -- @en@ for English.+    --+    -- This setting affects the languages used in the results, but not the+    -- results themselves. If no language is specified, or not supported for a+    -- particular result, the partner automatically chooses a language for the+    -- result.+    --+    -- For an example, we\'ll use the Greek language. You search for a location+    -- around Athens, Greece, with the @language@ parameter set to @en@. The+    -- @city@ in the results will most likely be returned as @Athens@.+    --+    -- If you set the @language@ parameter to @el@, for Greek, then the @city@+    -- in the results will more likely be returned as @Αθήνα@.+    --+    -- If the data provider does not have a value for Greek, the result will be+    -- in a language that the provider does support.+    language :: Prelude.Maybe Prelude.Text,+    -- | The name of the place index resource that you want to use for the+    -- search.+    indexName :: Prelude.Text,+    -- | The identifier of the place to find.+    placeId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetPlace' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'language', 'getPlace_language' - The preferred language used to return results. The value must be a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- This setting affects the languages used in the results, but not the+-- results themselves. If no language is specified, or not supported for a+-- particular result, the partner automatically chooses a language for the+-- result.+--+-- For an example, we\'ll use the Greek language. You search for a location+-- around Athens, Greece, with the @language@ parameter set to @en@. The+-- @city@ in the results will most likely be returned as @Athens@.+--+-- If you set the @language@ parameter to @el@, for Greek, then the @city@+-- in the results will more likely be returned as @Αθήνα@.+--+-- If the data provider does not have a value for Greek, the result will be+-- in a language that the provider does support.+--+-- 'indexName', 'getPlace_indexName' - The name of the place index resource that you want to use for the+-- search.+--+-- 'placeId', 'getPlace_placeId' - The identifier of the place to find.+newGetPlace ::+  -- | 'indexName'+  Prelude.Text ->+  -- | 'placeId'+  Prelude.Text ->+  GetPlace+newGetPlace pIndexName_ pPlaceId_ =+  GetPlace'+    { language = Prelude.Nothing,+      indexName = pIndexName_,+      placeId = pPlaceId_+    }++-- | The preferred language used to return results. The value must be a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- This setting affects the languages used in the results, but not the+-- results themselves. If no language is specified, or not supported for a+-- particular result, the partner automatically chooses a language for the+-- result.+--+-- For an example, we\'ll use the Greek language. You search for a location+-- around Athens, Greece, with the @language@ parameter set to @en@. The+-- @city@ in the results will most likely be returned as @Athens@.+--+-- If you set the @language@ parameter to @el@, for Greek, then the @city@+-- in the results will more likely be returned as @Αθήνα@.+--+-- If the data provider does not have a value for Greek, the result will be+-- in a language that the provider does support.+getPlace_language :: Lens.Lens' GetPlace (Prelude.Maybe Prelude.Text)+getPlace_language = Lens.lens (\GetPlace' {language} -> language) (\s@GetPlace' {} a -> s {language = a} :: GetPlace)++-- | The name of the place index resource that you want to use for the+-- search.+getPlace_indexName :: Lens.Lens' GetPlace Prelude.Text+getPlace_indexName = Lens.lens (\GetPlace' {indexName} -> indexName) (\s@GetPlace' {} a -> s {indexName = a} :: GetPlace)++-- | The identifier of the place to find.+getPlace_placeId :: Lens.Lens' GetPlace Prelude.Text+getPlace_placeId = Lens.lens (\GetPlace' {placeId} -> placeId) (\s@GetPlace' {} a -> s {placeId = a} :: GetPlace)++instance Core.AWSRequest GetPlace where+  type AWSResponse GetPlace = GetPlaceResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetPlaceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "Place")+      )++instance Prelude.Hashable GetPlace where+  hashWithSalt _salt GetPlace' {..} =+    _salt+      `Prelude.hashWithSalt` language+      `Prelude.hashWithSalt` indexName+      `Prelude.hashWithSalt` placeId++instance Prelude.NFData GetPlace where+  rnf GetPlace' {..} =+    Prelude.rnf language+      `Prelude.seq` Prelude.rnf indexName+      `Prelude.seq` Prelude.rnf placeId++instance Data.ToHeaders GetPlace where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetPlace where+  toPath GetPlace' {..} =+    Prelude.mconcat+      [ "/places/v0/indexes/",+        Data.toBS indexName,+        "/places/",+        Data.toBS placeId+      ]++instance Data.ToQuery GetPlace where+  toQuery GetPlace' {..} =+    Prelude.mconcat ["language" Data.=: language]++-- | /See:/ 'newGetPlaceResponse' smart constructor.+data GetPlaceResponse = GetPlaceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Details about the result, such as its address and position.+    place :: Place+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetPlaceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getPlaceResponse_httpStatus' - The response's http status code.+--+-- 'place', 'getPlaceResponse_place' - Details about the result, such as its address and position.+newGetPlaceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'place'+  Place ->+  GetPlaceResponse+newGetPlaceResponse pHttpStatus_ pPlace_ =+  GetPlaceResponse'+    { httpStatus = pHttpStatus_,+      place = pPlace_+    }++-- | The response's http status code.+getPlaceResponse_httpStatus :: Lens.Lens' GetPlaceResponse Prelude.Int+getPlaceResponse_httpStatus = Lens.lens (\GetPlaceResponse' {httpStatus} -> httpStatus) (\s@GetPlaceResponse' {} a -> s {httpStatus = a} :: GetPlaceResponse)++-- | Details about the result, such as its address and position.+getPlaceResponse_place :: Lens.Lens' GetPlaceResponse Place+getPlaceResponse_place = Lens.lens (\GetPlaceResponse' {place} -> place) (\s@GetPlaceResponse' {} a -> s {place = a} :: GetPlaceResponse)++instance Prelude.NFData GetPlaceResponse where+  rnf GetPlaceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf place
+ gen/Amazonka/Location/Lens.hs view
@@ -0,0 +1,822 @@+{-# 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.Location.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.Location.Lens+  ( -- * Operations++    -- ** AssociateTrackerConsumer+    associateTrackerConsumer_consumerArn,+    associateTrackerConsumer_trackerName,+    associateTrackerConsumerResponse_httpStatus,++    -- ** BatchDeleteDevicePositionHistory+    batchDeleteDevicePositionHistory_deviceIds,+    batchDeleteDevicePositionHistory_trackerName,+    batchDeleteDevicePositionHistoryResponse_httpStatus,+    batchDeleteDevicePositionHistoryResponse_errors,++    -- ** BatchDeleteGeofence+    batchDeleteGeofence_collectionName,+    batchDeleteGeofence_geofenceIds,+    batchDeleteGeofenceResponse_httpStatus,+    batchDeleteGeofenceResponse_errors,++    -- ** BatchEvaluateGeofences+    batchEvaluateGeofences_collectionName,+    batchEvaluateGeofences_devicePositionUpdates,+    batchEvaluateGeofencesResponse_httpStatus,+    batchEvaluateGeofencesResponse_errors,++    -- ** BatchGetDevicePosition+    batchGetDevicePosition_deviceIds,+    batchGetDevicePosition_trackerName,+    batchGetDevicePositionResponse_httpStatus,+    batchGetDevicePositionResponse_devicePositions,+    batchGetDevicePositionResponse_errors,++    -- ** BatchPutGeofence+    batchPutGeofence_collectionName,+    batchPutGeofence_entries,+    batchPutGeofenceResponse_httpStatus,+    batchPutGeofenceResponse_errors,+    batchPutGeofenceResponse_successes,++    -- ** BatchUpdateDevicePosition+    batchUpdateDevicePosition_trackerName,+    batchUpdateDevicePosition_updates,+    batchUpdateDevicePositionResponse_httpStatus,+    batchUpdateDevicePositionResponse_errors,++    -- ** CalculateRoute+    calculateRoute_carModeOptions,+    calculateRoute_departNow,+    calculateRoute_departureTime,+    calculateRoute_distanceUnit,+    calculateRoute_includeLegGeometry,+    calculateRoute_travelMode,+    calculateRoute_truckModeOptions,+    calculateRoute_waypointPositions,+    calculateRoute_calculatorName,+    calculateRoute_departurePosition,+    calculateRoute_destinationPosition,+    calculateRouteResponse_httpStatus,+    calculateRouteResponse_legs,+    calculateRouteResponse_summary,++    -- ** CalculateRouteMatrix+    calculateRouteMatrix_carModeOptions,+    calculateRouteMatrix_departNow,+    calculateRouteMatrix_departureTime,+    calculateRouteMatrix_distanceUnit,+    calculateRouteMatrix_travelMode,+    calculateRouteMatrix_truckModeOptions,+    calculateRouteMatrix_calculatorName,+    calculateRouteMatrix_departurePositions,+    calculateRouteMatrix_destinationPositions,+    calculateRouteMatrixResponse_snappedDeparturePositions,+    calculateRouteMatrixResponse_snappedDestinationPositions,+    calculateRouteMatrixResponse_httpStatus,+    calculateRouteMatrixResponse_routeMatrix,+    calculateRouteMatrixResponse_summary,++    -- ** CreateGeofenceCollection+    createGeofenceCollection_description,+    createGeofenceCollection_kmsKeyId,+    createGeofenceCollection_pricingPlan,+    createGeofenceCollection_pricingPlanDataSource,+    createGeofenceCollection_tags,+    createGeofenceCollection_collectionName,+    createGeofenceCollectionResponse_httpStatus,+    createGeofenceCollectionResponse_collectionArn,+    createGeofenceCollectionResponse_collectionName,+    createGeofenceCollectionResponse_createTime,++    -- ** CreateMap+    createMap_description,+    createMap_pricingPlan,+    createMap_tags,+    createMap_configuration,+    createMap_mapName,+    createMapResponse_httpStatus,+    createMapResponse_createTime,+    createMapResponse_mapArn,+    createMapResponse_mapName,++    -- ** CreatePlaceIndex+    createPlaceIndex_dataSourceConfiguration,+    createPlaceIndex_description,+    createPlaceIndex_pricingPlan,+    createPlaceIndex_tags,+    createPlaceIndex_dataSource,+    createPlaceIndex_indexName,+    createPlaceIndexResponse_httpStatus,+    createPlaceIndexResponse_createTime,+    createPlaceIndexResponse_indexArn,+    createPlaceIndexResponse_indexName,++    -- ** CreateRouteCalculator+    createRouteCalculator_description,+    createRouteCalculator_pricingPlan,+    createRouteCalculator_tags,+    createRouteCalculator_calculatorName,+    createRouteCalculator_dataSource,+    createRouteCalculatorResponse_httpStatus,+    createRouteCalculatorResponse_calculatorArn,+    createRouteCalculatorResponse_calculatorName,+    createRouteCalculatorResponse_createTime,++    -- ** CreateTracker+    createTracker_description,+    createTracker_kmsKeyId,+    createTracker_positionFiltering,+    createTracker_pricingPlan,+    createTracker_pricingPlanDataSource,+    createTracker_tags,+    createTracker_trackerName,+    createTrackerResponse_httpStatus,+    createTrackerResponse_createTime,+    createTrackerResponse_trackerArn,+    createTrackerResponse_trackerName,++    -- ** DeleteGeofenceCollection+    deleteGeofenceCollection_collectionName,+    deleteGeofenceCollectionResponse_httpStatus,++    -- ** DeleteMap+    deleteMap_mapName,+    deleteMapResponse_httpStatus,++    -- ** DeletePlaceIndex+    deletePlaceIndex_indexName,+    deletePlaceIndexResponse_httpStatus,++    -- ** DeleteRouteCalculator+    deleteRouteCalculator_calculatorName,+    deleteRouteCalculatorResponse_httpStatus,++    -- ** DeleteTracker+    deleteTracker_trackerName,+    deleteTrackerResponse_httpStatus,++    -- ** DescribeGeofenceCollection+    describeGeofenceCollection_collectionName,+    describeGeofenceCollectionResponse_kmsKeyId,+    describeGeofenceCollectionResponse_pricingPlan,+    describeGeofenceCollectionResponse_pricingPlanDataSource,+    describeGeofenceCollectionResponse_tags,+    describeGeofenceCollectionResponse_httpStatus,+    describeGeofenceCollectionResponse_collectionArn,+    describeGeofenceCollectionResponse_collectionName,+    describeGeofenceCollectionResponse_createTime,+    describeGeofenceCollectionResponse_description,+    describeGeofenceCollectionResponse_updateTime,++    -- ** DescribeMap+    describeMap_mapName,+    describeMapResponse_pricingPlan,+    describeMapResponse_tags,+    describeMapResponse_httpStatus,+    describeMapResponse_configuration,+    describeMapResponse_createTime,+    describeMapResponse_dataSource,+    describeMapResponse_description,+    describeMapResponse_mapArn,+    describeMapResponse_mapName,+    describeMapResponse_updateTime,++    -- ** DescribePlaceIndex+    describePlaceIndex_indexName,+    describePlaceIndexResponse_pricingPlan,+    describePlaceIndexResponse_tags,+    describePlaceIndexResponse_httpStatus,+    describePlaceIndexResponse_createTime,+    describePlaceIndexResponse_dataSource,+    describePlaceIndexResponse_dataSourceConfiguration,+    describePlaceIndexResponse_description,+    describePlaceIndexResponse_indexArn,+    describePlaceIndexResponse_indexName,+    describePlaceIndexResponse_updateTime,++    -- ** DescribeRouteCalculator+    describeRouteCalculator_calculatorName,+    describeRouteCalculatorResponse_pricingPlan,+    describeRouteCalculatorResponse_tags,+    describeRouteCalculatorResponse_httpStatus,+    describeRouteCalculatorResponse_calculatorArn,+    describeRouteCalculatorResponse_calculatorName,+    describeRouteCalculatorResponse_createTime,+    describeRouteCalculatorResponse_dataSource,+    describeRouteCalculatorResponse_description,+    describeRouteCalculatorResponse_updateTime,++    -- ** DescribeTracker+    describeTracker_trackerName,+    describeTrackerResponse_kmsKeyId,+    describeTrackerResponse_positionFiltering,+    describeTrackerResponse_pricingPlan,+    describeTrackerResponse_pricingPlanDataSource,+    describeTrackerResponse_tags,+    describeTrackerResponse_httpStatus,+    describeTrackerResponse_createTime,+    describeTrackerResponse_description,+    describeTrackerResponse_trackerArn,+    describeTrackerResponse_trackerName,+    describeTrackerResponse_updateTime,++    -- ** DisassociateTrackerConsumer+    disassociateTrackerConsumer_consumerArn,+    disassociateTrackerConsumer_trackerName,+    disassociateTrackerConsumerResponse_httpStatus,++    -- ** GetDevicePosition+    getDevicePosition_deviceId,+    getDevicePosition_trackerName,+    getDevicePositionResponse_accuracy,+    getDevicePositionResponse_deviceId,+    getDevicePositionResponse_positionProperties,+    getDevicePositionResponse_httpStatus,+    getDevicePositionResponse_position,+    getDevicePositionResponse_receivedTime,+    getDevicePositionResponse_sampleTime,++    -- ** GetDevicePositionHistory+    getDevicePositionHistory_endTimeExclusive,+    getDevicePositionHistory_maxResults,+    getDevicePositionHistory_nextToken,+    getDevicePositionHistory_startTimeInclusive,+    getDevicePositionHistory_deviceId,+    getDevicePositionHistory_trackerName,+    getDevicePositionHistoryResponse_nextToken,+    getDevicePositionHistoryResponse_httpStatus,+    getDevicePositionHistoryResponse_devicePositions,++    -- ** GetGeofence+    getGeofence_collectionName,+    getGeofence_geofenceId,+    getGeofenceResponse_httpStatus,+    getGeofenceResponse_createTime,+    getGeofenceResponse_geofenceId,+    getGeofenceResponse_geometry,+    getGeofenceResponse_status,+    getGeofenceResponse_updateTime,++    -- ** GetMapGlyphs+    getMapGlyphs_fontStack,+    getMapGlyphs_fontUnicodeRange,+    getMapGlyphs_mapName,+    getMapGlyphsResponse_blob,+    getMapGlyphsResponse_contentType,+    getMapGlyphsResponse_httpStatus,++    -- ** GetMapSprites+    getMapSprites_fileName,+    getMapSprites_mapName,+    getMapSpritesResponse_blob,+    getMapSpritesResponse_contentType,+    getMapSpritesResponse_httpStatus,++    -- ** GetMapStyleDescriptor+    getMapStyleDescriptor_mapName,+    getMapStyleDescriptorResponse_blob,+    getMapStyleDescriptorResponse_contentType,+    getMapStyleDescriptorResponse_httpStatus,++    -- ** GetMapTile+    getMapTile_mapName,+    getMapTile_x,+    getMapTile_y,+    getMapTile_z,+    getMapTileResponse_blob,+    getMapTileResponse_contentType,+    getMapTileResponse_httpStatus,++    -- ** GetPlace+    getPlace_language,+    getPlace_indexName,+    getPlace_placeId,+    getPlaceResponse_httpStatus,+    getPlaceResponse_place,++    -- ** ListDevicePositions+    listDevicePositions_maxResults,+    listDevicePositions_nextToken,+    listDevicePositions_trackerName,+    listDevicePositionsResponse_nextToken,+    listDevicePositionsResponse_httpStatus,+    listDevicePositionsResponse_entries,++    -- ** ListGeofenceCollections+    listGeofenceCollections_maxResults,+    listGeofenceCollections_nextToken,+    listGeofenceCollectionsResponse_nextToken,+    listGeofenceCollectionsResponse_httpStatus,+    listGeofenceCollectionsResponse_entries,++    -- ** ListGeofences+    listGeofences_maxResults,+    listGeofences_nextToken,+    listGeofences_collectionName,+    listGeofencesResponse_nextToken,+    listGeofencesResponse_httpStatus,+    listGeofencesResponse_entries,++    -- ** ListMaps+    listMaps_maxResults,+    listMaps_nextToken,+    listMapsResponse_nextToken,+    listMapsResponse_httpStatus,+    listMapsResponse_entries,++    -- ** ListPlaceIndexes+    listPlaceIndexes_maxResults,+    listPlaceIndexes_nextToken,+    listPlaceIndexesResponse_nextToken,+    listPlaceIndexesResponse_httpStatus,+    listPlaceIndexesResponse_entries,++    -- ** ListRouteCalculators+    listRouteCalculators_maxResults,+    listRouteCalculators_nextToken,+    listRouteCalculatorsResponse_nextToken,+    listRouteCalculatorsResponse_httpStatus,+    listRouteCalculatorsResponse_entries,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** ListTrackerConsumers+    listTrackerConsumers_maxResults,+    listTrackerConsumers_nextToken,+    listTrackerConsumers_trackerName,+    listTrackerConsumersResponse_nextToken,+    listTrackerConsumersResponse_httpStatus,+    listTrackerConsumersResponse_consumerArns,++    -- ** ListTrackers+    listTrackers_maxResults,+    listTrackers_nextToken,+    listTrackersResponse_nextToken,+    listTrackersResponse_httpStatus,+    listTrackersResponse_entries,++    -- ** PutGeofence+    putGeofence_collectionName,+    putGeofence_geofenceId,+    putGeofence_geometry,+    putGeofenceResponse_httpStatus,+    putGeofenceResponse_createTime,+    putGeofenceResponse_geofenceId,+    putGeofenceResponse_updateTime,++    -- ** SearchPlaceIndexForPosition+    searchPlaceIndexForPosition_language,+    searchPlaceIndexForPosition_maxResults,+    searchPlaceIndexForPosition_indexName,+    searchPlaceIndexForPosition_position,+    searchPlaceIndexForPositionResponse_httpStatus,+    searchPlaceIndexForPositionResponse_results,+    searchPlaceIndexForPositionResponse_summary,++    -- ** SearchPlaceIndexForSuggestions+    searchPlaceIndexForSuggestions_biasPosition,+    searchPlaceIndexForSuggestions_filterBBox,+    searchPlaceIndexForSuggestions_filterCountries,+    searchPlaceIndexForSuggestions_language,+    searchPlaceIndexForSuggestions_maxResults,+    searchPlaceIndexForSuggestions_indexName,+    searchPlaceIndexForSuggestions_text,+    searchPlaceIndexForSuggestionsResponse_httpStatus,+    searchPlaceIndexForSuggestionsResponse_results,+    searchPlaceIndexForSuggestionsResponse_summary,++    -- ** SearchPlaceIndexForText+    searchPlaceIndexForText_biasPosition,+    searchPlaceIndexForText_filterBBox,+    searchPlaceIndexForText_filterCountries,+    searchPlaceIndexForText_language,+    searchPlaceIndexForText_maxResults,+    searchPlaceIndexForText_indexName,+    searchPlaceIndexForText_text,+    searchPlaceIndexForTextResponse_httpStatus,+    searchPlaceIndexForTextResponse_results,+    searchPlaceIndexForTextResponse_summary,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateGeofenceCollection+    updateGeofenceCollection_description,+    updateGeofenceCollection_pricingPlan,+    updateGeofenceCollection_pricingPlanDataSource,+    updateGeofenceCollection_collectionName,+    updateGeofenceCollectionResponse_httpStatus,+    updateGeofenceCollectionResponse_collectionArn,+    updateGeofenceCollectionResponse_collectionName,+    updateGeofenceCollectionResponse_updateTime,++    -- ** UpdateMap+    updateMap_description,+    updateMap_pricingPlan,+    updateMap_mapName,+    updateMapResponse_httpStatus,+    updateMapResponse_mapArn,+    updateMapResponse_mapName,+    updateMapResponse_updateTime,++    -- ** UpdatePlaceIndex+    updatePlaceIndex_dataSourceConfiguration,+    updatePlaceIndex_description,+    updatePlaceIndex_pricingPlan,+    updatePlaceIndex_indexName,+    updatePlaceIndexResponse_httpStatus,+    updatePlaceIndexResponse_indexArn,+    updatePlaceIndexResponse_indexName,+    updatePlaceIndexResponse_updateTime,++    -- ** UpdateRouteCalculator+    updateRouteCalculator_description,+    updateRouteCalculator_pricingPlan,+    updateRouteCalculator_calculatorName,+    updateRouteCalculatorResponse_httpStatus,+    updateRouteCalculatorResponse_calculatorArn,+    updateRouteCalculatorResponse_calculatorName,+    updateRouteCalculatorResponse_updateTime,++    -- ** UpdateTracker+    updateTracker_description,+    updateTracker_positionFiltering,+    updateTracker_pricingPlan,+    updateTracker_pricingPlanDataSource,+    updateTracker_trackerName,+    updateTrackerResponse_httpStatus,+    updateTrackerResponse_trackerArn,+    updateTrackerResponse_trackerName,+    updateTrackerResponse_updateTime,++    -- * Types++    -- ** BatchDeleteDevicePositionHistoryError+    batchDeleteDevicePositionHistoryError_deviceId,+    batchDeleteDevicePositionHistoryError_error,++    -- ** BatchDeleteGeofenceError+    batchDeleteGeofenceError_error,+    batchDeleteGeofenceError_geofenceId,++    -- ** BatchEvaluateGeofencesError+    batchEvaluateGeofencesError_deviceId,+    batchEvaluateGeofencesError_error,+    batchEvaluateGeofencesError_sampleTime,++    -- ** BatchGetDevicePositionError+    batchGetDevicePositionError_deviceId,+    batchGetDevicePositionError_error,++    -- ** BatchItemError+    batchItemError_code,+    batchItemError_message,++    -- ** BatchPutGeofenceError+    batchPutGeofenceError_error,+    batchPutGeofenceError_geofenceId,++    -- ** BatchPutGeofenceRequestEntry+    batchPutGeofenceRequestEntry_geofenceId,+    batchPutGeofenceRequestEntry_geometry,++    -- ** BatchPutGeofenceSuccess+    batchPutGeofenceSuccess_createTime,+    batchPutGeofenceSuccess_geofenceId,+    batchPutGeofenceSuccess_updateTime,++    -- ** BatchUpdateDevicePositionError+    batchUpdateDevicePositionError_deviceId,+    batchUpdateDevicePositionError_error,+    batchUpdateDevicePositionError_sampleTime,++    -- ** CalculateRouteCarModeOptions+    calculateRouteCarModeOptions_avoidFerries,+    calculateRouteCarModeOptions_avoidTolls,++    -- ** CalculateRouteMatrixSummary+    calculateRouteMatrixSummary_dataSource,+    calculateRouteMatrixSummary_distanceUnit,+    calculateRouteMatrixSummary_errorCount,+    calculateRouteMatrixSummary_routeCount,++    -- ** CalculateRouteSummary+    calculateRouteSummary_dataSource,+    calculateRouteSummary_distance,+    calculateRouteSummary_distanceUnit,+    calculateRouteSummary_durationSeconds,+    calculateRouteSummary_routeBBox,++    -- ** CalculateRouteTruckModeOptions+    calculateRouteTruckModeOptions_avoidFerries,+    calculateRouteTruckModeOptions_avoidTolls,+    calculateRouteTruckModeOptions_dimensions,+    calculateRouteTruckModeOptions_weight,++    -- ** Circle+    circle_center,+    circle_radius,++    -- ** DataSourceConfiguration+    dataSourceConfiguration_intendedUse,++    -- ** DevicePosition+    devicePosition_accuracy,+    devicePosition_deviceId,+    devicePosition_positionProperties,+    devicePosition_position,+    devicePosition_receivedTime,+    devicePosition_sampleTime,++    -- ** DevicePositionUpdate+    devicePositionUpdate_accuracy,+    devicePositionUpdate_positionProperties,+    devicePositionUpdate_deviceId,+    devicePositionUpdate_position,+    devicePositionUpdate_sampleTime,++    -- ** GeofenceGeometry+    geofenceGeometry_circle,+    geofenceGeometry_polygon,++    -- ** Leg+    leg_geometry,+    leg_distance,+    leg_durationSeconds,+    leg_endPosition,+    leg_startPosition,+    leg_steps,++    -- ** LegGeometry+    legGeometry_lineString,++    -- ** ListDevicePositionsResponseEntry+    listDevicePositionsResponseEntry_accuracy,+    listDevicePositionsResponseEntry_positionProperties,+    listDevicePositionsResponseEntry_deviceId,+    listDevicePositionsResponseEntry_position,+    listDevicePositionsResponseEntry_sampleTime,++    -- ** ListGeofenceCollectionsResponseEntry+    listGeofenceCollectionsResponseEntry_pricingPlan,+    listGeofenceCollectionsResponseEntry_pricingPlanDataSource,+    listGeofenceCollectionsResponseEntry_collectionName,+    listGeofenceCollectionsResponseEntry_createTime,+    listGeofenceCollectionsResponseEntry_description,+    listGeofenceCollectionsResponseEntry_updateTime,++    -- ** ListGeofenceResponseEntry+    listGeofenceResponseEntry_createTime,+    listGeofenceResponseEntry_geofenceId,+    listGeofenceResponseEntry_geometry,+    listGeofenceResponseEntry_status,+    listGeofenceResponseEntry_updateTime,++    -- ** ListMapsResponseEntry+    listMapsResponseEntry_pricingPlan,+    listMapsResponseEntry_createTime,+    listMapsResponseEntry_dataSource,+    listMapsResponseEntry_description,+    listMapsResponseEntry_mapName,+    listMapsResponseEntry_updateTime,++    -- ** ListPlaceIndexesResponseEntry+    listPlaceIndexesResponseEntry_pricingPlan,+    listPlaceIndexesResponseEntry_createTime,+    listPlaceIndexesResponseEntry_dataSource,+    listPlaceIndexesResponseEntry_description,+    listPlaceIndexesResponseEntry_indexName,+    listPlaceIndexesResponseEntry_updateTime,++    -- ** ListRouteCalculatorsResponseEntry+    listRouteCalculatorsResponseEntry_pricingPlan,+    listRouteCalculatorsResponseEntry_calculatorName,+    listRouteCalculatorsResponseEntry_createTime,+    listRouteCalculatorsResponseEntry_dataSource,+    listRouteCalculatorsResponseEntry_description,+    listRouteCalculatorsResponseEntry_updateTime,++    -- ** ListTrackersResponseEntry+    listTrackersResponseEntry_pricingPlan,+    listTrackersResponseEntry_pricingPlanDataSource,+    listTrackersResponseEntry_createTime,+    listTrackersResponseEntry_description,+    listTrackersResponseEntry_trackerName,+    listTrackersResponseEntry_updateTime,++    -- ** MapConfiguration+    mapConfiguration_style,++    -- ** Place+    place_addressNumber,+    place_country,+    place_interpolated,+    place_label,+    place_municipality,+    place_neighborhood,+    place_postalCode,+    place_region,+    place_street,+    place_subRegion,+    place_timeZone,+    place_unitNumber,+    place_unitType,+    place_geometry,++    -- ** PlaceGeometry+    placeGeometry_point,++    -- ** PositionalAccuracy+    positionalAccuracy_horizontal,++    -- ** RouteMatrixEntry+    routeMatrixEntry_distance,+    routeMatrixEntry_durationSeconds,+    routeMatrixEntry_error,++    -- ** RouteMatrixEntryError+    routeMatrixEntryError_message,+    routeMatrixEntryError_code,++    -- ** SearchForPositionResult+    searchForPositionResult_placeId,+    searchForPositionResult_distance,+    searchForPositionResult_place,++    -- ** SearchForSuggestionsResult+    searchForSuggestionsResult_placeId,+    searchForSuggestionsResult_text,++    -- ** SearchForTextResult+    searchForTextResult_distance,+    searchForTextResult_placeId,+    searchForTextResult_relevance,+    searchForTextResult_place,++    -- ** SearchPlaceIndexForPositionSummary+    searchPlaceIndexForPositionSummary_language,+    searchPlaceIndexForPositionSummary_maxResults,+    searchPlaceIndexForPositionSummary_dataSource,+    searchPlaceIndexForPositionSummary_position,++    -- ** SearchPlaceIndexForSuggestionsSummary+    searchPlaceIndexForSuggestionsSummary_biasPosition,+    searchPlaceIndexForSuggestionsSummary_filterBBox,+    searchPlaceIndexForSuggestionsSummary_filterCountries,+    searchPlaceIndexForSuggestionsSummary_language,+    searchPlaceIndexForSuggestionsSummary_maxResults,+    searchPlaceIndexForSuggestionsSummary_dataSource,+    searchPlaceIndexForSuggestionsSummary_text,++    -- ** SearchPlaceIndexForTextSummary+    searchPlaceIndexForTextSummary_biasPosition,+    searchPlaceIndexForTextSummary_filterBBox,+    searchPlaceIndexForTextSummary_filterCountries,+    searchPlaceIndexForTextSummary_language,+    searchPlaceIndexForTextSummary_maxResults,+    searchPlaceIndexForTextSummary_resultBBox,+    searchPlaceIndexForTextSummary_dataSource,+    searchPlaceIndexForTextSummary_text,++    -- ** Step+    step_geometryOffset,+    step_distance,+    step_durationSeconds,+    step_endPosition,+    step_startPosition,++    -- ** TimeZone+    timeZone_offset,+    timeZone_name,++    -- ** TruckDimensions+    truckDimensions_height,+    truckDimensions_length,+    truckDimensions_unit,+    truckDimensions_width,++    -- ** TruckWeight+    truckWeight_total,+    truckWeight_unit,+  )+where++import Amazonka.Location.AssociateTrackerConsumer+import Amazonka.Location.BatchDeleteDevicePositionHistory+import Amazonka.Location.BatchDeleteGeofence+import Amazonka.Location.BatchEvaluateGeofences+import Amazonka.Location.BatchGetDevicePosition+import Amazonka.Location.BatchPutGeofence+import Amazonka.Location.BatchUpdateDevicePosition+import Amazonka.Location.CalculateRoute+import Amazonka.Location.CalculateRouteMatrix+import Amazonka.Location.CreateGeofenceCollection+import Amazonka.Location.CreateMap+import Amazonka.Location.CreatePlaceIndex+import Amazonka.Location.CreateRouteCalculator+import Amazonka.Location.CreateTracker+import Amazonka.Location.DeleteGeofenceCollection+import Amazonka.Location.DeleteMap+import Amazonka.Location.DeletePlaceIndex+import Amazonka.Location.DeleteRouteCalculator+import Amazonka.Location.DeleteTracker+import Amazonka.Location.DescribeGeofenceCollection+import Amazonka.Location.DescribeMap+import Amazonka.Location.DescribePlaceIndex+import Amazonka.Location.DescribeRouteCalculator+import Amazonka.Location.DescribeTracker+import Amazonka.Location.DisassociateTrackerConsumer+import Amazonka.Location.GetDevicePosition+import Amazonka.Location.GetDevicePositionHistory+import Amazonka.Location.GetGeofence+import Amazonka.Location.GetMapGlyphs+import Amazonka.Location.GetMapSprites+import Amazonka.Location.GetMapStyleDescriptor+import Amazonka.Location.GetMapTile+import Amazonka.Location.GetPlace+import Amazonka.Location.ListDevicePositions+import Amazonka.Location.ListGeofenceCollections+import Amazonka.Location.ListGeofences+import Amazonka.Location.ListMaps+import Amazonka.Location.ListPlaceIndexes+import Amazonka.Location.ListRouteCalculators+import Amazonka.Location.ListTagsForResource+import Amazonka.Location.ListTrackerConsumers+import Amazonka.Location.ListTrackers+import Amazonka.Location.PutGeofence+import Amazonka.Location.SearchPlaceIndexForPosition+import Amazonka.Location.SearchPlaceIndexForSuggestions+import Amazonka.Location.SearchPlaceIndexForText+import Amazonka.Location.TagResource+import Amazonka.Location.Types.BatchDeleteDevicePositionHistoryError+import Amazonka.Location.Types.BatchDeleteGeofenceError+import Amazonka.Location.Types.BatchEvaluateGeofencesError+import Amazonka.Location.Types.BatchGetDevicePositionError+import Amazonka.Location.Types.BatchItemError+import Amazonka.Location.Types.BatchPutGeofenceError+import Amazonka.Location.Types.BatchPutGeofenceRequestEntry+import Amazonka.Location.Types.BatchPutGeofenceSuccess+import Amazonka.Location.Types.BatchUpdateDevicePositionError+import Amazonka.Location.Types.CalculateRouteCarModeOptions+import Amazonka.Location.Types.CalculateRouteMatrixSummary+import Amazonka.Location.Types.CalculateRouteSummary+import Amazonka.Location.Types.CalculateRouteTruckModeOptions+import Amazonka.Location.Types.Circle+import Amazonka.Location.Types.DataSourceConfiguration+import Amazonka.Location.Types.DevicePosition+import Amazonka.Location.Types.DevicePositionUpdate+import Amazonka.Location.Types.GeofenceGeometry+import Amazonka.Location.Types.Leg+import Amazonka.Location.Types.LegGeometry+import Amazonka.Location.Types.ListDevicePositionsResponseEntry+import Amazonka.Location.Types.ListGeofenceCollectionsResponseEntry+import Amazonka.Location.Types.ListGeofenceResponseEntry+import Amazonka.Location.Types.ListMapsResponseEntry+import Amazonka.Location.Types.ListPlaceIndexesResponseEntry+import Amazonka.Location.Types.ListRouteCalculatorsResponseEntry+import Amazonka.Location.Types.ListTrackersResponseEntry+import Amazonka.Location.Types.MapConfiguration+import Amazonka.Location.Types.Place+import Amazonka.Location.Types.PlaceGeometry+import Amazonka.Location.Types.PositionalAccuracy+import Amazonka.Location.Types.RouteMatrixEntry+import Amazonka.Location.Types.RouteMatrixEntryError+import Amazonka.Location.Types.SearchForPositionResult+import Amazonka.Location.Types.SearchForSuggestionsResult+import Amazonka.Location.Types.SearchForTextResult+import Amazonka.Location.Types.SearchPlaceIndexForPositionSummary+import Amazonka.Location.Types.SearchPlaceIndexForSuggestionsSummary+import Amazonka.Location.Types.SearchPlaceIndexForTextSummary+import Amazonka.Location.Types.Step+import Amazonka.Location.Types.TimeZone+import Amazonka.Location.Types.TruckDimensions+import Amazonka.Location.Types.TruckWeight+import Amazonka.Location.UntagResource+import Amazonka.Location.UpdateGeofenceCollection+import Amazonka.Location.UpdateMap+import Amazonka.Location.UpdatePlaceIndex+import Amazonka.Location.UpdateRouteCalculator+import Amazonka.Location.UpdateTracker
+ gen/Amazonka/Location/ListDevicePositions.hs view
@@ -0,0 +1,262 @@+{-# 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.Location.ListDevicePositions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- A batch request to retrieve all device positions.+--+-- This operation returns paginated results.+module Amazonka.Location.ListDevicePositions+  ( -- * Creating a Request+    ListDevicePositions (..),+    newListDevicePositions,++    -- * Request Lenses+    listDevicePositions_maxResults,+    listDevicePositions_nextToken,+    listDevicePositions_trackerName,++    -- * Destructuring the Response+    ListDevicePositionsResponse (..),+    newListDevicePositionsResponse,++    -- * Response Lenses+    listDevicePositionsResponse_nextToken,+    listDevicePositionsResponse_httpStatus,+    listDevicePositionsResponse_entries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListDevicePositions' smart constructor.+data ListDevicePositions = ListDevicePositions'+  { -- | An optional limit for the number of entries returned in a single call.+    --+    -- Default value: @100@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token specifying which page of results to return in the+    -- response. If no token is provided, the default page is the first page.+    --+    -- Default value: @null@+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The tracker resource containing the requested devices.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDevicePositions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listDevicePositions_maxResults' - An optional limit for the number of entries returned in a single call.+--+-- Default value: @100@+--+-- 'nextToken', 'listDevicePositions_nextToken' - The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+--+-- 'trackerName', 'listDevicePositions_trackerName' - The tracker resource containing the requested devices.+newListDevicePositions ::+  -- | 'trackerName'+  Prelude.Text ->+  ListDevicePositions+newListDevicePositions pTrackerName_ =+  ListDevicePositions'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      trackerName = pTrackerName_+    }++-- | An optional limit for the number of entries returned in a single call.+--+-- Default value: @100@+listDevicePositions_maxResults :: Lens.Lens' ListDevicePositions (Prelude.Maybe Prelude.Natural)+listDevicePositions_maxResults = Lens.lens (\ListDevicePositions' {maxResults} -> maxResults) (\s@ListDevicePositions' {} a -> s {maxResults = a} :: ListDevicePositions)++-- | The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+listDevicePositions_nextToken :: Lens.Lens' ListDevicePositions (Prelude.Maybe Prelude.Text)+listDevicePositions_nextToken = Lens.lens (\ListDevicePositions' {nextToken} -> nextToken) (\s@ListDevicePositions' {} a -> s {nextToken = a} :: ListDevicePositions)++-- | The tracker resource containing the requested devices.+listDevicePositions_trackerName :: Lens.Lens' ListDevicePositions Prelude.Text+listDevicePositions_trackerName = Lens.lens (\ListDevicePositions' {trackerName} -> trackerName) (\s@ListDevicePositions' {} a -> s {trackerName = a} :: ListDevicePositions)++instance Core.AWSPager ListDevicePositions where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listDevicePositionsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listDevicePositionsResponse_entries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listDevicePositions_nextToken+          Lens..~ rs+          Lens.^? listDevicePositionsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListDevicePositions where+  type+    AWSResponse ListDevicePositions =+      ListDevicePositionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListDevicePositionsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Entries" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListDevicePositions where+  hashWithSalt _salt ListDevicePositions' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` trackerName++instance Prelude.NFData ListDevicePositions where+  rnf ListDevicePositions' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf trackerName++instance Data.ToHeaders ListDevicePositions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListDevicePositions where+  toJSON ListDevicePositions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListDevicePositions where+  toPath ListDevicePositions' {..} =+    Prelude.mconcat+      [ "/tracking/v0/trackers/",+        Data.toBS trackerName,+        "/list-positions"+      ]++instance Data.ToQuery ListDevicePositions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListDevicePositionsResponse' smart constructor.+data ListDevicePositionsResponse = ListDevicePositionsResponse'+  { -- | A pagination token indicating there are additional pages available. You+    -- can use the token in a following request to fetch the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains details about each device\'s last known position. These details+    -- includes the device ID, the time when the position was sampled on the+    -- device, the time that the service received the update, and the most+    -- recent coordinates.+    entries :: [ListDevicePositionsResponseEntry]+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDevicePositionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listDevicePositionsResponse_nextToken' - A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+--+-- 'httpStatus', 'listDevicePositionsResponse_httpStatus' - The response's http status code.+--+-- 'entries', 'listDevicePositionsResponse_entries' - Contains details about each device\'s last known position. These details+-- includes the device ID, the time when the position was sampled on the+-- device, the time that the service received the update, and the most+-- recent coordinates.+newListDevicePositionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListDevicePositionsResponse+newListDevicePositionsResponse pHttpStatus_ =+  ListDevicePositionsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      entries = Prelude.mempty+    }++-- | A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+listDevicePositionsResponse_nextToken :: Lens.Lens' ListDevicePositionsResponse (Prelude.Maybe Prelude.Text)+listDevicePositionsResponse_nextToken = Lens.lens (\ListDevicePositionsResponse' {nextToken} -> nextToken) (\s@ListDevicePositionsResponse' {} a -> s {nextToken = a} :: ListDevicePositionsResponse)++-- | The response's http status code.+listDevicePositionsResponse_httpStatus :: Lens.Lens' ListDevicePositionsResponse Prelude.Int+listDevicePositionsResponse_httpStatus = Lens.lens (\ListDevicePositionsResponse' {httpStatus} -> httpStatus) (\s@ListDevicePositionsResponse' {} a -> s {httpStatus = a} :: ListDevicePositionsResponse)++-- | Contains details about each device\'s last known position. These details+-- includes the device ID, the time when the position was sampled on the+-- device, the time that the service received the update, and the most+-- recent coordinates.+listDevicePositionsResponse_entries :: Lens.Lens' ListDevicePositionsResponse [ListDevicePositionsResponseEntry]+listDevicePositionsResponse_entries = Lens.lens (\ListDevicePositionsResponse' {entries} -> entries) (\s@ListDevicePositionsResponse' {} a -> s {entries = a} :: ListDevicePositionsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListDevicePositionsResponse where+  rnf ListDevicePositionsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf entries
+ gen/Amazonka/Location/ListGeofenceCollections.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.Location.ListGeofenceCollections+-- 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 geofence collections in your AWS account.+--+-- This operation returns paginated results.+module Amazonka.Location.ListGeofenceCollections+  ( -- * Creating a Request+    ListGeofenceCollections (..),+    newListGeofenceCollections,++    -- * Request Lenses+    listGeofenceCollections_maxResults,+    listGeofenceCollections_nextToken,++    -- * Destructuring the Response+    ListGeofenceCollectionsResponse (..),+    newListGeofenceCollectionsResponse,++    -- * Response Lenses+    listGeofenceCollectionsResponse_nextToken,+    listGeofenceCollectionsResponse_httpStatus,+    listGeofenceCollectionsResponse_entries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListGeofenceCollections' smart constructor.+data ListGeofenceCollections = ListGeofenceCollections'+  { -- | An optional limit for the number of resources returned in a single call.+    --+    -- Default value: @100@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token specifying which page of results to return in the+    -- response. If no token is provided, the default page is the first page.+    --+    -- Default value: @null@+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListGeofenceCollections' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listGeofenceCollections_maxResults' - An optional limit for the number of resources returned in a single call.+--+-- Default value: @100@+--+-- 'nextToken', 'listGeofenceCollections_nextToken' - The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+newListGeofenceCollections ::+  ListGeofenceCollections+newListGeofenceCollections =+  ListGeofenceCollections'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | An optional limit for the number of resources returned in a single call.+--+-- Default value: @100@+listGeofenceCollections_maxResults :: Lens.Lens' ListGeofenceCollections (Prelude.Maybe Prelude.Natural)+listGeofenceCollections_maxResults = Lens.lens (\ListGeofenceCollections' {maxResults} -> maxResults) (\s@ListGeofenceCollections' {} a -> s {maxResults = a} :: ListGeofenceCollections)++-- | The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+listGeofenceCollections_nextToken :: Lens.Lens' ListGeofenceCollections (Prelude.Maybe Prelude.Text)+listGeofenceCollections_nextToken = Lens.lens (\ListGeofenceCollections' {nextToken} -> nextToken) (\s@ListGeofenceCollections' {} a -> s {nextToken = a} :: ListGeofenceCollections)++instance Core.AWSPager ListGeofenceCollections where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listGeofenceCollectionsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listGeofenceCollectionsResponse_entries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listGeofenceCollections_nextToken+          Lens..~ rs+          Lens.^? listGeofenceCollectionsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListGeofenceCollections where+  type+    AWSResponse ListGeofenceCollections =+      ListGeofenceCollectionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListGeofenceCollectionsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Entries" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListGeofenceCollections where+  hashWithSalt _salt ListGeofenceCollections' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListGeofenceCollections where+  rnf ListGeofenceCollections' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListGeofenceCollections where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListGeofenceCollections where+  toJSON ListGeofenceCollections' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListGeofenceCollections where+  toPath =+    Prelude.const "/geofencing/v0/list-collections"++instance Data.ToQuery ListGeofenceCollections where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListGeofenceCollectionsResponse' smart constructor.+data ListGeofenceCollectionsResponse = ListGeofenceCollectionsResponse'+  { -- | A pagination token indicating there are additional pages available. You+    -- can use the token in a following request to fetch the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Lists the geofence collections that exist in your AWS account.+    entries :: [ListGeofenceCollectionsResponseEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListGeofenceCollectionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listGeofenceCollectionsResponse_nextToken' - A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+--+-- 'httpStatus', 'listGeofenceCollectionsResponse_httpStatus' - The response's http status code.+--+-- 'entries', 'listGeofenceCollectionsResponse_entries' - Lists the geofence collections that exist in your AWS account.+newListGeofenceCollectionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListGeofenceCollectionsResponse+newListGeofenceCollectionsResponse pHttpStatus_ =+  ListGeofenceCollectionsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      entries = Prelude.mempty+    }++-- | A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+listGeofenceCollectionsResponse_nextToken :: Lens.Lens' ListGeofenceCollectionsResponse (Prelude.Maybe Prelude.Text)+listGeofenceCollectionsResponse_nextToken = Lens.lens (\ListGeofenceCollectionsResponse' {nextToken} -> nextToken) (\s@ListGeofenceCollectionsResponse' {} a -> s {nextToken = a} :: ListGeofenceCollectionsResponse)++-- | The response's http status code.+listGeofenceCollectionsResponse_httpStatus :: Lens.Lens' ListGeofenceCollectionsResponse Prelude.Int+listGeofenceCollectionsResponse_httpStatus = Lens.lens (\ListGeofenceCollectionsResponse' {httpStatus} -> httpStatus) (\s@ListGeofenceCollectionsResponse' {} a -> s {httpStatus = a} :: ListGeofenceCollectionsResponse)++-- | Lists the geofence collections that exist in your AWS account.+listGeofenceCollectionsResponse_entries :: Lens.Lens' ListGeofenceCollectionsResponse [ListGeofenceCollectionsResponseEntry]+listGeofenceCollectionsResponse_entries = Lens.lens (\ListGeofenceCollectionsResponse' {entries} -> entries) (\s@ListGeofenceCollectionsResponse' {} a -> s {entries = a} :: ListGeofenceCollectionsResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    ListGeofenceCollectionsResponse+  where+  rnf ListGeofenceCollectionsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf entries
+ gen/Amazonka/Location/ListGeofences.hs view
@@ -0,0 +1,252 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.ListGeofences+-- 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 geofences stored in a given geofence collection.+--+-- This operation returns paginated results.+module Amazonka.Location.ListGeofences+  ( -- * Creating a Request+    ListGeofences (..),+    newListGeofences,++    -- * Request Lenses+    listGeofences_maxResults,+    listGeofences_nextToken,+    listGeofences_collectionName,++    -- * Destructuring the Response+    ListGeofencesResponse (..),+    newListGeofencesResponse,++    -- * Response Lenses+    listGeofencesResponse_nextToken,+    listGeofencesResponse_httpStatus,+    listGeofencesResponse_entries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListGeofences' smart constructor.+data ListGeofences = ListGeofences'+  { -- | An optional limit for the number of geofences returned in a single call.+    --+    -- Default value: @100@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token specifying which page of results to return in the+    -- response. If no token is provided, the default page is the first page.+    --+    -- Default value: @null@+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the geofence collection storing the list of geofences.+    collectionName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListGeofences' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listGeofences_maxResults' - An optional limit for the number of geofences returned in a single call.+--+-- Default value: @100@+--+-- 'nextToken', 'listGeofences_nextToken' - The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+--+-- 'collectionName', 'listGeofences_collectionName' - The name of the geofence collection storing the list of geofences.+newListGeofences ::+  -- | 'collectionName'+  Prelude.Text ->+  ListGeofences+newListGeofences pCollectionName_ =+  ListGeofences'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      collectionName = pCollectionName_+    }++-- | An optional limit for the number of geofences returned in a single call.+--+-- Default value: @100@+listGeofences_maxResults :: Lens.Lens' ListGeofences (Prelude.Maybe Prelude.Natural)+listGeofences_maxResults = Lens.lens (\ListGeofences' {maxResults} -> maxResults) (\s@ListGeofences' {} a -> s {maxResults = a} :: ListGeofences)++-- | The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+listGeofences_nextToken :: Lens.Lens' ListGeofences (Prelude.Maybe Prelude.Text)+listGeofences_nextToken = Lens.lens (\ListGeofences' {nextToken} -> nextToken) (\s@ListGeofences' {} a -> s {nextToken = a} :: ListGeofences)++-- | The name of the geofence collection storing the list of geofences.+listGeofences_collectionName :: Lens.Lens' ListGeofences Prelude.Text+listGeofences_collectionName = Lens.lens (\ListGeofences' {collectionName} -> collectionName) (\s@ListGeofences' {} a -> s {collectionName = a} :: ListGeofences)++instance Core.AWSPager ListGeofences where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listGeofencesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listGeofencesResponse_entries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listGeofences_nextToken+          Lens..~ rs+          Lens.^? listGeofencesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListGeofences where+  type+    AWSResponse ListGeofences =+      ListGeofencesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListGeofencesResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Entries" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListGeofences where+  hashWithSalt _salt ListGeofences' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` collectionName++instance Prelude.NFData ListGeofences where+  rnf ListGeofences' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf collectionName++instance Data.ToHeaders ListGeofences where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListGeofences where+  toJSON ListGeofences' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListGeofences where+  toPath ListGeofences' {..} =+    Prelude.mconcat+      [ "/geofencing/v0/collections/",+        Data.toBS collectionName,+        "/list-geofences"+      ]++instance Data.ToQuery ListGeofences where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListGeofencesResponse' smart constructor.+data ListGeofencesResponse = ListGeofencesResponse'+  { -- | A pagination token indicating there are additional pages available. You+    -- can use the token in a following request to fetch the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains a list of geofences stored in the geofence collection.+    entries :: [ListGeofenceResponseEntry]+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListGeofencesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listGeofencesResponse_nextToken' - A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+--+-- 'httpStatus', 'listGeofencesResponse_httpStatus' - The response's http status code.+--+-- 'entries', 'listGeofencesResponse_entries' - Contains a list of geofences stored in the geofence collection.+newListGeofencesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListGeofencesResponse+newListGeofencesResponse pHttpStatus_ =+  ListGeofencesResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      entries = Prelude.mempty+    }++-- | A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+listGeofencesResponse_nextToken :: Lens.Lens' ListGeofencesResponse (Prelude.Maybe Prelude.Text)+listGeofencesResponse_nextToken = Lens.lens (\ListGeofencesResponse' {nextToken} -> nextToken) (\s@ListGeofencesResponse' {} a -> s {nextToken = a} :: ListGeofencesResponse)++-- | The response's http status code.+listGeofencesResponse_httpStatus :: Lens.Lens' ListGeofencesResponse Prelude.Int+listGeofencesResponse_httpStatus = Lens.lens (\ListGeofencesResponse' {httpStatus} -> httpStatus) (\s@ListGeofencesResponse' {} a -> s {httpStatus = a} :: ListGeofencesResponse)++-- | Contains a list of geofences stored in the geofence collection.+listGeofencesResponse_entries :: Lens.Lens' ListGeofencesResponse [ListGeofenceResponseEntry]+listGeofencesResponse_entries = Lens.lens (\ListGeofencesResponse' {entries} -> entries) (\s@ListGeofencesResponse' {} a -> s {entries = a} :: ListGeofencesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListGeofencesResponse where+  rnf ListGeofencesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf entries
+ gen/Amazonka/Location/ListMaps.hs view
@@ -0,0 +1,230 @@+{-# 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.Location.ListMaps+-- 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 map resources in your AWS account.+--+-- This operation returns paginated results.+module Amazonka.Location.ListMaps+  ( -- * Creating a Request+    ListMaps (..),+    newListMaps,++    -- * Request Lenses+    listMaps_maxResults,+    listMaps_nextToken,++    -- * Destructuring the Response+    ListMapsResponse (..),+    newListMapsResponse,++    -- * Response Lenses+    listMapsResponse_nextToken,+    listMapsResponse_httpStatus,+    listMapsResponse_entries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListMaps' smart constructor.+data ListMaps = ListMaps'+  { -- | An optional limit for the number of resources returned in a single call.+    --+    -- Default value: @100@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token specifying which page of results to return in the+    -- response. If no token is provided, the default page is the first page.+    --+    -- Default value: @null@+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListMaps' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listMaps_maxResults' - An optional limit for the number of resources returned in a single call.+--+-- Default value: @100@+--+-- 'nextToken', 'listMaps_nextToken' - The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+newListMaps ::+  ListMaps+newListMaps =+  ListMaps'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | An optional limit for the number of resources returned in a single call.+--+-- Default value: @100@+listMaps_maxResults :: Lens.Lens' ListMaps (Prelude.Maybe Prelude.Natural)+listMaps_maxResults = Lens.lens (\ListMaps' {maxResults} -> maxResults) (\s@ListMaps' {} a -> s {maxResults = a} :: ListMaps)++-- | The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+listMaps_nextToken :: Lens.Lens' ListMaps (Prelude.Maybe Prelude.Text)+listMaps_nextToken = Lens.lens (\ListMaps' {nextToken} -> nextToken) (\s@ListMaps' {} a -> s {nextToken = a} :: ListMaps)++instance Core.AWSPager ListMaps where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listMapsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop (rs Lens.^. listMapsResponse_entries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listMaps_nextToken+          Lens..~ rs+          Lens.^? listMapsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListMaps where+  type AWSResponse ListMaps = ListMapsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListMapsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Entries" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListMaps where+  hashWithSalt _salt ListMaps' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListMaps where+  rnf ListMaps' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListMaps where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListMaps where+  toJSON ListMaps' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListMaps where+  toPath = Prelude.const "/maps/v0/list-maps"++instance Data.ToQuery ListMaps where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListMapsResponse' smart constructor.+data ListMapsResponse = ListMapsResponse'+  { -- | A pagination token indicating there are additional pages available. You+    -- can use the token in a following request to fetch the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains a list of maps in your AWS account+    entries :: [ListMapsResponseEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListMapsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listMapsResponse_nextToken' - A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+--+-- 'httpStatus', 'listMapsResponse_httpStatus' - The response's http status code.+--+-- 'entries', 'listMapsResponse_entries' - Contains a list of maps in your AWS account+newListMapsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListMapsResponse+newListMapsResponse pHttpStatus_ =+  ListMapsResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      entries = Prelude.mempty+    }++-- | A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+listMapsResponse_nextToken :: Lens.Lens' ListMapsResponse (Prelude.Maybe Prelude.Text)+listMapsResponse_nextToken = Lens.lens (\ListMapsResponse' {nextToken} -> nextToken) (\s@ListMapsResponse' {} a -> s {nextToken = a} :: ListMapsResponse)++-- | The response's http status code.+listMapsResponse_httpStatus :: Lens.Lens' ListMapsResponse Prelude.Int+listMapsResponse_httpStatus = Lens.lens (\ListMapsResponse' {httpStatus} -> httpStatus) (\s@ListMapsResponse' {} a -> s {httpStatus = a} :: ListMapsResponse)++-- | Contains a list of maps in your AWS account+listMapsResponse_entries :: Lens.Lens' ListMapsResponse [ListMapsResponseEntry]+listMapsResponse_entries = Lens.lens (\ListMapsResponse' {entries} -> entries) (\s@ListMapsResponse' {} a -> s {entries = a} :: ListMapsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListMapsResponse where+  rnf ListMapsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf entries
+ gen/Amazonka/Location/ListPlaceIndexes.hs view
@@ -0,0 +1,237 @@+{-# 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.Location.ListPlaceIndexes+-- 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 place index resources in your AWS account.+--+-- This operation returns paginated results.+module Amazonka.Location.ListPlaceIndexes+  ( -- * Creating a Request+    ListPlaceIndexes (..),+    newListPlaceIndexes,++    -- * Request Lenses+    listPlaceIndexes_maxResults,+    listPlaceIndexes_nextToken,++    -- * Destructuring the Response+    ListPlaceIndexesResponse (..),+    newListPlaceIndexesResponse,++    -- * Response Lenses+    listPlaceIndexesResponse_nextToken,+    listPlaceIndexesResponse_httpStatus,+    listPlaceIndexesResponse_entries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListPlaceIndexes' smart constructor.+data ListPlaceIndexes = ListPlaceIndexes'+  { -- | An optional limit for the maximum number of results returned in a single+    -- call.+    --+    -- Default value: @100@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token specifying which page of results to return in the+    -- response. If no token is provided, the default page is the first page.+    --+    -- Default value: @null@+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListPlaceIndexes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listPlaceIndexes_maxResults' - An optional limit for the maximum number of results returned in a single+-- call.+--+-- Default value: @100@+--+-- 'nextToken', 'listPlaceIndexes_nextToken' - The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+newListPlaceIndexes ::+  ListPlaceIndexes+newListPlaceIndexes =+  ListPlaceIndexes'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | An optional limit for the maximum number of results returned in a single+-- call.+--+-- Default value: @100@+listPlaceIndexes_maxResults :: Lens.Lens' ListPlaceIndexes (Prelude.Maybe Prelude.Natural)+listPlaceIndexes_maxResults = Lens.lens (\ListPlaceIndexes' {maxResults} -> maxResults) (\s@ListPlaceIndexes' {} a -> s {maxResults = a} :: ListPlaceIndexes)++-- | The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+listPlaceIndexes_nextToken :: Lens.Lens' ListPlaceIndexes (Prelude.Maybe Prelude.Text)+listPlaceIndexes_nextToken = Lens.lens (\ListPlaceIndexes' {nextToken} -> nextToken) (\s@ListPlaceIndexes' {} a -> s {nextToken = a} :: ListPlaceIndexes)++instance Core.AWSPager ListPlaceIndexes where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listPlaceIndexesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listPlaceIndexesResponse_entries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listPlaceIndexes_nextToken+          Lens..~ rs+          Lens.^? listPlaceIndexesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListPlaceIndexes where+  type+    AWSResponse ListPlaceIndexes =+      ListPlaceIndexesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListPlaceIndexesResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Entries" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListPlaceIndexes where+  hashWithSalt _salt ListPlaceIndexes' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListPlaceIndexes where+  rnf ListPlaceIndexes' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListPlaceIndexes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListPlaceIndexes where+  toJSON ListPlaceIndexes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListPlaceIndexes where+  toPath = Prelude.const "/places/v0/list-indexes"++instance Data.ToQuery ListPlaceIndexes where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListPlaceIndexesResponse' smart constructor.+data ListPlaceIndexesResponse = ListPlaceIndexesResponse'+  { -- | A pagination token indicating that there are additional pages available.+    -- You can use the token in a new request to fetch the next page of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Lists the place index resources that exist in your AWS account+    entries :: [ListPlaceIndexesResponseEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListPlaceIndexesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listPlaceIndexesResponse_nextToken' - A pagination token indicating that there are additional pages available.+-- You can use the token in a new request to fetch the next page of+-- results.+--+-- 'httpStatus', 'listPlaceIndexesResponse_httpStatus' - The response's http status code.+--+-- 'entries', 'listPlaceIndexesResponse_entries' - Lists the place index resources that exist in your AWS account+newListPlaceIndexesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListPlaceIndexesResponse+newListPlaceIndexesResponse pHttpStatus_ =+  ListPlaceIndexesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      entries = Prelude.mempty+    }++-- | A pagination token indicating that there are additional pages available.+-- You can use the token in a new request to fetch the next page of+-- results.+listPlaceIndexesResponse_nextToken :: Lens.Lens' ListPlaceIndexesResponse (Prelude.Maybe Prelude.Text)+listPlaceIndexesResponse_nextToken = Lens.lens (\ListPlaceIndexesResponse' {nextToken} -> nextToken) (\s@ListPlaceIndexesResponse' {} a -> s {nextToken = a} :: ListPlaceIndexesResponse)++-- | The response's http status code.+listPlaceIndexesResponse_httpStatus :: Lens.Lens' ListPlaceIndexesResponse Prelude.Int+listPlaceIndexesResponse_httpStatus = Lens.lens (\ListPlaceIndexesResponse' {httpStatus} -> httpStatus) (\s@ListPlaceIndexesResponse' {} a -> s {httpStatus = a} :: ListPlaceIndexesResponse)++-- | Lists the place index resources that exist in your AWS account+listPlaceIndexesResponse_entries :: Lens.Lens' ListPlaceIndexesResponse [ListPlaceIndexesResponseEntry]+listPlaceIndexesResponse_entries = Lens.lens (\ListPlaceIndexesResponse' {entries} -> entries) (\s@ListPlaceIndexesResponse' {} a -> s {entries = a} :: ListPlaceIndexesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListPlaceIndexesResponse where+  rnf ListPlaceIndexesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf entries
+ gen/Amazonka/Location/ListRouteCalculators.hs view
@@ -0,0 +1,234 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.ListRouteCalculators+-- 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 route calculator resources in your AWS account.+--+-- This operation returns paginated results.+module Amazonka.Location.ListRouteCalculators+  ( -- * Creating a Request+    ListRouteCalculators (..),+    newListRouteCalculators,++    -- * Request Lenses+    listRouteCalculators_maxResults,+    listRouteCalculators_nextToken,++    -- * Destructuring the Response+    ListRouteCalculatorsResponse (..),+    newListRouteCalculatorsResponse,++    -- * Response Lenses+    listRouteCalculatorsResponse_nextToken,+    listRouteCalculatorsResponse_httpStatus,+    listRouteCalculatorsResponse_entries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListRouteCalculators' smart constructor.+data ListRouteCalculators = ListRouteCalculators'+  { -- | An optional maximum number of results returned in a single call.+    --+    -- Default Value: @100@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token specifying which page of results to return in the+    -- response. If no token is provided, the default page is the first page.+    --+    -- Default Value: @null@+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRouteCalculators' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRouteCalculators_maxResults' - An optional maximum number of results returned in a single call.+--+-- Default Value: @100@+--+-- 'nextToken', 'listRouteCalculators_nextToken' - The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default Value: @null@+newListRouteCalculators ::+  ListRouteCalculators+newListRouteCalculators =+  ListRouteCalculators'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | An optional maximum number of results returned in a single call.+--+-- Default Value: @100@+listRouteCalculators_maxResults :: Lens.Lens' ListRouteCalculators (Prelude.Maybe Prelude.Natural)+listRouteCalculators_maxResults = Lens.lens (\ListRouteCalculators' {maxResults} -> maxResults) (\s@ListRouteCalculators' {} a -> s {maxResults = a} :: ListRouteCalculators)++-- | The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default Value: @null@+listRouteCalculators_nextToken :: Lens.Lens' ListRouteCalculators (Prelude.Maybe Prelude.Text)+listRouteCalculators_nextToken = Lens.lens (\ListRouteCalculators' {nextToken} -> nextToken) (\s@ListRouteCalculators' {} a -> s {nextToken = a} :: ListRouteCalculators)++instance Core.AWSPager ListRouteCalculators where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listRouteCalculatorsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listRouteCalculatorsResponse_entries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listRouteCalculators_nextToken+          Lens..~ rs+          Lens.^? listRouteCalculatorsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListRouteCalculators where+  type+    AWSResponse ListRouteCalculators =+      ListRouteCalculatorsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListRouteCalculatorsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Entries" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListRouteCalculators where+  hashWithSalt _salt ListRouteCalculators' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListRouteCalculators where+  rnf ListRouteCalculators' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListRouteCalculators where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListRouteCalculators where+  toJSON ListRouteCalculators' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListRouteCalculators where+  toPath = Prelude.const "/routes/v0/list-calculators"++instance Data.ToQuery ListRouteCalculators where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListRouteCalculatorsResponse' smart constructor.+data ListRouteCalculatorsResponse = ListRouteCalculatorsResponse'+  { -- | A pagination token indicating there are additional pages available. You+    -- can use the token in a subsequent request to fetch the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Lists the route calculator resources that exist in your AWS account+    entries :: [ListRouteCalculatorsResponseEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRouteCalculatorsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRouteCalculatorsResponse_nextToken' - A pagination token indicating there are additional pages available. You+-- can use the token in a subsequent request to fetch the next set of+-- results.+--+-- 'httpStatus', 'listRouteCalculatorsResponse_httpStatus' - The response's http status code.+--+-- 'entries', 'listRouteCalculatorsResponse_entries' - Lists the route calculator resources that exist in your AWS account+newListRouteCalculatorsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListRouteCalculatorsResponse+newListRouteCalculatorsResponse pHttpStatus_ =+  ListRouteCalculatorsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      entries = Prelude.mempty+    }++-- | A pagination token indicating there are additional pages available. You+-- can use the token in a subsequent request to fetch the next set of+-- results.+listRouteCalculatorsResponse_nextToken :: Lens.Lens' ListRouteCalculatorsResponse (Prelude.Maybe Prelude.Text)+listRouteCalculatorsResponse_nextToken = Lens.lens (\ListRouteCalculatorsResponse' {nextToken} -> nextToken) (\s@ListRouteCalculatorsResponse' {} a -> s {nextToken = a} :: ListRouteCalculatorsResponse)++-- | The response's http status code.+listRouteCalculatorsResponse_httpStatus :: Lens.Lens' ListRouteCalculatorsResponse Prelude.Int+listRouteCalculatorsResponse_httpStatus = Lens.lens (\ListRouteCalculatorsResponse' {httpStatus} -> httpStatus) (\s@ListRouteCalculatorsResponse' {} a -> s {httpStatus = a} :: ListRouteCalculatorsResponse)++-- | Lists the route calculator resources that exist in your AWS account+listRouteCalculatorsResponse_entries :: Lens.Lens' ListRouteCalculatorsResponse [ListRouteCalculatorsResponseEntry]+listRouteCalculatorsResponse_entries = Lens.lens (\ListRouteCalculatorsResponse' {entries} -> entries) (\s@ListRouteCalculatorsResponse' {} a -> s {entries = a} :: ListRouteCalculatorsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListRouteCalculatorsResponse where+  rnf ListRouteCalculatorsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf entries
+ gen/Amazonka/Location/ListTagsForResource.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.Location.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)+--+-- Returns a list of tags that are applied to the specified Amazon Location+-- resource.+module Amazonka.Location.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.Location.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 resource whose tags you want to+    -- retrieve.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:resourcetype\/ExampleResource@+    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 resource whose tags you want to+-- retrieve.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:resourcetype\/ExampleResource@+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) of the resource whose tags you want to+-- retrieve.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:resourcetype\/ExampleResource@+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.get (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+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListTagsForResource where+  toPath ListTagsForResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery ListTagsForResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | Tags that have been applied to the specified resource. Tags are mapped+    -- from the tag key to the tag value: @\"TagKey\" : \"TagValue\"@.+    --+    -- -   Format example: @{\"tag1\" : \"value1\", \"tag2\" : \"value2\"} @+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | 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' - Tags that have been applied to the specified resource. Tags are mapped+-- from the tag key to the tag value: @\"TagKey\" : \"TagValue\"@.+--+-- -   Format example: @{\"tag1\" : \"value1\", \"tag2\" : \"value2\"} @+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Tags that have been applied to the specified resource. Tags are mapped+-- from the tag key to the tag value: @\"TagKey\" : \"TagValue\"@.+--+-- -   Format example: @{\"tag1\" : \"value1\", \"tag2\" : \"value2\"} @+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+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/Location/ListTrackerConsumers.hs view
@@ -0,0 +1,262 @@+{-# 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.Location.ListTrackerConsumers+-- 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 geofence collections currently associated to the given tracker+-- resource.+--+-- This operation returns paginated results.+module Amazonka.Location.ListTrackerConsumers+  ( -- * Creating a Request+    ListTrackerConsumers (..),+    newListTrackerConsumers,++    -- * Request Lenses+    listTrackerConsumers_maxResults,+    listTrackerConsumers_nextToken,+    listTrackerConsumers_trackerName,++    -- * Destructuring the Response+    ListTrackerConsumersResponse (..),+    newListTrackerConsumersResponse,++    -- * Response Lenses+    listTrackerConsumersResponse_nextToken,+    listTrackerConsumersResponse_httpStatus,+    listTrackerConsumersResponse_consumerArns,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTrackerConsumers' smart constructor.+data ListTrackerConsumers = ListTrackerConsumers'+  { -- | An optional limit for the number of resources returned in a single call.+    --+    -- Default value: @100@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token specifying which page of results to return in the+    -- response. If no token is provided, the default page is the first page.+    --+    -- Default value: @null@+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The tracker resource whose associated geofence collections you want to+    -- list.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTrackerConsumers' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTrackerConsumers_maxResults' - An optional limit for the number of resources returned in a single call.+--+-- Default value: @100@+--+-- 'nextToken', 'listTrackerConsumers_nextToken' - The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+--+-- 'trackerName', 'listTrackerConsumers_trackerName' - The tracker resource whose associated geofence collections you want to+-- list.+newListTrackerConsumers ::+  -- | 'trackerName'+  Prelude.Text ->+  ListTrackerConsumers+newListTrackerConsumers pTrackerName_ =+  ListTrackerConsumers'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      trackerName = pTrackerName_+    }++-- | An optional limit for the number of resources returned in a single call.+--+-- Default value: @100@+listTrackerConsumers_maxResults :: Lens.Lens' ListTrackerConsumers (Prelude.Maybe Prelude.Natural)+listTrackerConsumers_maxResults = Lens.lens (\ListTrackerConsumers' {maxResults} -> maxResults) (\s@ListTrackerConsumers' {} a -> s {maxResults = a} :: ListTrackerConsumers)++-- | The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+listTrackerConsumers_nextToken :: Lens.Lens' ListTrackerConsumers (Prelude.Maybe Prelude.Text)+listTrackerConsumers_nextToken = Lens.lens (\ListTrackerConsumers' {nextToken} -> nextToken) (\s@ListTrackerConsumers' {} a -> s {nextToken = a} :: ListTrackerConsumers)++-- | The tracker resource whose associated geofence collections you want to+-- list.+listTrackerConsumers_trackerName :: Lens.Lens' ListTrackerConsumers Prelude.Text+listTrackerConsumers_trackerName = Lens.lens (\ListTrackerConsumers' {trackerName} -> trackerName) (\s@ListTrackerConsumers' {} a -> s {trackerName = a} :: ListTrackerConsumers)++instance Core.AWSPager ListTrackerConsumers where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listTrackerConsumersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listTrackerConsumersResponse_consumerArns+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listTrackerConsumers_nextToken+          Lens..~ rs+          Lens.^? listTrackerConsumersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListTrackerConsumers where+  type+    AWSResponse ListTrackerConsumers =+      ListTrackerConsumersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTrackerConsumersResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "ConsumerArns" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListTrackerConsumers where+  hashWithSalt _salt ListTrackerConsumers' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` trackerName++instance Prelude.NFData ListTrackerConsumers where+  rnf ListTrackerConsumers' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf trackerName++instance Data.ToHeaders ListTrackerConsumers where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListTrackerConsumers where+  toJSON ListTrackerConsumers' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListTrackerConsumers where+  toPath ListTrackerConsumers' {..} =+    Prelude.mconcat+      [ "/tracking/v0/trackers/",+        Data.toBS trackerName,+        "/list-consumers"+      ]++instance Data.ToQuery ListTrackerConsumers where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTrackerConsumersResponse' smart constructor.+data ListTrackerConsumersResponse = ListTrackerConsumersResponse'+  { -- | A pagination token indicating there are additional pages available. You+    -- can use the token in a following request to fetch the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains the list of geofence collection ARNs associated to the tracker+    -- resource.+    consumerArns :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTrackerConsumersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTrackerConsumersResponse_nextToken' - A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+--+-- 'httpStatus', 'listTrackerConsumersResponse_httpStatus' - The response's http status code.+--+-- 'consumerArns', 'listTrackerConsumersResponse_consumerArns' - Contains the list of geofence collection ARNs associated to the tracker+-- resource.+newListTrackerConsumersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTrackerConsumersResponse+newListTrackerConsumersResponse pHttpStatus_ =+  ListTrackerConsumersResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      consumerArns = Prelude.mempty+    }++-- | A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+listTrackerConsumersResponse_nextToken :: Lens.Lens' ListTrackerConsumersResponse (Prelude.Maybe Prelude.Text)+listTrackerConsumersResponse_nextToken = Lens.lens (\ListTrackerConsumersResponse' {nextToken} -> nextToken) (\s@ListTrackerConsumersResponse' {} a -> s {nextToken = a} :: ListTrackerConsumersResponse)++-- | The response's http status code.+listTrackerConsumersResponse_httpStatus :: Lens.Lens' ListTrackerConsumersResponse Prelude.Int+listTrackerConsumersResponse_httpStatus = Lens.lens (\ListTrackerConsumersResponse' {httpStatus} -> httpStatus) (\s@ListTrackerConsumersResponse' {} a -> s {httpStatus = a} :: ListTrackerConsumersResponse)++-- | Contains the list of geofence collection ARNs associated to the tracker+-- resource.+listTrackerConsumersResponse_consumerArns :: Lens.Lens' ListTrackerConsumersResponse [Prelude.Text]+listTrackerConsumersResponse_consumerArns = Lens.lens (\ListTrackerConsumersResponse' {consumerArns} -> consumerArns) (\s@ListTrackerConsumersResponse' {} a -> s {consumerArns = a} :: ListTrackerConsumersResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListTrackerConsumersResponse where+  rnf ListTrackerConsumersResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf consumerArns
+ gen/Amazonka/Location/ListTrackers.hs view
@@ -0,0 +1,236 @@+{-# 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.Location.ListTrackers+-- 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 tracker resources in your AWS account.+--+-- This operation returns paginated results.+module Amazonka.Location.ListTrackers+  ( -- * Creating a Request+    ListTrackers (..),+    newListTrackers,++    -- * Request Lenses+    listTrackers_maxResults,+    listTrackers_nextToken,++    -- * Destructuring the Response+    ListTrackersResponse (..),+    newListTrackersResponse,++    -- * Response Lenses+    listTrackersResponse_nextToken,+    listTrackersResponse_httpStatus,+    listTrackersResponse_entries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTrackers' smart constructor.+data ListTrackers = ListTrackers'+  { -- | An optional limit for the number of resources returned in a single call.+    --+    -- Default value: @100@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The pagination token specifying which page of results to return in the+    -- response. If no token is provided, the default page is the first page.+    --+    -- Default value: @null@+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTrackers' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTrackers_maxResults' - An optional limit for the number of resources returned in a single call.+--+-- Default value: @100@+--+-- 'nextToken', 'listTrackers_nextToken' - The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+newListTrackers ::+  ListTrackers+newListTrackers =+  ListTrackers'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | An optional limit for the number of resources returned in a single call.+--+-- Default value: @100@+listTrackers_maxResults :: Lens.Lens' ListTrackers (Prelude.Maybe Prelude.Natural)+listTrackers_maxResults = Lens.lens (\ListTrackers' {maxResults} -> maxResults) (\s@ListTrackers' {} a -> s {maxResults = a} :: ListTrackers)++-- | The pagination token specifying which page of results to return in the+-- response. If no token is provided, the default page is the first page.+--+-- Default value: @null@+listTrackers_nextToken :: Lens.Lens' ListTrackers (Prelude.Maybe Prelude.Text)+listTrackers_nextToken = Lens.lens (\ListTrackers' {nextToken} -> nextToken) (\s@ListTrackers' {} a -> s {nextToken = a} :: ListTrackers)++instance Core.AWSPager ListTrackers where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listTrackersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop (rs Lens.^. listTrackersResponse_entries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listTrackers_nextToken+          Lens..~ rs+          Lens.^? listTrackersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListTrackers where+  type AWSResponse ListTrackers = ListTrackersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTrackersResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Entries" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListTrackers where+  hashWithSalt _salt ListTrackers' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListTrackers where+  rnf ListTrackers' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListTrackers where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListTrackers where+  toJSON ListTrackers' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,+            ("NextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListTrackers where+  toPath = Prelude.const "/tracking/v0/list-trackers"++instance Data.ToQuery ListTrackers where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTrackersResponse' smart constructor.+data ListTrackersResponse = ListTrackersResponse'+  { -- | A pagination token indicating there are additional pages available. You+    -- can use the token in a following request to fetch the next set of+    -- results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Contains tracker resources in your AWS account. Details include tracker+    -- name, description and timestamps for when the tracker was created and+    -- last updated.+    entries :: [ListTrackersResponseEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTrackersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTrackersResponse_nextToken' - A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+--+-- 'httpStatus', 'listTrackersResponse_httpStatus' - The response's http status code.+--+-- 'entries', 'listTrackersResponse_entries' - Contains tracker resources in your AWS account. Details include tracker+-- name, description and timestamps for when the tracker was created and+-- last updated.+newListTrackersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTrackersResponse+newListTrackersResponse pHttpStatus_ =+  ListTrackersResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      entries = Prelude.mempty+    }++-- | A pagination token indicating there are additional pages available. You+-- can use the token in a following request to fetch the next set of+-- results.+listTrackersResponse_nextToken :: Lens.Lens' ListTrackersResponse (Prelude.Maybe Prelude.Text)+listTrackersResponse_nextToken = Lens.lens (\ListTrackersResponse' {nextToken} -> nextToken) (\s@ListTrackersResponse' {} a -> s {nextToken = a} :: ListTrackersResponse)++-- | The response's http status code.+listTrackersResponse_httpStatus :: Lens.Lens' ListTrackersResponse Prelude.Int+listTrackersResponse_httpStatus = Lens.lens (\ListTrackersResponse' {httpStatus} -> httpStatus) (\s@ListTrackersResponse' {} a -> s {httpStatus = a} :: ListTrackersResponse)++-- | Contains tracker resources in your AWS account. Details include tracker+-- name, description and timestamps for when the tracker was created and+-- last updated.+listTrackersResponse_entries :: Lens.Lens' ListTrackersResponse [ListTrackersResponseEntry]+listTrackersResponse_entries = Lens.lens (\ListTrackersResponse' {entries} -> entries) (\s@ListTrackersResponse' {} a -> s {entries = a} :: ListTrackersResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListTrackersResponse where+  rnf ListTrackersResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf entries
+ gen/Amazonka/Location/PutGeofence.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.Location.PutGeofence+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Stores a geofence geometry in a given geofence collection, or updates+-- the geometry of an existing geofence if a geofence ID is included in the+-- request.+module Amazonka.Location.PutGeofence+  ( -- * Creating a Request+    PutGeofence (..),+    newPutGeofence,++    -- * Request Lenses+    putGeofence_collectionName,+    putGeofence_geofenceId,+    putGeofence_geometry,++    -- * Destructuring the Response+    PutGeofenceResponse (..),+    newPutGeofenceResponse,++    -- * Response Lenses+    putGeofenceResponse_httpStatus,+    putGeofenceResponse_createTime,+    putGeofenceResponse_geofenceId,+    putGeofenceResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutGeofence' smart constructor.+data PutGeofence = PutGeofence'+  { -- | The geofence collection to store the geofence in.+    collectionName :: Prelude.Text,+    -- | An identifier for the geofence. For example, @ExampleGeofence-1@.+    geofenceId :: Prelude.Text,+    -- | Contains the details to specify the position of the geofence. Can be+    -- either a polygon or a circle. Including both will return a validation+    -- error.+    --+    -- Each+    -- <https://docs.aws.amazon.com/location-geofences/latest/APIReference/API_GeofenceGeometry.html geofence polygon>+    -- can have a maximum of 1,000 vertices.+    geometry :: GeofenceGeometry+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutGeofence' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'collectionName', 'putGeofence_collectionName' - The geofence collection to store the geofence in.+--+-- 'geofenceId', 'putGeofence_geofenceId' - An identifier for the geofence. For example, @ExampleGeofence-1@.+--+-- 'geometry', 'putGeofence_geometry' - Contains the details to specify the position of the geofence. Can be+-- either a polygon or a circle. Including both will return a validation+-- error.+--+-- Each+-- <https://docs.aws.amazon.com/location-geofences/latest/APIReference/API_GeofenceGeometry.html geofence polygon>+-- can have a maximum of 1,000 vertices.+newPutGeofence ::+  -- | 'collectionName'+  Prelude.Text ->+  -- | 'geofenceId'+  Prelude.Text ->+  -- | 'geometry'+  GeofenceGeometry ->+  PutGeofence+newPutGeofence+  pCollectionName_+  pGeofenceId_+  pGeometry_ =+    PutGeofence'+      { collectionName = pCollectionName_,+        geofenceId = pGeofenceId_,+        geometry = pGeometry_+      }++-- | The geofence collection to store the geofence in.+putGeofence_collectionName :: Lens.Lens' PutGeofence Prelude.Text+putGeofence_collectionName = Lens.lens (\PutGeofence' {collectionName} -> collectionName) (\s@PutGeofence' {} a -> s {collectionName = a} :: PutGeofence)++-- | An identifier for the geofence. For example, @ExampleGeofence-1@.+putGeofence_geofenceId :: Lens.Lens' PutGeofence Prelude.Text+putGeofence_geofenceId = Lens.lens (\PutGeofence' {geofenceId} -> geofenceId) (\s@PutGeofence' {} a -> s {geofenceId = a} :: PutGeofence)++-- | Contains the details to specify the position of the geofence. Can be+-- either a polygon or a circle. Including both will return a validation+-- error.+--+-- Each+-- <https://docs.aws.amazon.com/location-geofences/latest/APIReference/API_GeofenceGeometry.html geofence polygon>+-- can have a maximum of 1,000 vertices.+putGeofence_geometry :: Lens.Lens' PutGeofence GeofenceGeometry+putGeofence_geometry = Lens.lens (\PutGeofence' {geometry} -> geometry) (\s@PutGeofence' {} a -> s {geometry = a} :: PutGeofence)++instance Core.AWSRequest PutGeofence where+  type AWSResponse PutGeofence = PutGeofenceResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutGeofenceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CreateTime")+            Prelude.<*> (x Data..:> "GeofenceId")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable PutGeofence where+  hashWithSalt _salt PutGeofence' {..} =+    _salt+      `Prelude.hashWithSalt` collectionName+      `Prelude.hashWithSalt` geofenceId+      `Prelude.hashWithSalt` geometry++instance Prelude.NFData PutGeofence where+  rnf PutGeofence' {..} =+    Prelude.rnf collectionName+      `Prelude.seq` Prelude.rnf geofenceId+      `Prelude.seq` Prelude.rnf geometry++instance Data.ToHeaders PutGeofence where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutGeofence where+  toJSON PutGeofence' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Geometry" Data..= geometry)]+      )++instance Data.ToPath PutGeofence where+  toPath PutGeofence' {..} =+    Prelude.mconcat+      [ "/geofencing/v0/collections/",+        Data.toBS collectionName,+        "/geofences/",+        Data.toBS geofenceId+      ]++instance Data.ToQuery PutGeofence where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutGeofenceResponse' smart constructor.+data PutGeofenceResponse = PutGeofenceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The timestamp for when the geofence was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    createTime :: Data.ISO8601,+    -- | The geofence identifier entered in the request.+    geofenceId :: Prelude.Text,+    -- | The timestamp for when the geofence was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutGeofenceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'putGeofenceResponse_httpStatus' - The response's http status code.+--+-- 'createTime', 'putGeofenceResponse_createTime' - The timestamp for when the geofence was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+--+-- 'geofenceId', 'putGeofenceResponse_geofenceId' - The geofence identifier entered in the request.+--+-- 'updateTime', 'putGeofenceResponse_updateTime' - The timestamp for when the geofence was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+newPutGeofenceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'geofenceId'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  PutGeofenceResponse+newPutGeofenceResponse+  pHttpStatus_+  pCreateTime_+  pGeofenceId_+  pUpdateTime_ =+    PutGeofenceResponse'+      { httpStatus = pHttpStatus_,+        createTime = Data._Time Lens.# pCreateTime_,+        geofenceId = pGeofenceId_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | The response's http status code.+putGeofenceResponse_httpStatus :: Lens.Lens' PutGeofenceResponse Prelude.Int+putGeofenceResponse_httpStatus = Lens.lens (\PutGeofenceResponse' {httpStatus} -> httpStatus) (\s@PutGeofenceResponse' {} a -> s {httpStatus = a} :: PutGeofenceResponse)++-- | The timestamp for when the geofence was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+putGeofenceResponse_createTime :: Lens.Lens' PutGeofenceResponse Prelude.UTCTime+putGeofenceResponse_createTime = Lens.lens (\PutGeofenceResponse' {createTime} -> createTime) (\s@PutGeofenceResponse' {} a -> s {createTime = a} :: PutGeofenceResponse) Prelude.. Data._Time++-- | The geofence identifier entered in the request.+putGeofenceResponse_geofenceId :: Lens.Lens' PutGeofenceResponse Prelude.Text+putGeofenceResponse_geofenceId = Lens.lens (\PutGeofenceResponse' {geofenceId} -> geofenceId) (\s@PutGeofenceResponse' {} a -> s {geofenceId = a} :: PutGeofenceResponse)++-- | The timestamp for when the geofence was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+putGeofenceResponse_updateTime :: Lens.Lens' PutGeofenceResponse Prelude.UTCTime+putGeofenceResponse_updateTime = Lens.lens (\PutGeofenceResponse' {updateTime} -> updateTime) (\s@PutGeofenceResponse' {} a -> s {updateTime = a} :: PutGeofenceResponse) Prelude.. Data._Time++instance Prelude.NFData PutGeofenceResponse where+  rnf PutGeofenceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf geofenceId+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/SearchPlaceIndexForPosition.hs view
@@ -0,0 +1,329 @@+{-# 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.Location.SearchPlaceIndexForPosition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Reverse geocodes a given coordinate and returns a legible address.+-- Allows you to search for Places or points of interest near a given+-- position.+module Amazonka.Location.SearchPlaceIndexForPosition+  ( -- * Creating a Request+    SearchPlaceIndexForPosition (..),+    newSearchPlaceIndexForPosition,++    -- * Request Lenses+    searchPlaceIndexForPosition_language,+    searchPlaceIndexForPosition_maxResults,+    searchPlaceIndexForPosition_indexName,+    searchPlaceIndexForPosition_position,++    -- * Destructuring the Response+    SearchPlaceIndexForPositionResponse (..),+    newSearchPlaceIndexForPositionResponse,++    -- * Response Lenses+    searchPlaceIndexForPositionResponse_httpStatus,+    searchPlaceIndexForPositionResponse_results,+    searchPlaceIndexForPositionResponse_summary,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newSearchPlaceIndexForPosition' smart constructor.+data SearchPlaceIndexForPosition = SearchPlaceIndexForPosition'+  { -- | The preferred language used to return results. The value must be a valid+    -- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+    -- @en@ for English.+    --+    -- This setting affects the languages used in the results, but not the+    -- results themselves. If no language is specified, or not supported for a+    -- particular result, the partner automatically chooses a language for the+    -- result.+    --+    -- For an example, we\'ll use the Greek language. You search for a location+    -- around Athens, Greece, with the @language@ parameter set to @en@. The+    -- @city@ in the results will most likely be returned as @Athens@.+    --+    -- If you set the @language@ parameter to @el@, for Greek, then the @city@+    -- in the results will more likely be returned as @Αθήνα@.+    --+    -- If the data provider does not have a value for Greek, the result will be+    -- in a language that the provider does support.+    language :: Prelude.Maybe Prelude.Text,+    -- | An optional parameter. The maximum number of results returned per+    -- request.+    --+    -- Default value: @50@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The name of the place index resource you want to use for the search.+    indexName :: Prelude.Text,+    -- | Specifies the longitude and latitude of the position to query.+    --+    -- This parameter must contain a pair of numbers. The first number+    -- represents the X coordinate, or longitude; the second number represents+    -- the Y coordinate, or latitude.+    --+    -- For example, @[-123.1174, 49.2847]@ represents a position with longitude+    -- @-123.1174@ and latitude @49.2847@.+    position :: Data.Sensitive (Prelude.NonEmpty Prelude.Double)+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchPlaceIndexForPosition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'language', 'searchPlaceIndexForPosition_language' - The preferred language used to return results. The value must be a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- This setting affects the languages used in the results, but not the+-- results themselves. If no language is specified, or not supported for a+-- particular result, the partner automatically chooses a language for the+-- result.+--+-- For an example, we\'ll use the Greek language. You search for a location+-- around Athens, Greece, with the @language@ parameter set to @en@. The+-- @city@ in the results will most likely be returned as @Athens@.+--+-- If you set the @language@ parameter to @el@, for Greek, then the @city@+-- in the results will more likely be returned as @Αθήνα@.+--+-- If the data provider does not have a value for Greek, the result will be+-- in a language that the provider does support.+--+-- 'maxResults', 'searchPlaceIndexForPosition_maxResults' - An optional parameter. The maximum number of results returned per+-- request.+--+-- Default value: @50@+--+-- 'indexName', 'searchPlaceIndexForPosition_indexName' - The name of the place index resource you want to use for the search.+--+-- 'position', 'searchPlaceIndexForPosition_position' - Specifies the longitude and latitude of the position to query.+--+-- This parameter must contain a pair of numbers. The first number+-- represents the X coordinate, or longitude; the second number represents+-- the Y coordinate, or latitude.+--+-- For example, @[-123.1174, 49.2847]@ represents a position with longitude+-- @-123.1174@ and latitude @49.2847@.+newSearchPlaceIndexForPosition ::+  -- | 'indexName'+  Prelude.Text ->+  -- | 'position'+  Prelude.NonEmpty Prelude.Double ->+  SearchPlaceIndexForPosition+newSearchPlaceIndexForPosition pIndexName_ pPosition_ =+  SearchPlaceIndexForPosition'+    { language =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      indexName = pIndexName_,+      position =+        Data._Sensitive+          Prelude.. Lens.coerced+          Lens.# pPosition_+    }++-- | The preferred language used to return results. The value must be a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- This setting affects the languages used in the results, but not the+-- results themselves. If no language is specified, or not supported for a+-- particular result, the partner automatically chooses a language for the+-- result.+--+-- For an example, we\'ll use the Greek language. You search for a location+-- around Athens, Greece, with the @language@ parameter set to @en@. The+-- @city@ in the results will most likely be returned as @Athens@.+--+-- If you set the @language@ parameter to @el@, for Greek, then the @city@+-- in the results will more likely be returned as @Αθήνα@.+--+-- If the data provider does not have a value for Greek, the result will be+-- in a language that the provider does support.+searchPlaceIndexForPosition_language :: Lens.Lens' SearchPlaceIndexForPosition (Prelude.Maybe Prelude.Text)+searchPlaceIndexForPosition_language = Lens.lens (\SearchPlaceIndexForPosition' {language} -> language) (\s@SearchPlaceIndexForPosition' {} a -> s {language = a} :: SearchPlaceIndexForPosition)++-- | An optional parameter. The maximum number of results returned per+-- request.+--+-- Default value: @50@+searchPlaceIndexForPosition_maxResults :: Lens.Lens' SearchPlaceIndexForPosition (Prelude.Maybe Prelude.Natural)+searchPlaceIndexForPosition_maxResults = Lens.lens (\SearchPlaceIndexForPosition' {maxResults} -> maxResults) (\s@SearchPlaceIndexForPosition' {} a -> s {maxResults = a} :: SearchPlaceIndexForPosition)++-- | The name of the place index resource you want to use for the search.+searchPlaceIndexForPosition_indexName :: Lens.Lens' SearchPlaceIndexForPosition Prelude.Text+searchPlaceIndexForPosition_indexName = Lens.lens (\SearchPlaceIndexForPosition' {indexName} -> indexName) (\s@SearchPlaceIndexForPosition' {} a -> s {indexName = a} :: SearchPlaceIndexForPosition)++-- | Specifies the longitude and latitude of the position to query.+--+-- This parameter must contain a pair of numbers. The first number+-- represents the X coordinate, or longitude; the second number represents+-- the Y coordinate, or latitude.+--+-- For example, @[-123.1174, 49.2847]@ represents a position with longitude+-- @-123.1174@ and latitude @49.2847@.+searchPlaceIndexForPosition_position :: Lens.Lens' SearchPlaceIndexForPosition (Prelude.NonEmpty Prelude.Double)+searchPlaceIndexForPosition_position = Lens.lens (\SearchPlaceIndexForPosition' {position} -> position) (\s@SearchPlaceIndexForPosition' {} a -> s {position = a} :: SearchPlaceIndexForPosition) Prelude.. Data._Sensitive Prelude.. Lens.coerced++instance Core.AWSRequest SearchPlaceIndexForPosition where+  type+    AWSResponse SearchPlaceIndexForPosition =+      SearchPlaceIndexForPositionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SearchPlaceIndexForPositionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Results" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..:> "Summary")+      )++instance Prelude.Hashable SearchPlaceIndexForPosition where+  hashWithSalt _salt SearchPlaceIndexForPosition' {..} =+    _salt+      `Prelude.hashWithSalt` language+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` indexName+      `Prelude.hashWithSalt` position++instance Prelude.NFData SearchPlaceIndexForPosition where+  rnf SearchPlaceIndexForPosition' {..} =+    Prelude.rnf language+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf indexName+      `Prelude.seq` Prelude.rnf position++instance Data.ToHeaders SearchPlaceIndexForPosition where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SearchPlaceIndexForPosition where+  toJSON SearchPlaceIndexForPosition' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Language" Data..=) Prelude.<$> language,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            Prelude.Just ("Position" Data..= position)+          ]+      )++instance Data.ToPath SearchPlaceIndexForPosition where+  toPath SearchPlaceIndexForPosition' {..} =+    Prelude.mconcat+      [ "/places/v0/indexes/",+        Data.toBS indexName,+        "/search/position"+      ]++instance Data.ToQuery SearchPlaceIndexForPosition where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newSearchPlaceIndexForPositionResponse' smart constructor.+data SearchPlaceIndexForPositionResponse = SearchPlaceIndexForPositionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Returns a list of Places closest to the specified position. Each result+    -- contains additional information about the Places returned.+    results :: [SearchForPositionResult],+    -- | Contains a summary of the request. Echoes the input values for+    -- @Position@, @Language@, @MaxResults@, and the @DataSource@ of the place+    -- index.+    summary :: SearchPlaceIndexForPositionSummary+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchPlaceIndexForPositionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchPlaceIndexForPositionResponse_httpStatus' - The response's http status code.+--+-- 'results', 'searchPlaceIndexForPositionResponse_results' - Returns a list of Places closest to the specified position. Each result+-- contains additional information about the Places returned.+--+-- 'summary', 'searchPlaceIndexForPositionResponse_summary' - Contains a summary of the request. Echoes the input values for+-- @Position@, @Language@, @MaxResults@, and the @DataSource@ of the place+-- index.+newSearchPlaceIndexForPositionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'summary'+  SearchPlaceIndexForPositionSummary ->+  SearchPlaceIndexForPositionResponse+newSearchPlaceIndexForPositionResponse+  pHttpStatus_+  pSummary_ =+    SearchPlaceIndexForPositionResponse'+      { httpStatus =+          pHttpStatus_,+        results = Prelude.mempty,+        summary = pSummary_+      }++-- | The response's http status code.+searchPlaceIndexForPositionResponse_httpStatus :: Lens.Lens' SearchPlaceIndexForPositionResponse Prelude.Int+searchPlaceIndexForPositionResponse_httpStatus = Lens.lens (\SearchPlaceIndexForPositionResponse' {httpStatus} -> httpStatus) (\s@SearchPlaceIndexForPositionResponse' {} a -> s {httpStatus = a} :: SearchPlaceIndexForPositionResponse)++-- | Returns a list of Places closest to the specified position. Each result+-- contains additional information about the Places returned.+searchPlaceIndexForPositionResponse_results :: Lens.Lens' SearchPlaceIndexForPositionResponse [SearchForPositionResult]+searchPlaceIndexForPositionResponse_results = Lens.lens (\SearchPlaceIndexForPositionResponse' {results} -> results) (\s@SearchPlaceIndexForPositionResponse' {} a -> s {results = a} :: SearchPlaceIndexForPositionResponse) Prelude.. Lens.coerced++-- | Contains a summary of the request. Echoes the input values for+-- @Position@, @Language@, @MaxResults@, and the @DataSource@ of the place+-- index.+searchPlaceIndexForPositionResponse_summary :: Lens.Lens' SearchPlaceIndexForPositionResponse SearchPlaceIndexForPositionSummary+searchPlaceIndexForPositionResponse_summary = Lens.lens (\SearchPlaceIndexForPositionResponse' {summary} -> summary) (\s@SearchPlaceIndexForPositionResponse' {} a -> s {summary = a} :: SearchPlaceIndexForPositionResponse)++instance+  Prelude.NFData+    SearchPlaceIndexForPositionResponse+  where+  rnf SearchPlaceIndexForPositionResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf results+      `Prelude.seq` Prelude.rnf summary
+ gen/Amazonka/Location/SearchPlaceIndexForSuggestions.hs view
@@ -0,0 +1,466 @@+{-# 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.Location.SearchPlaceIndexForSuggestions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Generates suggestions for addresses and points of interest based on+-- partial or misspelled free-form text. This operation is also known as+-- autocomplete, autosuggest, or fuzzy matching.+--+-- Optional parameters let you narrow your search results by bounding box+-- or country, or bias your search toward a specific position on the globe.+--+-- You can search for suggested place names near a specified position by+-- using @BiasPosition@, or filter results within a bounding box by using+-- @FilterBBox@. These parameters are mutually exclusive; using both+-- @BiasPosition@ and @FilterBBox@ in the same command returns an error.+module Amazonka.Location.SearchPlaceIndexForSuggestions+  ( -- * Creating a Request+    SearchPlaceIndexForSuggestions (..),+    newSearchPlaceIndexForSuggestions,++    -- * Request Lenses+    searchPlaceIndexForSuggestions_biasPosition,+    searchPlaceIndexForSuggestions_filterBBox,+    searchPlaceIndexForSuggestions_filterCountries,+    searchPlaceIndexForSuggestions_language,+    searchPlaceIndexForSuggestions_maxResults,+    searchPlaceIndexForSuggestions_indexName,+    searchPlaceIndexForSuggestions_text,++    -- * Destructuring the Response+    SearchPlaceIndexForSuggestionsResponse (..),+    newSearchPlaceIndexForSuggestionsResponse,++    -- * Response Lenses+    searchPlaceIndexForSuggestionsResponse_httpStatus,+    searchPlaceIndexForSuggestionsResponse_results,+    searchPlaceIndexForSuggestionsResponse_summary,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newSearchPlaceIndexForSuggestions' smart constructor.+data SearchPlaceIndexForSuggestions = SearchPlaceIndexForSuggestions'+  { -- | An optional parameter that indicates a preference for place suggestions+    -- that are closer to a specified position.+    --+    -- If provided, this parameter must contain a pair of numbers. The first+    -- number represents the X coordinate, or longitude; the second number+    -- represents the Y coordinate, or latitude.+    --+    -- For example, @[-123.1174, 49.2847]@ represents the position with+    -- longitude @-123.1174@ and latitude @49.2847@.+    --+    -- @BiasPosition@ and @FilterBBox@ are mutually exclusive. Specifying both+    -- options results in an error.+    biasPosition :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty Prelude.Double)),+    -- | An optional parameter that limits the search results by returning only+    -- suggestions within a specified bounding box.+    --+    -- If provided, this parameter must contain a total of four consecutive+    -- numbers in two pairs. The first pair of numbers represents the X and Y+    -- coordinates (longitude and latitude, respectively) of the southwest+    -- corner of the bounding box; the second pair of numbers represents the X+    -- and Y coordinates (longitude and latitude, respectively) of the+    -- northeast corner of the bounding box.+    --+    -- For example, @[-12.7935, -37.4835, -12.0684, -36.9542]@ represents a+    -- bounding box where the southwest corner has longitude @-12.7935@ and+    -- latitude @-37.4835@, and the northeast corner has longitude @-12.0684@+    -- and latitude @-36.9542@.+    --+    -- @FilterBBox@ and @BiasPosition@ are mutually exclusive. Specifying both+    -- options results in an error.+    filterBBox :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty Prelude.Double)),+    -- | An optional parameter that limits the search results by returning only+    -- suggestions within the provided list of countries.+    --+    -- -   Use the <https://www.iso.org/iso-3166-country-codes.html ISO 3166>+    --     3-digit country code. For example, Australia uses three upper-case+    --     characters: @AUS@.+    filterCountries :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The preferred language used to return results. The value must be a valid+    -- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+    -- @en@ for English.+    --+    -- This setting affects the languages used in the results. If no language+    -- is specified, or not supported for a particular result, the partner+    -- automatically chooses a language for the result.+    --+    -- For an example, we\'ll use the Greek language. You search for+    -- @Athens, Gr@ to get suggestions with the @language@ parameter set to+    -- @en@. The results found will most likely be returned as+    -- @Athens, Greece@.+    --+    -- If you set the @language@ parameter to @el@, for Greek, then the result+    -- found will more likely be returned as @Αθήνα, Ελλάδα@.+    --+    -- If the data provider does not have a value for Greek, the result will be+    -- in a language that the provider does support.+    language :: Prelude.Maybe Prelude.Text,+    -- | An optional parameter. The maximum number of results returned per+    -- request.+    --+    -- The default: @5@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The name of the place index resource you want to use for the search.+    indexName :: Prelude.Text,+    -- | The free-form partial text to use to generate place suggestions. For+    -- example, @eiffel tow@.+    text :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchPlaceIndexForSuggestions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'biasPosition', 'searchPlaceIndexForSuggestions_biasPosition' - An optional parameter that indicates a preference for place suggestions+-- that are closer to a specified position.+--+-- If provided, this parameter must contain a pair of numbers. The first+-- number represents the X coordinate, or longitude; the second number+-- represents the Y coordinate, or latitude.+--+-- For example, @[-123.1174, 49.2847]@ represents the position with+-- longitude @-123.1174@ and latitude @49.2847@.+--+-- @BiasPosition@ and @FilterBBox@ are mutually exclusive. Specifying both+-- options results in an error.+--+-- 'filterBBox', 'searchPlaceIndexForSuggestions_filterBBox' - An optional parameter that limits the search results by returning only+-- suggestions within a specified bounding box.+--+-- If provided, this parameter must contain a total of four consecutive+-- numbers in two pairs. The first pair of numbers represents the X and Y+-- coordinates (longitude and latitude, respectively) of the southwest+-- corner of the bounding box; the second pair of numbers represents the X+-- and Y coordinates (longitude and latitude, respectively) of the+-- northeast corner of the bounding box.+--+-- For example, @[-12.7935, -37.4835, -12.0684, -36.9542]@ represents a+-- bounding box where the southwest corner has longitude @-12.7935@ and+-- latitude @-37.4835@, and the northeast corner has longitude @-12.0684@+-- and latitude @-36.9542@.+--+-- @FilterBBox@ and @BiasPosition@ are mutually exclusive. Specifying both+-- options results in an error.+--+-- 'filterCountries', 'searchPlaceIndexForSuggestions_filterCountries' - An optional parameter that limits the search results by returning only+-- suggestions within the provided list of countries.+--+-- -   Use the <https://www.iso.org/iso-3166-country-codes.html ISO 3166>+--     3-digit country code. For example, Australia uses three upper-case+--     characters: @AUS@.+--+-- 'language', 'searchPlaceIndexForSuggestions_language' - The preferred language used to return results. The value must be a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- This setting affects the languages used in the results. If no language+-- is specified, or not supported for a particular result, the partner+-- automatically chooses a language for the result.+--+-- For an example, we\'ll use the Greek language. You search for+-- @Athens, Gr@ to get suggestions with the @language@ parameter set to+-- @en@. The results found will most likely be returned as+-- @Athens, Greece@.+--+-- If you set the @language@ parameter to @el@, for Greek, then the result+-- found will more likely be returned as @Αθήνα, Ελλάδα@.+--+-- If the data provider does not have a value for Greek, the result will be+-- in a language that the provider does support.+--+-- 'maxResults', 'searchPlaceIndexForSuggestions_maxResults' - An optional parameter. The maximum number of results returned per+-- request.+--+-- The default: @5@+--+-- 'indexName', 'searchPlaceIndexForSuggestions_indexName' - The name of the place index resource you want to use for the search.+--+-- 'text', 'searchPlaceIndexForSuggestions_text' - The free-form partial text to use to generate place suggestions. For+-- example, @eiffel tow@.+newSearchPlaceIndexForSuggestions ::+  -- | 'indexName'+  Prelude.Text ->+  -- | 'text'+  Prelude.Text ->+  SearchPlaceIndexForSuggestions+newSearchPlaceIndexForSuggestions pIndexName_ pText_ =+  SearchPlaceIndexForSuggestions'+    { biasPosition =+        Prelude.Nothing,+      filterBBox = Prelude.Nothing,+      filterCountries = Prelude.Nothing,+      language = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      indexName = pIndexName_,+      text = Data._Sensitive Lens.# pText_+    }++-- | An optional parameter that indicates a preference for place suggestions+-- that are closer to a specified position.+--+-- If provided, this parameter must contain a pair of numbers. The first+-- number represents the X coordinate, or longitude; the second number+-- represents the Y coordinate, or latitude.+--+-- For example, @[-123.1174, 49.2847]@ represents the position with+-- longitude @-123.1174@ and latitude @49.2847@.+--+-- @BiasPosition@ and @FilterBBox@ are mutually exclusive. Specifying both+-- options results in an error.+searchPlaceIndexForSuggestions_biasPosition :: Lens.Lens' SearchPlaceIndexForSuggestions (Prelude.Maybe (Prelude.NonEmpty Prelude.Double))+searchPlaceIndexForSuggestions_biasPosition = Lens.lens (\SearchPlaceIndexForSuggestions' {biasPosition} -> biasPosition) (\s@SearchPlaceIndexForSuggestions' {} a -> s {biasPosition = a} :: SearchPlaceIndexForSuggestions) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | An optional parameter that limits the search results by returning only+-- suggestions within a specified bounding box.+--+-- If provided, this parameter must contain a total of four consecutive+-- numbers in two pairs. The first pair of numbers represents the X and Y+-- coordinates (longitude and latitude, respectively) of the southwest+-- corner of the bounding box; the second pair of numbers represents the X+-- and Y coordinates (longitude and latitude, respectively) of the+-- northeast corner of the bounding box.+--+-- For example, @[-12.7935, -37.4835, -12.0684, -36.9542]@ represents a+-- bounding box where the southwest corner has longitude @-12.7935@ and+-- latitude @-37.4835@, and the northeast corner has longitude @-12.0684@+-- and latitude @-36.9542@.+--+-- @FilterBBox@ and @BiasPosition@ are mutually exclusive. Specifying both+-- options results in an error.+searchPlaceIndexForSuggestions_filterBBox :: Lens.Lens' SearchPlaceIndexForSuggestions (Prelude.Maybe (Prelude.NonEmpty Prelude.Double))+searchPlaceIndexForSuggestions_filterBBox = Lens.lens (\SearchPlaceIndexForSuggestions' {filterBBox} -> filterBBox) (\s@SearchPlaceIndexForSuggestions' {} a -> s {filterBBox = a} :: SearchPlaceIndexForSuggestions) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | An optional parameter that limits the search results by returning only+-- suggestions within the provided list of countries.+--+-- -   Use the <https://www.iso.org/iso-3166-country-codes.html ISO 3166>+--     3-digit country code. For example, Australia uses three upper-case+--     characters: @AUS@.+searchPlaceIndexForSuggestions_filterCountries :: Lens.Lens' SearchPlaceIndexForSuggestions (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+searchPlaceIndexForSuggestions_filterCountries = Lens.lens (\SearchPlaceIndexForSuggestions' {filterCountries} -> filterCountries) (\s@SearchPlaceIndexForSuggestions' {} a -> s {filterCountries = a} :: SearchPlaceIndexForSuggestions) Prelude.. Lens.mapping Lens.coerced++-- | The preferred language used to return results. The value must be a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- This setting affects the languages used in the results. If no language+-- is specified, or not supported for a particular result, the partner+-- automatically chooses a language for the result.+--+-- For an example, we\'ll use the Greek language. You search for+-- @Athens, Gr@ to get suggestions with the @language@ parameter set to+-- @en@. The results found will most likely be returned as+-- @Athens, Greece@.+--+-- If you set the @language@ parameter to @el@, for Greek, then the result+-- found will more likely be returned as @Αθήνα, Ελλάδα@.+--+-- If the data provider does not have a value for Greek, the result will be+-- in a language that the provider does support.+searchPlaceIndexForSuggestions_language :: Lens.Lens' SearchPlaceIndexForSuggestions (Prelude.Maybe Prelude.Text)+searchPlaceIndexForSuggestions_language = Lens.lens (\SearchPlaceIndexForSuggestions' {language} -> language) (\s@SearchPlaceIndexForSuggestions' {} a -> s {language = a} :: SearchPlaceIndexForSuggestions)++-- | An optional parameter. The maximum number of results returned per+-- request.+--+-- The default: @5@+searchPlaceIndexForSuggestions_maxResults :: Lens.Lens' SearchPlaceIndexForSuggestions (Prelude.Maybe Prelude.Natural)+searchPlaceIndexForSuggestions_maxResults = Lens.lens (\SearchPlaceIndexForSuggestions' {maxResults} -> maxResults) (\s@SearchPlaceIndexForSuggestions' {} a -> s {maxResults = a} :: SearchPlaceIndexForSuggestions)++-- | The name of the place index resource you want to use for the search.+searchPlaceIndexForSuggestions_indexName :: Lens.Lens' SearchPlaceIndexForSuggestions Prelude.Text+searchPlaceIndexForSuggestions_indexName = Lens.lens (\SearchPlaceIndexForSuggestions' {indexName} -> indexName) (\s@SearchPlaceIndexForSuggestions' {} a -> s {indexName = a} :: SearchPlaceIndexForSuggestions)++-- | The free-form partial text to use to generate place suggestions. For+-- example, @eiffel tow@.+searchPlaceIndexForSuggestions_text :: Lens.Lens' SearchPlaceIndexForSuggestions Prelude.Text+searchPlaceIndexForSuggestions_text = Lens.lens (\SearchPlaceIndexForSuggestions' {text} -> text) (\s@SearchPlaceIndexForSuggestions' {} a -> s {text = a} :: SearchPlaceIndexForSuggestions) Prelude.. Data._Sensitive++instance+  Core.AWSRequest+    SearchPlaceIndexForSuggestions+  where+  type+    AWSResponse SearchPlaceIndexForSuggestions =+      SearchPlaceIndexForSuggestionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SearchPlaceIndexForSuggestionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Results" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..:> "Summary")+      )++instance+  Prelude.Hashable+    SearchPlaceIndexForSuggestions+  where+  hashWithSalt+    _salt+    SearchPlaceIndexForSuggestions' {..} =+      _salt+        `Prelude.hashWithSalt` biasPosition+        `Prelude.hashWithSalt` filterBBox+        `Prelude.hashWithSalt` filterCountries+        `Prelude.hashWithSalt` language+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` indexName+        `Prelude.hashWithSalt` text++instance+  Prelude.NFData+    SearchPlaceIndexForSuggestions+  where+  rnf SearchPlaceIndexForSuggestions' {..} =+    Prelude.rnf biasPosition+      `Prelude.seq` Prelude.rnf filterBBox+      `Prelude.seq` Prelude.rnf filterCountries+      `Prelude.seq` Prelude.rnf language+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf indexName+      `Prelude.seq` Prelude.rnf text++instance+  Data.ToHeaders+    SearchPlaceIndexForSuggestions+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SearchPlaceIndexForSuggestions where+  toJSON SearchPlaceIndexForSuggestions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("BiasPosition" Data..=) Prelude.<$> biasPosition,+            ("FilterBBox" Data..=) Prelude.<$> filterBBox,+            ("FilterCountries" Data..=)+              Prelude.<$> filterCountries,+            ("Language" Data..=) Prelude.<$> language,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            Prelude.Just ("Text" Data..= text)+          ]+      )++instance Data.ToPath SearchPlaceIndexForSuggestions where+  toPath SearchPlaceIndexForSuggestions' {..} =+    Prelude.mconcat+      [ "/places/v0/indexes/",+        Data.toBS indexName,+        "/search/suggestions"+      ]++instance Data.ToQuery SearchPlaceIndexForSuggestions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newSearchPlaceIndexForSuggestionsResponse' smart constructor.+data SearchPlaceIndexForSuggestionsResponse = SearchPlaceIndexForSuggestionsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list of place suggestions that best match the search text.+    results :: [SearchForSuggestionsResult],+    -- | Contains a summary of the request. Echoes the input values for+    -- @BiasPosition@, @FilterBBox@, @FilterCountries@, @Language@,+    -- @MaxResults@, and @Text@. Also includes the @DataSource@ of the place+    -- index.+    summary :: SearchPlaceIndexForSuggestionsSummary+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchPlaceIndexForSuggestionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchPlaceIndexForSuggestionsResponse_httpStatus' - The response's http status code.+--+-- 'results', 'searchPlaceIndexForSuggestionsResponse_results' - A list of place suggestions that best match the search text.+--+-- 'summary', 'searchPlaceIndexForSuggestionsResponse_summary' - Contains a summary of the request. Echoes the input values for+-- @BiasPosition@, @FilterBBox@, @FilterCountries@, @Language@,+-- @MaxResults@, and @Text@. Also includes the @DataSource@ of the place+-- index.+newSearchPlaceIndexForSuggestionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'summary'+  SearchPlaceIndexForSuggestionsSummary ->+  SearchPlaceIndexForSuggestionsResponse+newSearchPlaceIndexForSuggestionsResponse+  pHttpStatus_+  pSummary_ =+    SearchPlaceIndexForSuggestionsResponse'+      { httpStatus =+          pHttpStatus_,+        results = Prelude.mempty,+        summary = pSummary_+      }++-- | The response's http status code.+searchPlaceIndexForSuggestionsResponse_httpStatus :: Lens.Lens' SearchPlaceIndexForSuggestionsResponse Prelude.Int+searchPlaceIndexForSuggestionsResponse_httpStatus = Lens.lens (\SearchPlaceIndexForSuggestionsResponse' {httpStatus} -> httpStatus) (\s@SearchPlaceIndexForSuggestionsResponse' {} a -> s {httpStatus = a} :: SearchPlaceIndexForSuggestionsResponse)++-- | A list of place suggestions that best match the search text.+searchPlaceIndexForSuggestionsResponse_results :: Lens.Lens' SearchPlaceIndexForSuggestionsResponse [SearchForSuggestionsResult]+searchPlaceIndexForSuggestionsResponse_results = Lens.lens (\SearchPlaceIndexForSuggestionsResponse' {results} -> results) (\s@SearchPlaceIndexForSuggestionsResponse' {} a -> s {results = a} :: SearchPlaceIndexForSuggestionsResponse) Prelude.. Lens.coerced++-- | Contains a summary of the request. Echoes the input values for+-- @BiasPosition@, @FilterBBox@, @FilterCountries@, @Language@,+-- @MaxResults@, and @Text@. Also includes the @DataSource@ of the place+-- index.+searchPlaceIndexForSuggestionsResponse_summary :: Lens.Lens' SearchPlaceIndexForSuggestionsResponse SearchPlaceIndexForSuggestionsSummary+searchPlaceIndexForSuggestionsResponse_summary = Lens.lens (\SearchPlaceIndexForSuggestionsResponse' {summary} -> summary) (\s@SearchPlaceIndexForSuggestionsResponse' {} a -> s {summary = a} :: SearchPlaceIndexForSuggestionsResponse)++instance+  Prelude.NFData+    SearchPlaceIndexForSuggestionsResponse+  where+  rnf SearchPlaceIndexForSuggestionsResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf results+      `Prelude.seq` Prelude.rnf summary
+ gen/Amazonka/Location/SearchPlaceIndexForText.hs view
@@ -0,0 +1,470 @@+{-# 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.Location.SearchPlaceIndexForText+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Geocodes free-form text, such as an address, name, city, or region to+-- allow you to search for Places or points of interest.+--+-- Optional parameters let you narrow your search results by bounding box+-- or country, or bias your search toward a specific position on the globe.+--+-- You can search for places near a given position using @BiasPosition@, or+-- filter results within a bounding box using @FilterBBox@. Providing both+-- parameters simultaneously returns an error.+--+-- Search results are returned in order of highest to lowest relevance.+module Amazonka.Location.SearchPlaceIndexForText+  ( -- * Creating a Request+    SearchPlaceIndexForText (..),+    newSearchPlaceIndexForText,++    -- * Request Lenses+    searchPlaceIndexForText_biasPosition,+    searchPlaceIndexForText_filterBBox,+    searchPlaceIndexForText_filterCountries,+    searchPlaceIndexForText_language,+    searchPlaceIndexForText_maxResults,+    searchPlaceIndexForText_indexName,+    searchPlaceIndexForText_text,++    -- * Destructuring the Response+    SearchPlaceIndexForTextResponse (..),+    newSearchPlaceIndexForTextResponse,++    -- * Response Lenses+    searchPlaceIndexForTextResponse_httpStatus,+    searchPlaceIndexForTextResponse_results,+    searchPlaceIndexForTextResponse_summary,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newSearchPlaceIndexForText' smart constructor.+data SearchPlaceIndexForText = SearchPlaceIndexForText'+  { -- | An optional parameter that indicates a preference for places that are+    -- closer to a specified position.+    --+    -- If provided, this parameter must contain a pair of numbers. The first+    -- number represents the X coordinate, or longitude; the second number+    -- represents the Y coordinate, or latitude.+    --+    -- For example, @[-123.1174, 49.2847]@ represents the position with+    -- longitude @-123.1174@ and latitude @49.2847@.+    --+    -- @BiasPosition@ and @FilterBBox@ are mutually exclusive. Specifying both+    -- options results in an error.+    biasPosition :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty Prelude.Double)),+    -- | An optional parameter that limits the search results by returning only+    -- places that are within the provided bounding box.+    --+    -- If provided, this parameter must contain a total of four consecutive+    -- numbers in two pairs. The first pair of numbers represents the X and Y+    -- coordinates (longitude and latitude, respectively) of the southwest+    -- corner of the bounding box; the second pair of numbers represents the X+    -- and Y coordinates (longitude and latitude, respectively) of the+    -- northeast corner of the bounding box.+    --+    -- For example, @[-12.7935, -37.4835, -12.0684, -36.9542]@ represents a+    -- bounding box where the southwest corner has longitude @-12.7935@ and+    -- latitude @-37.4835@, and the northeast corner has longitude @-12.0684@+    -- and latitude @-36.9542@.+    --+    -- @FilterBBox@ and @BiasPosition@ are mutually exclusive. Specifying both+    -- options results in an error.+    filterBBox :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty Prelude.Double)),+    -- | An optional parameter that limits the search results by returning only+    -- places that are in a specified list of countries.+    --+    -- -   Valid values include+    --     <https://www.iso.org/iso-3166-country-codes.html ISO 3166> 3-digit+    --     country codes. For example, Australia uses three upper-case+    --     characters: @AUS@.+    filterCountries :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The preferred language used to return results. The value must be a valid+    -- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+    -- @en@ for English.+    --+    -- This setting affects the languages used in the results, but not the+    -- results themselves. If no language is specified, or not supported for a+    -- particular result, the partner automatically chooses a language for the+    -- result.+    --+    -- For an example, we\'ll use the Greek language. You search for+    -- @Athens, Greece@, with the @language@ parameter set to @en@. The result+    -- found will most likely be returned as @Athens@.+    --+    -- If you set the @language@ parameter to @el@, for Greek, then the result+    -- found will more likely be returned as @Αθήνα@.+    --+    -- If the data provider does not have a value for Greek, the result will be+    -- in a language that the provider does support.+    language :: Prelude.Maybe Prelude.Text,+    -- | An optional parameter. The maximum number of results returned per+    -- request.+    --+    -- The default: @50@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The name of the place index resource you want to use for the search.+    indexName :: Prelude.Text,+    -- | The address, name, city, or region to be used in the search in free-form+    -- text format. For example, @123 Any Street@.+    text :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchPlaceIndexForText' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'biasPosition', 'searchPlaceIndexForText_biasPosition' - An optional parameter that indicates a preference for places that are+-- closer to a specified position.+--+-- If provided, this parameter must contain a pair of numbers. The first+-- number represents the X coordinate, or longitude; the second number+-- represents the Y coordinate, or latitude.+--+-- For example, @[-123.1174, 49.2847]@ represents the position with+-- longitude @-123.1174@ and latitude @49.2847@.+--+-- @BiasPosition@ and @FilterBBox@ are mutually exclusive. Specifying both+-- options results in an error.+--+-- 'filterBBox', 'searchPlaceIndexForText_filterBBox' - An optional parameter that limits the search results by returning only+-- places that are within the provided bounding box.+--+-- If provided, this parameter must contain a total of four consecutive+-- numbers in two pairs. The first pair of numbers represents the X and Y+-- coordinates (longitude and latitude, respectively) of the southwest+-- corner of the bounding box; the second pair of numbers represents the X+-- and Y coordinates (longitude and latitude, respectively) of the+-- northeast corner of the bounding box.+--+-- For example, @[-12.7935, -37.4835, -12.0684, -36.9542]@ represents a+-- bounding box where the southwest corner has longitude @-12.7935@ and+-- latitude @-37.4835@, and the northeast corner has longitude @-12.0684@+-- and latitude @-36.9542@.+--+-- @FilterBBox@ and @BiasPosition@ are mutually exclusive. Specifying both+-- options results in an error.+--+-- 'filterCountries', 'searchPlaceIndexForText_filterCountries' - An optional parameter that limits the search results by returning only+-- places that are in a specified list of countries.+--+-- -   Valid values include+--     <https://www.iso.org/iso-3166-country-codes.html ISO 3166> 3-digit+--     country codes. For example, Australia uses three upper-case+--     characters: @AUS@.+--+-- 'language', 'searchPlaceIndexForText_language' - The preferred language used to return results. The value must be a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- This setting affects the languages used in the results, but not the+-- results themselves. If no language is specified, or not supported for a+-- particular result, the partner automatically chooses a language for the+-- result.+--+-- For an example, we\'ll use the Greek language. You search for+-- @Athens, Greece@, with the @language@ parameter set to @en@. The result+-- found will most likely be returned as @Athens@.+--+-- If you set the @language@ parameter to @el@, for Greek, then the result+-- found will more likely be returned as @Αθήνα@.+--+-- If the data provider does not have a value for Greek, the result will be+-- in a language that the provider does support.+--+-- 'maxResults', 'searchPlaceIndexForText_maxResults' - An optional parameter. The maximum number of results returned per+-- request.+--+-- The default: @50@+--+-- 'indexName', 'searchPlaceIndexForText_indexName' - The name of the place index resource you want to use for the search.+--+-- 'text', 'searchPlaceIndexForText_text' - The address, name, city, or region to be used in the search in free-form+-- text format. For example, @123 Any Street@.+newSearchPlaceIndexForText ::+  -- | 'indexName'+  Prelude.Text ->+  -- | 'text'+  Prelude.Text ->+  SearchPlaceIndexForText+newSearchPlaceIndexForText pIndexName_ pText_ =+  SearchPlaceIndexForText'+    { biasPosition =+        Prelude.Nothing,+      filterBBox = Prelude.Nothing,+      filterCountries = Prelude.Nothing,+      language = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      indexName = pIndexName_,+      text = Data._Sensitive Lens.# pText_+    }++-- | An optional parameter that indicates a preference for places that are+-- closer to a specified position.+--+-- If provided, this parameter must contain a pair of numbers. The first+-- number represents the X coordinate, or longitude; the second number+-- represents the Y coordinate, or latitude.+--+-- For example, @[-123.1174, 49.2847]@ represents the position with+-- longitude @-123.1174@ and latitude @49.2847@.+--+-- @BiasPosition@ and @FilterBBox@ are mutually exclusive. Specifying both+-- options results in an error.+searchPlaceIndexForText_biasPosition :: Lens.Lens' SearchPlaceIndexForText (Prelude.Maybe (Prelude.NonEmpty Prelude.Double))+searchPlaceIndexForText_biasPosition = Lens.lens (\SearchPlaceIndexForText' {biasPosition} -> biasPosition) (\s@SearchPlaceIndexForText' {} a -> s {biasPosition = a} :: SearchPlaceIndexForText) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | An optional parameter that limits the search results by returning only+-- places that are within the provided bounding box.+--+-- If provided, this parameter must contain a total of four consecutive+-- numbers in two pairs. The first pair of numbers represents the X and Y+-- coordinates (longitude and latitude, respectively) of the southwest+-- corner of the bounding box; the second pair of numbers represents the X+-- and Y coordinates (longitude and latitude, respectively) of the+-- northeast corner of the bounding box.+--+-- For example, @[-12.7935, -37.4835, -12.0684, -36.9542]@ represents a+-- bounding box where the southwest corner has longitude @-12.7935@ and+-- latitude @-37.4835@, and the northeast corner has longitude @-12.0684@+-- and latitude @-36.9542@.+--+-- @FilterBBox@ and @BiasPosition@ are mutually exclusive. Specifying both+-- options results in an error.+searchPlaceIndexForText_filterBBox :: Lens.Lens' SearchPlaceIndexForText (Prelude.Maybe (Prelude.NonEmpty Prelude.Double))+searchPlaceIndexForText_filterBBox = Lens.lens (\SearchPlaceIndexForText' {filterBBox} -> filterBBox) (\s@SearchPlaceIndexForText' {} a -> s {filterBBox = a} :: SearchPlaceIndexForText) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | An optional parameter that limits the search results by returning only+-- places that are in a specified list of countries.+--+-- -   Valid values include+--     <https://www.iso.org/iso-3166-country-codes.html ISO 3166> 3-digit+--     country codes. For example, Australia uses three upper-case+--     characters: @AUS@.+searchPlaceIndexForText_filterCountries :: Lens.Lens' SearchPlaceIndexForText (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+searchPlaceIndexForText_filterCountries = Lens.lens (\SearchPlaceIndexForText' {filterCountries} -> filterCountries) (\s@SearchPlaceIndexForText' {} a -> s {filterCountries = a} :: SearchPlaceIndexForText) Prelude.. Lens.mapping Lens.coerced++-- | The preferred language used to return results. The value must be a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- This setting affects the languages used in the results, but not the+-- results themselves. If no language is specified, or not supported for a+-- particular result, the partner automatically chooses a language for the+-- result.+--+-- For an example, we\'ll use the Greek language. You search for+-- @Athens, Greece@, with the @language@ parameter set to @en@. The result+-- found will most likely be returned as @Athens@.+--+-- If you set the @language@ parameter to @el@, for Greek, then the result+-- found will more likely be returned as @Αθήνα@.+--+-- If the data provider does not have a value for Greek, the result will be+-- in a language that the provider does support.+searchPlaceIndexForText_language :: Lens.Lens' SearchPlaceIndexForText (Prelude.Maybe Prelude.Text)+searchPlaceIndexForText_language = Lens.lens (\SearchPlaceIndexForText' {language} -> language) (\s@SearchPlaceIndexForText' {} a -> s {language = a} :: SearchPlaceIndexForText)++-- | An optional parameter. The maximum number of results returned per+-- request.+--+-- The default: @50@+searchPlaceIndexForText_maxResults :: Lens.Lens' SearchPlaceIndexForText (Prelude.Maybe Prelude.Natural)+searchPlaceIndexForText_maxResults = Lens.lens (\SearchPlaceIndexForText' {maxResults} -> maxResults) (\s@SearchPlaceIndexForText' {} a -> s {maxResults = a} :: SearchPlaceIndexForText)++-- | The name of the place index resource you want to use for the search.+searchPlaceIndexForText_indexName :: Lens.Lens' SearchPlaceIndexForText Prelude.Text+searchPlaceIndexForText_indexName = Lens.lens (\SearchPlaceIndexForText' {indexName} -> indexName) (\s@SearchPlaceIndexForText' {} a -> s {indexName = a} :: SearchPlaceIndexForText)++-- | The address, name, city, or region to be used in the search in free-form+-- text format. For example, @123 Any Street@.+searchPlaceIndexForText_text :: Lens.Lens' SearchPlaceIndexForText Prelude.Text+searchPlaceIndexForText_text = Lens.lens (\SearchPlaceIndexForText' {text} -> text) (\s@SearchPlaceIndexForText' {} a -> s {text = a} :: SearchPlaceIndexForText) Prelude.. Data._Sensitive++instance Core.AWSRequest SearchPlaceIndexForText where+  type+    AWSResponse SearchPlaceIndexForText =+      SearchPlaceIndexForTextResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SearchPlaceIndexForTextResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Results" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..:> "Summary")+      )++instance Prelude.Hashable SearchPlaceIndexForText where+  hashWithSalt _salt SearchPlaceIndexForText' {..} =+    _salt+      `Prelude.hashWithSalt` biasPosition+      `Prelude.hashWithSalt` filterBBox+      `Prelude.hashWithSalt` filterCountries+      `Prelude.hashWithSalt` language+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` indexName+      `Prelude.hashWithSalt` text++instance Prelude.NFData SearchPlaceIndexForText where+  rnf SearchPlaceIndexForText' {..} =+    Prelude.rnf biasPosition+      `Prelude.seq` Prelude.rnf filterBBox+      `Prelude.seq` Prelude.rnf filterCountries+      `Prelude.seq` Prelude.rnf language+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf indexName+      `Prelude.seq` Prelude.rnf text++instance Data.ToHeaders SearchPlaceIndexForText where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SearchPlaceIndexForText where+  toJSON SearchPlaceIndexForText' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("BiasPosition" Data..=) Prelude.<$> biasPosition,+            ("FilterBBox" Data..=) Prelude.<$> filterBBox,+            ("FilterCountries" Data..=)+              Prelude.<$> filterCountries,+            ("Language" Data..=) Prelude.<$> language,+            ("MaxResults" Data..=) Prelude.<$> maxResults,+            Prelude.Just ("Text" Data..= text)+          ]+      )++instance Data.ToPath SearchPlaceIndexForText where+  toPath SearchPlaceIndexForText' {..} =+    Prelude.mconcat+      [ "/places/v0/indexes/",+        Data.toBS indexName,+        "/search/text"+      ]++instance Data.ToQuery SearchPlaceIndexForText where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newSearchPlaceIndexForTextResponse' smart constructor.+data SearchPlaceIndexForTextResponse = SearchPlaceIndexForTextResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list of Places matching the input text. Each result contains+    -- additional information about the specific point of interest.+    --+    -- Not all response properties are included with all responses. Some+    -- properties may only be returned by specific data partners.+    results :: [SearchForTextResult],+    -- | Contains a summary of the request. Echoes the input values for+    -- @BiasPosition@, @FilterBBox@, @FilterCountries@, @Language@,+    -- @MaxResults@, and @Text@. Also includes the @DataSource@ of the place+    -- index and the bounding box, @ResultBBox@, which surrounds the search+    -- results.+    summary :: SearchPlaceIndexForTextSummary+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchPlaceIndexForTextResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchPlaceIndexForTextResponse_httpStatus' - The response's http status code.+--+-- 'results', 'searchPlaceIndexForTextResponse_results' - A list of Places matching the input text. Each result contains+-- additional information about the specific point of interest.+--+-- Not all response properties are included with all responses. Some+-- properties may only be returned by specific data partners.+--+-- 'summary', 'searchPlaceIndexForTextResponse_summary' - Contains a summary of the request. Echoes the input values for+-- @BiasPosition@, @FilterBBox@, @FilterCountries@, @Language@,+-- @MaxResults@, and @Text@. Also includes the @DataSource@ of the place+-- index and the bounding box, @ResultBBox@, which surrounds the search+-- results.+newSearchPlaceIndexForTextResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'summary'+  SearchPlaceIndexForTextSummary ->+  SearchPlaceIndexForTextResponse+newSearchPlaceIndexForTextResponse+  pHttpStatus_+  pSummary_ =+    SearchPlaceIndexForTextResponse'+      { httpStatus =+          pHttpStatus_,+        results = Prelude.mempty,+        summary = pSummary_+      }++-- | The response's http status code.+searchPlaceIndexForTextResponse_httpStatus :: Lens.Lens' SearchPlaceIndexForTextResponse Prelude.Int+searchPlaceIndexForTextResponse_httpStatus = Lens.lens (\SearchPlaceIndexForTextResponse' {httpStatus} -> httpStatus) (\s@SearchPlaceIndexForTextResponse' {} a -> s {httpStatus = a} :: SearchPlaceIndexForTextResponse)++-- | A list of Places matching the input text. Each result contains+-- additional information about the specific point of interest.+--+-- Not all response properties are included with all responses. Some+-- properties may only be returned by specific data partners.+searchPlaceIndexForTextResponse_results :: Lens.Lens' SearchPlaceIndexForTextResponse [SearchForTextResult]+searchPlaceIndexForTextResponse_results = Lens.lens (\SearchPlaceIndexForTextResponse' {results} -> results) (\s@SearchPlaceIndexForTextResponse' {} a -> s {results = a} :: SearchPlaceIndexForTextResponse) Prelude.. Lens.coerced++-- | Contains a summary of the request. Echoes the input values for+-- @BiasPosition@, @FilterBBox@, @FilterCountries@, @Language@,+-- @MaxResults@, and @Text@. Also includes the @DataSource@ of the place+-- index and the bounding box, @ResultBBox@, which surrounds the search+-- results.+searchPlaceIndexForTextResponse_summary :: Lens.Lens' SearchPlaceIndexForTextResponse SearchPlaceIndexForTextSummary+searchPlaceIndexForTextResponse_summary = Lens.lens (\SearchPlaceIndexForTextResponse' {summary} -> summary) (\s@SearchPlaceIndexForTextResponse' {} a -> s {summary = a} :: SearchPlaceIndexForTextResponse)++instance+  Prelude.NFData+    SearchPlaceIndexForTextResponse+  where+  rnf SearchPlaceIndexForTextResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf results+      `Prelude.seq` Prelude.rnf summary
+ gen/Amazonka/Location/TagResource.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.Location.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)+--+-- Assigns one or more tags (key-value pairs) to the specified Amazon+-- Location Service resource.+--+-- >  <p>Tags can help you organize and categorize your resources. You can also use them to scope user permissions, by granting a user permission to access or change only resources with certain tag values.</p> <p>You can use the <code>TagResource</code> operation with an Amazon Location Service resource that already has tags. If you specify a new tag key for the resource, this tag is appended to the tags already associated with the resource. If you specify a tag key that's already associated with the resource, the new tag value that you specify replaces the previous value for that tag. </p> <p>You can associate up to 50 tags with a resource.</p>+module Amazonka.Location.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.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the resource whose tags you want to+    -- update.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:resourcetype\/ExampleResource@+    resourceArn :: Prelude.Text,+    -- | Applies one or more tags to specific resource. A tag is a key-value pair+    -- that helps you manage, identify, search, and filter your resources.+    --+    -- Format: @\"key\" : \"value\"@+    --+    -- Restrictions:+    --+    -- -   Maximum 50 tags per resource.+    --+    -- -   Each tag key must be unique and must have exactly one associated+    --     value.+    --+    -- -   Maximum key length: 128 Unicode characters in UTF-8.+    --+    -- -   Maximum value length: 256 Unicode characters in UTF-8.+    --+    -- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+    --     characters: + - = . _ : \/ \@+    --+    -- -   Cannot use \"aws:\" as a prefix for a key.+    tags :: Prelude.HashMap Prelude.Text Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource whose tags you want to+-- update.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:resourcetype\/ExampleResource@+--+-- 'tags', 'tagResource_tags' - Applies one or more tags to specific resource. A tag is a key-value pair+-- that helps you manage, identify, search, and filter your resources.+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource.+--+-- -   Each tag key must be unique and must have exactly one associated+--     value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8.+--+-- -   Maximum value length: 256 Unicode characters in UTF-8.+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@+--+-- -   Cannot use \"aws:\" as a prefix for a key.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource whose tags you want to+-- update.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:resourcetype\/ExampleResource@+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | Applies one or more tags to specific resource. A tag is a key-value pair+-- that helps you manage, identify, search, and filter your resources.+--+-- Format: @\"key\" : \"value\"@+--+-- Restrictions:+--+-- -   Maximum 50 tags per resource.+--+-- -   Each tag key must be unique and must have exactly one associated+--     value.+--+-- -   Maximum key length: 128 Unicode characters in UTF-8.+--+-- -   Maximum value length: 256 Unicode characters in UTF-8.+--+-- -   Can use alphanumeric characters (A–Z, a–z, 0–9), and the following+--     characters: + - = . _ : \/ \@+--+-- -   Cannot use \"aws:\" as a prefix for a key.+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)+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+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Tags" Data..= tags)]+      )++instance Data.ToPath TagResource where+  toPath TagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++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/Location/Types.hs view
@@ -0,0 +1,577 @@+{-# 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.Location.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.Location.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _ConflictException,+    _InternalServerException,+    _ResourceNotFoundException,+    _ServiceQuotaExceededException,+    _ThrottlingException,+    _ValidationException,++    -- * BatchItemErrorCode+    BatchItemErrorCode (..),++    -- * DimensionUnit+    DimensionUnit (..),++    -- * DistanceUnit+    DistanceUnit (..),++    -- * IntendedUse+    IntendedUse (..),++    -- * PositionFiltering+    PositionFiltering (..),++    -- * PricingPlan+    PricingPlan (..),++    -- * RouteMatrixErrorCode+    RouteMatrixErrorCode (..),++    -- * TravelMode+    TravelMode (..),++    -- * VehicleWeightUnit+    VehicleWeightUnit (..),++    -- * BatchDeleteDevicePositionHistoryError+    BatchDeleteDevicePositionHistoryError (..),+    newBatchDeleteDevicePositionHistoryError,+    batchDeleteDevicePositionHistoryError_deviceId,+    batchDeleteDevicePositionHistoryError_error,++    -- * BatchDeleteGeofenceError+    BatchDeleteGeofenceError (..),+    newBatchDeleteGeofenceError,+    batchDeleteGeofenceError_error,+    batchDeleteGeofenceError_geofenceId,++    -- * BatchEvaluateGeofencesError+    BatchEvaluateGeofencesError (..),+    newBatchEvaluateGeofencesError,+    batchEvaluateGeofencesError_deviceId,+    batchEvaluateGeofencesError_error,+    batchEvaluateGeofencesError_sampleTime,++    -- * BatchGetDevicePositionError+    BatchGetDevicePositionError (..),+    newBatchGetDevicePositionError,+    batchGetDevicePositionError_deviceId,+    batchGetDevicePositionError_error,++    -- * BatchItemError+    BatchItemError (..),+    newBatchItemError,+    batchItemError_code,+    batchItemError_message,++    -- * BatchPutGeofenceError+    BatchPutGeofenceError (..),+    newBatchPutGeofenceError,+    batchPutGeofenceError_error,+    batchPutGeofenceError_geofenceId,++    -- * BatchPutGeofenceRequestEntry+    BatchPutGeofenceRequestEntry (..),+    newBatchPutGeofenceRequestEntry,+    batchPutGeofenceRequestEntry_geofenceId,+    batchPutGeofenceRequestEntry_geometry,++    -- * BatchPutGeofenceSuccess+    BatchPutGeofenceSuccess (..),+    newBatchPutGeofenceSuccess,+    batchPutGeofenceSuccess_createTime,+    batchPutGeofenceSuccess_geofenceId,+    batchPutGeofenceSuccess_updateTime,++    -- * BatchUpdateDevicePositionError+    BatchUpdateDevicePositionError (..),+    newBatchUpdateDevicePositionError,+    batchUpdateDevicePositionError_deviceId,+    batchUpdateDevicePositionError_error,+    batchUpdateDevicePositionError_sampleTime,++    -- * CalculateRouteCarModeOptions+    CalculateRouteCarModeOptions (..),+    newCalculateRouteCarModeOptions,+    calculateRouteCarModeOptions_avoidFerries,+    calculateRouteCarModeOptions_avoidTolls,++    -- * CalculateRouteMatrixSummary+    CalculateRouteMatrixSummary (..),+    newCalculateRouteMatrixSummary,+    calculateRouteMatrixSummary_dataSource,+    calculateRouteMatrixSummary_distanceUnit,+    calculateRouteMatrixSummary_errorCount,+    calculateRouteMatrixSummary_routeCount,++    -- * CalculateRouteSummary+    CalculateRouteSummary (..),+    newCalculateRouteSummary,+    calculateRouteSummary_dataSource,+    calculateRouteSummary_distance,+    calculateRouteSummary_distanceUnit,+    calculateRouteSummary_durationSeconds,+    calculateRouteSummary_routeBBox,++    -- * CalculateRouteTruckModeOptions+    CalculateRouteTruckModeOptions (..),+    newCalculateRouteTruckModeOptions,+    calculateRouteTruckModeOptions_avoidFerries,+    calculateRouteTruckModeOptions_avoidTolls,+    calculateRouteTruckModeOptions_dimensions,+    calculateRouteTruckModeOptions_weight,++    -- * Circle+    Circle (..),+    newCircle,+    circle_center,+    circle_radius,++    -- * DataSourceConfiguration+    DataSourceConfiguration (..),+    newDataSourceConfiguration,+    dataSourceConfiguration_intendedUse,++    -- * DevicePosition+    DevicePosition (..),+    newDevicePosition,+    devicePosition_accuracy,+    devicePosition_deviceId,+    devicePosition_positionProperties,+    devicePosition_position,+    devicePosition_receivedTime,+    devicePosition_sampleTime,++    -- * DevicePositionUpdate+    DevicePositionUpdate (..),+    newDevicePositionUpdate,+    devicePositionUpdate_accuracy,+    devicePositionUpdate_positionProperties,+    devicePositionUpdate_deviceId,+    devicePositionUpdate_position,+    devicePositionUpdate_sampleTime,++    -- * GeofenceGeometry+    GeofenceGeometry (..),+    newGeofenceGeometry,+    geofenceGeometry_circle,+    geofenceGeometry_polygon,++    -- * Leg+    Leg (..),+    newLeg,+    leg_geometry,+    leg_distance,+    leg_durationSeconds,+    leg_endPosition,+    leg_startPosition,+    leg_steps,++    -- * LegGeometry+    LegGeometry (..),+    newLegGeometry,+    legGeometry_lineString,++    -- * ListDevicePositionsResponseEntry+    ListDevicePositionsResponseEntry (..),+    newListDevicePositionsResponseEntry,+    listDevicePositionsResponseEntry_accuracy,+    listDevicePositionsResponseEntry_positionProperties,+    listDevicePositionsResponseEntry_deviceId,+    listDevicePositionsResponseEntry_position,+    listDevicePositionsResponseEntry_sampleTime,++    -- * ListGeofenceCollectionsResponseEntry+    ListGeofenceCollectionsResponseEntry (..),+    newListGeofenceCollectionsResponseEntry,+    listGeofenceCollectionsResponseEntry_pricingPlan,+    listGeofenceCollectionsResponseEntry_pricingPlanDataSource,+    listGeofenceCollectionsResponseEntry_collectionName,+    listGeofenceCollectionsResponseEntry_createTime,+    listGeofenceCollectionsResponseEntry_description,+    listGeofenceCollectionsResponseEntry_updateTime,++    -- * ListGeofenceResponseEntry+    ListGeofenceResponseEntry (..),+    newListGeofenceResponseEntry,+    listGeofenceResponseEntry_createTime,+    listGeofenceResponseEntry_geofenceId,+    listGeofenceResponseEntry_geometry,+    listGeofenceResponseEntry_status,+    listGeofenceResponseEntry_updateTime,++    -- * ListMapsResponseEntry+    ListMapsResponseEntry (..),+    newListMapsResponseEntry,+    listMapsResponseEntry_pricingPlan,+    listMapsResponseEntry_createTime,+    listMapsResponseEntry_dataSource,+    listMapsResponseEntry_description,+    listMapsResponseEntry_mapName,+    listMapsResponseEntry_updateTime,++    -- * ListPlaceIndexesResponseEntry+    ListPlaceIndexesResponseEntry (..),+    newListPlaceIndexesResponseEntry,+    listPlaceIndexesResponseEntry_pricingPlan,+    listPlaceIndexesResponseEntry_createTime,+    listPlaceIndexesResponseEntry_dataSource,+    listPlaceIndexesResponseEntry_description,+    listPlaceIndexesResponseEntry_indexName,+    listPlaceIndexesResponseEntry_updateTime,++    -- * ListRouteCalculatorsResponseEntry+    ListRouteCalculatorsResponseEntry (..),+    newListRouteCalculatorsResponseEntry,+    listRouteCalculatorsResponseEntry_pricingPlan,+    listRouteCalculatorsResponseEntry_calculatorName,+    listRouteCalculatorsResponseEntry_createTime,+    listRouteCalculatorsResponseEntry_dataSource,+    listRouteCalculatorsResponseEntry_description,+    listRouteCalculatorsResponseEntry_updateTime,++    -- * ListTrackersResponseEntry+    ListTrackersResponseEntry (..),+    newListTrackersResponseEntry,+    listTrackersResponseEntry_pricingPlan,+    listTrackersResponseEntry_pricingPlanDataSource,+    listTrackersResponseEntry_createTime,+    listTrackersResponseEntry_description,+    listTrackersResponseEntry_trackerName,+    listTrackersResponseEntry_updateTime,++    -- * MapConfiguration+    MapConfiguration (..),+    newMapConfiguration,+    mapConfiguration_style,++    -- * Place+    Place (..),+    newPlace,+    place_addressNumber,+    place_country,+    place_interpolated,+    place_label,+    place_municipality,+    place_neighborhood,+    place_postalCode,+    place_region,+    place_street,+    place_subRegion,+    place_timeZone,+    place_unitNumber,+    place_unitType,+    place_geometry,++    -- * PlaceGeometry+    PlaceGeometry (..),+    newPlaceGeometry,+    placeGeometry_point,++    -- * PositionalAccuracy+    PositionalAccuracy (..),+    newPositionalAccuracy,+    positionalAccuracy_horizontal,++    -- * RouteMatrixEntry+    RouteMatrixEntry (..),+    newRouteMatrixEntry,+    routeMatrixEntry_distance,+    routeMatrixEntry_durationSeconds,+    routeMatrixEntry_error,++    -- * RouteMatrixEntryError+    RouteMatrixEntryError (..),+    newRouteMatrixEntryError,+    routeMatrixEntryError_message,+    routeMatrixEntryError_code,++    -- * SearchForPositionResult+    SearchForPositionResult (..),+    newSearchForPositionResult,+    searchForPositionResult_placeId,+    searchForPositionResult_distance,+    searchForPositionResult_place,++    -- * SearchForSuggestionsResult+    SearchForSuggestionsResult (..),+    newSearchForSuggestionsResult,+    searchForSuggestionsResult_placeId,+    searchForSuggestionsResult_text,++    -- * SearchForTextResult+    SearchForTextResult (..),+    newSearchForTextResult,+    searchForTextResult_distance,+    searchForTextResult_placeId,+    searchForTextResult_relevance,+    searchForTextResult_place,++    -- * SearchPlaceIndexForPositionSummary+    SearchPlaceIndexForPositionSummary (..),+    newSearchPlaceIndexForPositionSummary,+    searchPlaceIndexForPositionSummary_language,+    searchPlaceIndexForPositionSummary_maxResults,+    searchPlaceIndexForPositionSummary_dataSource,+    searchPlaceIndexForPositionSummary_position,++    -- * SearchPlaceIndexForSuggestionsSummary+    SearchPlaceIndexForSuggestionsSummary (..),+    newSearchPlaceIndexForSuggestionsSummary,+    searchPlaceIndexForSuggestionsSummary_biasPosition,+    searchPlaceIndexForSuggestionsSummary_filterBBox,+    searchPlaceIndexForSuggestionsSummary_filterCountries,+    searchPlaceIndexForSuggestionsSummary_language,+    searchPlaceIndexForSuggestionsSummary_maxResults,+    searchPlaceIndexForSuggestionsSummary_dataSource,+    searchPlaceIndexForSuggestionsSummary_text,++    -- * SearchPlaceIndexForTextSummary+    SearchPlaceIndexForTextSummary (..),+    newSearchPlaceIndexForTextSummary,+    searchPlaceIndexForTextSummary_biasPosition,+    searchPlaceIndexForTextSummary_filterBBox,+    searchPlaceIndexForTextSummary_filterCountries,+    searchPlaceIndexForTextSummary_language,+    searchPlaceIndexForTextSummary_maxResults,+    searchPlaceIndexForTextSummary_resultBBox,+    searchPlaceIndexForTextSummary_dataSource,+    searchPlaceIndexForTextSummary_text,++    -- * Step+    Step (..),+    newStep,+    step_geometryOffset,+    step_distance,+    step_durationSeconds,+    step_endPosition,+    step_startPosition,++    -- * TimeZone+    TimeZone (..),+    newTimeZone,+    timeZone_offset,+    timeZone_name,++    -- * TruckDimensions+    TruckDimensions (..),+    newTruckDimensions,+    truckDimensions_height,+    truckDimensions_length,+    truckDimensions_unit,+    truckDimensions_width,++    -- * TruckWeight+    TruckWeight (..),+    newTruckWeight,+    truckWeight_total,+    truckWeight_unit,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.Location.Types.BatchDeleteDevicePositionHistoryError+import Amazonka.Location.Types.BatchDeleteGeofenceError+import Amazonka.Location.Types.BatchEvaluateGeofencesError+import Amazonka.Location.Types.BatchGetDevicePositionError+import Amazonka.Location.Types.BatchItemError+import Amazonka.Location.Types.BatchItemErrorCode+import Amazonka.Location.Types.BatchPutGeofenceError+import Amazonka.Location.Types.BatchPutGeofenceRequestEntry+import Amazonka.Location.Types.BatchPutGeofenceSuccess+import Amazonka.Location.Types.BatchUpdateDevicePositionError+import Amazonka.Location.Types.CalculateRouteCarModeOptions+import Amazonka.Location.Types.CalculateRouteMatrixSummary+import Amazonka.Location.Types.CalculateRouteSummary+import Amazonka.Location.Types.CalculateRouteTruckModeOptions+import Amazonka.Location.Types.Circle+import Amazonka.Location.Types.DataSourceConfiguration+import Amazonka.Location.Types.DevicePosition+import Amazonka.Location.Types.DevicePositionUpdate+import Amazonka.Location.Types.DimensionUnit+import Amazonka.Location.Types.DistanceUnit+import Amazonka.Location.Types.GeofenceGeometry+import Amazonka.Location.Types.IntendedUse+import Amazonka.Location.Types.Leg+import Amazonka.Location.Types.LegGeometry+import Amazonka.Location.Types.ListDevicePositionsResponseEntry+import Amazonka.Location.Types.ListGeofenceCollectionsResponseEntry+import Amazonka.Location.Types.ListGeofenceResponseEntry+import Amazonka.Location.Types.ListMapsResponseEntry+import Amazonka.Location.Types.ListPlaceIndexesResponseEntry+import Amazonka.Location.Types.ListRouteCalculatorsResponseEntry+import Amazonka.Location.Types.ListTrackersResponseEntry+import Amazonka.Location.Types.MapConfiguration+import Amazonka.Location.Types.Place+import Amazonka.Location.Types.PlaceGeometry+import Amazonka.Location.Types.PositionFiltering+import Amazonka.Location.Types.PositionalAccuracy+import Amazonka.Location.Types.PricingPlan+import Amazonka.Location.Types.RouteMatrixEntry+import Amazonka.Location.Types.RouteMatrixEntryError+import Amazonka.Location.Types.RouteMatrixErrorCode+import Amazonka.Location.Types.SearchForPositionResult+import Amazonka.Location.Types.SearchForSuggestionsResult+import Amazonka.Location.Types.SearchForTextResult+import Amazonka.Location.Types.SearchPlaceIndexForPositionSummary+import Amazonka.Location.Types.SearchPlaceIndexForSuggestionsSummary+import Amazonka.Location.Types.SearchPlaceIndexForTextSummary+import Amazonka.Location.Types.Step+import Amazonka.Location.Types.TimeZone+import Amazonka.Location.Types.TravelMode+import Amazonka.Location.Types.TruckDimensions+import Amazonka.Location.Types.TruckWeight+import Amazonka.Location.Types.VehicleWeightUnit+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2020-11-19@ of the Amazon Location Service SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "Location",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "geo",+      Core.signingName = "geo",+      Core.version = "2020-11-19",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "Location",+      Core.retry = retry+    }+  where+    retry =+      Core.Exponential+        { Core.base = 5.0e-2,+          Core.growth = 2,+          Core.attempts = 5,+          Core.check = check+        }+    check e+      | Lens.has (Core.hasStatus 502) e =+          Prelude.Just "bad_gateway"+      | Lens.has (Core.hasStatus 504) e =+          Prelude.Just "gateway_timeout"+      | Lens.has (Core.hasStatus 500) e =+          Prelude.Just "general_server_error"+      | Lens.has (Core.hasStatus 509) e =+          Prelude.Just "limit_exceeded"+      | Lens.has+          ( Core.hasCode "RequestThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "request_throttled_exception"+      | Lens.has (Core.hasStatus 503) e =+          Prelude.Just "service_unavailable"+      | Lens.has+          ( Core.hasCode "ThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttled_exception"+      | Lens.has+          ( Core.hasCode "Throttling"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling"+      | Lens.has+          ( Core.hasCode "ThrottlingException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling_exception"+      | Lens.has+          ( Core.hasCode+              "ProvisionedThroughputExceededException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throughput_exceeded"+      | Lens.has (Core.hasStatus 429) e =+          Prelude.Just "too_many_requests"+      | Prelude.otherwise = Prelude.Nothing++-- | The request was denied because of insufficient access or permissions.+-- Check with an administrator to verify your permissions.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"+    Prelude.. Core.hasStatus 403++-- | The request was unsuccessful because of a conflict.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"+    Prelude.. Core.hasStatus 409++-- | The request has failed to process because of an unknown server error,+-- exception, or failure.+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerException =+  Core._MatchServiceError+    defaultService+    "InternalServerException"+    Prelude.. Core.hasStatus 500++-- | The resource that you\'ve entered was not found in your AWS account.+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++-- | The operation was denied because the request would exceed the maximum+-- <https://docs.aws.amazon.com/location/latest/developerguide/location-quotas.html quota>+-- set for Amazon Location Service.+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "ServiceQuotaExceededException"+    Prelude.. Core.hasStatus 402++-- | The request was denied because of request throttling.+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"+    Prelude.. Core.hasStatus 429++-- | The input failed to meet the constraints specified by the AWS service.+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ValidationException =+  Core._MatchServiceError+    defaultService+    "ValidationException"+    Prelude.. Core.hasStatus 400
+ gen/Amazonka/Location/Types/BatchDeleteDevicePositionHistoryError.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.BatchDeleteDevicePositionHistoryError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.BatchDeleteDevicePositionHistoryError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.BatchItemError+import qualified Amazonka.Prelude as Prelude++-- | Contains the tracker resource details.+--+-- /See:/ 'newBatchDeleteDevicePositionHistoryError' smart constructor.+data BatchDeleteDevicePositionHistoryError = BatchDeleteDevicePositionHistoryError'+  { -- | The ID of the device for this position.+    deviceId :: Prelude.Text,+    error :: BatchItemError+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDeleteDevicePositionHistoryError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deviceId', 'batchDeleteDevicePositionHistoryError_deviceId' - The ID of the device for this position.+--+-- 'error', 'batchDeleteDevicePositionHistoryError_error' - Undocumented member.+newBatchDeleteDevicePositionHistoryError ::+  -- | 'deviceId'+  Prelude.Text ->+  -- | 'error'+  BatchItemError ->+  BatchDeleteDevicePositionHistoryError+newBatchDeleteDevicePositionHistoryError+  pDeviceId_+  pError_ =+    BatchDeleteDevicePositionHistoryError'+      { deviceId =+          pDeviceId_,+        error = pError_+      }++-- | The ID of the device for this position.+batchDeleteDevicePositionHistoryError_deviceId :: Lens.Lens' BatchDeleteDevicePositionHistoryError Prelude.Text+batchDeleteDevicePositionHistoryError_deviceId = Lens.lens (\BatchDeleteDevicePositionHistoryError' {deviceId} -> deviceId) (\s@BatchDeleteDevicePositionHistoryError' {} a -> s {deviceId = a} :: BatchDeleteDevicePositionHistoryError)++-- | Undocumented member.+batchDeleteDevicePositionHistoryError_error :: Lens.Lens' BatchDeleteDevicePositionHistoryError BatchItemError+batchDeleteDevicePositionHistoryError_error = Lens.lens (\BatchDeleteDevicePositionHistoryError' {error} -> error) (\s@BatchDeleteDevicePositionHistoryError' {} a -> s {error = a} :: BatchDeleteDevicePositionHistoryError)++instance+  Data.FromJSON+    BatchDeleteDevicePositionHistoryError+  where+  parseJSON =+    Data.withObject+      "BatchDeleteDevicePositionHistoryError"+      ( \x ->+          BatchDeleteDevicePositionHistoryError'+            Prelude.<$> (x Data..: "DeviceId")+            Prelude.<*> (x Data..: "Error")+      )++instance+  Prelude.Hashable+    BatchDeleteDevicePositionHistoryError+  where+  hashWithSalt+    _salt+    BatchDeleteDevicePositionHistoryError' {..} =+      _salt+        `Prelude.hashWithSalt` deviceId+        `Prelude.hashWithSalt` error++instance+  Prelude.NFData+    BatchDeleteDevicePositionHistoryError+  where+  rnf BatchDeleteDevicePositionHistoryError' {..} =+    Prelude.rnf deviceId+      `Prelude.seq` Prelude.rnf error
+ gen/Amazonka/Location/Types/BatchDeleteGeofenceError.hs view
@@ -0,0 +1,90 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.BatchDeleteGeofenceError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.BatchDeleteGeofenceError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.BatchItemError+import qualified Amazonka.Prelude as Prelude++-- | Contains error details for each geofence that failed to delete from the+-- geofence collection.+--+-- /See:/ 'newBatchDeleteGeofenceError' smart constructor.+data BatchDeleteGeofenceError = BatchDeleteGeofenceError'+  { -- | Contains details associated to the batch error.+    error :: BatchItemError,+    -- | The geofence associated with the error message.+    geofenceId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDeleteGeofenceError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'error', 'batchDeleteGeofenceError_error' - Contains details associated to the batch error.+--+-- 'geofenceId', 'batchDeleteGeofenceError_geofenceId' - The geofence associated with the error message.+newBatchDeleteGeofenceError ::+  -- | 'error'+  BatchItemError ->+  -- | 'geofenceId'+  Prelude.Text ->+  BatchDeleteGeofenceError+newBatchDeleteGeofenceError pError_ pGeofenceId_ =+  BatchDeleteGeofenceError'+    { error = pError_,+      geofenceId = pGeofenceId_+    }++-- | Contains details associated to the batch error.+batchDeleteGeofenceError_error :: Lens.Lens' BatchDeleteGeofenceError BatchItemError+batchDeleteGeofenceError_error = Lens.lens (\BatchDeleteGeofenceError' {error} -> error) (\s@BatchDeleteGeofenceError' {} a -> s {error = a} :: BatchDeleteGeofenceError)++-- | The geofence associated with the error message.+batchDeleteGeofenceError_geofenceId :: Lens.Lens' BatchDeleteGeofenceError Prelude.Text+batchDeleteGeofenceError_geofenceId = Lens.lens (\BatchDeleteGeofenceError' {geofenceId} -> geofenceId) (\s@BatchDeleteGeofenceError' {} a -> s {geofenceId = a} :: BatchDeleteGeofenceError)++instance Data.FromJSON BatchDeleteGeofenceError where+  parseJSON =+    Data.withObject+      "BatchDeleteGeofenceError"+      ( \x ->+          BatchDeleteGeofenceError'+            Prelude.<$> (x Data..: "Error")+            Prelude.<*> (x Data..: "GeofenceId")+      )++instance Prelude.Hashable BatchDeleteGeofenceError where+  hashWithSalt _salt BatchDeleteGeofenceError' {..} =+    _salt+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` geofenceId++instance Prelude.NFData BatchDeleteGeofenceError where+  rnf BatchDeleteGeofenceError' {..} =+    Prelude.rnf error+      `Prelude.seq` Prelude.rnf geofenceId
+ gen/Amazonka/Location/Types/BatchEvaluateGeofencesError.hs view
@@ -0,0 +1,113 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.BatchEvaluateGeofencesError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.BatchEvaluateGeofencesError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.BatchItemError+import qualified Amazonka.Prelude as Prelude++-- | Contains error details for each device that failed to evaluate its+-- position against the geofences in a given geofence collection.+--+-- /See:/ 'newBatchEvaluateGeofencesError' smart constructor.+data BatchEvaluateGeofencesError = BatchEvaluateGeofencesError'+  { -- | The device associated with the position evaluation error.+    deviceId :: Prelude.Text,+    -- | Contains details associated to the batch error.+    error :: BatchItemError,+    -- | Specifies a timestamp for when the error occurred in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    sampleTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchEvaluateGeofencesError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deviceId', 'batchEvaluateGeofencesError_deviceId' - The device associated with the position evaluation error.+--+-- 'error', 'batchEvaluateGeofencesError_error' - Contains details associated to the batch error.+--+-- 'sampleTime', 'batchEvaluateGeofencesError_sampleTime' - Specifies a timestamp for when the error occurred in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+newBatchEvaluateGeofencesError ::+  -- | 'deviceId'+  Prelude.Text ->+  -- | 'error'+  BatchItemError ->+  -- | 'sampleTime'+  Prelude.UTCTime ->+  BatchEvaluateGeofencesError+newBatchEvaluateGeofencesError+  pDeviceId_+  pError_+  pSampleTime_ =+    BatchEvaluateGeofencesError'+      { deviceId = pDeviceId_,+        error = pError_,+        sampleTime = Data._Time Lens.# pSampleTime_+      }++-- | The device associated with the position evaluation error.+batchEvaluateGeofencesError_deviceId :: Lens.Lens' BatchEvaluateGeofencesError Prelude.Text+batchEvaluateGeofencesError_deviceId = Lens.lens (\BatchEvaluateGeofencesError' {deviceId} -> deviceId) (\s@BatchEvaluateGeofencesError' {} a -> s {deviceId = a} :: BatchEvaluateGeofencesError)++-- | Contains details associated to the batch error.+batchEvaluateGeofencesError_error :: Lens.Lens' BatchEvaluateGeofencesError BatchItemError+batchEvaluateGeofencesError_error = Lens.lens (\BatchEvaluateGeofencesError' {error} -> error) (\s@BatchEvaluateGeofencesError' {} a -> s {error = a} :: BatchEvaluateGeofencesError)++-- | Specifies a timestamp for when the error occurred in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+batchEvaluateGeofencesError_sampleTime :: Lens.Lens' BatchEvaluateGeofencesError Prelude.UTCTime+batchEvaluateGeofencesError_sampleTime = Lens.lens (\BatchEvaluateGeofencesError' {sampleTime} -> sampleTime) (\s@BatchEvaluateGeofencesError' {} a -> s {sampleTime = a} :: BatchEvaluateGeofencesError) Prelude.. Data._Time++instance Data.FromJSON BatchEvaluateGeofencesError where+  parseJSON =+    Data.withObject+      "BatchEvaluateGeofencesError"+      ( \x ->+          BatchEvaluateGeofencesError'+            Prelude.<$> (x Data..: "DeviceId")+            Prelude.<*> (x Data..: "Error")+            Prelude.<*> (x Data..: "SampleTime")+      )++instance Prelude.Hashable BatchEvaluateGeofencesError where+  hashWithSalt _salt BatchEvaluateGeofencesError' {..} =+    _salt+      `Prelude.hashWithSalt` deviceId+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` sampleTime++instance Prelude.NFData BatchEvaluateGeofencesError where+  rnf BatchEvaluateGeofencesError' {..} =+    Prelude.rnf deviceId+      `Prelude.seq` Prelude.rnf error+      `Prelude.seq` Prelude.rnf sampleTime
+ gen/Amazonka/Location/Types/BatchGetDevicePositionError.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.BatchGetDevicePositionError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.BatchGetDevicePositionError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.BatchItemError+import qualified Amazonka.Prelude as Prelude++-- | Contains error details for each device that didn\'t return a position.+--+-- /See:/ 'newBatchGetDevicePositionError' smart constructor.+data BatchGetDevicePositionError = BatchGetDevicePositionError'+  { -- | The ID of the device that didn\'t return a position.+    deviceId :: Prelude.Text,+    -- | Contains details related to the error code.+    error :: BatchItemError+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetDevicePositionError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deviceId', 'batchGetDevicePositionError_deviceId' - The ID of the device that didn\'t return a position.+--+-- 'error', 'batchGetDevicePositionError_error' - Contains details related to the error code.+newBatchGetDevicePositionError ::+  -- | 'deviceId'+  Prelude.Text ->+  -- | 'error'+  BatchItemError ->+  BatchGetDevicePositionError+newBatchGetDevicePositionError pDeviceId_ pError_ =+  BatchGetDevicePositionError'+    { deviceId = pDeviceId_,+      error = pError_+    }++-- | The ID of the device that didn\'t return a position.+batchGetDevicePositionError_deviceId :: Lens.Lens' BatchGetDevicePositionError Prelude.Text+batchGetDevicePositionError_deviceId = Lens.lens (\BatchGetDevicePositionError' {deviceId} -> deviceId) (\s@BatchGetDevicePositionError' {} a -> s {deviceId = a} :: BatchGetDevicePositionError)++-- | Contains details related to the error code.+batchGetDevicePositionError_error :: Lens.Lens' BatchGetDevicePositionError BatchItemError+batchGetDevicePositionError_error = Lens.lens (\BatchGetDevicePositionError' {error} -> error) (\s@BatchGetDevicePositionError' {} a -> s {error = a} :: BatchGetDevicePositionError)++instance Data.FromJSON BatchGetDevicePositionError where+  parseJSON =+    Data.withObject+      "BatchGetDevicePositionError"+      ( \x ->+          BatchGetDevicePositionError'+            Prelude.<$> (x Data..: "DeviceId")+            Prelude.<*> (x Data..: "Error")+      )++instance Prelude.Hashable BatchGetDevicePositionError where+  hashWithSalt _salt BatchGetDevicePositionError' {..} =+    _salt+      `Prelude.hashWithSalt` deviceId+      `Prelude.hashWithSalt` error++instance Prelude.NFData BatchGetDevicePositionError where+  rnf BatchGetDevicePositionError' {..} =+    Prelude.rnf deviceId+      `Prelude.seq` Prelude.rnf error
+ gen/Amazonka/Location/Types/BatchItemError.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.Location.Types.BatchItemError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.BatchItemError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.BatchItemErrorCode+import qualified Amazonka.Prelude as Prelude++-- | Contains the batch request error details associated with the request.+--+-- /See:/ 'newBatchItemError' smart constructor.+data BatchItemError = BatchItemError'+  { -- | The error code associated with the batch request error.+    code :: Prelude.Maybe BatchItemErrorCode,+    -- | A message with the reason for the batch request error.+    message :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchItemError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'code', 'batchItemError_code' - The error code associated with the batch request error.+--+-- 'message', 'batchItemError_message' - A message with the reason for the batch request error.+newBatchItemError ::+  BatchItemError+newBatchItemError =+  BatchItemError'+    { code = Prelude.Nothing,+      message = Prelude.Nothing+    }++-- | The error code associated with the batch request error.+batchItemError_code :: Lens.Lens' BatchItemError (Prelude.Maybe BatchItemErrorCode)+batchItemError_code = Lens.lens (\BatchItemError' {code} -> code) (\s@BatchItemError' {} a -> s {code = a} :: BatchItemError)++-- | A message with the reason for the batch request error.+batchItemError_message :: Lens.Lens' BatchItemError (Prelude.Maybe Prelude.Text)+batchItemError_message = Lens.lens (\BatchItemError' {message} -> message) (\s@BatchItemError' {} a -> s {message = a} :: BatchItemError)++instance Data.FromJSON BatchItemError where+  parseJSON =+    Data.withObject+      "BatchItemError"+      ( \x ->+          BatchItemError'+            Prelude.<$> (x Data..:? "Code")+            Prelude.<*> (x Data..:? "Message")+      )++instance Prelude.Hashable BatchItemError where+  hashWithSalt _salt BatchItemError' {..} =+    _salt+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` message++instance Prelude.NFData BatchItemError where+  rnf BatchItemError' {..} =+    Prelude.rnf code `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/Location/Types/BatchItemErrorCode.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.BatchItemErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.BatchItemErrorCode+  ( BatchItemErrorCode+      ( ..,+        BatchItemErrorCode_AccessDeniedError,+        BatchItemErrorCode_ConflictError,+        BatchItemErrorCode_InternalServerError,+        BatchItemErrorCode_ResourceNotFoundError,+        BatchItemErrorCode_ThrottlingError,+        BatchItemErrorCode_ValidationError+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype BatchItemErrorCode = BatchItemErrorCode'+  { fromBatchItemErrorCode ::+      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 BatchItemErrorCode_AccessDeniedError :: BatchItemErrorCode+pattern BatchItemErrorCode_AccessDeniedError = BatchItemErrorCode' "AccessDeniedError"++pattern BatchItemErrorCode_ConflictError :: BatchItemErrorCode+pattern BatchItemErrorCode_ConflictError = BatchItemErrorCode' "ConflictError"++pattern BatchItemErrorCode_InternalServerError :: BatchItemErrorCode+pattern BatchItemErrorCode_InternalServerError = BatchItemErrorCode' "InternalServerError"++pattern BatchItemErrorCode_ResourceNotFoundError :: BatchItemErrorCode+pattern BatchItemErrorCode_ResourceNotFoundError = BatchItemErrorCode' "ResourceNotFoundError"++pattern BatchItemErrorCode_ThrottlingError :: BatchItemErrorCode+pattern BatchItemErrorCode_ThrottlingError = BatchItemErrorCode' "ThrottlingError"++pattern BatchItemErrorCode_ValidationError :: BatchItemErrorCode+pattern BatchItemErrorCode_ValidationError = BatchItemErrorCode' "ValidationError"++{-# COMPLETE+  BatchItemErrorCode_AccessDeniedError,+  BatchItemErrorCode_ConflictError,+  BatchItemErrorCode_InternalServerError,+  BatchItemErrorCode_ResourceNotFoundError,+  BatchItemErrorCode_ThrottlingError,+  BatchItemErrorCode_ValidationError,+  BatchItemErrorCode'+  #-}
+ gen/Amazonka/Location/Types/BatchPutGeofenceError.hs view
@@ -0,0 +1,90 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.BatchPutGeofenceError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.BatchPutGeofenceError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.BatchItemError+import qualified Amazonka.Prelude as Prelude++-- | Contains error details for each geofence that failed to be stored in a+-- given geofence collection.+--+-- /See:/ 'newBatchPutGeofenceError' smart constructor.+data BatchPutGeofenceError = BatchPutGeofenceError'+  { -- | Contains details associated to the batch error.+    error :: BatchItemError,+    -- | The geofence associated with the error message.+    geofenceId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPutGeofenceError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'error', 'batchPutGeofenceError_error' - Contains details associated to the batch error.+--+-- 'geofenceId', 'batchPutGeofenceError_geofenceId' - The geofence associated with the error message.+newBatchPutGeofenceError ::+  -- | 'error'+  BatchItemError ->+  -- | 'geofenceId'+  Prelude.Text ->+  BatchPutGeofenceError+newBatchPutGeofenceError pError_ pGeofenceId_ =+  BatchPutGeofenceError'+    { error = pError_,+      geofenceId = pGeofenceId_+    }++-- | Contains details associated to the batch error.+batchPutGeofenceError_error :: Lens.Lens' BatchPutGeofenceError BatchItemError+batchPutGeofenceError_error = Lens.lens (\BatchPutGeofenceError' {error} -> error) (\s@BatchPutGeofenceError' {} a -> s {error = a} :: BatchPutGeofenceError)++-- | The geofence associated with the error message.+batchPutGeofenceError_geofenceId :: Lens.Lens' BatchPutGeofenceError Prelude.Text+batchPutGeofenceError_geofenceId = Lens.lens (\BatchPutGeofenceError' {geofenceId} -> geofenceId) (\s@BatchPutGeofenceError' {} a -> s {geofenceId = a} :: BatchPutGeofenceError)++instance Data.FromJSON BatchPutGeofenceError where+  parseJSON =+    Data.withObject+      "BatchPutGeofenceError"+      ( \x ->+          BatchPutGeofenceError'+            Prelude.<$> (x Data..: "Error")+            Prelude.<*> (x Data..: "GeofenceId")+      )++instance Prelude.Hashable BatchPutGeofenceError where+  hashWithSalt _salt BatchPutGeofenceError' {..} =+    _salt+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` geofenceId++instance Prelude.NFData BatchPutGeofenceError where+  rnf BatchPutGeofenceError' {..} =+    Prelude.rnf error+      `Prelude.seq` Prelude.rnf geofenceId
+ gen/Amazonka/Location/Types/BatchPutGeofenceRequestEntry.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.BatchPutGeofenceRequestEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.BatchPutGeofenceRequestEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.GeofenceGeometry+import qualified Amazonka.Prelude as Prelude++-- | Contains geofence geometry details.+--+-- /See:/ 'newBatchPutGeofenceRequestEntry' smart constructor.+data BatchPutGeofenceRequestEntry = BatchPutGeofenceRequestEntry'+  { -- | The identifier for the geofence to be stored in a given geofence+    -- collection.+    geofenceId :: Prelude.Text,+    -- | Contains the details of the position of the geofence. Can be either a+    -- polygon or a circle. Including both will return a validation error.+    --+    -- Each+    -- <https://docs.aws.amazon.com/location-geofences/latest/APIReference/API_GeofenceGeometry.html geofence polygon>+    -- can have a maximum of 1,000 vertices.+    geometry :: GeofenceGeometry+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPutGeofenceRequestEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'geofenceId', 'batchPutGeofenceRequestEntry_geofenceId' - The identifier for the geofence to be stored in a given geofence+-- collection.+--+-- 'geometry', 'batchPutGeofenceRequestEntry_geometry' - Contains the details of the position of the geofence. Can be either a+-- polygon or a circle. Including both will return a validation error.+--+-- Each+-- <https://docs.aws.amazon.com/location-geofences/latest/APIReference/API_GeofenceGeometry.html geofence polygon>+-- can have a maximum of 1,000 vertices.+newBatchPutGeofenceRequestEntry ::+  -- | 'geofenceId'+  Prelude.Text ->+  -- | 'geometry'+  GeofenceGeometry ->+  BatchPutGeofenceRequestEntry+newBatchPutGeofenceRequestEntry+  pGeofenceId_+  pGeometry_ =+    BatchPutGeofenceRequestEntry'+      { geofenceId =+          pGeofenceId_,+        geometry = pGeometry_+      }++-- | The identifier for the geofence to be stored in a given geofence+-- collection.+batchPutGeofenceRequestEntry_geofenceId :: Lens.Lens' BatchPutGeofenceRequestEntry Prelude.Text+batchPutGeofenceRequestEntry_geofenceId = Lens.lens (\BatchPutGeofenceRequestEntry' {geofenceId} -> geofenceId) (\s@BatchPutGeofenceRequestEntry' {} a -> s {geofenceId = a} :: BatchPutGeofenceRequestEntry)++-- | Contains the details of the position of the geofence. Can be either a+-- polygon or a circle. Including both will return a validation error.+--+-- Each+-- <https://docs.aws.amazon.com/location-geofences/latest/APIReference/API_GeofenceGeometry.html geofence polygon>+-- can have a maximum of 1,000 vertices.+batchPutGeofenceRequestEntry_geometry :: Lens.Lens' BatchPutGeofenceRequestEntry GeofenceGeometry+batchPutGeofenceRequestEntry_geometry = Lens.lens (\BatchPutGeofenceRequestEntry' {geometry} -> geometry) (\s@BatchPutGeofenceRequestEntry' {} a -> s {geometry = a} :: BatchPutGeofenceRequestEntry)++instance+  Prelude.Hashable+    BatchPutGeofenceRequestEntry+  where+  hashWithSalt _salt BatchPutGeofenceRequestEntry' {..} =+    _salt+      `Prelude.hashWithSalt` geofenceId+      `Prelude.hashWithSalt` geometry++instance Prelude.NFData BatchPutGeofenceRequestEntry where+  rnf BatchPutGeofenceRequestEntry' {..} =+    Prelude.rnf geofenceId+      `Prelude.seq` Prelude.rnf geometry++instance Data.ToJSON BatchPutGeofenceRequestEntry where+  toJSON BatchPutGeofenceRequestEntry' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("GeofenceId" Data..= geofenceId),+            Prelude.Just ("Geometry" Data..= geometry)+          ]+      )
+ gen/Amazonka/Location/Types/BatchPutGeofenceSuccess.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.BatchPutGeofenceSuccess+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.BatchPutGeofenceSuccess where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains a summary of each geofence that was successfully stored in a+-- given geofence collection.+--+-- /See:/ 'newBatchPutGeofenceSuccess' smart constructor.+data BatchPutGeofenceSuccess = BatchPutGeofenceSuccess'+  { -- | The timestamp for when the geofence was stored in a geofence collection+    -- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    createTime :: Data.ISO8601,+    -- | The geofence successfully stored in a geofence collection.+    geofenceId :: Prelude.Text,+    -- | The timestamp for when the geofence was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPutGeofenceSuccess' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createTime', 'batchPutGeofenceSuccess_createTime' - The timestamp for when the geofence was stored in a geofence collection+-- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+--+-- 'geofenceId', 'batchPutGeofenceSuccess_geofenceId' - The geofence successfully stored in a geofence collection.+--+-- 'updateTime', 'batchPutGeofenceSuccess_updateTime' - The timestamp for when the geofence was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+newBatchPutGeofenceSuccess ::+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'geofenceId'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  BatchPutGeofenceSuccess+newBatchPutGeofenceSuccess+  pCreateTime_+  pGeofenceId_+  pUpdateTime_ =+    BatchPutGeofenceSuccess'+      { createTime =+          Data._Time Lens.# pCreateTime_,+        geofenceId = pGeofenceId_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | The timestamp for when the geofence was stored in a geofence collection+-- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+batchPutGeofenceSuccess_createTime :: Lens.Lens' BatchPutGeofenceSuccess Prelude.UTCTime+batchPutGeofenceSuccess_createTime = Lens.lens (\BatchPutGeofenceSuccess' {createTime} -> createTime) (\s@BatchPutGeofenceSuccess' {} a -> s {createTime = a} :: BatchPutGeofenceSuccess) Prelude.. Data._Time++-- | The geofence successfully stored in a geofence collection.+batchPutGeofenceSuccess_geofenceId :: Lens.Lens' BatchPutGeofenceSuccess Prelude.Text+batchPutGeofenceSuccess_geofenceId = Lens.lens (\BatchPutGeofenceSuccess' {geofenceId} -> geofenceId) (\s@BatchPutGeofenceSuccess' {} a -> s {geofenceId = a} :: BatchPutGeofenceSuccess)++-- | The timestamp for when the geofence was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+batchPutGeofenceSuccess_updateTime :: Lens.Lens' BatchPutGeofenceSuccess Prelude.UTCTime+batchPutGeofenceSuccess_updateTime = Lens.lens (\BatchPutGeofenceSuccess' {updateTime} -> updateTime) (\s@BatchPutGeofenceSuccess' {} a -> s {updateTime = a} :: BatchPutGeofenceSuccess) Prelude.. Data._Time++instance Data.FromJSON BatchPutGeofenceSuccess where+  parseJSON =+    Data.withObject+      "BatchPutGeofenceSuccess"+      ( \x ->+          BatchPutGeofenceSuccess'+            Prelude.<$> (x Data..: "CreateTime")+            Prelude.<*> (x Data..: "GeofenceId")+            Prelude.<*> (x Data..: "UpdateTime")+      )++instance Prelude.Hashable BatchPutGeofenceSuccess where+  hashWithSalt _salt BatchPutGeofenceSuccess' {..} =+    _salt+      `Prelude.hashWithSalt` createTime+      `Prelude.hashWithSalt` geofenceId+      `Prelude.hashWithSalt` updateTime++instance Prelude.NFData BatchPutGeofenceSuccess where+  rnf BatchPutGeofenceSuccess' {..} =+    Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf geofenceId+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/Types/BatchUpdateDevicePositionError.hs view
@@ -0,0 +1,125 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.BatchUpdateDevicePositionError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.BatchUpdateDevicePositionError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.BatchItemError+import qualified Amazonka.Prelude as Prelude++-- | Contains error details for each device that failed to update its+-- position.+--+-- /See:/ 'newBatchUpdateDevicePositionError' smart constructor.+data BatchUpdateDevicePositionError = BatchUpdateDevicePositionError'+  { -- | The device associated with the failed location update.+    deviceId :: Prelude.Text,+    -- | Contains details related to the error code such as the error code and+    -- error message.+    error :: BatchItemError,+    -- | The timestamp at which the device position was determined. Uses+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    sampleTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchUpdateDevicePositionError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deviceId', 'batchUpdateDevicePositionError_deviceId' - The device associated with the failed location update.+--+-- 'error', 'batchUpdateDevicePositionError_error' - Contains details related to the error code such as the error code and+-- error message.+--+-- 'sampleTime', 'batchUpdateDevicePositionError_sampleTime' - The timestamp at which the device position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newBatchUpdateDevicePositionError ::+  -- | 'deviceId'+  Prelude.Text ->+  -- | 'error'+  BatchItemError ->+  -- | 'sampleTime'+  Prelude.UTCTime ->+  BatchUpdateDevicePositionError+newBatchUpdateDevicePositionError+  pDeviceId_+  pError_+  pSampleTime_ =+    BatchUpdateDevicePositionError'+      { deviceId =+          pDeviceId_,+        error = pError_,+        sampleTime = Data._Time Lens.# pSampleTime_+      }++-- | The device associated with the failed location update.+batchUpdateDevicePositionError_deviceId :: Lens.Lens' BatchUpdateDevicePositionError Prelude.Text+batchUpdateDevicePositionError_deviceId = Lens.lens (\BatchUpdateDevicePositionError' {deviceId} -> deviceId) (\s@BatchUpdateDevicePositionError' {} a -> s {deviceId = a} :: BatchUpdateDevicePositionError)++-- | Contains details related to the error code such as the error code and+-- error message.+batchUpdateDevicePositionError_error :: Lens.Lens' BatchUpdateDevicePositionError BatchItemError+batchUpdateDevicePositionError_error = Lens.lens (\BatchUpdateDevicePositionError' {error} -> error) (\s@BatchUpdateDevicePositionError' {} a -> s {error = a} :: BatchUpdateDevicePositionError)++-- | The timestamp at which the device position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+batchUpdateDevicePositionError_sampleTime :: Lens.Lens' BatchUpdateDevicePositionError Prelude.UTCTime+batchUpdateDevicePositionError_sampleTime = Lens.lens (\BatchUpdateDevicePositionError' {sampleTime} -> sampleTime) (\s@BatchUpdateDevicePositionError' {} a -> s {sampleTime = a} :: BatchUpdateDevicePositionError) Prelude.. Data._Time++instance Data.FromJSON BatchUpdateDevicePositionError where+  parseJSON =+    Data.withObject+      "BatchUpdateDevicePositionError"+      ( \x ->+          BatchUpdateDevicePositionError'+            Prelude.<$> (x Data..: "DeviceId")+            Prelude.<*> (x Data..: "Error")+            Prelude.<*> (x Data..: "SampleTime")+      )++instance+  Prelude.Hashable+    BatchUpdateDevicePositionError+  where+  hashWithSalt+    _salt+    BatchUpdateDevicePositionError' {..} =+      _salt+        `Prelude.hashWithSalt` deviceId+        `Prelude.hashWithSalt` error+        `Prelude.hashWithSalt` sampleTime++instance+  Prelude.NFData+    BatchUpdateDevicePositionError+  where+  rnf BatchUpdateDevicePositionError' {..} =+    Prelude.rnf deviceId+      `Prelude.seq` Prelude.rnf error+      `Prelude.seq` Prelude.rnf sampleTime
+ gen/Amazonka/Location/Types/CalculateRouteCarModeOptions.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.CalculateRouteCarModeOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.CalculateRouteCarModeOptions where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains details about additional route preferences for requests that+-- specify @TravelMode@ as @Car@.+--+-- /See:/ 'newCalculateRouteCarModeOptions' smart constructor.+data CalculateRouteCarModeOptions = CalculateRouteCarModeOptions'+  { -- | Avoids ferries when calculating routes.+    --+    -- Default Value: @false@+    --+    -- Valid Values: @false@ | @true@+    avoidFerries :: Prelude.Maybe Prelude.Bool,+    -- | Avoids tolls when calculating routes.+    --+    -- Default Value: @false@+    --+    -- Valid Values: @false@ | @true@+    avoidTolls :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CalculateRouteCarModeOptions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'avoidFerries', 'calculateRouteCarModeOptions_avoidFerries' - Avoids ferries when calculating routes.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+--+-- 'avoidTolls', 'calculateRouteCarModeOptions_avoidTolls' - Avoids tolls when calculating routes.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+newCalculateRouteCarModeOptions ::+  CalculateRouteCarModeOptions+newCalculateRouteCarModeOptions =+  CalculateRouteCarModeOptions'+    { avoidFerries =+        Prelude.Nothing,+      avoidTolls = Prelude.Nothing+    }++-- | Avoids ferries when calculating routes.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+calculateRouteCarModeOptions_avoidFerries :: Lens.Lens' CalculateRouteCarModeOptions (Prelude.Maybe Prelude.Bool)+calculateRouteCarModeOptions_avoidFerries = Lens.lens (\CalculateRouteCarModeOptions' {avoidFerries} -> avoidFerries) (\s@CalculateRouteCarModeOptions' {} a -> s {avoidFerries = a} :: CalculateRouteCarModeOptions)++-- | Avoids tolls when calculating routes.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+calculateRouteCarModeOptions_avoidTolls :: Lens.Lens' CalculateRouteCarModeOptions (Prelude.Maybe Prelude.Bool)+calculateRouteCarModeOptions_avoidTolls = Lens.lens (\CalculateRouteCarModeOptions' {avoidTolls} -> avoidTolls) (\s@CalculateRouteCarModeOptions' {} a -> s {avoidTolls = a} :: CalculateRouteCarModeOptions)++instance+  Prelude.Hashable+    CalculateRouteCarModeOptions+  where+  hashWithSalt _salt CalculateRouteCarModeOptions' {..} =+    _salt+      `Prelude.hashWithSalt` avoidFerries+      `Prelude.hashWithSalt` avoidTolls++instance Prelude.NFData CalculateRouteCarModeOptions where+  rnf CalculateRouteCarModeOptions' {..} =+    Prelude.rnf avoidFerries+      `Prelude.seq` Prelude.rnf avoidTolls++instance Data.ToJSON CalculateRouteCarModeOptions where+  toJSON CalculateRouteCarModeOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AvoidFerries" Data..=) Prelude.<$> avoidFerries,+            ("AvoidTolls" Data..=) Prelude.<$> avoidTolls+          ]+      )
+ gen/Amazonka/Location/Types/CalculateRouteMatrixSummary.hs view
@@ -0,0 +1,152 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.CalculateRouteMatrixSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.CalculateRouteMatrixSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.DistanceUnit+import qualified Amazonka.Prelude as Prelude++-- | A summary of the calculated route matrix.+--+-- /See:/ 'newCalculateRouteMatrixSummary' smart constructor.+data CalculateRouteMatrixSummary = CalculateRouteMatrixSummary'+  { -- | The data provider of traffic and road network data used to calculate the+    -- routes. Indicates one of the available providers:+    --+    -- -   @Esri@+    --+    -- -   @Here@+    --+    -- For more information about data providers, see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+    dataSource :: Prelude.Text,+    -- | The unit of measurement for route distances.+    distanceUnit :: DistanceUnit,+    -- | The count of error results in the route matrix. If this number is 0, all+    -- routes were calculated successfully.+    errorCount :: Prelude.Natural,+    -- | The count of cells in the route matrix. Equal to the number of+    -- @DeparturePositions@ multiplied by the number of @DestinationPositions@.+    routeCount :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CalculateRouteMatrixSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataSource', 'calculateRouteMatrixSummary_dataSource' - The data provider of traffic and road network data used to calculate the+-- routes. Indicates one of the available providers:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+--+-- 'distanceUnit', 'calculateRouteMatrixSummary_distanceUnit' - The unit of measurement for route distances.+--+-- 'errorCount', 'calculateRouteMatrixSummary_errorCount' - The count of error results in the route matrix. If this number is 0, all+-- routes were calculated successfully.+--+-- 'routeCount', 'calculateRouteMatrixSummary_routeCount' - The count of cells in the route matrix. Equal to the number of+-- @DeparturePositions@ multiplied by the number of @DestinationPositions@.+newCalculateRouteMatrixSummary ::+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'distanceUnit'+  DistanceUnit ->+  -- | 'errorCount'+  Prelude.Natural ->+  -- | 'routeCount'+  Prelude.Natural ->+  CalculateRouteMatrixSummary+newCalculateRouteMatrixSummary+  pDataSource_+  pDistanceUnit_+  pErrorCount_+  pRouteCount_ =+    CalculateRouteMatrixSummary'+      { dataSource =+          pDataSource_,+        distanceUnit = pDistanceUnit_,+        errorCount = pErrorCount_,+        routeCount = pRouteCount_+      }++-- | The data provider of traffic and road network data used to calculate the+-- routes. Indicates one of the available providers:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+calculateRouteMatrixSummary_dataSource :: Lens.Lens' CalculateRouteMatrixSummary Prelude.Text+calculateRouteMatrixSummary_dataSource = Lens.lens (\CalculateRouteMatrixSummary' {dataSource} -> dataSource) (\s@CalculateRouteMatrixSummary' {} a -> s {dataSource = a} :: CalculateRouteMatrixSummary)++-- | The unit of measurement for route distances.+calculateRouteMatrixSummary_distanceUnit :: Lens.Lens' CalculateRouteMatrixSummary DistanceUnit+calculateRouteMatrixSummary_distanceUnit = Lens.lens (\CalculateRouteMatrixSummary' {distanceUnit} -> distanceUnit) (\s@CalculateRouteMatrixSummary' {} a -> s {distanceUnit = a} :: CalculateRouteMatrixSummary)++-- | The count of error results in the route matrix. If this number is 0, all+-- routes were calculated successfully.+calculateRouteMatrixSummary_errorCount :: Lens.Lens' CalculateRouteMatrixSummary Prelude.Natural+calculateRouteMatrixSummary_errorCount = Lens.lens (\CalculateRouteMatrixSummary' {errorCount} -> errorCount) (\s@CalculateRouteMatrixSummary' {} a -> s {errorCount = a} :: CalculateRouteMatrixSummary)++-- | The count of cells in the route matrix. Equal to the number of+-- @DeparturePositions@ multiplied by the number of @DestinationPositions@.+calculateRouteMatrixSummary_routeCount :: Lens.Lens' CalculateRouteMatrixSummary Prelude.Natural+calculateRouteMatrixSummary_routeCount = Lens.lens (\CalculateRouteMatrixSummary' {routeCount} -> routeCount) (\s@CalculateRouteMatrixSummary' {} a -> s {routeCount = a} :: CalculateRouteMatrixSummary)++instance Data.FromJSON CalculateRouteMatrixSummary where+  parseJSON =+    Data.withObject+      "CalculateRouteMatrixSummary"+      ( \x ->+          CalculateRouteMatrixSummary'+            Prelude.<$> (x Data..: "DataSource")+            Prelude.<*> (x Data..: "DistanceUnit")+            Prelude.<*> (x Data..: "ErrorCount")+            Prelude.<*> (x Data..: "RouteCount")+      )++instance Prelude.Hashable CalculateRouteMatrixSummary where+  hashWithSalt _salt CalculateRouteMatrixSummary' {..} =+    _salt+      `Prelude.hashWithSalt` dataSource+      `Prelude.hashWithSalt` distanceUnit+      `Prelude.hashWithSalt` errorCount+      `Prelude.hashWithSalt` routeCount++instance Prelude.NFData CalculateRouteMatrixSummary where+  rnf CalculateRouteMatrixSummary' {..} =+    Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf distanceUnit+      `Prelude.seq` Prelude.rnf errorCount+      `Prelude.seq` Prelude.rnf routeCount
+ gen/Amazonka/Location/Types/CalculateRouteSummary.hs view
@@ -0,0 +1,235 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.CalculateRouteSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.CalculateRouteSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.DistanceUnit+import qualified Amazonka.Prelude as Prelude++-- | A summary of the calculated route.+--+-- /See:/ 'newCalculateRouteSummary' smart constructor.+data CalculateRouteSummary = CalculateRouteSummary'+  { -- | The data provider of traffic and road network data used to calculate the+    -- route. Indicates one of the available providers:+    --+    -- -   @Esri@+    --+    -- -   @Here@+    --+    -- For more information about data providers, see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+    dataSource :: Prelude.Text,+    -- | The total distance covered by the route. The sum of the distance+    -- travelled between every stop on the route.+    --+    -- If Esri is the data source for the route calculator, the route distance+    -- can’t be greater than 400 km. If the route exceeds 400 km, the response+    -- is a @400 RoutesValidationException@ error.+    distance :: Prelude.Double,+    -- | The unit of measurement for route distances.+    distanceUnit :: DistanceUnit,+    -- | The total travel time for the route measured in seconds. The sum of the+    -- travel time between every stop on the route.+    durationSeconds :: Prelude.Double,+    -- | Specifies a geographical box surrounding a route. Used to zoom into a+    -- route when displaying it in a map. For example,+    -- @[min x, min y, max x, max y]@.+    --+    -- The first 2 @bbox@ parameters describe the lower southwest corner:+    --+    -- -   The first @bbox@ position is the X coordinate or longitude of the+    --     lower southwest corner.+    --+    -- -   The second @bbox@ position is the Y coordinate or latitude of the+    --     lower southwest corner.+    --+    -- The next 2 @bbox@ parameters describe the upper northeast corner:+    --+    -- -   The third @bbox@ position is the X coordinate, or longitude of the+    --     upper northeast corner.+    --+    -- -   The fourth @bbox@ position is the Y coordinate, or latitude of the+    --     upper northeast corner.+    routeBBox :: Data.Sensitive (Prelude.NonEmpty Prelude.Double)+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CalculateRouteSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataSource', 'calculateRouteSummary_dataSource' - The data provider of traffic and road network data used to calculate the+-- route. Indicates one of the available providers:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+--+-- 'distance', 'calculateRouteSummary_distance' - The total distance covered by the route. The sum of the distance+-- travelled between every stop on the route.+--+-- If Esri is the data source for the route calculator, the route distance+-- can’t be greater than 400 km. If the route exceeds 400 km, the response+-- is a @400 RoutesValidationException@ error.+--+-- 'distanceUnit', 'calculateRouteSummary_distanceUnit' - The unit of measurement for route distances.+--+-- 'durationSeconds', 'calculateRouteSummary_durationSeconds' - The total travel time for the route measured in seconds. The sum of the+-- travel time between every stop on the route.+--+-- 'routeBBox', 'calculateRouteSummary_routeBBox' - Specifies a geographical box surrounding a route. Used to zoom into a+-- route when displaying it in a map. For example,+-- @[min x, min y, max x, max y]@.+--+-- The first 2 @bbox@ parameters describe the lower southwest corner:+--+-- -   The first @bbox@ position is the X coordinate or longitude of the+--     lower southwest corner.+--+-- -   The second @bbox@ position is the Y coordinate or latitude of the+--     lower southwest corner.+--+-- The next 2 @bbox@ parameters describe the upper northeast corner:+--+-- -   The third @bbox@ position is the X coordinate, or longitude of the+--     upper northeast corner.+--+-- -   The fourth @bbox@ position is the Y coordinate, or latitude of the+--     upper northeast corner.+newCalculateRouteSummary ::+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'distance'+  Prelude.Double ->+  -- | 'distanceUnit'+  DistanceUnit ->+  -- | 'durationSeconds'+  Prelude.Double ->+  -- | 'routeBBox'+  Prelude.NonEmpty Prelude.Double ->+  CalculateRouteSummary+newCalculateRouteSummary+  pDataSource_+  pDistance_+  pDistanceUnit_+  pDurationSeconds_+  pRouteBBox_ =+    CalculateRouteSummary'+      { dataSource = pDataSource_,+        distance = pDistance_,+        distanceUnit = pDistanceUnit_,+        durationSeconds = pDurationSeconds_,+        routeBBox =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pRouteBBox_+      }++-- | The data provider of traffic and road network data used to calculate the+-- route. Indicates one of the available providers:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+calculateRouteSummary_dataSource :: Lens.Lens' CalculateRouteSummary Prelude.Text+calculateRouteSummary_dataSource = Lens.lens (\CalculateRouteSummary' {dataSource} -> dataSource) (\s@CalculateRouteSummary' {} a -> s {dataSource = a} :: CalculateRouteSummary)++-- | The total distance covered by the route. The sum of the distance+-- travelled between every stop on the route.+--+-- If Esri is the data source for the route calculator, the route distance+-- can’t be greater than 400 km. If the route exceeds 400 km, the response+-- is a @400 RoutesValidationException@ error.+calculateRouteSummary_distance :: Lens.Lens' CalculateRouteSummary Prelude.Double+calculateRouteSummary_distance = Lens.lens (\CalculateRouteSummary' {distance} -> distance) (\s@CalculateRouteSummary' {} a -> s {distance = a} :: CalculateRouteSummary)++-- | The unit of measurement for route distances.+calculateRouteSummary_distanceUnit :: Lens.Lens' CalculateRouteSummary DistanceUnit+calculateRouteSummary_distanceUnit = Lens.lens (\CalculateRouteSummary' {distanceUnit} -> distanceUnit) (\s@CalculateRouteSummary' {} a -> s {distanceUnit = a} :: CalculateRouteSummary)++-- | The total travel time for the route measured in seconds. The sum of the+-- travel time between every stop on the route.+calculateRouteSummary_durationSeconds :: Lens.Lens' CalculateRouteSummary Prelude.Double+calculateRouteSummary_durationSeconds = Lens.lens (\CalculateRouteSummary' {durationSeconds} -> durationSeconds) (\s@CalculateRouteSummary' {} a -> s {durationSeconds = a} :: CalculateRouteSummary)++-- | Specifies a geographical box surrounding a route. Used to zoom into a+-- route when displaying it in a map. For example,+-- @[min x, min y, max x, max y]@.+--+-- The first 2 @bbox@ parameters describe the lower southwest corner:+--+-- -   The first @bbox@ position is the X coordinate or longitude of the+--     lower southwest corner.+--+-- -   The second @bbox@ position is the Y coordinate or latitude of the+--     lower southwest corner.+--+-- The next 2 @bbox@ parameters describe the upper northeast corner:+--+-- -   The third @bbox@ position is the X coordinate, or longitude of the+--     upper northeast corner.+--+-- -   The fourth @bbox@ position is the Y coordinate, or latitude of the+--     upper northeast corner.+calculateRouteSummary_routeBBox :: Lens.Lens' CalculateRouteSummary (Prelude.NonEmpty Prelude.Double)+calculateRouteSummary_routeBBox = Lens.lens (\CalculateRouteSummary' {routeBBox} -> routeBBox) (\s@CalculateRouteSummary' {} a -> s {routeBBox = a} :: CalculateRouteSummary) Prelude.. Data._Sensitive Prelude.. Lens.coerced++instance Data.FromJSON CalculateRouteSummary where+  parseJSON =+    Data.withObject+      "CalculateRouteSummary"+      ( \x ->+          CalculateRouteSummary'+            Prelude.<$> (x Data..: "DataSource")+            Prelude.<*> (x Data..: "Distance")+            Prelude.<*> (x Data..: "DistanceUnit")+            Prelude.<*> (x Data..: "DurationSeconds")+            Prelude.<*> (x Data..: "RouteBBox")+      )++instance Prelude.Hashable CalculateRouteSummary where+  hashWithSalt _salt CalculateRouteSummary' {..} =+    _salt+      `Prelude.hashWithSalt` dataSource+      `Prelude.hashWithSalt` distance+      `Prelude.hashWithSalt` distanceUnit+      `Prelude.hashWithSalt` durationSeconds+      `Prelude.hashWithSalt` routeBBox++instance Prelude.NFData CalculateRouteSummary where+  rnf CalculateRouteSummary' {..} =+    Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf distance+      `Prelude.seq` Prelude.rnf distanceUnit+      `Prelude.seq` Prelude.rnf durationSeconds+      `Prelude.seq` Prelude.rnf routeBBox
+ gen/Amazonka/Location/Types/CalculateRouteTruckModeOptions.hs view
@@ -0,0 +1,155 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.CalculateRouteTruckModeOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.CalculateRouteTruckModeOptions where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.TruckDimensions+import Amazonka.Location.Types.TruckWeight+import qualified Amazonka.Prelude as Prelude++-- | Contains details about additional route preferences for requests that+-- specify @TravelMode@ as @Truck@.+--+-- /See:/ 'newCalculateRouteTruckModeOptions' smart constructor.+data CalculateRouteTruckModeOptions = CalculateRouteTruckModeOptions'+  { -- | Avoids ferries when calculating routes.+    --+    -- Default Value: @false@+    --+    -- Valid Values: @false@ | @true@+    avoidFerries :: Prelude.Maybe Prelude.Bool,+    -- | Avoids tolls when calculating routes.+    --+    -- Default Value: @false@+    --+    -- Valid Values: @false@ | @true@+    avoidTolls :: Prelude.Maybe Prelude.Bool,+    -- | Specifies the truck\'s dimension specifications including length,+    -- height, width, and unit of measurement. Used to avoid roads that can\'t+    -- support the truck\'s dimensions.+    dimensions :: Prelude.Maybe TruckDimensions,+    -- | Specifies the truck\'s weight specifications including total weight and+    -- unit of measurement. Used to avoid roads that can\'t support the+    -- truck\'s weight.+    weight :: Prelude.Maybe TruckWeight+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CalculateRouteTruckModeOptions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'avoidFerries', 'calculateRouteTruckModeOptions_avoidFerries' - Avoids ferries when calculating routes.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+--+-- 'avoidTolls', 'calculateRouteTruckModeOptions_avoidTolls' - Avoids tolls when calculating routes.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+--+-- 'dimensions', 'calculateRouteTruckModeOptions_dimensions' - Specifies the truck\'s dimension specifications including length,+-- height, width, and unit of measurement. Used to avoid roads that can\'t+-- support the truck\'s dimensions.+--+-- 'weight', 'calculateRouteTruckModeOptions_weight' - Specifies the truck\'s weight specifications including total weight and+-- unit of measurement. Used to avoid roads that can\'t support the+-- truck\'s weight.+newCalculateRouteTruckModeOptions ::+  CalculateRouteTruckModeOptions+newCalculateRouteTruckModeOptions =+  CalculateRouteTruckModeOptions'+    { avoidFerries =+        Prelude.Nothing,+      avoidTolls = Prelude.Nothing,+      dimensions = Prelude.Nothing,+      weight = Prelude.Nothing+    }++-- | Avoids ferries when calculating routes.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+calculateRouteTruckModeOptions_avoidFerries :: Lens.Lens' CalculateRouteTruckModeOptions (Prelude.Maybe Prelude.Bool)+calculateRouteTruckModeOptions_avoidFerries = Lens.lens (\CalculateRouteTruckModeOptions' {avoidFerries} -> avoidFerries) (\s@CalculateRouteTruckModeOptions' {} a -> s {avoidFerries = a} :: CalculateRouteTruckModeOptions)++-- | Avoids tolls when calculating routes.+--+-- Default Value: @false@+--+-- Valid Values: @false@ | @true@+calculateRouteTruckModeOptions_avoidTolls :: Lens.Lens' CalculateRouteTruckModeOptions (Prelude.Maybe Prelude.Bool)+calculateRouteTruckModeOptions_avoidTolls = Lens.lens (\CalculateRouteTruckModeOptions' {avoidTolls} -> avoidTolls) (\s@CalculateRouteTruckModeOptions' {} a -> s {avoidTolls = a} :: CalculateRouteTruckModeOptions)++-- | Specifies the truck\'s dimension specifications including length,+-- height, width, and unit of measurement. Used to avoid roads that can\'t+-- support the truck\'s dimensions.+calculateRouteTruckModeOptions_dimensions :: Lens.Lens' CalculateRouteTruckModeOptions (Prelude.Maybe TruckDimensions)+calculateRouteTruckModeOptions_dimensions = Lens.lens (\CalculateRouteTruckModeOptions' {dimensions} -> dimensions) (\s@CalculateRouteTruckModeOptions' {} a -> s {dimensions = a} :: CalculateRouteTruckModeOptions)++-- | Specifies the truck\'s weight specifications including total weight and+-- unit of measurement. Used to avoid roads that can\'t support the+-- truck\'s weight.+calculateRouteTruckModeOptions_weight :: Lens.Lens' CalculateRouteTruckModeOptions (Prelude.Maybe TruckWeight)+calculateRouteTruckModeOptions_weight = Lens.lens (\CalculateRouteTruckModeOptions' {weight} -> weight) (\s@CalculateRouteTruckModeOptions' {} a -> s {weight = a} :: CalculateRouteTruckModeOptions)++instance+  Prelude.Hashable+    CalculateRouteTruckModeOptions+  where+  hashWithSalt+    _salt+    CalculateRouteTruckModeOptions' {..} =+      _salt+        `Prelude.hashWithSalt` avoidFerries+        `Prelude.hashWithSalt` avoidTolls+        `Prelude.hashWithSalt` dimensions+        `Prelude.hashWithSalt` weight++instance+  Prelude.NFData+    CalculateRouteTruckModeOptions+  where+  rnf CalculateRouteTruckModeOptions' {..} =+    Prelude.rnf avoidFerries+      `Prelude.seq` Prelude.rnf avoidTolls+      `Prelude.seq` Prelude.rnf dimensions+      `Prelude.seq` Prelude.rnf weight++instance Data.ToJSON CalculateRouteTruckModeOptions where+  toJSON CalculateRouteTruckModeOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AvoidFerries" Data..=) Prelude.<$> avoidFerries,+            ("AvoidTolls" Data..=) Prelude.<$> avoidTolls,+            ("Dimensions" Data..=) Prelude.<$> dimensions,+            ("Weight" Data..=) Prelude.<$> weight+          ]+      )
+ gen/Amazonka/Location/Types/Circle.hs view
@@ -0,0 +1,108 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.Circle+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.Circle 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 circle on the earth, as defined by a center point and a radius.+--+-- /See:/ 'newCircle' smart constructor.+data Circle = Circle'+  { -- | A single point geometry, specifying the center of the circle, using+    -- <https://gisgeography.com/wgs84-world-geodetic-system/ WGS 84>+    -- coordinates, in the form @[longitude, latitude]@.+    center :: Data.Sensitive (Prelude.NonEmpty Prelude.Double),+    -- | The radius of the circle in meters. Must be greater than zero and no+    -- larger than 100,000 (100 kilometers).+    radius :: Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Circle' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'center', 'circle_center' - A single point geometry, specifying the center of the circle, using+-- <https://gisgeography.com/wgs84-world-geodetic-system/ WGS 84>+-- coordinates, in the form @[longitude, latitude]@.+--+-- 'radius', 'circle_radius' - The radius of the circle in meters. Must be greater than zero and no+-- larger than 100,000 (100 kilometers).+newCircle ::+  -- | 'center'+  Prelude.NonEmpty Prelude.Double ->+  -- | 'radius'+  Prelude.Double ->+  Circle+newCircle pCenter_ pRadius_ =+  Circle'+    { center =+        Data._Sensitive+          Prelude.. Lens.coerced+          Lens.# pCenter_,+      radius = pRadius_+    }++-- | A single point geometry, specifying the center of the circle, using+-- <https://gisgeography.com/wgs84-world-geodetic-system/ WGS 84>+-- coordinates, in the form @[longitude, latitude]@.+circle_center :: Lens.Lens' Circle (Prelude.NonEmpty Prelude.Double)+circle_center = Lens.lens (\Circle' {center} -> center) (\s@Circle' {} a -> s {center = a} :: Circle) Prelude.. Data._Sensitive Prelude.. Lens.coerced++-- | The radius of the circle in meters. Must be greater than zero and no+-- larger than 100,000 (100 kilometers).+circle_radius :: Lens.Lens' Circle Prelude.Double+circle_radius = Lens.lens (\Circle' {radius} -> radius) (\s@Circle' {} a -> s {radius = a} :: Circle)++instance Data.FromJSON Circle where+  parseJSON =+    Data.withObject+      "Circle"+      ( \x ->+          Circle'+            Prelude.<$> (x Data..: "Center")+            Prelude.<*> (x Data..: "Radius")+      )++instance Prelude.Hashable Circle where+  hashWithSalt _salt Circle' {..} =+    _salt+      `Prelude.hashWithSalt` center+      `Prelude.hashWithSalt` radius++instance Prelude.NFData Circle where+  rnf Circle' {..} =+    Prelude.rnf center `Prelude.seq` Prelude.rnf radius++instance Data.ToJSON Circle where+  toJSON Circle' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Center" Data..= center),+            Prelude.Just ("Radius" Data..= radius)+          ]+      )
+ gen/Amazonka/Location/Types/DataSourceConfiguration.hs view
@@ -0,0 +1,122 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.DataSourceConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.DataSourceConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.IntendedUse+import qualified Amazonka.Prelude as Prelude++-- | Specifies the data storage option chosen for requesting Places.+--+-- When using Amazon Location Places:+--+-- -   If using HERE Technologies as a data provider, you can\'t store+--     results for locations in Japan by setting @IntendedUse@ to+--     @Storage@. parameter.+--+-- -   Under the @MobileAssetTracking@ or @MobilAssetManagement@ pricing+--     plan, you can\'t store results from your place index resources by+--     setting @IntendedUse@ to @Storage@. This returns a validation+--     exception error.+--+-- For more information, see the+-- <https://aws.amazon.com/service-terms/ AWS Service Terms> for Amazon+-- Location Service.+--+-- /See:/ 'newDataSourceConfiguration' smart constructor.+data DataSourceConfiguration = DataSourceConfiguration'+  { -- | Specifies how the results of an operation will be stored by the caller.+    --+    -- Valid values include:+    --+    -- -   @SingleUse@ specifies that the results won\'t be stored.+    --+    -- -   @Storage@ specifies that the result can be cached or stored in a+    --     database.+    --+    -- Default value: @SingleUse@+    intendedUse :: Prelude.Maybe IntendedUse+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataSourceConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'intendedUse', 'dataSourceConfiguration_intendedUse' - Specifies how the results of an operation will be stored by the caller.+--+-- Valid values include:+--+-- -   @SingleUse@ specifies that the results won\'t be stored.+--+-- -   @Storage@ specifies that the result can be cached or stored in a+--     database.+--+-- Default value: @SingleUse@+newDataSourceConfiguration ::+  DataSourceConfiguration+newDataSourceConfiguration =+  DataSourceConfiguration'+    { intendedUse =+        Prelude.Nothing+    }++-- | Specifies how the results of an operation will be stored by the caller.+--+-- Valid values include:+--+-- -   @SingleUse@ specifies that the results won\'t be stored.+--+-- -   @Storage@ specifies that the result can be cached or stored in a+--     database.+--+-- Default value: @SingleUse@+dataSourceConfiguration_intendedUse :: Lens.Lens' DataSourceConfiguration (Prelude.Maybe IntendedUse)+dataSourceConfiguration_intendedUse = Lens.lens (\DataSourceConfiguration' {intendedUse} -> intendedUse) (\s@DataSourceConfiguration' {} a -> s {intendedUse = a} :: DataSourceConfiguration)++instance Data.FromJSON DataSourceConfiguration where+  parseJSON =+    Data.withObject+      "DataSourceConfiguration"+      ( \x ->+          DataSourceConfiguration'+            Prelude.<$> (x Data..:? "IntendedUse")+      )++instance Prelude.Hashable DataSourceConfiguration where+  hashWithSalt _salt DataSourceConfiguration' {..} =+    _salt `Prelude.hashWithSalt` intendedUse++instance Prelude.NFData DataSourceConfiguration where+  rnf DataSourceConfiguration' {..} =+    Prelude.rnf intendedUse++instance Data.ToJSON DataSourceConfiguration where+  toJSON DataSourceConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [("IntendedUse" Data..=) Prelude.<$> intendedUse]+      )
+ gen/Amazonka/Location/Types/DevicePosition.hs view
@@ -0,0 +1,160 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.DevicePosition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.DevicePosition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.PositionalAccuracy+import qualified Amazonka.Prelude as Prelude++-- | Contains the device position details.+--+-- /See:/ 'newDevicePosition' smart constructor.+data DevicePosition = DevicePosition'+  { -- | The accuracy of the device position.+    accuracy :: Prelude.Maybe PositionalAccuracy,+    -- | The device whose position you retrieved.+    deviceId :: Prelude.Maybe Prelude.Text,+    -- | The properties associated with the position.+    positionProperties :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | The last known device position.+    position :: Data.Sensitive (Prelude.NonEmpty Prelude.Double),+    -- | The timestamp for when the tracker resource received the device position+    -- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    receivedTime :: Data.ISO8601,+    -- | The timestamp at which the device\'s position was determined. Uses+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    sampleTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DevicePosition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accuracy', 'devicePosition_accuracy' - The accuracy of the device position.+--+-- 'deviceId', 'devicePosition_deviceId' - The device whose position you retrieved.+--+-- 'positionProperties', 'devicePosition_positionProperties' - The properties associated with the position.+--+-- 'position', 'devicePosition_position' - The last known device position.+--+-- 'receivedTime', 'devicePosition_receivedTime' - The timestamp for when the tracker resource received the device position+-- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'sampleTime', 'devicePosition_sampleTime' - The timestamp at which the device\'s position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newDevicePosition ::+  -- | 'position'+  Prelude.NonEmpty Prelude.Double ->+  -- | 'receivedTime'+  Prelude.UTCTime ->+  -- | 'sampleTime'+  Prelude.UTCTime ->+  DevicePosition+newDevicePosition+  pPosition_+  pReceivedTime_+  pSampleTime_ =+    DevicePosition'+      { accuracy = Prelude.Nothing,+        deviceId = Prelude.Nothing,+        positionProperties = Prelude.Nothing,+        position =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pPosition_,+        receivedTime = Data._Time Lens.# pReceivedTime_,+        sampleTime = Data._Time Lens.# pSampleTime_+      }++-- | The accuracy of the device position.+devicePosition_accuracy :: Lens.Lens' DevicePosition (Prelude.Maybe PositionalAccuracy)+devicePosition_accuracy = Lens.lens (\DevicePosition' {accuracy} -> accuracy) (\s@DevicePosition' {} a -> s {accuracy = a} :: DevicePosition)++-- | The device whose position you retrieved.+devicePosition_deviceId :: Lens.Lens' DevicePosition (Prelude.Maybe Prelude.Text)+devicePosition_deviceId = Lens.lens (\DevicePosition' {deviceId} -> deviceId) (\s@DevicePosition' {} a -> s {deviceId = a} :: DevicePosition)++-- | The properties associated with the position.+devicePosition_positionProperties :: Lens.Lens' DevicePosition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+devicePosition_positionProperties = Lens.lens (\DevicePosition' {positionProperties} -> positionProperties) (\s@DevicePosition' {} a -> s {positionProperties = a} :: DevicePosition) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | The last known device position.+devicePosition_position :: Lens.Lens' DevicePosition (Prelude.NonEmpty Prelude.Double)+devicePosition_position = Lens.lens (\DevicePosition' {position} -> position) (\s@DevicePosition' {} a -> s {position = a} :: DevicePosition) Prelude.. Data._Sensitive Prelude.. Lens.coerced++-- | The timestamp for when the tracker resource received the device position+-- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+devicePosition_receivedTime :: Lens.Lens' DevicePosition Prelude.UTCTime+devicePosition_receivedTime = Lens.lens (\DevicePosition' {receivedTime} -> receivedTime) (\s@DevicePosition' {} a -> s {receivedTime = a} :: DevicePosition) Prelude.. Data._Time++-- | The timestamp at which the device\'s position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+devicePosition_sampleTime :: Lens.Lens' DevicePosition Prelude.UTCTime+devicePosition_sampleTime = Lens.lens (\DevicePosition' {sampleTime} -> sampleTime) (\s@DevicePosition' {} a -> s {sampleTime = a} :: DevicePosition) Prelude.. Data._Time++instance Data.FromJSON DevicePosition where+  parseJSON =+    Data.withObject+      "DevicePosition"+      ( \x ->+          DevicePosition'+            Prelude.<$> (x Data..:? "Accuracy")+            Prelude.<*> (x Data..:? "DeviceId")+            Prelude.<*> ( x+                            Data..:? "PositionProperties"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..: "Position")+            Prelude.<*> (x Data..: "ReceivedTime")+            Prelude.<*> (x Data..: "SampleTime")+      )++instance Prelude.Hashable DevicePosition where+  hashWithSalt _salt DevicePosition' {..} =+    _salt+      `Prelude.hashWithSalt` accuracy+      `Prelude.hashWithSalt` deviceId+      `Prelude.hashWithSalt` positionProperties+      `Prelude.hashWithSalt` position+      `Prelude.hashWithSalt` receivedTime+      `Prelude.hashWithSalt` sampleTime++instance Prelude.NFData DevicePosition where+  rnf DevicePosition' {..} =+    Prelude.rnf accuracy+      `Prelude.seq` Prelude.rnf deviceId+      `Prelude.seq` Prelude.rnf positionProperties+      `Prelude.seq` Prelude.rnf position+      `Prelude.seq` Prelude.rnf receivedTime+      `Prelude.seq` Prelude.rnf sampleTime
+ gen/Amazonka/Location/Types/DevicePositionUpdate.hs view
@@ -0,0 +1,157 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.DevicePositionUpdate+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.DevicePositionUpdate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.PositionalAccuracy+import qualified Amazonka.Prelude as Prelude++-- | Contains the position update details for a device.+--+-- /See:/ 'newDevicePositionUpdate' smart constructor.+data DevicePositionUpdate = DevicePositionUpdate'+  { -- | The accuracy of the device position.+    accuracy :: Prelude.Maybe PositionalAccuracy,+    -- | Associates one of more properties with the position update. A property+    -- is a key-value pair stored with the position update and added to any+    -- geofence event the update may trigger.+    --+    -- Format: @\"key\" : \"value\"@+    positionProperties :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | The device associated to the position update.+    deviceId :: Prelude.Text,+    -- | The latest device position defined in+    -- <https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84 WGS 84>+    -- format: @[X or longitude, Y or latitude]@.+    position :: Data.Sensitive (Prelude.NonEmpty Prelude.Double),+    -- | The timestamp at which the device\'s position was determined. Uses+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    sampleTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DevicePositionUpdate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accuracy', 'devicePositionUpdate_accuracy' - The accuracy of the device position.+--+-- 'positionProperties', 'devicePositionUpdate_positionProperties' - Associates one of more properties with the position update. A property+-- is a key-value pair stored with the position update and added to any+-- geofence event the update may trigger.+--+-- Format: @\"key\" : \"value\"@+--+-- 'deviceId', 'devicePositionUpdate_deviceId' - The device associated to the position update.+--+-- 'position', 'devicePositionUpdate_position' - The latest device position defined in+-- <https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84 WGS 84>+-- format: @[X or longitude, Y or latitude]@.+--+-- 'sampleTime', 'devicePositionUpdate_sampleTime' - The timestamp at which the device\'s position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+newDevicePositionUpdate ::+  -- | 'deviceId'+  Prelude.Text ->+  -- | 'position'+  Prelude.NonEmpty Prelude.Double ->+  -- | 'sampleTime'+  Prelude.UTCTime ->+  DevicePositionUpdate+newDevicePositionUpdate+  pDeviceId_+  pPosition_+  pSampleTime_ =+    DevicePositionUpdate'+      { accuracy = Prelude.Nothing,+        positionProperties = Prelude.Nothing,+        deviceId = pDeviceId_,+        position =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pPosition_,+        sampleTime = Data._Time Lens.# pSampleTime_+      }++-- | The accuracy of the device position.+devicePositionUpdate_accuracy :: Lens.Lens' DevicePositionUpdate (Prelude.Maybe PositionalAccuracy)+devicePositionUpdate_accuracy = Lens.lens (\DevicePositionUpdate' {accuracy} -> accuracy) (\s@DevicePositionUpdate' {} a -> s {accuracy = a} :: DevicePositionUpdate)++-- | Associates one of more properties with the position update. A property+-- is a key-value pair stored with the position update and added to any+-- geofence event the update may trigger.+--+-- Format: @\"key\" : \"value\"@+devicePositionUpdate_positionProperties :: Lens.Lens' DevicePositionUpdate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+devicePositionUpdate_positionProperties = Lens.lens (\DevicePositionUpdate' {positionProperties} -> positionProperties) (\s@DevicePositionUpdate' {} a -> s {positionProperties = a} :: DevicePositionUpdate) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | The device associated to the position update.+devicePositionUpdate_deviceId :: Lens.Lens' DevicePositionUpdate Prelude.Text+devicePositionUpdate_deviceId = Lens.lens (\DevicePositionUpdate' {deviceId} -> deviceId) (\s@DevicePositionUpdate' {} a -> s {deviceId = a} :: DevicePositionUpdate)++-- | The latest device position defined in+-- <https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84 WGS 84>+-- format: @[X or longitude, Y or latitude]@.+devicePositionUpdate_position :: Lens.Lens' DevicePositionUpdate (Prelude.NonEmpty Prelude.Double)+devicePositionUpdate_position = Lens.lens (\DevicePositionUpdate' {position} -> position) (\s@DevicePositionUpdate' {} a -> s {position = a} :: DevicePositionUpdate) Prelude.. Data._Sensitive Prelude.. Lens.coerced++-- | The timestamp at which the device\'s position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+devicePositionUpdate_sampleTime :: Lens.Lens' DevicePositionUpdate Prelude.UTCTime+devicePositionUpdate_sampleTime = Lens.lens (\DevicePositionUpdate' {sampleTime} -> sampleTime) (\s@DevicePositionUpdate' {} a -> s {sampleTime = a} :: DevicePositionUpdate) Prelude.. Data._Time++instance Prelude.Hashable DevicePositionUpdate where+  hashWithSalt _salt DevicePositionUpdate' {..} =+    _salt+      `Prelude.hashWithSalt` accuracy+      `Prelude.hashWithSalt` positionProperties+      `Prelude.hashWithSalt` deviceId+      `Prelude.hashWithSalt` position+      `Prelude.hashWithSalt` sampleTime++instance Prelude.NFData DevicePositionUpdate where+  rnf DevicePositionUpdate' {..} =+    Prelude.rnf accuracy+      `Prelude.seq` Prelude.rnf positionProperties+      `Prelude.seq` Prelude.rnf deviceId+      `Prelude.seq` Prelude.rnf position+      `Prelude.seq` Prelude.rnf sampleTime++instance Data.ToJSON DevicePositionUpdate where+  toJSON DevicePositionUpdate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Accuracy" Data..=) Prelude.<$> accuracy,+            ("PositionProperties" Data..=)+              Prelude.<$> positionProperties,+            Prelude.Just ("DeviceId" Data..= deviceId),+            Prelude.Just ("Position" Data..= position),+            Prelude.Just ("SampleTime" Data..= sampleTime)+          ]+      )
+ gen/Amazonka/Location/Types/DimensionUnit.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.Location.Types.DimensionUnit+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.DimensionUnit+  ( DimensionUnit+      ( ..,+        DimensionUnit_Feet,+        DimensionUnit_Meters+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DimensionUnit = DimensionUnit'+  { fromDimensionUnit ::+      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 DimensionUnit_Feet :: DimensionUnit+pattern DimensionUnit_Feet = DimensionUnit' "Feet"++pattern DimensionUnit_Meters :: DimensionUnit+pattern DimensionUnit_Meters = DimensionUnit' "Meters"++{-# COMPLETE+  DimensionUnit_Feet,+  DimensionUnit_Meters,+  DimensionUnit'+  #-}
+ gen/Amazonka/Location/Types/DistanceUnit.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.Location.Types.DistanceUnit+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.DistanceUnit+  ( DistanceUnit+      ( ..,+        DistanceUnit_Kilometers,+        DistanceUnit_Miles+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DistanceUnit = DistanceUnit'+  { fromDistanceUnit ::+      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 DistanceUnit_Kilometers :: DistanceUnit+pattern DistanceUnit_Kilometers = DistanceUnit' "Kilometers"++pattern DistanceUnit_Miles :: DistanceUnit+pattern DistanceUnit_Miles = DistanceUnit' "Miles"++{-# COMPLETE+  DistanceUnit_Kilometers,+  DistanceUnit_Miles,+  DistanceUnit'+  #-}
+ gen/Amazonka/Location/Types/GeofenceGeometry.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.Location.Types.GeofenceGeometry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.GeofenceGeometry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.Circle+import qualified Amazonka.Prelude as Prelude++-- | Contains the geofence geometry details.+--+-- A geofence geometry is made up of either a polygon or a circle. Can be+-- either a polygon or a circle. Including both will return a validation+-- error.+--+-- Amazon Location doesn\'t currently support polygons with holes,+-- multipolygons, polygons that are wound clockwise, or that cross the+-- antimeridian.+--+-- /See:/ 'newGeofenceGeometry' smart constructor.+data GeofenceGeometry = GeofenceGeometry'+  { -- | A circle on the earth, as defined by a center point and a radius.+    circle :: Prelude.Maybe (Data.Sensitive Circle),+    -- | A polygon is a list of linear rings which are each made up of a list of+    -- vertices.+    --+    -- Each vertex is a 2-dimensional point of the form:+    -- @[longitude, latitude]@. This is represented as an array of doubles of+    -- length 2 (so @[double, double]@).+    --+    -- An array of 4 or more vertices, where the first and last vertex are the+    -- same (to form a closed boundary), is called a linear ring. The linear+    -- ring vertices must be listed in counter-clockwise order around the+    -- ring’s interior. The linear ring is represented as an array of vertices,+    -- or an array of arrays of doubles (@[[double, double], ...]@).+    --+    -- A geofence consists of a single linear ring. To allow for future+    -- expansion, the Polygon parameter takes an array of linear rings, which+    -- is represented as an array of arrays of arrays of doubles+    -- (@[[[double, double], ...], ...]@).+    --+    -- A linear ring for use in geofences can consist of between 4 and 1,000+    -- vertices.+    polygon :: Prelude.Maybe (Prelude.NonEmpty (Prelude.NonEmpty (Data.Sensitive (Prelude.NonEmpty Prelude.Double))))+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GeofenceGeometry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'circle', 'geofenceGeometry_circle' - A circle on the earth, as defined by a center point and a radius.+--+-- 'polygon', 'geofenceGeometry_polygon' - A polygon is a list of linear rings which are each made up of a list of+-- vertices.+--+-- Each vertex is a 2-dimensional point of the form:+-- @[longitude, latitude]@. This is represented as an array of doubles of+-- length 2 (so @[double, double]@).+--+-- An array of 4 or more vertices, where the first and last vertex are the+-- same (to form a closed boundary), is called a linear ring. The linear+-- ring vertices must be listed in counter-clockwise order around the+-- ring’s interior. The linear ring is represented as an array of vertices,+-- or an array of arrays of doubles (@[[double, double], ...]@).+--+-- A geofence consists of a single linear ring. To allow for future+-- expansion, the Polygon parameter takes an array of linear rings, which+-- is represented as an array of arrays of arrays of doubles+-- (@[[[double, double], ...], ...]@).+--+-- A linear ring for use in geofences can consist of between 4 and 1,000+-- vertices.+newGeofenceGeometry ::+  GeofenceGeometry+newGeofenceGeometry =+  GeofenceGeometry'+    { circle = Prelude.Nothing,+      polygon = Prelude.Nothing+    }++-- | A circle on the earth, as defined by a center point and a radius.+geofenceGeometry_circle :: Lens.Lens' GeofenceGeometry (Prelude.Maybe Circle)+geofenceGeometry_circle = Lens.lens (\GeofenceGeometry' {circle} -> circle) (\s@GeofenceGeometry' {} a -> s {circle = a} :: GeofenceGeometry) Prelude.. Lens.mapping Data._Sensitive++-- | A polygon is a list of linear rings which are each made up of a list of+-- vertices.+--+-- Each vertex is a 2-dimensional point of the form:+-- @[longitude, latitude]@. This is represented as an array of doubles of+-- length 2 (so @[double, double]@).+--+-- An array of 4 or more vertices, where the first and last vertex are the+-- same (to form a closed boundary), is called a linear ring. The linear+-- ring vertices must be listed in counter-clockwise order around the+-- ring’s interior. The linear ring is represented as an array of vertices,+-- or an array of arrays of doubles (@[[double, double], ...]@).+--+-- A geofence consists of a single linear ring. To allow for future+-- expansion, the Polygon parameter takes an array of linear rings, which+-- is represented as an array of arrays of arrays of doubles+-- (@[[[double, double], ...], ...]@).+--+-- A linear ring for use in geofences can consist of between 4 and 1,000+-- vertices.+geofenceGeometry_polygon :: Lens.Lens' GeofenceGeometry (Prelude.Maybe (Prelude.NonEmpty (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double))))+geofenceGeometry_polygon = Lens.lens (\GeofenceGeometry' {polygon} -> polygon) (\s@GeofenceGeometry' {} a -> s {polygon = a} :: GeofenceGeometry) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON GeofenceGeometry where+  parseJSON =+    Data.withObject+      "GeofenceGeometry"+      ( \x ->+          GeofenceGeometry'+            Prelude.<$> (x Data..:? "Circle")+            Prelude.<*> (x Data..:? "Polygon")+      )++instance Prelude.Hashable GeofenceGeometry where+  hashWithSalt _salt GeofenceGeometry' {..} =+    _salt+      `Prelude.hashWithSalt` circle+      `Prelude.hashWithSalt` polygon++instance Prelude.NFData GeofenceGeometry where+  rnf GeofenceGeometry' {..} =+    Prelude.rnf circle+      `Prelude.seq` Prelude.rnf polygon++instance Data.ToJSON GeofenceGeometry where+  toJSON GeofenceGeometry' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Circle" Data..=) Prelude.<$> circle,+            ("Polygon" Data..=) Prelude.<$> polygon+          ]+      )
+ gen/Amazonka/Location/Types/IntendedUse.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.Location.Types.IntendedUse+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.IntendedUse+  ( IntendedUse+      ( ..,+        IntendedUse_SingleUse,+        IntendedUse_Storage+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype IntendedUse = IntendedUse'+  { fromIntendedUse ::+      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 IntendedUse_SingleUse :: IntendedUse+pattern IntendedUse_SingleUse = IntendedUse' "SingleUse"++pattern IntendedUse_Storage :: IntendedUse+pattern IntendedUse_Storage = IntendedUse' "Storage"++{-# COMPLETE+  IntendedUse_SingleUse,+  IntendedUse_Storage,+  IntendedUse'+  #-}
+ gen/Amazonka/Location/Types/Leg.hs view
@@ -0,0 +1,222 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.Leg+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.Leg where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.LegGeometry+import Amazonka.Location.Types.Step+import qualified Amazonka.Prelude as Prelude++-- | Contains the calculated route\'s details for each path between a pair of+-- positions. The number of legs returned corresponds to one fewer than the+-- total number of positions in the request.+--+-- For example, a route with a departure position and destination position+-- returns one leg with the positions+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html snapped to a nearby road>:+--+-- -   The @StartPosition@ is the departure position.+--+-- -   The @EndPosition@ is the destination position.+--+-- A route with a waypoint between the departure and destination position+-- returns two legs with the positions snapped to a nearby road:+--+-- -   Leg 1: The @StartPosition@ is the departure position . The+--     @EndPosition@ is the waypoint positon.+--+-- -   Leg 2: The @StartPosition@ is the waypoint position. The+--     @EndPosition@ is the destination position.+--+-- /See:/ 'newLeg' smart constructor.+data Leg = Leg'+  { -- | Contains the calculated route\'s path as a linestring geometry.+    geometry :: Prelude.Maybe LegGeometry,+    -- | The distance between the leg\'s @StartPosition@ and @EndPosition@ along+    -- a calculated route.+    --+    -- -   The default measurement is @Kilometers@ unless the request specifies+    --     a @DistanceUnit@ of @Miles@.+    distance :: Prelude.Double,+    -- | The estimated travel time between the leg\'s @StartPosition@ and+    -- @EndPosition@. The travel mode and departure time that you specify in+    -- the request determines the calculated time.+    durationSeconds :: Prelude.Double,+    -- | The terminating position of the leg. Follows the format+    -- @[longitude,latitude]@.+    --+    -- If the @EndPosition@ isn\'t located on a road, it\'s+    -- <https://docs.aws.amazon.com/location/latest/developerguide/nap-to-nearby-road.html snapped to a nearby road>.+    endPosition :: Data.Sensitive (Prelude.NonEmpty Prelude.Double),+    -- | The starting position of the leg. Follows the format+    -- @[longitude,latitude]@.+    --+    -- If the @StartPosition@ isn\'t located on a road, it\'s+    -- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html snapped to a nearby road>.+    startPosition :: Data.Sensitive (Prelude.NonEmpty Prelude.Double),+    -- | Contains a list of steps, which represent subsections of a leg. Each+    -- step provides instructions for how to move to the next step in the leg+    -- such as the step\'s start position, end position, travel distance,+    -- travel duration, and geometry offset.+    steps :: [Step]+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Leg' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'geometry', 'leg_geometry' - Contains the calculated route\'s path as a linestring geometry.+--+-- 'distance', 'leg_distance' - The distance between the leg\'s @StartPosition@ and @EndPosition@ along+-- a calculated route.+--+-- -   The default measurement is @Kilometers@ unless the request specifies+--     a @DistanceUnit@ of @Miles@.+--+-- 'durationSeconds', 'leg_durationSeconds' - The estimated travel time between the leg\'s @StartPosition@ and+-- @EndPosition@. The travel mode and departure time that you specify in+-- the request determines the calculated time.+--+-- 'endPosition', 'leg_endPosition' - The terminating position of the leg. Follows the format+-- @[longitude,latitude]@.+--+-- If the @EndPosition@ isn\'t located on a road, it\'s+-- <https://docs.aws.amazon.com/location/latest/developerguide/nap-to-nearby-road.html snapped to a nearby road>.+--+-- 'startPosition', 'leg_startPosition' - The starting position of the leg. Follows the format+-- @[longitude,latitude]@.+--+-- If the @StartPosition@ isn\'t located on a road, it\'s+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html snapped to a nearby road>.+--+-- 'steps', 'leg_steps' - Contains a list of steps, which represent subsections of a leg. Each+-- step provides instructions for how to move to the next step in the leg+-- such as the step\'s start position, end position, travel distance,+-- travel duration, and geometry offset.+newLeg ::+  -- | 'distance'+  Prelude.Double ->+  -- | 'durationSeconds'+  Prelude.Double ->+  -- | 'endPosition'+  Prelude.NonEmpty Prelude.Double ->+  -- | 'startPosition'+  Prelude.NonEmpty Prelude.Double ->+  Leg+newLeg+  pDistance_+  pDurationSeconds_+  pEndPosition_+  pStartPosition_ =+    Leg'+      { geometry = Prelude.Nothing,+        distance = pDistance_,+        durationSeconds = pDurationSeconds_,+        endPosition =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pEndPosition_,+        startPosition =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pStartPosition_,+        steps = Prelude.mempty+      }++-- | Contains the calculated route\'s path as a linestring geometry.+leg_geometry :: Lens.Lens' Leg (Prelude.Maybe LegGeometry)+leg_geometry = Lens.lens (\Leg' {geometry} -> geometry) (\s@Leg' {} a -> s {geometry = a} :: Leg)++-- | The distance between the leg\'s @StartPosition@ and @EndPosition@ along+-- a calculated route.+--+-- -   The default measurement is @Kilometers@ unless the request specifies+--     a @DistanceUnit@ of @Miles@.+leg_distance :: Lens.Lens' Leg Prelude.Double+leg_distance = Lens.lens (\Leg' {distance} -> distance) (\s@Leg' {} a -> s {distance = a} :: Leg)++-- | The estimated travel time between the leg\'s @StartPosition@ and+-- @EndPosition@. The travel mode and departure time that you specify in+-- the request determines the calculated time.+leg_durationSeconds :: Lens.Lens' Leg Prelude.Double+leg_durationSeconds = Lens.lens (\Leg' {durationSeconds} -> durationSeconds) (\s@Leg' {} a -> s {durationSeconds = a} :: Leg)++-- | The terminating position of the leg. Follows the format+-- @[longitude,latitude]@.+--+-- If the @EndPosition@ isn\'t located on a road, it\'s+-- <https://docs.aws.amazon.com/location/latest/developerguide/nap-to-nearby-road.html snapped to a nearby road>.+leg_endPosition :: Lens.Lens' Leg (Prelude.NonEmpty Prelude.Double)+leg_endPosition = Lens.lens (\Leg' {endPosition} -> endPosition) (\s@Leg' {} a -> s {endPosition = a} :: Leg) Prelude.. Data._Sensitive Prelude.. Lens.coerced++-- | The starting position of the leg. Follows the format+-- @[longitude,latitude]@.+--+-- If the @StartPosition@ isn\'t located on a road, it\'s+-- <https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html snapped to a nearby road>.+leg_startPosition :: Lens.Lens' Leg (Prelude.NonEmpty Prelude.Double)+leg_startPosition = Lens.lens (\Leg' {startPosition} -> startPosition) (\s@Leg' {} a -> s {startPosition = a} :: Leg) Prelude.. Data._Sensitive Prelude.. Lens.coerced++-- | Contains a list of steps, which represent subsections of a leg. Each+-- step provides instructions for how to move to the next step in the leg+-- such as the step\'s start position, end position, travel distance,+-- travel duration, and geometry offset.+leg_steps :: Lens.Lens' Leg [Step]+leg_steps = Lens.lens (\Leg' {steps} -> steps) (\s@Leg' {} a -> s {steps = a} :: Leg) Prelude.. Lens.coerced++instance Data.FromJSON Leg where+  parseJSON =+    Data.withObject+      "Leg"+      ( \x ->+          Leg'+            Prelude.<$> (x Data..:? "Geometry")+            Prelude.<*> (x Data..: "Distance")+            Prelude.<*> (x Data..: "DurationSeconds")+            Prelude.<*> (x Data..: "EndPosition")+            Prelude.<*> (x Data..: "StartPosition")+            Prelude.<*> (x Data..:? "Steps" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Leg where+  hashWithSalt _salt Leg' {..} =+    _salt+      `Prelude.hashWithSalt` geometry+      `Prelude.hashWithSalt` distance+      `Prelude.hashWithSalt` durationSeconds+      `Prelude.hashWithSalt` endPosition+      `Prelude.hashWithSalt` startPosition+      `Prelude.hashWithSalt` steps++instance Prelude.NFData Leg where+  rnf Leg' {..} =+    Prelude.rnf geometry+      `Prelude.seq` Prelude.rnf distance+      `Prelude.seq` Prelude.rnf durationSeconds+      `Prelude.seq` Prelude.rnf endPosition+      `Prelude.seq` Prelude.rnf startPosition+      `Prelude.seq` Prelude.rnf steps
+ gen/Amazonka/Location/Types/LegGeometry.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.LegGeometry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.LegGeometry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains the geometry details for each path between a pair of positions.+-- Used in plotting a route leg on a map.+--+-- /See:/ 'newLegGeometry' smart constructor.+data LegGeometry = LegGeometry'+  { -- | An ordered list of positions used to plot a route on a map.+    --+    -- The first position is closest to the start position for the leg, and the+    -- last position is the closest to the end position for the leg.+    --+    -- -   For example,+    --     @[[-123.117, 49.284],[-123.115, 49.285],[-123.115, 49.285]]@+    lineString :: Prelude.Maybe (Prelude.NonEmpty (Data.Sensitive (Prelude.NonEmpty Prelude.Double)))+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LegGeometry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lineString', 'legGeometry_lineString' - An ordered list of positions used to plot a route on a map.+--+-- The first position is closest to the start position for the leg, and the+-- last position is the closest to the end position for the leg.+--+-- -   For example,+--     @[[-123.117, 49.284],[-123.115, 49.285],[-123.115, 49.285]]@+newLegGeometry ::+  LegGeometry+newLegGeometry =+  LegGeometry' {lineString = Prelude.Nothing}++-- | An ordered list of positions used to plot a route on a map.+--+-- The first position is closest to the start position for the leg, and the+-- last position is the closest to the end position for the leg.+--+-- -   For example,+--     @[[-123.117, 49.284],[-123.115, 49.285],[-123.115, 49.285]]@+legGeometry_lineString :: Lens.Lens' LegGeometry (Prelude.Maybe (Prelude.NonEmpty (Prelude.NonEmpty Prelude.Double)))+legGeometry_lineString = Lens.lens (\LegGeometry' {lineString} -> lineString) (\s@LegGeometry' {} a -> s {lineString = a} :: LegGeometry) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON LegGeometry where+  parseJSON =+    Data.withObject+      "LegGeometry"+      ( \x ->+          LegGeometry' Prelude.<$> (x Data..:? "LineString")+      )++instance Prelude.Hashable LegGeometry where+  hashWithSalt _salt LegGeometry' {..} =+    _salt `Prelude.hashWithSalt` lineString++instance Prelude.NFData LegGeometry where+  rnf LegGeometry' {..} = Prelude.rnf lineString
+ gen/Amazonka/Location/Types/ListDevicePositionsResponseEntry.hs view
@@ -0,0 +1,155 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.ListDevicePositionsResponseEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.ListDevicePositionsResponseEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.PositionalAccuracy+import qualified Amazonka.Prelude as Prelude++-- | Contains the tracker resource details.+--+-- /See:/ 'newListDevicePositionsResponseEntry' smart constructor.+data ListDevicePositionsResponseEntry = ListDevicePositionsResponseEntry'+  { -- | The accuracy of the device position.+    accuracy :: Prelude.Maybe PositionalAccuracy,+    -- | The properties associated with the position.+    positionProperties :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | The ID of the device for this position.+    deviceId :: Prelude.Text,+    -- | The last known device position. Empty if no positions currently stored.+    position :: Data.Sensitive (Prelude.NonEmpty Prelude.Double),+    -- | The timestamp at which the device position was determined. Uses+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    sampleTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDevicePositionsResponseEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accuracy', 'listDevicePositionsResponseEntry_accuracy' - The accuracy of the device position.+--+-- 'positionProperties', 'listDevicePositionsResponseEntry_positionProperties' - The properties associated with the position.+--+-- 'deviceId', 'listDevicePositionsResponseEntry_deviceId' - The ID of the device for this position.+--+-- 'position', 'listDevicePositionsResponseEntry_position' - The last known device position. Empty if no positions currently stored.+--+-- 'sampleTime', 'listDevicePositionsResponseEntry_sampleTime' - The timestamp at which the device position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newListDevicePositionsResponseEntry ::+  -- | 'deviceId'+  Prelude.Text ->+  -- | 'position'+  Prelude.NonEmpty Prelude.Double ->+  -- | 'sampleTime'+  Prelude.UTCTime ->+  ListDevicePositionsResponseEntry+newListDevicePositionsResponseEntry+  pDeviceId_+  pPosition_+  pSampleTime_ =+    ListDevicePositionsResponseEntry'+      { accuracy =+          Prelude.Nothing,+        positionProperties = Prelude.Nothing,+        deviceId = pDeviceId_,+        position =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pPosition_,+        sampleTime =+          Data._Time Lens.# pSampleTime_+      }++-- | The accuracy of the device position.+listDevicePositionsResponseEntry_accuracy :: Lens.Lens' ListDevicePositionsResponseEntry (Prelude.Maybe PositionalAccuracy)+listDevicePositionsResponseEntry_accuracy = Lens.lens (\ListDevicePositionsResponseEntry' {accuracy} -> accuracy) (\s@ListDevicePositionsResponseEntry' {} a -> s {accuracy = a} :: ListDevicePositionsResponseEntry)++-- | The properties associated with the position.+listDevicePositionsResponseEntry_positionProperties :: Lens.Lens' ListDevicePositionsResponseEntry (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+listDevicePositionsResponseEntry_positionProperties = Lens.lens (\ListDevicePositionsResponseEntry' {positionProperties} -> positionProperties) (\s@ListDevicePositionsResponseEntry' {} a -> s {positionProperties = a} :: ListDevicePositionsResponseEntry) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | The ID of the device for this position.+listDevicePositionsResponseEntry_deviceId :: Lens.Lens' ListDevicePositionsResponseEntry Prelude.Text+listDevicePositionsResponseEntry_deviceId = Lens.lens (\ListDevicePositionsResponseEntry' {deviceId} -> deviceId) (\s@ListDevicePositionsResponseEntry' {} a -> s {deviceId = a} :: ListDevicePositionsResponseEntry)++-- | The last known device position. Empty if no positions currently stored.+listDevicePositionsResponseEntry_position :: Lens.Lens' ListDevicePositionsResponseEntry (Prelude.NonEmpty Prelude.Double)+listDevicePositionsResponseEntry_position = Lens.lens (\ListDevicePositionsResponseEntry' {position} -> position) (\s@ListDevicePositionsResponseEntry' {} a -> s {position = a} :: ListDevicePositionsResponseEntry) Prelude.. Data._Sensitive Prelude.. Lens.coerced++-- | The timestamp at which the device position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+listDevicePositionsResponseEntry_sampleTime :: Lens.Lens' ListDevicePositionsResponseEntry Prelude.UTCTime+listDevicePositionsResponseEntry_sampleTime = Lens.lens (\ListDevicePositionsResponseEntry' {sampleTime} -> sampleTime) (\s@ListDevicePositionsResponseEntry' {} a -> s {sampleTime = a} :: ListDevicePositionsResponseEntry) Prelude.. Data._Time++instance+  Data.FromJSON+    ListDevicePositionsResponseEntry+  where+  parseJSON =+    Data.withObject+      "ListDevicePositionsResponseEntry"+      ( \x ->+          ListDevicePositionsResponseEntry'+            Prelude.<$> (x Data..:? "Accuracy")+            Prelude.<*> ( x+                            Data..:? "PositionProperties"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..: "DeviceId")+            Prelude.<*> (x Data..: "Position")+            Prelude.<*> (x Data..: "SampleTime")+      )++instance+  Prelude.Hashable+    ListDevicePositionsResponseEntry+  where+  hashWithSalt+    _salt+    ListDevicePositionsResponseEntry' {..} =+      _salt+        `Prelude.hashWithSalt` accuracy+        `Prelude.hashWithSalt` positionProperties+        `Prelude.hashWithSalt` deviceId+        `Prelude.hashWithSalt` position+        `Prelude.hashWithSalt` sampleTime++instance+  Prelude.NFData+    ListDevicePositionsResponseEntry+  where+  rnf ListDevicePositionsResponseEntry' {..} =+    Prelude.rnf accuracy+      `Prelude.seq` Prelude.rnf positionProperties+      `Prelude.seq` Prelude.rnf deviceId+      `Prelude.seq` Prelude.rnf position+      `Prelude.seq` Prelude.rnf sampleTime
+ gen/Amazonka/Location/Types/ListGeofenceCollectionsResponseEntry.hs view
@@ -0,0 +1,172 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.ListGeofenceCollectionsResponseEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.ListGeofenceCollectionsResponseEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.PricingPlan+import qualified Amazonka.Prelude as Prelude++-- | Contains the geofence collection details.+--+-- /See:/ 'newListGeofenceCollectionsResponseEntry' smart constructor.+data ListGeofenceCollectionsResponseEntry = ListGeofenceCollectionsResponseEntry'+  { -- | No longer used. Always returns @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | No longer used. Always returns an empty string.+    pricingPlanDataSource :: Prelude.Maybe Prelude.Text,+    -- | The name of the geofence collection.+    collectionName :: Prelude.Text,+    -- | The timestamp for when the geofence collection was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    createTime :: Data.ISO8601,+    -- | The description for the geofence collection+    description :: Prelude.Text,+    -- | Specifies a timestamp for when the resource was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListGeofenceCollectionsResponseEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pricingPlan', 'listGeofenceCollectionsResponseEntry_pricingPlan' - No longer used. Always returns @RequestBasedUsage@.+--+-- 'pricingPlanDataSource', 'listGeofenceCollectionsResponseEntry_pricingPlanDataSource' - No longer used. Always returns an empty string.+--+-- 'collectionName', 'listGeofenceCollectionsResponseEntry_collectionName' - The name of the geofence collection.+--+-- 'createTime', 'listGeofenceCollectionsResponseEntry_createTime' - The timestamp for when the geofence collection was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+--+-- 'description', 'listGeofenceCollectionsResponseEntry_description' - The description for the geofence collection+--+-- 'updateTime', 'listGeofenceCollectionsResponseEntry_updateTime' - Specifies a timestamp for when the resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+newListGeofenceCollectionsResponseEntry ::+  -- | 'collectionName'+  Prelude.Text ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'description'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  ListGeofenceCollectionsResponseEntry+newListGeofenceCollectionsResponseEntry+  pCollectionName_+  pCreateTime_+  pDescription_+  pUpdateTime_ =+    ListGeofenceCollectionsResponseEntry'+      { pricingPlan =+          Prelude.Nothing,+        pricingPlanDataSource =+          Prelude.Nothing,+        collectionName = pCollectionName_,+        createTime =+          Data._Time Lens.# pCreateTime_,+        description = pDescription_,+        updateTime =+          Data._Time Lens.# pUpdateTime_+      }++-- | No longer used. Always returns @RequestBasedUsage@.+listGeofenceCollectionsResponseEntry_pricingPlan :: Lens.Lens' ListGeofenceCollectionsResponseEntry (Prelude.Maybe PricingPlan)+listGeofenceCollectionsResponseEntry_pricingPlan = Lens.lens (\ListGeofenceCollectionsResponseEntry' {pricingPlan} -> pricingPlan) (\s@ListGeofenceCollectionsResponseEntry' {} a -> s {pricingPlan = a} :: ListGeofenceCollectionsResponseEntry)++-- | No longer used. Always returns an empty string.+listGeofenceCollectionsResponseEntry_pricingPlanDataSource :: Lens.Lens' ListGeofenceCollectionsResponseEntry (Prelude.Maybe Prelude.Text)+listGeofenceCollectionsResponseEntry_pricingPlanDataSource = Lens.lens (\ListGeofenceCollectionsResponseEntry' {pricingPlanDataSource} -> pricingPlanDataSource) (\s@ListGeofenceCollectionsResponseEntry' {} a -> s {pricingPlanDataSource = a} :: ListGeofenceCollectionsResponseEntry)++-- | The name of the geofence collection.+listGeofenceCollectionsResponseEntry_collectionName :: Lens.Lens' ListGeofenceCollectionsResponseEntry Prelude.Text+listGeofenceCollectionsResponseEntry_collectionName = Lens.lens (\ListGeofenceCollectionsResponseEntry' {collectionName} -> collectionName) (\s@ListGeofenceCollectionsResponseEntry' {} a -> s {collectionName = a} :: ListGeofenceCollectionsResponseEntry)++-- | The timestamp for when the geofence collection was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+listGeofenceCollectionsResponseEntry_createTime :: Lens.Lens' ListGeofenceCollectionsResponseEntry Prelude.UTCTime+listGeofenceCollectionsResponseEntry_createTime = Lens.lens (\ListGeofenceCollectionsResponseEntry' {createTime} -> createTime) (\s@ListGeofenceCollectionsResponseEntry' {} a -> s {createTime = a} :: ListGeofenceCollectionsResponseEntry) Prelude.. Data._Time++-- | The description for the geofence collection+listGeofenceCollectionsResponseEntry_description :: Lens.Lens' ListGeofenceCollectionsResponseEntry Prelude.Text+listGeofenceCollectionsResponseEntry_description = Lens.lens (\ListGeofenceCollectionsResponseEntry' {description} -> description) (\s@ListGeofenceCollectionsResponseEntry' {} a -> s {description = a} :: ListGeofenceCollectionsResponseEntry)++-- | Specifies a timestamp for when the resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+listGeofenceCollectionsResponseEntry_updateTime :: Lens.Lens' ListGeofenceCollectionsResponseEntry Prelude.UTCTime+listGeofenceCollectionsResponseEntry_updateTime = Lens.lens (\ListGeofenceCollectionsResponseEntry' {updateTime} -> updateTime) (\s@ListGeofenceCollectionsResponseEntry' {} a -> s {updateTime = a} :: ListGeofenceCollectionsResponseEntry) Prelude.. Data._Time++instance+  Data.FromJSON+    ListGeofenceCollectionsResponseEntry+  where+  parseJSON =+    Data.withObject+      "ListGeofenceCollectionsResponseEntry"+      ( \x ->+          ListGeofenceCollectionsResponseEntry'+            Prelude.<$> (x Data..:? "PricingPlan")+            Prelude.<*> (x Data..:? "PricingPlanDataSource")+            Prelude.<*> (x Data..: "CollectionName")+            Prelude.<*> (x Data..: "CreateTime")+            Prelude.<*> (x Data..: "Description")+            Prelude.<*> (x Data..: "UpdateTime")+      )++instance+  Prelude.Hashable+    ListGeofenceCollectionsResponseEntry+  where+  hashWithSalt+    _salt+    ListGeofenceCollectionsResponseEntry' {..} =+      _salt+        `Prelude.hashWithSalt` pricingPlan+        `Prelude.hashWithSalt` pricingPlanDataSource+        `Prelude.hashWithSalt` collectionName+        `Prelude.hashWithSalt` createTime+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` updateTime++instance+  Prelude.NFData+    ListGeofenceCollectionsResponseEntry+  where+  rnf ListGeofenceCollectionsResponseEntry' {..} =+    Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf pricingPlanDataSource+      `Prelude.seq` Prelude.rnf collectionName+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/Types/ListGeofenceResponseEntry.hs view
@@ -0,0 +1,182 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.ListGeofenceResponseEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.ListGeofenceResponseEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.GeofenceGeometry+import qualified Amazonka.Prelude as Prelude++-- | Contains a list of geofences stored in a given geofence collection.+--+-- /See:/ 'newListGeofenceResponseEntry' smart constructor.+data ListGeofenceResponseEntry = ListGeofenceResponseEntry'+  { -- | The timestamp for when the geofence was stored in a geofence collection+    -- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    createTime :: Data.ISO8601,+    -- | The geofence identifier.+    geofenceId :: Prelude.Text,+    -- | Contains the geofence geometry details describing a polygon or a circle.+    geometry :: GeofenceGeometry,+    -- | Identifies the state of the geofence. A geofence will hold one of the+    -- following states:+    --+    -- -   @ACTIVE@ — The geofence has been indexed by the system.+    --+    -- -   @PENDING@ — The geofence is being processed by the system.+    --+    -- -   @FAILED@ — The geofence failed to be indexed by the system.+    --+    -- -   @DELETED@ — The geofence has been deleted from the system index.+    --+    -- -   @DELETING@ — The geofence is being deleted from the system index.+    status :: Prelude.Text,+    -- | The timestamp for when the geofence was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListGeofenceResponseEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createTime', 'listGeofenceResponseEntry_createTime' - The timestamp for when the geofence was stored in a geofence collection+-- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+--+-- 'geofenceId', 'listGeofenceResponseEntry_geofenceId' - The geofence identifier.+--+-- 'geometry', 'listGeofenceResponseEntry_geometry' - Contains the geofence geometry details describing a polygon or a circle.+--+-- 'status', 'listGeofenceResponseEntry_status' - Identifies the state of the geofence. A geofence will hold one of the+-- following states:+--+-- -   @ACTIVE@ — The geofence has been indexed by the system.+--+-- -   @PENDING@ — The geofence is being processed by the system.+--+-- -   @FAILED@ — The geofence failed to be indexed by the system.+--+-- -   @DELETED@ — The geofence has been deleted from the system index.+--+-- -   @DELETING@ — The geofence is being deleted from the system index.+--+-- 'updateTime', 'listGeofenceResponseEntry_updateTime' - The timestamp for when the geofence was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+newListGeofenceResponseEntry ::+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'geofenceId'+  Prelude.Text ->+  -- | 'geometry'+  GeofenceGeometry ->+  -- | 'status'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  ListGeofenceResponseEntry+newListGeofenceResponseEntry+  pCreateTime_+  pGeofenceId_+  pGeometry_+  pStatus_+  pUpdateTime_ =+    ListGeofenceResponseEntry'+      { createTime =+          Data._Time Lens.# pCreateTime_,+        geofenceId = pGeofenceId_,+        geometry = pGeometry_,+        status = pStatus_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | The timestamp for when the geofence was stored in a geofence collection+-- in <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+listGeofenceResponseEntry_createTime :: Lens.Lens' ListGeofenceResponseEntry Prelude.UTCTime+listGeofenceResponseEntry_createTime = Lens.lens (\ListGeofenceResponseEntry' {createTime} -> createTime) (\s@ListGeofenceResponseEntry' {} a -> s {createTime = a} :: ListGeofenceResponseEntry) Prelude.. Data._Time++-- | The geofence identifier.+listGeofenceResponseEntry_geofenceId :: Lens.Lens' ListGeofenceResponseEntry Prelude.Text+listGeofenceResponseEntry_geofenceId = Lens.lens (\ListGeofenceResponseEntry' {geofenceId} -> geofenceId) (\s@ListGeofenceResponseEntry' {} a -> s {geofenceId = a} :: ListGeofenceResponseEntry)++-- | Contains the geofence geometry details describing a polygon or a circle.+listGeofenceResponseEntry_geometry :: Lens.Lens' ListGeofenceResponseEntry GeofenceGeometry+listGeofenceResponseEntry_geometry = Lens.lens (\ListGeofenceResponseEntry' {geometry} -> geometry) (\s@ListGeofenceResponseEntry' {} a -> s {geometry = a} :: ListGeofenceResponseEntry)++-- | Identifies the state of the geofence. A geofence will hold one of the+-- following states:+--+-- -   @ACTIVE@ — The geofence has been indexed by the system.+--+-- -   @PENDING@ — The geofence is being processed by the system.+--+-- -   @FAILED@ — The geofence failed to be indexed by the system.+--+-- -   @DELETED@ — The geofence has been deleted from the system index.+--+-- -   @DELETING@ — The geofence is being deleted from the system index.+listGeofenceResponseEntry_status :: Lens.Lens' ListGeofenceResponseEntry Prelude.Text+listGeofenceResponseEntry_status = Lens.lens (\ListGeofenceResponseEntry' {status} -> status) (\s@ListGeofenceResponseEntry' {} a -> s {status = a} :: ListGeofenceResponseEntry)++-- | The timestamp for when the geofence was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+listGeofenceResponseEntry_updateTime :: Lens.Lens' ListGeofenceResponseEntry Prelude.UTCTime+listGeofenceResponseEntry_updateTime = Lens.lens (\ListGeofenceResponseEntry' {updateTime} -> updateTime) (\s@ListGeofenceResponseEntry' {} a -> s {updateTime = a} :: ListGeofenceResponseEntry) Prelude.. Data._Time++instance Data.FromJSON ListGeofenceResponseEntry where+  parseJSON =+    Data.withObject+      "ListGeofenceResponseEntry"+      ( \x ->+          ListGeofenceResponseEntry'+            Prelude.<$> (x Data..: "CreateTime")+            Prelude.<*> (x Data..: "GeofenceId")+            Prelude.<*> (x Data..: "Geometry")+            Prelude.<*> (x Data..: "Status")+            Prelude.<*> (x Data..: "UpdateTime")+      )++instance Prelude.Hashable ListGeofenceResponseEntry where+  hashWithSalt _salt ListGeofenceResponseEntry' {..} =+    _salt+      `Prelude.hashWithSalt` createTime+      `Prelude.hashWithSalt` geofenceId+      `Prelude.hashWithSalt` geometry+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` updateTime++instance Prelude.NFData ListGeofenceResponseEntry where+  rnf ListGeofenceResponseEntry' {..} =+    Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf geofenceId+      `Prelude.seq` Prelude.rnf geometry+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/Types/ListMapsResponseEntry.hs view
@@ -0,0 +1,161 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.ListMapsResponseEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.ListMapsResponseEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.PricingPlan+import qualified Amazonka.Prelude as Prelude++-- | Contains details of an existing map resource in your AWS account.+--+-- /See:/ 'newListMapsResponseEntry' smart constructor.+data ListMapsResponseEntry = ListMapsResponseEntry'+  { -- | No longer used. Always returns @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | The timestamp for when the map resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    createTime :: Data.ISO8601,+    -- | Specifies the data provider for the associated map tiles.+    dataSource :: Prelude.Text,+    -- | The description for the map resource.+    description :: Prelude.Text,+    -- | The name of the associated map resource.+    mapName :: Prelude.Text,+    -- | The timestamp for when the map resource was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListMapsResponseEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pricingPlan', 'listMapsResponseEntry_pricingPlan' - No longer used. Always returns @RequestBasedUsage@.+--+-- 'createTime', 'listMapsResponseEntry_createTime' - The timestamp for when the map resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'dataSource', 'listMapsResponseEntry_dataSource' - Specifies the data provider for the associated map tiles.+--+-- 'description', 'listMapsResponseEntry_description' - The description for the map resource.+--+-- 'mapName', 'listMapsResponseEntry_mapName' - The name of the associated map resource.+--+-- 'updateTime', 'listMapsResponseEntry_updateTime' - The timestamp for when the map resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newListMapsResponseEntry ::+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  -- | 'mapName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  ListMapsResponseEntry+newListMapsResponseEntry+  pCreateTime_+  pDataSource_+  pDescription_+  pMapName_+  pUpdateTime_ =+    ListMapsResponseEntry'+      { pricingPlan =+          Prelude.Nothing,+        createTime = Data._Time Lens.# pCreateTime_,+        dataSource = pDataSource_,+        description = pDescription_,+        mapName = pMapName_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | No longer used. Always returns @RequestBasedUsage@.+listMapsResponseEntry_pricingPlan :: Lens.Lens' ListMapsResponseEntry (Prelude.Maybe PricingPlan)+listMapsResponseEntry_pricingPlan = Lens.lens (\ListMapsResponseEntry' {pricingPlan} -> pricingPlan) (\s@ListMapsResponseEntry' {} a -> s {pricingPlan = a} :: ListMapsResponseEntry)++-- | The timestamp for when the map resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+listMapsResponseEntry_createTime :: Lens.Lens' ListMapsResponseEntry Prelude.UTCTime+listMapsResponseEntry_createTime = Lens.lens (\ListMapsResponseEntry' {createTime} -> createTime) (\s@ListMapsResponseEntry' {} a -> s {createTime = a} :: ListMapsResponseEntry) Prelude.. Data._Time++-- | Specifies the data provider for the associated map tiles.+listMapsResponseEntry_dataSource :: Lens.Lens' ListMapsResponseEntry Prelude.Text+listMapsResponseEntry_dataSource = Lens.lens (\ListMapsResponseEntry' {dataSource} -> dataSource) (\s@ListMapsResponseEntry' {} a -> s {dataSource = a} :: ListMapsResponseEntry)++-- | The description for the map resource.+listMapsResponseEntry_description :: Lens.Lens' ListMapsResponseEntry Prelude.Text+listMapsResponseEntry_description = Lens.lens (\ListMapsResponseEntry' {description} -> description) (\s@ListMapsResponseEntry' {} a -> s {description = a} :: ListMapsResponseEntry)++-- | The name of the associated map resource.+listMapsResponseEntry_mapName :: Lens.Lens' ListMapsResponseEntry Prelude.Text+listMapsResponseEntry_mapName = Lens.lens (\ListMapsResponseEntry' {mapName} -> mapName) (\s@ListMapsResponseEntry' {} a -> s {mapName = a} :: ListMapsResponseEntry)++-- | The timestamp for when the map resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+listMapsResponseEntry_updateTime :: Lens.Lens' ListMapsResponseEntry Prelude.UTCTime+listMapsResponseEntry_updateTime = Lens.lens (\ListMapsResponseEntry' {updateTime} -> updateTime) (\s@ListMapsResponseEntry' {} a -> s {updateTime = a} :: ListMapsResponseEntry) Prelude.. Data._Time++instance Data.FromJSON ListMapsResponseEntry where+  parseJSON =+    Data.withObject+      "ListMapsResponseEntry"+      ( \x ->+          ListMapsResponseEntry'+            Prelude.<$> (x Data..:? "PricingPlan")+            Prelude.<*> (x Data..: "CreateTime")+            Prelude.<*> (x Data..: "DataSource")+            Prelude.<*> (x Data..: "Description")+            Prelude.<*> (x Data..: "MapName")+            Prelude.<*> (x Data..: "UpdateTime")+      )++instance Prelude.Hashable ListMapsResponseEntry where+  hashWithSalt _salt ListMapsResponseEntry' {..} =+    _salt+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` createTime+      `Prelude.hashWithSalt` dataSource+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` mapName+      `Prelude.hashWithSalt` updateTime++instance Prelude.NFData ListMapsResponseEntry where+  rnf ListMapsResponseEntry' {..} =+    Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf mapName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/Types/ListPlaceIndexesResponseEntry.hs view
@@ -0,0 +1,188 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.ListPlaceIndexesResponseEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.ListPlaceIndexesResponseEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.PricingPlan+import qualified Amazonka.Prelude as Prelude++-- | A place index resource listed in your AWS account.+--+-- /See:/ 'newListPlaceIndexesResponseEntry' smart constructor.+data ListPlaceIndexesResponseEntry = ListPlaceIndexesResponseEntry'+  { -- | No longer used. Always returns @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | The timestamp for when the place index resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    createTime :: Data.ISO8601,+    -- | The data provider of geospatial data. Values can be one of the+    -- following:+    --+    -- -   @Esri@+    --+    -- -   @Here@+    --+    -- For more information about data providers, see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+    dataSource :: Prelude.Text,+    -- | The optional description for the place index resource.+    description :: Prelude.Text,+    -- | The name of the place index resource.+    indexName :: Prelude.Text,+    -- | The timestamp for when the place index resource was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListPlaceIndexesResponseEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pricingPlan', 'listPlaceIndexesResponseEntry_pricingPlan' - No longer used. Always returns @RequestBasedUsage@.+--+-- 'createTime', 'listPlaceIndexesResponseEntry_createTime' - The timestamp for when the place index resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'dataSource', 'listPlaceIndexesResponseEntry_dataSource' - The data provider of geospatial data. Values can be one of the+-- following:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+--+-- 'description', 'listPlaceIndexesResponseEntry_description' - The optional description for the place index resource.+--+-- 'indexName', 'listPlaceIndexesResponseEntry_indexName' - The name of the place index resource.+--+-- 'updateTime', 'listPlaceIndexesResponseEntry_updateTime' - The timestamp for when the place index resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newListPlaceIndexesResponseEntry ::+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  -- | 'indexName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  ListPlaceIndexesResponseEntry+newListPlaceIndexesResponseEntry+  pCreateTime_+  pDataSource_+  pDescription_+  pIndexName_+  pUpdateTime_ =+    ListPlaceIndexesResponseEntry'+      { pricingPlan =+          Prelude.Nothing,+        createTime = Data._Time Lens.# pCreateTime_,+        dataSource = pDataSource_,+        description = pDescription_,+        indexName = pIndexName_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | No longer used. Always returns @RequestBasedUsage@.+listPlaceIndexesResponseEntry_pricingPlan :: Lens.Lens' ListPlaceIndexesResponseEntry (Prelude.Maybe PricingPlan)+listPlaceIndexesResponseEntry_pricingPlan = Lens.lens (\ListPlaceIndexesResponseEntry' {pricingPlan} -> pricingPlan) (\s@ListPlaceIndexesResponseEntry' {} a -> s {pricingPlan = a} :: ListPlaceIndexesResponseEntry)++-- | The timestamp for when the place index resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+listPlaceIndexesResponseEntry_createTime :: Lens.Lens' ListPlaceIndexesResponseEntry Prelude.UTCTime+listPlaceIndexesResponseEntry_createTime = Lens.lens (\ListPlaceIndexesResponseEntry' {createTime} -> createTime) (\s@ListPlaceIndexesResponseEntry' {} a -> s {createTime = a} :: ListPlaceIndexesResponseEntry) Prelude.. Data._Time++-- | The data provider of geospatial data. Values can be one of the+-- following:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+listPlaceIndexesResponseEntry_dataSource :: Lens.Lens' ListPlaceIndexesResponseEntry Prelude.Text+listPlaceIndexesResponseEntry_dataSource = Lens.lens (\ListPlaceIndexesResponseEntry' {dataSource} -> dataSource) (\s@ListPlaceIndexesResponseEntry' {} a -> s {dataSource = a} :: ListPlaceIndexesResponseEntry)++-- | The optional description for the place index resource.+listPlaceIndexesResponseEntry_description :: Lens.Lens' ListPlaceIndexesResponseEntry Prelude.Text+listPlaceIndexesResponseEntry_description = Lens.lens (\ListPlaceIndexesResponseEntry' {description} -> description) (\s@ListPlaceIndexesResponseEntry' {} a -> s {description = a} :: ListPlaceIndexesResponseEntry)++-- | The name of the place index resource.+listPlaceIndexesResponseEntry_indexName :: Lens.Lens' ListPlaceIndexesResponseEntry Prelude.Text+listPlaceIndexesResponseEntry_indexName = Lens.lens (\ListPlaceIndexesResponseEntry' {indexName} -> indexName) (\s@ListPlaceIndexesResponseEntry' {} a -> s {indexName = a} :: ListPlaceIndexesResponseEntry)++-- | The timestamp for when the place index resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+listPlaceIndexesResponseEntry_updateTime :: Lens.Lens' ListPlaceIndexesResponseEntry Prelude.UTCTime+listPlaceIndexesResponseEntry_updateTime = Lens.lens (\ListPlaceIndexesResponseEntry' {updateTime} -> updateTime) (\s@ListPlaceIndexesResponseEntry' {} a -> s {updateTime = a} :: ListPlaceIndexesResponseEntry) Prelude.. Data._Time++instance Data.FromJSON ListPlaceIndexesResponseEntry where+  parseJSON =+    Data.withObject+      "ListPlaceIndexesResponseEntry"+      ( \x ->+          ListPlaceIndexesResponseEntry'+            Prelude.<$> (x Data..:? "PricingPlan")+            Prelude.<*> (x Data..: "CreateTime")+            Prelude.<*> (x Data..: "DataSource")+            Prelude.<*> (x Data..: "Description")+            Prelude.<*> (x Data..: "IndexName")+            Prelude.<*> (x Data..: "UpdateTime")+      )++instance+  Prelude.Hashable+    ListPlaceIndexesResponseEntry+  where+  hashWithSalt _salt ListPlaceIndexesResponseEntry' {..} =+    _salt+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` createTime+      `Prelude.hashWithSalt` dataSource+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` indexName+      `Prelude.hashWithSalt` updateTime++instance Prelude.NFData ListPlaceIndexesResponseEntry where+  rnf ListPlaceIndexesResponseEntry' {..} =+    Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf indexName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/Types/ListRouteCalculatorsResponseEntry.hs view
@@ -0,0 +1,210 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.ListRouteCalculatorsResponseEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.ListRouteCalculatorsResponseEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.PricingPlan+import qualified Amazonka.Prelude as Prelude++-- | A route calculator resource listed in your AWS account.+--+-- /See:/ 'newListRouteCalculatorsResponseEntry' smart constructor.+data ListRouteCalculatorsResponseEntry = ListRouteCalculatorsResponseEntry'+  { -- | Always returns @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | The name of the route calculator resource.+    calculatorName :: Prelude.Text,+    -- | The timestamp when the route calculator resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    --+    -- -   For example, @2020–07-2T12:15:20.000Z+01:00@+    createTime :: Data.ISO8601,+    -- | The data provider of traffic and road network data. Indicates one of the+    -- available providers:+    --+    -- -   @Esri@+    --+    -- -   @Here@+    --+    -- For more information about data providers, see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+    dataSource :: Prelude.Text,+    -- | The optional description of the route calculator resource.+    description :: Prelude.Text,+    -- | The timestamp when the route calculator resource was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    --+    -- -   For example, @2020–07-2T12:15:20.000Z+01:00@+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRouteCalculatorsResponseEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pricingPlan', 'listRouteCalculatorsResponseEntry_pricingPlan' - Always returns @RequestBasedUsage@.+--+-- 'calculatorName', 'listRouteCalculatorsResponseEntry_calculatorName' - The name of the route calculator resource.+--+-- 'createTime', 'listRouteCalculatorsResponseEntry_createTime' - The timestamp when the route calculator resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- -   For example, @2020–07-2T12:15:20.000Z+01:00@+--+-- 'dataSource', 'listRouteCalculatorsResponseEntry_dataSource' - The data provider of traffic and road network data. Indicates one of the+-- available providers:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+--+-- 'description', 'listRouteCalculatorsResponseEntry_description' - The optional description of the route calculator resource.+--+-- 'updateTime', 'listRouteCalculatorsResponseEntry_updateTime' - The timestamp when the route calculator resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- -   For example, @2020–07-2T12:15:20.000Z+01:00@+newListRouteCalculatorsResponseEntry ::+  -- | 'calculatorName'+  Prelude.Text ->+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  ListRouteCalculatorsResponseEntry+newListRouteCalculatorsResponseEntry+  pCalculatorName_+  pCreateTime_+  pDataSource_+  pDescription_+  pUpdateTime_ =+    ListRouteCalculatorsResponseEntry'+      { pricingPlan =+          Prelude.Nothing,+        calculatorName = pCalculatorName_,+        createTime =+          Data._Time Lens.# pCreateTime_,+        dataSource = pDataSource_,+        description = pDescription_,+        updateTime =+          Data._Time Lens.# pUpdateTime_+      }++-- | Always returns @RequestBasedUsage@.+listRouteCalculatorsResponseEntry_pricingPlan :: Lens.Lens' ListRouteCalculatorsResponseEntry (Prelude.Maybe PricingPlan)+listRouteCalculatorsResponseEntry_pricingPlan = Lens.lens (\ListRouteCalculatorsResponseEntry' {pricingPlan} -> pricingPlan) (\s@ListRouteCalculatorsResponseEntry' {} a -> s {pricingPlan = a} :: ListRouteCalculatorsResponseEntry)++-- | The name of the route calculator resource.+listRouteCalculatorsResponseEntry_calculatorName :: Lens.Lens' ListRouteCalculatorsResponseEntry Prelude.Text+listRouteCalculatorsResponseEntry_calculatorName = Lens.lens (\ListRouteCalculatorsResponseEntry' {calculatorName} -> calculatorName) (\s@ListRouteCalculatorsResponseEntry' {} a -> s {calculatorName = a} :: ListRouteCalculatorsResponseEntry)++-- | The timestamp when the route calculator resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- -   For example, @2020–07-2T12:15:20.000Z+01:00@+listRouteCalculatorsResponseEntry_createTime :: Lens.Lens' ListRouteCalculatorsResponseEntry Prelude.UTCTime+listRouteCalculatorsResponseEntry_createTime = Lens.lens (\ListRouteCalculatorsResponseEntry' {createTime} -> createTime) (\s@ListRouteCalculatorsResponseEntry' {} a -> s {createTime = a} :: ListRouteCalculatorsResponseEntry) Prelude.. Data._Time++-- | The data provider of traffic and road network data. Indicates one of the+-- available providers:+--+-- -   @Esri@+--+-- -   @Here@+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+listRouteCalculatorsResponseEntry_dataSource :: Lens.Lens' ListRouteCalculatorsResponseEntry Prelude.Text+listRouteCalculatorsResponseEntry_dataSource = Lens.lens (\ListRouteCalculatorsResponseEntry' {dataSource} -> dataSource) (\s@ListRouteCalculatorsResponseEntry' {} a -> s {dataSource = a} :: ListRouteCalculatorsResponseEntry)++-- | The optional description of the route calculator resource.+listRouteCalculatorsResponseEntry_description :: Lens.Lens' ListRouteCalculatorsResponseEntry Prelude.Text+listRouteCalculatorsResponseEntry_description = Lens.lens (\ListRouteCalculatorsResponseEntry' {description} -> description) (\s@ListRouteCalculatorsResponseEntry' {} a -> s {description = a} :: ListRouteCalculatorsResponseEntry)++-- | The timestamp when the route calculator resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- -   For example, @2020–07-2T12:15:20.000Z+01:00@+listRouteCalculatorsResponseEntry_updateTime :: Lens.Lens' ListRouteCalculatorsResponseEntry Prelude.UTCTime+listRouteCalculatorsResponseEntry_updateTime = Lens.lens (\ListRouteCalculatorsResponseEntry' {updateTime} -> updateTime) (\s@ListRouteCalculatorsResponseEntry' {} a -> s {updateTime = a} :: ListRouteCalculatorsResponseEntry) Prelude.. Data._Time++instance+  Data.FromJSON+    ListRouteCalculatorsResponseEntry+  where+  parseJSON =+    Data.withObject+      "ListRouteCalculatorsResponseEntry"+      ( \x ->+          ListRouteCalculatorsResponseEntry'+            Prelude.<$> (x Data..:? "PricingPlan")+            Prelude.<*> (x Data..: "CalculatorName")+            Prelude.<*> (x Data..: "CreateTime")+            Prelude.<*> (x Data..: "DataSource")+            Prelude.<*> (x Data..: "Description")+            Prelude.<*> (x Data..: "UpdateTime")+      )++instance+  Prelude.Hashable+    ListRouteCalculatorsResponseEntry+  where+  hashWithSalt+    _salt+    ListRouteCalculatorsResponseEntry' {..} =+      _salt+        `Prelude.hashWithSalt` pricingPlan+        `Prelude.hashWithSalt` calculatorName+        `Prelude.hashWithSalt` createTime+        `Prelude.hashWithSalt` dataSource+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` updateTime++instance+  Prelude.NFData+    ListRouteCalculatorsResponseEntry+  where+  rnf ListRouteCalculatorsResponseEntry' {..} =+    Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf calculatorName+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/Types/ListTrackersResponseEntry.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.ListTrackersResponseEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.ListTrackersResponseEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.PricingPlan+import qualified Amazonka.Prelude as Prelude++-- | Contains the tracker resource details.+--+-- /See:/ 'newListTrackersResponseEntry' smart constructor.+data ListTrackersResponseEntry = ListTrackersResponseEntry'+  { -- | Always returns @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | No longer used. Always returns an empty string.+    pricingPlanDataSource :: Prelude.Maybe Prelude.Text,+    -- | The timestamp for when the tracker resource was created in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    createTime :: Data.ISO8601,+    -- | The description for the tracker resource.+    description :: Prelude.Text,+    -- | The name of the tracker resource.+    trackerName :: Prelude.Text,+    -- | The timestamp at which the device\'s position was determined. Uses+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTrackersResponseEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pricingPlan', 'listTrackersResponseEntry_pricingPlan' - Always returns @RequestBasedUsage@.+--+-- 'pricingPlanDataSource', 'listTrackersResponseEntry_pricingPlanDataSource' - No longer used. Always returns an empty string.+--+-- 'createTime', 'listTrackersResponseEntry_createTime' - The timestamp for when the tracker resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+--+-- 'description', 'listTrackersResponseEntry_description' - The description for the tracker resource.+--+-- 'trackerName', 'listTrackersResponseEntry_trackerName' - The name of the tracker resource.+--+-- 'updateTime', 'listTrackersResponseEntry_updateTime' - The timestamp at which the device\'s position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newListTrackersResponseEntry ::+  -- | 'createTime'+  Prelude.UTCTime ->+  -- | 'description'+  Prelude.Text ->+  -- | 'trackerName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  ListTrackersResponseEntry+newListTrackersResponseEntry+  pCreateTime_+  pDescription_+  pTrackerName_+  pUpdateTime_ =+    ListTrackersResponseEntry'+      { pricingPlan =+          Prelude.Nothing,+        pricingPlanDataSource = Prelude.Nothing,+        createTime = Data._Time Lens.# pCreateTime_,+        description = pDescription_,+        trackerName = pTrackerName_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | Always returns @RequestBasedUsage@.+listTrackersResponseEntry_pricingPlan :: Lens.Lens' ListTrackersResponseEntry (Prelude.Maybe PricingPlan)+listTrackersResponseEntry_pricingPlan = Lens.lens (\ListTrackersResponseEntry' {pricingPlan} -> pricingPlan) (\s@ListTrackersResponseEntry' {} a -> s {pricingPlan = a} :: ListTrackersResponseEntry)++-- | No longer used. Always returns an empty string.+listTrackersResponseEntry_pricingPlanDataSource :: Lens.Lens' ListTrackersResponseEntry (Prelude.Maybe Prelude.Text)+listTrackersResponseEntry_pricingPlanDataSource = Lens.lens (\ListTrackersResponseEntry' {pricingPlanDataSource} -> pricingPlanDataSource) (\s@ListTrackersResponseEntry' {} a -> s {pricingPlanDataSource = a} :: ListTrackersResponseEntry)++-- | The timestamp for when the tracker resource was created in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+listTrackersResponseEntry_createTime :: Lens.Lens' ListTrackersResponseEntry Prelude.UTCTime+listTrackersResponseEntry_createTime = Lens.lens (\ListTrackersResponseEntry' {createTime} -> createTime) (\s@ListTrackersResponseEntry' {} a -> s {createTime = a} :: ListTrackersResponseEntry) Prelude.. Data._Time++-- | The description for the tracker resource.+listTrackersResponseEntry_description :: Lens.Lens' ListTrackersResponseEntry Prelude.Text+listTrackersResponseEntry_description = Lens.lens (\ListTrackersResponseEntry' {description} -> description) (\s@ListTrackersResponseEntry' {} a -> s {description = a} :: ListTrackersResponseEntry)++-- | The name of the tracker resource.+listTrackersResponseEntry_trackerName :: Lens.Lens' ListTrackersResponseEntry Prelude.Text+listTrackersResponseEntry_trackerName = Lens.lens (\ListTrackersResponseEntry' {trackerName} -> trackerName) (\s@ListTrackersResponseEntry' {} a -> s {trackerName = a} :: ListTrackersResponseEntry)++-- | The timestamp at which the device\'s position was determined. Uses+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+listTrackersResponseEntry_updateTime :: Lens.Lens' ListTrackersResponseEntry Prelude.UTCTime+listTrackersResponseEntry_updateTime = Lens.lens (\ListTrackersResponseEntry' {updateTime} -> updateTime) (\s@ListTrackersResponseEntry' {} a -> s {updateTime = a} :: ListTrackersResponseEntry) Prelude.. Data._Time++instance Data.FromJSON ListTrackersResponseEntry where+  parseJSON =+    Data.withObject+      "ListTrackersResponseEntry"+      ( \x ->+          ListTrackersResponseEntry'+            Prelude.<$> (x Data..:? "PricingPlan")+            Prelude.<*> (x Data..:? "PricingPlanDataSource")+            Prelude.<*> (x Data..: "CreateTime")+            Prelude.<*> (x Data..: "Description")+            Prelude.<*> (x Data..: "TrackerName")+            Prelude.<*> (x Data..: "UpdateTime")+      )++instance Prelude.Hashable ListTrackersResponseEntry where+  hashWithSalt _salt ListTrackersResponseEntry' {..} =+    _salt+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` pricingPlanDataSource+      `Prelude.hashWithSalt` createTime+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` trackerName+      `Prelude.hashWithSalt` updateTime++instance Prelude.NFData ListTrackersResponseEntry where+  rnf ListTrackersResponseEntry' {..} =+    Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf pricingPlanDataSource+      `Prelude.seq` Prelude.rnf createTime+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf trackerName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/Types/MapConfiguration.hs view
@@ -0,0 +1,313 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.MapConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.MapConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Specifies the map tile style selected from an available provider.+--+-- /See:/ 'newMapConfiguration' smart constructor.+data MapConfiguration = MapConfiguration'+  { -- | Specifies the map style selected from an available data provider.+    --+    -- Valid+    -- <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri map styles>:+    --+    -- -   @VectorEsriDarkGrayCanvas@ – The Esri Dark Gray Canvas map style. A+    --     vector basemap with a dark gray, neutral background with minimal+    --     colors, labels, and features that\'s designed to draw attention to+    --     your thematic content.+    --+    -- -   @RasterEsriImagery@ – The Esri Imagery map style. A raster basemap+    --     that provides one meter or better satellite and aerial imagery in+    --     many parts of the world and lower resolution satellite imagery+    --     worldwide.+    --+    -- -   @VectorEsriLightGrayCanvas@ – The Esri Light Gray Canvas map style,+    --     which provides a detailed vector basemap with a light gray, neutral+    --     background style with minimal colors, labels, and features that\'s+    --     designed to draw attention to your thematic content.+    --+    -- -   @VectorEsriTopographic@ – The Esri Light map style, which provides a+    --     detailed vector basemap with a classic Esri map style.+    --+    -- -   @VectorEsriStreets@ – The Esri World Streets map style, which+    --     provides a detailed vector basemap for the world symbolized with a+    --     classic Esri street map style. The vector tile layer is similar in+    --     content and style to the World Street Map raster map.+    --+    -- -   @VectorEsriNavigation@ – The Esri World Navigation map style, which+    --     provides a detailed basemap for the world symbolized with a custom+    --     navigation map style that\'s designed for use during the day in+    --     mobile devices.+    --+    -- Valid+    -- <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies map styles>:+    --+    -- -   @VectorHereContrast@ – The HERE Contrast (Berlin) map style is a+    --     high contrast detailed base map of the world that blends 3D and 2D+    --     rendering.+    --+    --     The @VectorHereContrast@ style has been renamed from+    --     @VectorHereBerlin@. @VectorHereBerlin@ has been deprecated, but will+    --     continue to work in applications that use it.+    --+    -- -   @VectorHereExplore@ – A default HERE map style containing a neutral,+    --     global map and its features including roads, buildings, landmarks,+    --     and water features. It also now includes a fully designed map of+    --     Japan.+    --+    -- -   @VectorHereExploreTruck@ – A global map containing truck+    --     restrictions and attributes (e.g. width \/ height \/ HAZMAT)+    --     symbolized with highlighted segments and icons on top of HERE+    --     Explore to support use cases within transport and logistics.+    --+    -- -   @RasterHereExploreSatellite@ – A global map containing high+    --     resolution satellite imagery.+    --+    -- -   @HybridHereExploreSatellite@ – A global map displaying the road+    --     network, street names, and city labels over satellite imagery. This+    --     style will automatically retrieve both raster and vector tiles, and+    --     your charges will be based on total tiles retrieved.+    --+    --     Hybrid styles use both vector and raster tiles when rendering the+    --     map that you see. This means that more tiles are retrieved than when+    --     using either vector or raster tiles alone. Your charges will include+    --     all tiles retrieved.+    --+    -- Valid+    -- <https://docs.aws.amazon.com/location/latest/developerguide/open-data.html Open Data (Preview) map styles>:+    --+    -- -   @VectorOpenDataStandardLight@ – The Open Data Standard Light+    --     (preview) map style provides a detailed basemap for the world+    --     suitable for website and mobile application use. The map includes+    --     highways major roads, minor roads, railways, water features, cities,+    --     parks, landmarks, building footprints, and administrative+    --     boundaries.+    --+    --     Open Data maps is in preview. We may add, change, or remove features+    --     before announcing general availability. For more information, see+    --     <https://docs.aws.amazon.com/location/latest/developerguide/open-data.html#open-data-preview Open Data is in preview release>.+    style :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MapConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'style', 'mapConfiguration_style' - Specifies the map style selected from an available data provider.+--+-- Valid+-- <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri map styles>:+--+-- -   @VectorEsriDarkGrayCanvas@ – The Esri Dark Gray Canvas map style. A+--     vector basemap with a dark gray, neutral background with minimal+--     colors, labels, and features that\'s designed to draw attention to+--     your thematic content.+--+-- -   @RasterEsriImagery@ – The Esri Imagery map style. A raster basemap+--     that provides one meter or better satellite and aerial imagery in+--     many parts of the world and lower resolution satellite imagery+--     worldwide.+--+-- -   @VectorEsriLightGrayCanvas@ – The Esri Light Gray Canvas map style,+--     which provides a detailed vector basemap with a light gray, neutral+--     background style with minimal colors, labels, and features that\'s+--     designed to draw attention to your thematic content.+--+-- -   @VectorEsriTopographic@ – The Esri Light map style, which provides a+--     detailed vector basemap with a classic Esri map style.+--+-- -   @VectorEsriStreets@ – The Esri World Streets map style, which+--     provides a detailed vector basemap for the world symbolized with a+--     classic Esri street map style. The vector tile layer is similar in+--     content and style to the World Street Map raster map.+--+-- -   @VectorEsriNavigation@ – The Esri World Navigation map style, which+--     provides a detailed basemap for the world symbolized with a custom+--     navigation map style that\'s designed for use during the day in+--     mobile devices.+--+-- Valid+-- <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies map styles>:+--+-- -   @VectorHereContrast@ – The HERE Contrast (Berlin) map style is a+--     high contrast detailed base map of the world that blends 3D and 2D+--     rendering.+--+--     The @VectorHereContrast@ style has been renamed from+--     @VectorHereBerlin@. @VectorHereBerlin@ has been deprecated, but will+--     continue to work in applications that use it.+--+-- -   @VectorHereExplore@ – A default HERE map style containing a neutral,+--     global map and its features including roads, buildings, landmarks,+--     and water features. It also now includes a fully designed map of+--     Japan.+--+-- -   @VectorHereExploreTruck@ – A global map containing truck+--     restrictions and attributes (e.g. width \/ height \/ HAZMAT)+--     symbolized with highlighted segments and icons on top of HERE+--     Explore to support use cases within transport and logistics.+--+-- -   @RasterHereExploreSatellite@ – A global map containing high+--     resolution satellite imagery.+--+-- -   @HybridHereExploreSatellite@ – A global map displaying the road+--     network, street names, and city labels over satellite imagery. This+--     style will automatically retrieve both raster and vector tiles, and+--     your charges will be based on total tiles retrieved.+--+--     Hybrid styles use both vector and raster tiles when rendering the+--     map that you see. This means that more tiles are retrieved than when+--     using either vector or raster tiles alone. Your charges will include+--     all tiles retrieved.+--+-- Valid+-- <https://docs.aws.amazon.com/location/latest/developerguide/open-data.html Open Data (Preview) map styles>:+--+-- -   @VectorOpenDataStandardLight@ – The Open Data Standard Light+--     (preview) map style provides a detailed basemap for the world+--     suitable for website and mobile application use. The map includes+--     highways major roads, minor roads, railways, water features, cities,+--     parks, landmarks, building footprints, and administrative+--     boundaries.+--+--     Open Data maps is in preview. We may add, change, or remove features+--     before announcing general availability. For more information, see+--     <https://docs.aws.amazon.com/location/latest/developerguide/open-data.html#open-data-preview Open Data is in preview release>.+newMapConfiguration ::+  -- | 'style'+  Prelude.Text ->+  MapConfiguration+newMapConfiguration pStyle_ =+  MapConfiguration' {style = pStyle_}++-- | Specifies the map style selected from an available data provider.+--+-- Valid+-- <https://docs.aws.amazon.com/location/latest/developerguide/esri.html Esri map styles>:+--+-- -   @VectorEsriDarkGrayCanvas@ – The Esri Dark Gray Canvas map style. A+--     vector basemap with a dark gray, neutral background with minimal+--     colors, labels, and features that\'s designed to draw attention to+--     your thematic content.+--+-- -   @RasterEsriImagery@ – The Esri Imagery map style. A raster basemap+--     that provides one meter or better satellite and aerial imagery in+--     many parts of the world and lower resolution satellite imagery+--     worldwide.+--+-- -   @VectorEsriLightGrayCanvas@ – The Esri Light Gray Canvas map style,+--     which provides a detailed vector basemap with a light gray, neutral+--     background style with minimal colors, labels, and features that\'s+--     designed to draw attention to your thematic content.+--+-- -   @VectorEsriTopographic@ – The Esri Light map style, which provides a+--     detailed vector basemap with a classic Esri map style.+--+-- -   @VectorEsriStreets@ – The Esri World Streets map style, which+--     provides a detailed vector basemap for the world symbolized with a+--     classic Esri street map style. The vector tile layer is similar in+--     content and style to the World Street Map raster map.+--+-- -   @VectorEsriNavigation@ – The Esri World Navigation map style, which+--     provides a detailed basemap for the world symbolized with a custom+--     navigation map style that\'s designed for use during the day in+--     mobile devices.+--+-- Valid+-- <https://docs.aws.amazon.com/location/latest/developerguide/HERE.html HERE Technologies map styles>:+--+-- -   @VectorHereContrast@ – The HERE Contrast (Berlin) map style is a+--     high contrast detailed base map of the world that blends 3D and 2D+--     rendering.+--+--     The @VectorHereContrast@ style has been renamed from+--     @VectorHereBerlin@. @VectorHereBerlin@ has been deprecated, but will+--     continue to work in applications that use it.+--+-- -   @VectorHereExplore@ – A default HERE map style containing a neutral,+--     global map and its features including roads, buildings, landmarks,+--     and water features. It also now includes a fully designed map of+--     Japan.+--+-- -   @VectorHereExploreTruck@ – A global map containing truck+--     restrictions and attributes (e.g. width \/ height \/ HAZMAT)+--     symbolized with highlighted segments and icons on top of HERE+--     Explore to support use cases within transport and logistics.+--+-- -   @RasterHereExploreSatellite@ – A global map containing high+--     resolution satellite imagery.+--+-- -   @HybridHereExploreSatellite@ – A global map displaying the road+--     network, street names, and city labels over satellite imagery. This+--     style will automatically retrieve both raster and vector tiles, and+--     your charges will be based on total tiles retrieved.+--+--     Hybrid styles use both vector and raster tiles when rendering the+--     map that you see. This means that more tiles are retrieved than when+--     using either vector or raster tiles alone. Your charges will include+--     all tiles retrieved.+--+-- Valid+-- <https://docs.aws.amazon.com/location/latest/developerguide/open-data.html Open Data (Preview) map styles>:+--+-- -   @VectorOpenDataStandardLight@ – The Open Data Standard Light+--     (preview) map style provides a detailed basemap for the world+--     suitable for website and mobile application use. The map includes+--     highways major roads, minor roads, railways, water features, cities,+--     parks, landmarks, building footprints, and administrative+--     boundaries.+--+--     Open Data maps is in preview. We may add, change, or remove features+--     before announcing general availability. For more information, see+--     <https://docs.aws.amazon.com/location/latest/developerguide/open-data.html#open-data-preview Open Data is in preview release>.+mapConfiguration_style :: Lens.Lens' MapConfiguration Prelude.Text+mapConfiguration_style = Lens.lens (\MapConfiguration' {style} -> style) (\s@MapConfiguration' {} a -> s {style = a} :: MapConfiguration)++instance Data.FromJSON MapConfiguration where+  parseJSON =+    Data.withObject+      "MapConfiguration"+      ( \x ->+          MapConfiguration' Prelude.<$> (x Data..: "Style")+      )++instance Prelude.Hashable MapConfiguration where+  hashWithSalt _salt MapConfiguration' {..} =+    _salt `Prelude.hashWithSalt` style++instance Prelude.NFData MapConfiguration where+  rnf MapConfiguration' {..} = Prelude.rnf style++instance Data.ToJSON MapConfiguration where+  toJSON MapConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Style" Data..= style)]+      )
+ gen/Amazonka/Location/Types/Place.hs view
@@ -0,0 +1,304 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.Place+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.Place where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.PlaceGeometry+import Amazonka.Location.Types.TimeZone+import qualified Amazonka.Prelude as Prelude++-- | Contains details about addresses or points of interest that match the+-- search criteria.+--+-- Not all details are included with all responses. Some details may only+-- be returned by specific data partners.+--+-- /See:/ 'newPlace' smart constructor.+data Place = Place'+  { -- | The numerical portion of an address, such as a building number.+    addressNumber :: Prelude.Maybe Prelude.Text,+    -- | A country\/region specified using+    -- <https://www.iso.org/iso-3166-country-codes.html ISO 3166> 3-digit+    -- country\/region code. For example, @CAN@.+    country :: Prelude.Maybe Prelude.Text,+    -- | @True@ if the result is interpolated from other known places.+    --+    -- @False@ if the Place is a known place.+    --+    -- Not returned when the partner does not provide the information.+    --+    -- For example, returns @False@ for an address location that is found in+    -- the partner data, but returns @True@ if an address does not exist in the+    -- partner data and its location is calculated by interpolating between+    -- other known addresses.+    interpolated :: Prelude.Maybe Prelude.Bool,+    -- | The full name and address of the point of interest such as a city,+    -- region, or country. For example, @123 Any Street, Any Town, USA@.+    label :: Prelude.Maybe Prelude.Text,+    -- | A name for a local area, such as a city or town name. For example,+    -- @Toronto@.+    municipality :: Prelude.Maybe Prelude.Text,+    -- | The name of a community district. For example, @Downtown@.+    neighborhood :: Prelude.Maybe Prelude.Text,+    -- | A group of numbers and letters in a country-specific format, which+    -- accompanies the address for the purpose of identifying a location.+    postalCode :: Prelude.Maybe Prelude.Text,+    -- | A name for an area or geographical division, such as a province or state+    -- name. For example, @British Columbia@.+    region :: Prelude.Maybe Prelude.Text,+    -- | The name for a street or a road to identify a location. For example,+    -- @Main Street@.+    street :: Prelude.Maybe Prelude.Text,+    -- | A country, or an area that\'s part of a larger region. For example,+    -- @Metro Vancouver@.+    subRegion :: Prelude.Maybe Prelude.Text,+    -- | The time zone in which the @Place@ is located. Returned only when using+    -- HERE as the selected partner.+    timeZone :: Prelude.Maybe TimeZone,+    -- | For addresses with multiple units, the unit identifier. Can include+    -- numbers and letters, for example @3B@ or @Unit 123@.+    --+    -- Returned only for a place index that uses Esri as a data provider. Is+    -- not returned for @SearchPlaceIndexForPosition@.+    unitNumber :: Prelude.Maybe Prelude.Text,+    -- | For addresses with a @UnitNumber@, the type of unit. For example,+    -- @Apartment@.+    unitType :: Prelude.Maybe Prelude.Text,+    geometry :: PlaceGeometry+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Place' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addressNumber', 'place_addressNumber' - The numerical portion of an address, such as a building number.+--+-- 'country', 'place_country' - A country\/region specified using+-- <https://www.iso.org/iso-3166-country-codes.html ISO 3166> 3-digit+-- country\/region code. For example, @CAN@.+--+-- 'interpolated', 'place_interpolated' - @True@ if the result is interpolated from other known places.+--+-- @False@ if the Place is a known place.+--+-- Not returned when the partner does not provide the information.+--+-- For example, returns @False@ for an address location that is found in+-- the partner data, but returns @True@ if an address does not exist in the+-- partner data and its location is calculated by interpolating between+-- other known addresses.+--+-- 'label', 'place_label' - The full name and address of the point of interest such as a city,+-- region, or country. For example, @123 Any Street, Any Town, USA@.+--+-- 'municipality', 'place_municipality' - A name for a local area, such as a city or town name. For example,+-- @Toronto@.+--+-- 'neighborhood', 'place_neighborhood' - The name of a community district. For example, @Downtown@.+--+-- 'postalCode', 'place_postalCode' - A group of numbers and letters in a country-specific format, which+-- accompanies the address for the purpose of identifying a location.+--+-- 'region', 'place_region' - A name for an area or geographical division, such as a province or state+-- name. For example, @British Columbia@.+--+-- 'street', 'place_street' - The name for a street or a road to identify a location. For example,+-- @Main Street@.+--+-- 'subRegion', 'place_subRegion' - A country, or an area that\'s part of a larger region. For example,+-- @Metro Vancouver@.+--+-- 'timeZone', 'place_timeZone' - The time zone in which the @Place@ is located. Returned only when using+-- HERE as the selected partner.+--+-- 'unitNumber', 'place_unitNumber' - For addresses with multiple units, the unit identifier. Can include+-- numbers and letters, for example @3B@ or @Unit 123@.+--+-- Returned only for a place index that uses Esri as a data provider. Is+-- not returned for @SearchPlaceIndexForPosition@.+--+-- 'unitType', 'place_unitType' - For addresses with a @UnitNumber@, the type of unit. For example,+-- @Apartment@.+--+-- 'geometry', 'place_geometry' - Undocumented member.+newPlace ::+  -- | 'geometry'+  PlaceGeometry ->+  Place+newPlace pGeometry_ =+  Place'+    { addressNumber = Prelude.Nothing,+      country = Prelude.Nothing,+      interpolated = Prelude.Nothing,+      label = Prelude.Nothing,+      municipality = Prelude.Nothing,+      neighborhood = Prelude.Nothing,+      postalCode = Prelude.Nothing,+      region = Prelude.Nothing,+      street = Prelude.Nothing,+      subRegion = Prelude.Nothing,+      timeZone = Prelude.Nothing,+      unitNumber = Prelude.Nothing,+      unitType = Prelude.Nothing,+      geometry = pGeometry_+    }++-- | The numerical portion of an address, such as a building number.+place_addressNumber :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_addressNumber = Lens.lens (\Place' {addressNumber} -> addressNumber) (\s@Place' {} a -> s {addressNumber = a} :: Place)++-- | A country\/region specified using+-- <https://www.iso.org/iso-3166-country-codes.html ISO 3166> 3-digit+-- country\/region code. For example, @CAN@.+place_country :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_country = Lens.lens (\Place' {country} -> country) (\s@Place' {} a -> s {country = a} :: Place)++-- | @True@ if the result is interpolated from other known places.+--+-- @False@ if the Place is a known place.+--+-- Not returned when the partner does not provide the information.+--+-- For example, returns @False@ for an address location that is found in+-- the partner data, but returns @True@ if an address does not exist in the+-- partner data and its location is calculated by interpolating between+-- other known addresses.+place_interpolated :: Lens.Lens' Place (Prelude.Maybe Prelude.Bool)+place_interpolated = Lens.lens (\Place' {interpolated} -> interpolated) (\s@Place' {} a -> s {interpolated = a} :: Place)++-- | The full name and address of the point of interest such as a city,+-- region, or country. For example, @123 Any Street, Any Town, USA@.+place_label :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_label = Lens.lens (\Place' {label} -> label) (\s@Place' {} a -> s {label = a} :: Place)++-- | A name for a local area, such as a city or town name. For example,+-- @Toronto@.+place_municipality :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_municipality = Lens.lens (\Place' {municipality} -> municipality) (\s@Place' {} a -> s {municipality = a} :: Place)++-- | The name of a community district. For example, @Downtown@.+place_neighborhood :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_neighborhood = Lens.lens (\Place' {neighborhood} -> neighborhood) (\s@Place' {} a -> s {neighborhood = a} :: Place)++-- | A group of numbers and letters in a country-specific format, which+-- accompanies the address for the purpose of identifying a location.+place_postalCode :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_postalCode = Lens.lens (\Place' {postalCode} -> postalCode) (\s@Place' {} a -> s {postalCode = a} :: Place)++-- | A name for an area or geographical division, such as a province or state+-- name. For example, @British Columbia@.+place_region :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_region = Lens.lens (\Place' {region} -> region) (\s@Place' {} a -> s {region = a} :: Place)++-- | The name for a street or a road to identify a location. For example,+-- @Main Street@.+place_street :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_street = Lens.lens (\Place' {street} -> street) (\s@Place' {} a -> s {street = a} :: Place)++-- | A country, or an area that\'s part of a larger region. For example,+-- @Metro Vancouver@.+place_subRegion :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_subRegion = Lens.lens (\Place' {subRegion} -> subRegion) (\s@Place' {} a -> s {subRegion = a} :: Place)++-- | The time zone in which the @Place@ is located. Returned only when using+-- HERE as the selected partner.+place_timeZone :: Lens.Lens' Place (Prelude.Maybe TimeZone)+place_timeZone = Lens.lens (\Place' {timeZone} -> timeZone) (\s@Place' {} a -> s {timeZone = a} :: Place)++-- | For addresses with multiple units, the unit identifier. Can include+-- numbers and letters, for example @3B@ or @Unit 123@.+--+-- Returned only for a place index that uses Esri as a data provider. Is+-- not returned for @SearchPlaceIndexForPosition@.+place_unitNumber :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_unitNumber = Lens.lens (\Place' {unitNumber} -> unitNumber) (\s@Place' {} a -> s {unitNumber = a} :: Place)++-- | For addresses with a @UnitNumber@, the type of unit. For example,+-- @Apartment@.+place_unitType :: Lens.Lens' Place (Prelude.Maybe Prelude.Text)+place_unitType = Lens.lens (\Place' {unitType} -> unitType) (\s@Place' {} a -> s {unitType = a} :: Place)++-- | Undocumented member.+place_geometry :: Lens.Lens' Place PlaceGeometry+place_geometry = Lens.lens (\Place' {geometry} -> geometry) (\s@Place' {} a -> s {geometry = a} :: Place)++instance Data.FromJSON Place where+  parseJSON =+    Data.withObject+      "Place"+      ( \x ->+          Place'+            Prelude.<$> (x Data..:? "AddressNumber")+            Prelude.<*> (x Data..:? "Country")+            Prelude.<*> (x Data..:? "Interpolated")+            Prelude.<*> (x Data..:? "Label")+            Prelude.<*> (x Data..:? "Municipality")+            Prelude.<*> (x Data..:? "Neighborhood")+            Prelude.<*> (x Data..:? "PostalCode")+            Prelude.<*> (x Data..:? "Region")+            Prelude.<*> (x Data..:? "Street")+            Prelude.<*> (x Data..:? "SubRegion")+            Prelude.<*> (x Data..:? "TimeZone")+            Prelude.<*> (x Data..:? "UnitNumber")+            Prelude.<*> (x Data..:? "UnitType")+            Prelude.<*> (x Data..: "Geometry")+      )++instance Prelude.Hashable Place where+  hashWithSalt _salt Place' {..} =+    _salt+      `Prelude.hashWithSalt` addressNumber+      `Prelude.hashWithSalt` country+      `Prelude.hashWithSalt` interpolated+      `Prelude.hashWithSalt` label+      `Prelude.hashWithSalt` municipality+      `Prelude.hashWithSalt` neighborhood+      `Prelude.hashWithSalt` postalCode+      `Prelude.hashWithSalt` region+      `Prelude.hashWithSalt` street+      `Prelude.hashWithSalt` subRegion+      `Prelude.hashWithSalt` timeZone+      `Prelude.hashWithSalt` unitNumber+      `Prelude.hashWithSalt` unitType+      `Prelude.hashWithSalt` geometry++instance Prelude.NFData Place where+  rnf Place' {..} =+    Prelude.rnf addressNumber+      `Prelude.seq` Prelude.rnf country+      `Prelude.seq` Prelude.rnf interpolated+      `Prelude.seq` Prelude.rnf label+      `Prelude.seq` Prelude.rnf municipality+      `Prelude.seq` Prelude.rnf neighborhood+      `Prelude.seq` Prelude.rnf postalCode+      `Prelude.seq` Prelude.rnf region+      `Prelude.seq` Prelude.rnf street+      `Prelude.seq` Prelude.rnf subRegion+      `Prelude.seq` Prelude.rnf timeZone+      `Prelude.seq` Prelude.rnf unitNumber+      `Prelude.seq` Prelude.rnf unitType+      `Prelude.seq` Prelude.rnf geometry
+ gen/Amazonka/Location/Types/PlaceGeometry.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.Location.Types.PlaceGeometry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.PlaceGeometry 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++-- | Places uses a point geometry to specify a location or a Place.+--+-- /See:/ 'newPlaceGeometry' smart constructor.+data PlaceGeometry = PlaceGeometry'+  { -- | A single point geometry specifies a location for a Place using+    -- <https://gisgeography.com/wgs84-world-geodetic-system/ WGS 84>+    -- coordinates:+    --+    -- -   /x/ — Specifies the x coordinate or longitude.+    --+    -- -   /y/ — Specifies the y coordinate or latitude.+    point :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty Prelude.Double))+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PlaceGeometry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'point', 'placeGeometry_point' - A single point geometry specifies a location for a Place using+-- <https://gisgeography.com/wgs84-world-geodetic-system/ WGS 84>+-- coordinates:+--+-- -   /x/ — Specifies the x coordinate or longitude.+--+-- -   /y/ — Specifies the y coordinate or latitude.+newPlaceGeometry ::+  PlaceGeometry+newPlaceGeometry =+  PlaceGeometry' {point = Prelude.Nothing}++-- | A single point geometry specifies a location for a Place using+-- <https://gisgeography.com/wgs84-world-geodetic-system/ WGS 84>+-- coordinates:+--+-- -   /x/ — Specifies the x coordinate or longitude.+--+-- -   /y/ — Specifies the y coordinate or latitude.+placeGeometry_point :: Lens.Lens' PlaceGeometry (Prelude.Maybe (Prelude.NonEmpty Prelude.Double))+placeGeometry_point = Lens.lens (\PlaceGeometry' {point} -> point) (\s@PlaceGeometry' {} a -> s {point = a} :: PlaceGeometry) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++instance Data.FromJSON PlaceGeometry where+  parseJSON =+    Data.withObject+      "PlaceGeometry"+      ( \x ->+          PlaceGeometry' Prelude.<$> (x Data..:? "Point")+      )++instance Prelude.Hashable PlaceGeometry where+  hashWithSalt _salt PlaceGeometry' {..} =+    _salt `Prelude.hashWithSalt` point++instance Prelude.NFData PlaceGeometry where+  rnf PlaceGeometry' {..} = Prelude.rnf point
+ gen/Amazonka/Location/Types/PositionFiltering.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.Location.Types.PositionFiltering+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.PositionFiltering+  ( PositionFiltering+      ( ..,+        PositionFiltering_AccuracyBased,+        PositionFiltering_DistanceBased,+        PositionFiltering_TimeBased+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PositionFiltering = PositionFiltering'+  { fromPositionFiltering ::+      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 PositionFiltering_AccuracyBased :: PositionFiltering+pattern PositionFiltering_AccuracyBased = PositionFiltering' "AccuracyBased"++pattern PositionFiltering_DistanceBased :: PositionFiltering+pattern PositionFiltering_DistanceBased = PositionFiltering' "DistanceBased"++pattern PositionFiltering_TimeBased :: PositionFiltering+pattern PositionFiltering_TimeBased = PositionFiltering' "TimeBased"++{-# COMPLETE+  PositionFiltering_AccuracyBased,+  PositionFiltering_DistanceBased,+  PositionFiltering_TimeBased,+  PositionFiltering'+  #-}
+ gen/Amazonka/Location/Types/PositionalAccuracy.hs view
@@ -0,0 +1,80 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.PositionalAccuracy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.PositionalAccuracy where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Defines the level of certainty of the position.+--+-- /See:/ 'newPositionalAccuracy' smart constructor.+data PositionalAccuracy = PositionalAccuracy'+  { -- | Estimated maximum distance, in meters, between the measured position and+    -- the true position of a device, along the Earth\'s surface.+    horizontal :: Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PositionalAccuracy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'horizontal', 'positionalAccuracy_horizontal' - Estimated maximum distance, in meters, between the measured position and+-- the true position of a device, along the Earth\'s surface.+newPositionalAccuracy ::+  -- | 'horizontal'+  Prelude.Double ->+  PositionalAccuracy+newPositionalAccuracy pHorizontal_ =+  PositionalAccuracy' {horizontal = pHorizontal_}++-- | Estimated maximum distance, in meters, between the measured position and+-- the true position of a device, along the Earth\'s surface.+positionalAccuracy_horizontal :: Lens.Lens' PositionalAccuracy Prelude.Double+positionalAccuracy_horizontal = Lens.lens (\PositionalAccuracy' {horizontal} -> horizontal) (\s@PositionalAccuracy' {} a -> s {horizontal = a} :: PositionalAccuracy)++instance Data.FromJSON PositionalAccuracy where+  parseJSON =+    Data.withObject+      "PositionalAccuracy"+      ( \x ->+          PositionalAccuracy'+            Prelude.<$> (x Data..: "Horizontal")+      )++instance Prelude.Hashable PositionalAccuracy where+  hashWithSalt _salt PositionalAccuracy' {..} =+    _salt `Prelude.hashWithSalt` horizontal++instance Prelude.NFData PositionalAccuracy where+  rnf PositionalAccuracy' {..} = Prelude.rnf horizontal++instance Data.ToJSON PositionalAccuracy where+  toJSON PositionalAccuracy' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Horizontal" Data..= horizontal)]+      )
+ gen/Amazonka/Location/Types/PricingPlan.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.Location.Types.PricingPlan+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.PricingPlan+  ( PricingPlan+      ( ..,+        PricingPlan_MobileAssetManagement,+        PricingPlan_MobileAssetTracking,+        PricingPlan_RequestBasedUsage+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PricingPlan = PricingPlan'+  { fromPricingPlan ::+      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 PricingPlan_MobileAssetManagement :: PricingPlan+pattern PricingPlan_MobileAssetManagement = PricingPlan' "MobileAssetManagement"++pattern PricingPlan_MobileAssetTracking :: PricingPlan+pattern PricingPlan_MobileAssetTracking = PricingPlan' "MobileAssetTracking"++pattern PricingPlan_RequestBasedUsage :: PricingPlan+pattern PricingPlan_RequestBasedUsage = PricingPlan' "RequestBasedUsage"++{-# COMPLETE+  PricingPlan_MobileAssetManagement,+  PricingPlan_MobileAssetTracking,+  PricingPlan_RequestBasedUsage,+  PricingPlan'+  #-}
+ gen/Amazonka/Location/Types/RouteMatrixEntry.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.RouteMatrixEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.RouteMatrixEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.RouteMatrixEntryError+import qualified Amazonka.Prelude as Prelude++-- | The result for the calculated route of one @DeparturePosition@+-- @DestinationPosition@ pair.+--+-- /See:/ 'newRouteMatrixEntry' smart constructor.+data RouteMatrixEntry = RouteMatrixEntry'+  { -- | The total distance of travel for the route.+    distance :: Prelude.Maybe Prelude.Double,+    -- | The expected duration of travel for the route.+    durationSeconds :: Prelude.Maybe Prelude.Double,+    -- | An error corresponding to the calculation of a route between the+    -- @DeparturePosition@ and @DestinationPosition@.+    error :: Prelude.Maybe RouteMatrixEntryError+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RouteMatrixEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'distance', 'routeMatrixEntry_distance' - The total distance of travel for the route.+--+-- 'durationSeconds', 'routeMatrixEntry_durationSeconds' - The expected duration of travel for the route.+--+-- 'error', 'routeMatrixEntry_error' - An error corresponding to the calculation of a route between the+-- @DeparturePosition@ and @DestinationPosition@.+newRouteMatrixEntry ::+  RouteMatrixEntry+newRouteMatrixEntry =+  RouteMatrixEntry'+    { distance = Prelude.Nothing,+      durationSeconds = Prelude.Nothing,+      error = Prelude.Nothing+    }++-- | The total distance of travel for the route.+routeMatrixEntry_distance :: Lens.Lens' RouteMatrixEntry (Prelude.Maybe Prelude.Double)+routeMatrixEntry_distance = Lens.lens (\RouteMatrixEntry' {distance} -> distance) (\s@RouteMatrixEntry' {} a -> s {distance = a} :: RouteMatrixEntry)++-- | The expected duration of travel for the route.+routeMatrixEntry_durationSeconds :: Lens.Lens' RouteMatrixEntry (Prelude.Maybe Prelude.Double)+routeMatrixEntry_durationSeconds = Lens.lens (\RouteMatrixEntry' {durationSeconds} -> durationSeconds) (\s@RouteMatrixEntry' {} a -> s {durationSeconds = a} :: RouteMatrixEntry)++-- | An error corresponding to the calculation of a route between the+-- @DeparturePosition@ and @DestinationPosition@.+routeMatrixEntry_error :: Lens.Lens' RouteMatrixEntry (Prelude.Maybe RouteMatrixEntryError)+routeMatrixEntry_error = Lens.lens (\RouteMatrixEntry' {error} -> error) (\s@RouteMatrixEntry' {} a -> s {error = a} :: RouteMatrixEntry)++instance Data.FromJSON RouteMatrixEntry where+  parseJSON =+    Data.withObject+      "RouteMatrixEntry"+      ( \x ->+          RouteMatrixEntry'+            Prelude.<$> (x Data..:? "Distance")+            Prelude.<*> (x Data..:? "DurationSeconds")+            Prelude.<*> (x Data..:? "Error")+      )++instance Prelude.Hashable RouteMatrixEntry where+  hashWithSalt _salt RouteMatrixEntry' {..} =+    _salt+      `Prelude.hashWithSalt` distance+      `Prelude.hashWithSalt` durationSeconds+      `Prelude.hashWithSalt` error++instance Prelude.NFData RouteMatrixEntry where+  rnf RouteMatrixEntry' {..} =+    Prelude.rnf distance+      `Prelude.seq` Prelude.rnf durationSeconds+      `Prelude.seq` Prelude.rnf error
+ gen/Amazonka/Location/Types/RouteMatrixEntryError.hs view
@@ -0,0 +1,107 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.RouteMatrixEntryError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.RouteMatrixEntryError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.RouteMatrixErrorCode+import qualified Amazonka.Prelude as Prelude++-- | An error corresponding to the calculation of a route between the+-- @DeparturePosition@ and @DestinationPosition@.+--+-- The error code can be one of the following:+--+-- -   @RouteNotFound@ - Unable to find a valid route with the given+--     parameters.+--+-- -   @RouteTooLong@ - Route calculation went beyond the maximum size of a+--     route and was terminated before completion.+--+-- -   @PositionsNotFound@ - One or more of the input positions were not+--     found on the route network.+--+-- -   @DestinationPositionNotFound@ - The destination position was not+--     found on the route network.+--+-- -   @DeparturePositionNotFound@ - The departure position was not found+--     on the route network.+--+-- -   @OtherValidationError@ - The given inputs were not valid or a route+--     was not found. More information is given in the error @Message@+--+-- /See:/ 'newRouteMatrixEntryError' smart constructor.+data RouteMatrixEntryError = RouteMatrixEntryError'+  { -- | A message about the error that occurred for the route calculation.+    message :: Prelude.Maybe Prelude.Text,+    -- | The type of error which occurred for the route calculation.+    code :: RouteMatrixErrorCode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RouteMatrixEntryError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'routeMatrixEntryError_message' - A message about the error that occurred for the route calculation.+--+-- 'code', 'routeMatrixEntryError_code' - The type of error which occurred for the route calculation.+newRouteMatrixEntryError ::+  -- | 'code'+  RouteMatrixErrorCode ->+  RouteMatrixEntryError+newRouteMatrixEntryError pCode_ =+  RouteMatrixEntryError'+    { message = Prelude.Nothing,+      code = pCode_+    }++-- | A message about the error that occurred for the route calculation.+routeMatrixEntryError_message :: Lens.Lens' RouteMatrixEntryError (Prelude.Maybe Prelude.Text)+routeMatrixEntryError_message = Lens.lens (\RouteMatrixEntryError' {message} -> message) (\s@RouteMatrixEntryError' {} a -> s {message = a} :: RouteMatrixEntryError)++-- | The type of error which occurred for the route calculation.+routeMatrixEntryError_code :: Lens.Lens' RouteMatrixEntryError RouteMatrixErrorCode+routeMatrixEntryError_code = Lens.lens (\RouteMatrixEntryError' {code} -> code) (\s@RouteMatrixEntryError' {} a -> s {code = a} :: RouteMatrixEntryError)++instance Data.FromJSON RouteMatrixEntryError where+  parseJSON =+    Data.withObject+      "RouteMatrixEntryError"+      ( \x ->+          RouteMatrixEntryError'+            Prelude.<$> (x Data..:? "Message")+            Prelude.<*> (x Data..: "Code")+      )++instance Prelude.Hashable RouteMatrixEntryError where+  hashWithSalt _salt RouteMatrixEntryError' {..} =+    _salt+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` code++instance Prelude.NFData RouteMatrixEntryError where+  rnf RouteMatrixEntryError' {..} =+    Prelude.rnf message `Prelude.seq` Prelude.rnf code
+ gen/Amazonka/Location/Types/RouteMatrixErrorCode.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.RouteMatrixErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.RouteMatrixErrorCode+  ( RouteMatrixErrorCode+      ( ..,+        RouteMatrixErrorCode_DeparturePositionNotFound,+        RouteMatrixErrorCode_DestinationPositionNotFound,+        RouteMatrixErrorCode_OtherValidationError,+        RouteMatrixErrorCode_PositionsNotFound,+        RouteMatrixErrorCode_RouteNotFound,+        RouteMatrixErrorCode_RouteTooLong+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RouteMatrixErrorCode = RouteMatrixErrorCode'+  { fromRouteMatrixErrorCode ::+      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 RouteMatrixErrorCode_DeparturePositionNotFound :: RouteMatrixErrorCode+pattern RouteMatrixErrorCode_DeparturePositionNotFound = RouteMatrixErrorCode' "DeparturePositionNotFound"++pattern RouteMatrixErrorCode_DestinationPositionNotFound :: RouteMatrixErrorCode+pattern RouteMatrixErrorCode_DestinationPositionNotFound = RouteMatrixErrorCode' "DestinationPositionNotFound"++pattern RouteMatrixErrorCode_OtherValidationError :: RouteMatrixErrorCode+pattern RouteMatrixErrorCode_OtherValidationError = RouteMatrixErrorCode' "OtherValidationError"++pattern RouteMatrixErrorCode_PositionsNotFound :: RouteMatrixErrorCode+pattern RouteMatrixErrorCode_PositionsNotFound = RouteMatrixErrorCode' "PositionsNotFound"++pattern RouteMatrixErrorCode_RouteNotFound :: RouteMatrixErrorCode+pattern RouteMatrixErrorCode_RouteNotFound = RouteMatrixErrorCode' "RouteNotFound"++pattern RouteMatrixErrorCode_RouteTooLong :: RouteMatrixErrorCode+pattern RouteMatrixErrorCode_RouteTooLong = RouteMatrixErrorCode' "RouteTooLong"++{-# COMPLETE+  RouteMatrixErrorCode_DeparturePositionNotFound,+  RouteMatrixErrorCode_DestinationPositionNotFound,+  RouteMatrixErrorCode_OtherValidationError,+  RouteMatrixErrorCode_PositionsNotFound,+  RouteMatrixErrorCode_RouteNotFound,+  RouteMatrixErrorCode_RouteTooLong,+  RouteMatrixErrorCode'+  #-}
+ gen/Amazonka/Location/Types/SearchForPositionResult.hs view
@@ -0,0 +1,126 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.SearchForPositionResult+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.SearchForPositionResult where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.Place+import qualified Amazonka.Prelude as Prelude++-- | Contains a search result from a position search query that is run on a+-- place index resource.+--+-- /See:/ 'newSearchForPositionResult' smart constructor.+data SearchForPositionResult = SearchForPositionResult'+  { -- | The unique identifier of the place. You can use this with the @GetPlace@+    -- operation to find the place again later.+    --+    -- For @SearchPlaceIndexForPosition@ operations, the @PlaceId@ is returned+    -- only by place indexes that use HERE as a data provider.+    placeId :: Prelude.Maybe Prelude.Text,+    -- | The distance in meters of a great-circle arc between the query position+    -- and the result.+    --+    -- A great-circle arc is the shortest path on a sphere, in this case the+    -- Earth. This returns the shortest distance between two locations.+    distance :: Prelude.Double,+    -- | Details about the search result, such as its address and position.+    place :: Place+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchForPositionResult' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'placeId', 'searchForPositionResult_placeId' - The unique identifier of the place. You can use this with the @GetPlace@+-- operation to find the place again later.+--+-- For @SearchPlaceIndexForPosition@ operations, the @PlaceId@ is returned+-- only by place indexes that use HERE as a data provider.+--+-- 'distance', 'searchForPositionResult_distance' - The distance in meters of a great-circle arc between the query position+-- and the result.+--+-- A great-circle arc is the shortest path on a sphere, in this case the+-- Earth. This returns the shortest distance between two locations.+--+-- 'place', 'searchForPositionResult_place' - Details about the search result, such as its address and position.+newSearchForPositionResult ::+  -- | 'distance'+  Prelude.Double ->+  -- | 'place'+  Place ->+  SearchForPositionResult+newSearchForPositionResult pDistance_ pPlace_ =+  SearchForPositionResult'+    { placeId = Prelude.Nothing,+      distance = pDistance_,+      place = pPlace_+    }++-- | The unique identifier of the place. You can use this with the @GetPlace@+-- operation to find the place again later.+--+-- For @SearchPlaceIndexForPosition@ operations, the @PlaceId@ is returned+-- only by place indexes that use HERE as a data provider.+searchForPositionResult_placeId :: Lens.Lens' SearchForPositionResult (Prelude.Maybe Prelude.Text)+searchForPositionResult_placeId = Lens.lens (\SearchForPositionResult' {placeId} -> placeId) (\s@SearchForPositionResult' {} a -> s {placeId = a} :: SearchForPositionResult)++-- | The distance in meters of a great-circle arc between the query position+-- and the result.+--+-- A great-circle arc is the shortest path on a sphere, in this case the+-- Earth. This returns the shortest distance between two locations.+searchForPositionResult_distance :: Lens.Lens' SearchForPositionResult Prelude.Double+searchForPositionResult_distance = Lens.lens (\SearchForPositionResult' {distance} -> distance) (\s@SearchForPositionResult' {} a -> s {distance = a} :: SearchForPositionResult)++-- | Details about the search result, such as its address and position.+searchForPositionResult_place :: Lens.Lens' SearchForPositionResult Place+searchForPositionResult_place = Lens.lens (\SearchForPositionResult' {place} -> place) (\s@SearchForPositionResult' {} a -> s {place = a} :: SearchForPositionResult)++instance Data.FromJSON SearchForPositionResult where+  parseJSON =+    Data.withObject+      "SearchForPositionResult"+      ( \x ->+          SearchForPositionResult'+            Prelude.<$> (x Data..:? "PlaceId")+            Prelude.<*> (x Data..: "Distance")+            Prelude.<*> (x Data..: "Place")+      )++instance Prelude.Hashable SearchForPositionResult where+  hashWithSalt _salt SearchForPositionResult' {..} =+    _salt+      `Prelude.hashWithSalt` placeId+      `Prelude.hashWithSalt` distance+      `Prelude.hashWithSalt` place++instance Prelude.NFData SearchForPositionResult where+  rnf SearchForPositionResult' {..} =+    Prelude.rnf placeId+      `Prelude.seq` Prelude.rnf distance+      `Prelude.seq` Prelude.rnf place
+ gen/Amazonka/Location/Types/SearchForSuggestionsResult.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.SearchForSuggestionsResult+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.SearchForSuggestionsResult where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains a place suggestion resulting from a place suggestion query that+-- is run on a place index resource.+--+-- /See:/ 'newSearchForSuggestionsResult' smart constructor.+data SearchForSuggestionsResult = SearchForSuggestionsResult'+  { -- | The unique identifier of the place. You can use this with the @GetPlace@+    -- operation to find the place again later.+    --+    -- For @SearchPlaceIndexForSuggestions@ operations, the @PlaceId@ is+    -- returned by place indexes that use HERE or Esri as data providers.+    placeId :: Prelude.Maybe Prelude.Text,+    -- | The text of the place suggestion, typically formatted as an address+    -- string.+    text :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchForSuggestionsResult' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'placeId', 'searchForSuggestionsResult_placeId' - The unique identifier of the place. You can use this with the @GetPlace@+-- operation to find the place again later.+--+-- For @SearchPlaceIndexForSuggestions@ operations, the @PlaceId@ is+-- returned by place indexes that use HERE or Esri as data providers.+--+-- 'text', 'searchForSuggestionsResult_text' - The text of the place suggestion, typically formatted as an address+-- string.+newSearchForSuggestionsResult ::+  -- | 'text'+  Prelude.Text ->+  SearchForSuggestionsResult+newSearchForSuggestionsResult pText_ =+  SearchForSuggestionsResult'+    { placeId =+        Prelude.Nothing,+      text = pText_+    }++-- | The unique identifier of the place. You can use this with the @GetPlace@+-- operation to find the place again later.+--+-- For @SearchPlaceIndexForSuggestions@ operations, the @PlaceId@ is+-- returned by place indexes that use HERE or Esri as data providers.+searchForSuggestionsResult_placeId :: Lens.Lens' SearchForSuggestionsResult (Prelude.Maybe Prelude.Text)+searchForSuggestionsResult_placeId = Lens.lens (\SearchForSuggestionsResult' {placeId} -> placeId) (\s@SearchForSuggestionsResult' {} a -> s {placeId = a} :: SearchForSuggestionsResult)++-- | The text of the place suggestion, typically formatted as an address+-- string.+searchForSuggestionsResult_text :: Lens.Lens' SearchForSuggestionsResult Prelude.Text+searchForSuggestionsResult_text = Lens.lens (\SearchForSuggestionsResult' {text} -> text) (\s@SearchForSuggestionsResult' {} a -> s {text = a} :: SearchForSuggestionsResult)++instance Data.FromJSON SearchForSuggestionsResult where+  parseJSON =+    Data.withObject+      "SearchForSuggestionsResult"+      ( \x ->+          SearchForSuggestionsResult'+            Prelude.<$> (x Data..:? "PlaceId")+            Prelude.<*> (x Data..: "Text")+      )++instance Prelude.Hashable SearchForSuggestionsResult where+  hashWithSalt _salt SearchForSuggestionsResult' {..} =+    _salt+      `Prelude.hashWithSalt` placeId+      `Prelude.hashWithSalt` text++instance Prelude.NFData SearchForSuggestionsResult where+  rnf SearchForSuggestionsResult' {..} =+    Prelude.rnf placeId `Prelude.seq` Prelude.rnf text
+ gen/Amazonka/Location/Types/SearchForTextResult.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.Location.Types.SearchForTextResult+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.SearchForTextResult where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.Place+import qualified Amazonka.Prelude as Prelude++-- | Contains a search result from a text search query that is run on a place+-- index resource.+--+-- /See:/ 'newSearchForTextResult' smart constructor.+data SearchForTextResult = SearchForTextResult'+  { -- | The distance in meters of a great-circle arc between the bias position+    -- specified and the result. @Distance@ will be returned only if a bias+    -- position was specified in the query.+    --+    -- A great-circle arc is the shortest path on a sphere, in this case the+    -- Earth. This returns the shortest distance between two locations.+    distance :: Prelude.Maybe Prelude.Double,+    -- | The unique identifier of the place. You can use this with the @GetPlace@+    -- operation to find the place again later.+    --+    -- For @SearchPlaceIndexForText@ operations, the @PlaceId@ is returned only+    -- by place indexes that use HERE as a data provider.+    placeId :: Prelude.Maybe Prelude.Text,+    -- | The relative confidence in the match for a result among the results+    -- returned. For example, if more fields for an address match (including+    -- house number, street, city, country\/region, and postal code), the+    -- relevance score is closer to 1.+    --+    -- Returned only when the partner selected is Esri.+    relevance :: Prelude.Maybe Prelude.Double,+    -- | Details about the search result, such as its address and position.+    place :: Place+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchForTextResult' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'distance', 'searchForTextResult_distance' - The distance in meters of a great-circle arc between the bias position+-- specified and the result. @Distance@ will be returned only if a bias+-- position was specified in the query.+--+-- A great-circle arc is the shortest path on a sphere, in this case the+-- Earth. This returns the shortest distance between two locations.+--+-- 'placeId', 'searchForTextResult_placeId' - The unique identifier of the place. You can use this with the @GetPlace@+-- operation to find the place again later.+--+-- For @SearchPlaceIndexForText@ operations, the @PlaceId@ is returned only+-- by place indexes that use HERE as a data provider.+--+-- 'relevance', 'searchForTextResult_relevance' - The relative confidence in the match for a result among the results+-- returned. For example, if more fields for an address match (including+-- house number, street, city, country\/region, and postal code), the+-- relevance score is closer to 1.+--+-- Returned only when the partner selected is Esri.+--+-- 'place', 'searchForTextResult_place' - Details about the search result, such as its address and position.+newSearchForTextResult ::+  -- | 'place'+  Place ->+  SearchForTextResult+newSearchForTextResult pPlace_ =+  SearchForTextResult'+    { distance = Prelude.Nothing,+      placeId = Prelude.Nothing,+      relevance = Prelude.Nothing,+      place = pPlace_+    }++-- | The distance in meters of a great-circle arc between the bias position+-- specified and the result. @Distance@ will be returned only if a bias+-- position was specified in the query.+--+-- A great-circle arc is the shortest path on a sphere, in this case the+-- Earth. This returns the shortest distance between two locations.+searchForTextResult_distance :: Lens.Lens' SearchForTextResult (Prelude.Maybe Prelude.Double)+searchForTextResult_distance = Lens.lens (\SearchForTextResult' {distance} -> distance) (\s@SearchForTextResult' {} a -> s {distance = a} :: SearchForTextResult)++-- | The unique identifier of the place. You can use this with the @GetPlace@+-- operation to find the place again later.+--+-- For @SearchPlaceIndexForText@ operations, the @PlaceId@ is returned only+-- by place indexes that use HERE as a data provider.+searchForTextResult_placeId :: Lens.Lens' SearchForTextResult (Prelude.Maybe Prelude.Text)+searchForTextResult_placeId = Lens.lens (\SearchForTextResult' {placeId} -> placeId) (\s@SearchForTextResult' {} a -> s {placeId = a} :: SearchForTextResult)++-- | The relative confidence in the match for a result among the results+-- returned. For example, if more fields for an address match (including+-- house number, street, city, country\/region, and postal code), the+-- relevance score is closer to 1.+--+-- Returned only when the partner selected is Esri.+searchForTextResult_relevance :: Lens.Lens' SearchForTextResult (Prelude.Maybe Prelude.Double)+searchForTextResult_relevance = Lens.lens (\SearchForTextResult' {relevance} -> relevance) (\s@SearchForTextResult' {} a -> s {relevance = a} :: SearchForTextResult)++-- | Details about the search result, such as its address and position.+searchForTextResult_place :: Lens.Lens' SearchForTextResult Place+searchForTextResult_place = Lens.lens (\SearchForTextResult' {place} -> place) (\s@SearchForTextResult' {} a -> s {place = a} :: SearchForTextResult)++instance Data.FromJSON SearchForTextResult where+  parseJSON =+    Data.withObject+      "SearchForTextResult"+      ( \x ->+          SearchForTextResult'+            Prelude.<$> (x Data..:? "Distance")+            Prelude.<*> (x Data..:? "PlaceId")+            Prelude.<*> (x Data..:? "Relevance")+            Prelude.<*> (x Data..: "Place")+      )++instance Prelude.Hashable SearchForTextResult where+  hashWithSalt _salt SearchForTextResult' {..} =+    _salt+      `Prelude.hashWithSalt` distance+      `Prelude.hashWithSalt` placeId+      `Prelude.hashWithSalt` relevance+      `Prelude.hashWithSalt` place++instance Prelude.NFData SearchForTextResult where+  rnf SearchForTextResult' {..} =+    Prelude.rnf distance+      `Prelude.seq` Prelude.rnf placeId+      `Prelude.seq` Prelude.rnf relevance+      `Prelude.seq` Prelude.rnf place
+ gen/Amazonka/Location/Types/SearchPlaceIndexForPositionSummary.hs view
@@ -0,0 +1,171 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.SearchPlaceIndexForPositionSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.SearchPlaceIndexForPositionSummary 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 summary of the request sent by using @SearchPlaceIndexForPosition@.+--+-- /See:/ 'newSearchPlaceIndexForPositionSummary' smart constructor.+data SearchPlaceIndexForPositionSummary = SearchPlaceIndexForPositionSummary'+  { -- | The preferred language used to return results. Matches the language in+    -- the request. The value is a valid+    -- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+    -- @en@ for English.+    language :: Prelude.Maybe Prelude.Text,+    -- | Contains the optional result count limit that is specified in the+    -- request.+    --+    -- Default value: @50@+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The geospatial data provider attached to the place index resource+    -- specified in the request. Values can be one of the following:+    --+    -- -   Esri+    --+    -- -   Here+    --+    -- For more information about data providers, see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+    dataSource :: Prelude.Text,+    -- | The position specified in the request.+    position :: Data.Sensitive (Prelude.NonEmpty Prelude.Double)+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchPlaceIndexForPositionSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'language', 'searchPlaceIndexForPositionSummary_language' - The preferred language used to return results. Matches the language in+-- the request. The value is a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- 'maxResults', 'searchPlaceIndexForPositionSummary_maxResults' - Contains the optional result count limit that is specified in the+-- request.+--+-- Default value: @50@+--+-- 'dataSource', 'searchPlaceIndexForPositionSummary_dataSource' - The geospatial data provider attached to the place index resource+-- specified in the request. Values can be one of the following:+--+-- -   Esri+--+-- -   Here+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+--+-- 'position', 'searchPlaceIndexForPositionSummary_position' - The position specified in the request.+newSearchPlaceIndexForPositionSummary ::+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'position'+  Prelude.NonEmpty Prelude.Double ->+  SearchPlaceIndexForPositionSummary+newSearchPlaceIndexForPositionSummary+  pDataSource_+  pPosition_ =+    SearchPlaceIndexForPositionSummary'+      { language =+          Prelude.Nothing,+        maxResults = Prelude.Nothing,+        dataSource = pDataSource_,+        position =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pPosition_+      }++-- | The preferred language used to return results. Matches the language in+-- the request. The value is a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+searchPlaceIndexForPositionSummary_language :: Lens.Lens' SearchPlaceIndexForPositionSummary (Prelude.Maybe Prelude.Text)+searchPlaceIndexForPositionSummary_language = Lens.lens (\SearchPlaceIndexForPositionSummary' {language} -> language) (\s@SearchPlaceIndexForPositionSummary' {} a -> s {language = a} :: SearchPlaceIndexForPositionSummary)++-- | Contains the optional result count limit that is specified in the+-- request.+--+-- Default value: @50@+searchPlaceIndexForPositionSummary_maxResults :: Lens.Lens' SearchPlaceIndexForPositionSummary (Prelude.Maybe Prelude.Natural)+searchPlaceIndexForPositionSummary_maxResults = Lens.lens (\SearchPlaceIndexForPositionSummary' {maxResults} -> maxResults) (\s@SearchPlaceIndexForPositionSummary' {} a -> s {maxResults = a} :: SearchPlaceIndexForPositionSummary)++-- | The geospatial data provider attached to the place index resource+-- specified in the request. Values can be one of the following:+--+-- -   Esri+--+-- -   Here+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+searchPlaceIndexForPositionSummary_dataSource :: Lens.Lens' SearchPlaceIndexForPositionSummary Prelude.Text+searchPlaceIndexForPositionSummary_dataSource = Lens.lens (\SearchPlaceIndexForPositionSummary' {dataSource} -> dataSource) (\s@SearchPlaceIndexForPositionSummary' {} a -> s {dataSource = a} :: SearchPlaceIndexForPositionSummary)++-- | The position specified in the request.+searchPlaceIndexForPositionSummary_position :: Lens.Lens' SearchPlaceIndexForPositionSummary (Prelude.NonEmpty Prelude.Double)+searchPlaceIndexForPositionSummary_position = Lens.lens (\SearchPlaceIndexForPositionSummary' {position} -> position) (\s@SearchPlaceIndexForPositionSummary' {} a -> s {position = a} :: SearchPlaceIndexForPositionSummary) Prelude.. Data._Sensitive Prelude.. Lens.coerced++instance+  Data.FromJSON+    SearchPlaceIndexForPositionSummary+  where+  parseJSON =+    Data.withObject+      "SearchPlaceIndexForPositionSummary"+      ( \x ->+          SearchPlaceIndexForPositionSummary'+            Prelude.<$> (x Data..:? "Language")+            Prelude.<*> (x Data..:? "MaxResults")+            Prelude.<*> (x Data..: "DataSource")+            Prelude.<*> (x Data..: "Position")+      )++instance+  Prelude.Hashable+    SearchPlaceIndexForPositionSummary+  where+  hashWithSalt+    _salt+    SearchPlaceIndexForPositionSummary' {..} =+      _salt+        `Prelude.hashWithSalt` language+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` dataSource+        `Prelude.hashWithSalt` position++instance+  Prelude.NFData+    SearchPlaceIndexForPositionSummary+  where+  rnf SearchPlaceIndexForPositionSummary' {..} =+    Prelude.rnf language+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf position
+ gen/Amazonka/Location/Types/SearchPlaceIndexForSuggestionsSummary.hs view
@@ -0,0 +1,222 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.SearchPlaceIndexForSuggestionsSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.SearchPlaceIndexForSuggestionsSummary 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 summary of the request sent by using @SearchPlaceIndexForSuggestions@.+--+-- /See:/ 'newSearchPlaceIndexForSuggestionsSummary' smart constructor.+data SearchPlaceIndexForSuggestionsSummary = SearchPlaceIndexForSuggestionsSummary'+  { -- | Contains the coordinates for the optional bias position specified in the+    -- request.+    --+    -- This parameter contains a pair of numbers. The first number represents+    -- the X coordinate, or longitude; the second number represents the Y+    -- coordinate, or latitude.+    --+    -- For example, @[-123.1174, 49.2847]@ represents the position with+    -- longitude @-123.1174@ and latitude @49.2847@.+    biasPosition :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty Prelude.Double)),+    -- | Contains the coordinates for the optional bounding box specified in the+    -- request.+    filterBBox :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty Prelude.Double)),+    -- | Contains the optional country filter specified in the request.+    filterCountries :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The preferred language used to return results. Matches the language in+    -- the request. The value is a valid+    -- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+    -- @en@ for English.+    language :: Prelude.Maybe Prelude.Text,+    -- | Contains the optional result count limit specified in the request.+    maxResults :: Prelude.Maybe Prelude.Int,+    -- | The geospatial data provider attached to the place index resource+    -- specified in the request. Values can be one of the following:+    --+    -- -   Esri+    --+    -- -   Here+    --+    -- For more information about data providers, see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+    dataSource :: Prelude.Text,+    -- | The free-form partial text input specified in the request.+    text :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchPlaceIndexForSuggestionsSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'biasPosition', 'searchPlaceIndexForSuggestionsSummary_biasPosition' - Contains the coordinates for the optional bias position specified in the+-- request.+--+-- This parameter contains a pair of numbers. The first number represents+-- the X coordinate, or longitude; the second number represents the Y+-- coordinate, or latitude.+--+-- For example, @[-123.1174, 49.2847]@ represents the position with+-- longitude @-123.1174@ and latitude @49.2847@.+--+-- 'filterBBox', 'searchPlaceIndexForSuggestionsSummary_filterBBox' - Contains the coordinates for the optional bounding box specified in the+-- request.+--+-- 'filterCountries', 'searchPlaceIndexForSuggestionsSummary_filterCountries' - Contains the optional country filter specified in the request.+--+-- 'language', 'searchPlaceIndexForSuggestionsSummary_language' - The preferred language used to return results. Matches the language in+-- the request. The value is a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- 'maxResults', 'searchPlaceIndexForSuggestionsSummary_maxResults' - Contains the optional result count limit specified in the request.+--+-- 'dataSource', 'searchPlaceIndexForSuggestionsSummary_dataSource' - The geospatial data provider attached to the place index resource+-- specified in the request. Values can be one of the following:+--+-- -   Esri+--+-- -   Here+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+--+-- 'text', 'searchPlaceIndexForSuggestionsSummary_text' - The free-form partial text input specified in the request.+newSearchPlaceIndexForSuggestionsSummary ::+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'text'+  Prelude.Text ->+  SearchPlaceIndexForSuggestionsSummary+newSearchPlaceIndexForSuggestionsSummary+  pDataSource_+  pText_ =+    SearchPlaceIndexForSuggestionsSummary'+      { biasPosition =+          Prelude.Nothing,+        filterBBox = Prelude.Nothing,+        filterCountries = Prelude.Nothing,+        language = Prelude.Nothing,+        maxResults = Prelude.Nothing,+        dataSource = pDataSource_,+        text = Data._Sensitive Lens.# pText_+      }++-- | Contains the coordinates for the optional bias position specified in the+-- request.+--+-- This parameter contains a pair of numbers. The first number represents+-- the X coordinate, or longitude; the second number represents the Y+-- coordinate, or latitude.+--+-- For example, @[-123.1174, 49.2847]@ represents the position with+-- longitude @-123.1174@ and latitude @49.2847@.+searchPlaceIndexForSuggestionsSummary_biasPosition :: Lens.Lens' SearchPlaceIndexForSuggestionsSummary (Prelude.Maybe (Prelude.NonEmpty Prelude.Double))+searchPlaceIndexForSuggestionsSummary_biasPosition = Lens.lens (\SearchPlaceIndexForSuggestionsSummary' {biasPosition} -> biasPosition) (\s@SearchPlaceIndexForSuggestionsSummary' {} a -> s {biasPosition = a} :: SearchPlaceIndexForSuggestionsSummary) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | Contains the coordinates for the optional bounding box specified in the+-- request.+searchPlaceIndexForSuggestionsSummary_filterBBox :: Lens.Lens' SearchPlaceIndexForSuggestionsSummary (Prelude.Maybe (Prelude.NonEmpty Prelude.Double))+searchPlaceIndexForSuggestionsSummary_filterBBox = Lens.lens (\SearchPlaceIndexForSuggestionsSummary' {filterBBox} -> filterBBox) (\s@SearchPlaceIndexForSuggestionsSummary' {} a -> s {filterBBox = a} :: SearchPlaceIndexForSuggestionsSummary) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | Contains the optional country filter specified in the request.+searchPlaceIndexForSuggestionsSummary_filterCountries :: Lens.Lens' SearchPlaceIndexForSuggestionsSummary (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+searchPlaceIndexForSuggestionsSummary_filterCountries = Lens.lens (\SearchPlaceIndexForSuggestionsSummary' {filterCountries} -> filterCountries) (\s@SearchPlaceIndexForSuggestionsSummary' {} a -> s {filterCountries = a} :: SearchPlaceIndexForSuggestionsSummary) Prelude.. Lens.mapping Lens.coerced++-- | The preferred language used to return results. Matches the language in+-- the request. The value is a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+searchPlaceIndexForSuggestionsSummary_language :: Lens.Lens' SearchPlaceIndexForSuggestionsSummary (Prelude.Maybe Prelude.Text)+searchPlaceIndexForSuggestionsSummary_language = Lens.lens (\SearchPlaceIndexForSuggestionsSummary' {language} -> language) (\s@SearchPlaceIndexForSuggestionsSummary' {} a -> s {language = a} :: SearchPlaceIndexForSuggestionsSummary)++-- | Contains the optional result count limit specified in the request.+searchPlaceIndexForSuggestionsSummary_maxResults :: Lens.Lens' SearchPlaceIndexForSuggestionsSummary (Prelude.Maybe Prelude.Int)+searchPlaceIndexForSuggestionsSummary_maxResults = Lens.lens (\SearchPlaceIndexForSuggestionsSummary' {maxResults} -> maxResults) (\s@SearchPlaceIndexForSuggestionsSummary' {} a -> s {maxResults = a} :: SearchPlaceIndexForSuggestionsSummary)++-- | The geospatial data provider attached to the place index resource+-- specified in the request. Values can be one of the following:+--+-- -   Esri+--+-- -   Here+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+searchPlaceIndexForSuggestionsSummary_dataSource :: Lens.Lens' SearchPlaceIndexForSuggestionsSummary Prelude.Text+searchPlaceIndexForSuggestionsSummary_dataSource = Lens.lens (\SearchPlaceIndexForSuggestionsSummary' {dataSource} -> dataSource) (\s@SearchPlaceIndexForSuggestionsSummary' {} a -> s {dataSource = a} :: SearchPlaceIndexForSuggestionsSummary)++-- | The free-form partial text input specified in the request.+searchPlaceIndexForSuggestionsSummary_text :: Lens.Lens' SearchPlaceIndexForSuggestionsSummary Prelude.Text+searchPlaceIndexForSuggestionsSummary_text = Lens.lens (\SearchPlaceIndexForSuggestionsSummary' {text} -> text) (\s@SearchPlaceIndexForSuggestionsSummary' {} a -> s {text = a} :: SearchPlaceIndexForSuggestionsSummary) Prelude.. Data._Sensitive++instance+  Data.FromJSON+    SearchPlaceIndexForSuggestionsSummary+  where+  parseJSON =+    Data.withObject+      "SearchPlaceIndexForSuggestionsSummary"+      ( \x ->+          SearchPlaceIndexForSuggestionsSummary'+            Prelude.<$> (x Data..:? "BiasPosition")+            Prelude.<*> (x Data..:? "FilterBBox")+            Prelude.<*> (x Data..:? "FilterCountries")+            Prelude.<*> (x Data..:? "Language")+            Prelude.<*> (x Data..:? "MaxResults")+            Prelude.<*> (x Data..: "DataSource")+            Prelude.<*> (x Data..: "Text")+      )++instance+  Prelude.Hashable+    SearchPlaceIndexForSuggestionsSummary+  where+  hashWithSalt+    _salt+    SearchPlaceIndexForSuggestionsSummary' {..} =+      _salt+        `Prelude.hashWithSalt` biasPosition+        `Prelude.hashWithSalt` filterBBox+        `Prelude.hashWithSalt` filterCountries+        `Prelude.hashWithSalt` language+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` dataSource+        `Prelude.hashWithSalt` text++instance+  Prelude.NFData+    SearchPlaceIndexForSuggestionsSummary+  where+  rnf SearchPlaceIndexForSuggestionsSummary' {..} =+    Prelude.rnf biasPosition+      `Prelude.seq` Prelude.rnf filterBBox+      `Prelude.seq` Prelude.rnf filterCountries+      `Prelude.seq` Prelude.rnf language+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf text
+ gen/Amazonka/Location/Types/SearchPlaceIndexForTextSummary.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.Location.Types.SearchPlaceIndexForTextSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.SearchPlaceIndexForTextSummary 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 summary of the request sent by using @SearchPlaceIndexForText@.+--+-- /See:/ 'newSearchPlaceIndexForTextSummary' smart constructor.+data SearchPlaceIndexForTextSummary = SearchPlaceIndexForTextSummary'+  { -- | Contains the coordinates for the optional bias position specified in the+    -- request.+    --+    -- This parameter contains a pair of numbers. The first number represents+    -- the X coordinate, or longitude; the second number represents the Y+    -- coordinate, or latitude.+    --+    -- For example, @[-123.1174, 49.2847]@ represents the position with+    -- longitude @-123.1174@ and latitude @49.2847@.+    biasPosition :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty Prelude.Double)),+    -- | Contains the coordinates for the optional bounding box specified in the+    -- request.+    filterBBox :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty Prelude.Double)),+    -- | Contains the optional country filter specified in the request.+    filterCountries :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The preferred language used to return results. Matches the language in+    -- the request. The value is a valid+    -- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+    -- @en@ for English.+    language :: Prelude.Maybe Prelude.Text,+    -- | Contains the optional result count limit specified in the request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The bounding box that fully contains all search results.+    --+    -- If you specified the optional @FilterBBox@ parameter in the request,+    -- @ResultBBox@ is contained within @FilterBBox@.+    resultBBox :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty Prelude.Double)),+    -- | The geospatial data provider attached to the place index resource+    -- specified in the request. Values can be one of the following:+    --+    -- -   Esri+    --+    -- -   Here+    --+    -- For more information about data providers, see+    -- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+    dataSource :: Prelude.Text,+    -- | The search text specified in the request.+    text :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SearchPlaceIndexForTextSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'biasPosition', 'searchPlaceIndexForTextSummary_biasPosition' - Contains the coordinates for the optional bias position specified in the+-- request.+--+-- This parameter contains a pair of numbers. The first number represents+-- the X coordinate, or longitude; the second number represents the Y+-- coordinate, or latitude.+--+-- For example, @[-123.1174, 49.2847]@ represents the position with+-- longitude @-123.1174@ and latitude @49.2847@.+--+-- 'filterBBox', 'searchPlaceIndexForTextSummary_filterBBox' - Contains the coordinates for the optional bounding box specified in the+-- request.+--+-- 'filterCountries', 'searchPlaceIndexForTextSummary_filterCountries' - Contains the optional country filter specified in the request.+--+-- 'language', 'searchPlaceIndexForTextSummary_language' - The preferred language used to return results. Matches the language in+-- the request. The value is a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+--+-- 'maxResults', 'searchPlaceIndexForTextSummary_maxResults' - Contains the optional result count limit specified in the request.+--+-- 'resultBBox', 'searchPlaceIndexForTextSummary_resultBBox' - The bounding box that fully contains all search results.+--+-- If you specified the optional @FilterBBox@ parameter in the request,+-- @ResultBBox@ is contained within @FilterBBox@.+--+-- 'dataSource', 'searchPlaceIndexForTextSummary_dataSource' - The geospatial data provider attached to the place index resource+-- specified in the request. Values can be one of the following:+--+-- -   Esri+--+-- -   Here+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+--+-- 'text', 'searchPlaceIndexForTextSummary_text' - The search text specified in the request.+newSearchPlaceIndexForTextSummary ::+  -- | 'dataSource'+  Prelude.Text ->+  -- | 'text'+  Prelude.Text ->+  SearchPlaceIndexForTextSummary+newSearchPlaceIndexForTextSummary pDataSource_ pText_ =+  SearchPlaceIndexForTextSummary'+    { biasPosition =+        Prelude.Nothing,+      filterBBox = Prelude.Nothing,+      filterCountries = Prelude.Nothing,+      language = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      resultBBox = Prelude.Nothing,+      dataSource = pDataSource_,+      text = Data._Sensitive Lens.# pText_+    }++-- | Contains the coordinates for the optional bias position specified in the+-- request.+--+-- This parameter contains a pair of numbers. The first number represents+-- the X coordinate, or longitude; the second number represents the Y+-- coordinate, or latitude.+--+-- For example, @[-123.1174, 49.2847]@ represents the position with+-- longitude @-123.1174@ and latitude @49.2847@.+searchPlaceIndexForTextSummary_biasPosition :: Lens.Lens' SearchPlaceIndexForTextSummary (Prelude.Maybe (Prelude.NonEmpty Prelude.Double))+searchPlaceIndexForTextSummary_biasPosition = Lens.lens (\SearchPlaceIndexForTextSummary' {biasPosition} -> biasPosition) (\s@SearchPlaceIndexForTextSummary' {} a -> s {biasPosition = a} :: SearchPlaceIndexForTextSummary) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | Contains the coordinates for the optional bounding box specified in the+-- request.+searchPlaceIndexForTextSummary_filterBBox :: Lens.Lens' SearchPlaceIndexForTextSummary (Prelude.Maybe (Prelude.NonEmpty Prelude.Double))+searchPlaceIndexForTextSummary_filterBBox = Lens.lens (\SearchPlaceIndexForTextSummary' {filterBBox} -> filterBBox) (\s@SearchPlaceIndexForTextSummary' {} a -> s {filterBBox = a} :: SearchPlaceIndexForTextSummary) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | Contains the optional country filter specified in the request.+searchPlaceIndexForTextSummary_filterCountries :: Lens.Lens' SearchPlaceIndexForTextSummary (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+searchPlaceIndexForTextSummary_filterCountries = Lens.lens (\SearchPlaceIndexForTextSummary' {filterCountries} -> filterCountries) (\s@SearchPlaceIndexForTextSummary' {} a -> s {filterCountries = a} :: SearchPlaceIndexForTextSummary) Prelude.. Lens.mapping Lens.coerced++-- | The preferred language used to return results. Matches the language in+-- the request. The value is a valid+-- <https://tools.ietf.org/search/bcp47 BCP 47> language tag, for example,+-- @en@ for English.+searchPlaceIndexForTextSummary_language :: Lens.Lens' SearchPlaceIndexForTextSummary (Prelude.Maybe Prelude.Text)+searchPlaceIndexForTextSummary_language = Lens.lens (\SearchPlaceIndexForTextSummary' {language} -> language) (\s@SearchPlaceIndexForTextSummary' {} a -> s {language = a} :: SearchPlaceIndexForTextSummary)++-- | Contains the optional result count limit specified in the request.+searchPlaceIndexForTextSummary_maxResults :: Lens.Lens' SearchPlaceIndexForTextSummary (Prelude.Maybe Prelude.Natural)+searchPlaceIndexForTextSummary_maxResults = Lens.lens (\SearchPlaceIndexForTextSummary' {maxResults} -> maxResults) (\s@SearchPlaceIndexForTextSummary' {} a -> s {maxResults = a} :: SearchPlaceIndexForTextSummary)++-- | The bounding box that fully contains all search results.+--+-- If you specified the optional @FilterBBox@ parameter in the request,+-- @ResultBBox@ is contained within @FilterBBox@.+searchPlaceIndexForTextSummary_resultBBox :: Lens.Lens' SearchPlaceIndexForTextSummary (Prelude.Maybe (Prelude.NonEmpty Prelude.Double))+searchPlaceIndexForTextSummary_resultBBox = Lens.lens (\SearchPlaceIndexForTextSummary' {resultBBox} -> resultBBox) (\s@SearchPlaceIndexForTextSummary' {} a -> s {resultBBox = a} :: SearchPlaceIndexForTextSummary) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | The geospatial data provider attached to the place index resource+-- specified in the request. Values can be one of the following:+--+-- -   Esri+--+-- -   Here+--+-- For more information about data providers, see+-- <https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html Amazon Location Service data providers>.+searchPlaceIndexForTextSummary_dataSource :: Lens.Lens' SearchPlaceIndexForTextSummary Prelude.Text+searchPlaceIndexForTextSummary_dataSource = Lens.lens (\SearchPlaceIndexForTextSummary' {dataSource} -> dataSource) (\s@SearchPlaceIndexForTextSummary' {} a -> s {dataSource = a} :: SearchPlaceIndexForTextSummary)++-- | The search text specified in the request.+searchPlaceIndexForTextSummary_text :: Lens.Lens' SearchPlaceIndexForTextSummary Prelude.Text+searchPlaceIndexForTextSummary_text = Lens.lens (\SearchPlaceIndexForTextSummary' {text} -> text) (\s@SearchPlaceIndexForTextSummary' {} a -> s {text = a} :: SearchPlaceIndexForTextSummary) Prelude.. Data._Sensitive++instance Data.FromJSON SearchPlaceIndexForTextSummary where+  parseJSON =+    Data.withObject+      "SearchPlaceIndexForTextSummary"+      ( \x ->+          SearchPlaceIndexForTextSummary'+            Prelude.<$> (x Data..:? "BiasPosition")+            Prelude.<*> (x Data..:? "FilterBBox")+            Prelude.<*> (x Data..:? "FilterCountries")+            Prelude.<*> (x Data..:? "Language")+            Prelude.<*> (x Data..:? "MaxResults")+            Prelude.<*> (x Data..:? "ResultBBox")+            Prelude.<*> (x Data..: "DataSource")+            Prelude.<*> (x Data..: "Text")+      )++instance+  Prelude.Hashable+    SearchPlaceIndexForTextSummary+  where+  hashWithSalt+    _salt+    SearchPlaceIndexForTextSummary' {..} =+      _salt+        `Prelude.hashWithSalt` biasPosition+        `Prelude.hashWithSalt` filterBBox+        `Prelude.hashWithSalt` filterCountries+        `Prelude.hashWithSalt` language+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` resultBBox+        `Prelude.hashWithSalt` dataSource+        `Prelude.hashWithSalt` text++instance+  Prelude.NFData+    SearchPlaceIndexForTextSummary+  where+  rnf SearchPlaceIndexForTextSummary' {..} =+    Prelude.rnf biasPosition+      `Prelude.seq` Prelude.rnf filterBBox+      `Prelude.seq` Prelude.rnf filterCountries+      `Prelude.seq` Prelude.rnf language+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf resultBBox+      `Prelude.seq` Prelude.rnf dataSource+      `Prelude.seq` Prelude.rnf text
+ gen/Amazonka/Location/Types/Step.hs view
@@ -0,0 +1,169 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.Step+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.Step where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Represents an element of a leg within a route. A step contains+-- instructions for how to move to the next step in the leg.+--+-- /See:/ 'newStep' smart constructor.+data Step = Step'+  { -- | Represents the start position, or index, in a sequence of steps within+    -- the leg\'s line string geometry. For example, the index of the first+    -- step in a leg geometry is @0@.+    --+    -- Included in the response for queries that set @IncludeLegGeometry@ to+    -- @True@.+    geometryOffset :: Prelude.Maybe Prelude.Natural,+    -- | The travel distance between the step\'s @StartPosition@ and+    -- @EndPosition@.+    distance :: Prelude.Double,+    -- | The estimated travel time, in seconds, from the step\'s @StartPosition@+    -- to the @EndPosition@. . The travel mode and departure time that you+    -- specify in the request determines the calculated time.+    durationSeconds :: Prelude.Double,+    -- | The end position of a step. If the position the last step in the leg,+    -- this position is the same as the end position of the leg.+    endPosition :: Data.Sensitive (Prelude.NonEmpty Prelude.Double),+    -- | The starting position of a step. If the position is the first step in+    -- the leg, this position is the same as the start position of the leg.+    startPosition :: Data.Sensitive (Prelude.NonEmpty Prelude.Double)+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Step' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'geometryOffset', 'step_geometryOffset' - Represents the start position, or index, in a sequence of steps within+-- the leg\'s line string geometry. For example, the index of the first+-- step in a leg geometry is @0@.+--+-- Included in the response for queries that set @IncludeLegGeometry@ to+-- @True@.+--+-- 'distance', 'step_distance' - The travel distance between the step\'s @StartPosition@ and+-- @EndPosition@.+--+-- 'durationSeconds', 'step_durationSeconds' - The estimated travel time, in seconds, from the step\'s @StartPosition@+-- to the @EndPosition@. . The travel mode and departure time that you+-- specify in the request determines the calculated time.+--+-- 'endPosition', 'step_endPosition' - The end position of a step. If the position the last step in the leg,+-- this position is the same as the end position of the leg.+--+-- 'startPosition', 'step_startPosition' - The starting position of a step. If the position is the first step in+-- the leg, this position is the same as the start position of the leg.+newStep ::+  -- | 'distance'+  Prelude.Double ->+  -- | 'durationSeconds'+  Prelude.Double ->+  -- | 'endPosition'+  Prelude.NonEmpty Prelude.Double ->+  -- | 'startPosition'+  Prelude.NonEmpty Prelude.Double ->+  Step+newStep+  pDistance_+  pDurationSeconds_+  pEndPosition_+  pStartPosition_ =+    Step'+      { geometryOffset = Prelude.Nothing,+        distance = pDistance_,+        durationSeconds = pDurationSeconds_,+        endPosition =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pEndPosition_,+        startPosition =+          Data._Sensitive+            Prelude.. Lens.coerced+            Lens.# pStartPosition_+      }++-- | Represents the start position, or index, in a sequence of steps within+-- the leg\'s line string geometry. For example, the index of the first+-- step in a leg geometry is @0@.+--+-- Included in the response for queries that set @IncludeLegGeometry@ to+-- @True@.+step_geometryOffset :: Lens.Lens' Step (Prelude.Maybe Prelude.Natural)+step_geometryOffset = Lens.lens (\Step' {geometryOffset} -> geometryOffset) (\s@Step' {} a -> s {geometryOffset = a} :: Step)++-- | The travel distance between the step\'s @StartPosition@ and+-- @EndPosition@.+step_distance :: Lens.Lens' Step Prelude.Double+step_distance = Lens.lens (\Step' {distance} -> distance) (\s@Step' {} a -> s {distance = a} :: Step)++-- | The estimated travel time, in seconds, from the step\'s @StartPosition@+-- to the @EndPosition@. . The travel mode and departure time that you+-- specify in the request determines the calculated time.+step_durationSeconds :: Lens.Lens' Step Prelude.Double+step_durationSeconds = Lens.lens (\Step' {durationSeconds} -> durationSeconds) (\s@Step' {} a -> s {durationSeconds = a} :: Step)++-- | The end position of a step. If the position the last step in the leg,+-- this position is the same as the end position of the leg.+step_endPosition :: Lens.Lens' Step (Prelude.NonEmpty Prelude.Double)+step_endPosition = Lens.lens (\Step' {endPosition} -> endPosition) (\s@Step' {} a -> s {endPosition = a} :: Step) Prelude.. Data._Sensitive Prelude.. Lens.coerced++-- | The starting position of a step. If the position is the first step in+-- the leg, this position is the same as the start position of the leg.+step_startPosition :: Lens.Lens' Step (Prelude.NonEmpty Prelude.Double)+step_startPosition = Lens.lens (\Step' {startPosition} -> startPosition) (\s@Step' {} a -> s {startPosition = a} :: Step) Prelude.. Data._Sensitive Prelude.. Lens.coerced++instance Data.FromJSON Step where+  parseJSON =+    Data.withObject+      "Step"+      ( \x ->+          Step'+            Prelude.<$> (x Data..:? "GeometryOffset")+            Prelude.<*> (x Data..: "Distance")+            Prelude.<*> (x Data..: "DurationSeconds")+            Prelude.<*> (x Data..: "EndPosition")+            Prelude.<*> (x Data..: "StartPosition")+      )++instance Prelude.Hashable Step where+  hashWithSalt _salt Step' {..} =+    _salt+      `Prelude.hashWithSalt` geometryOffset+      `Prelude.hashWithSalt` distance+      `Prelude.hashWithSalt` durationSeconds+      `Prelude.hashWithSalt` endPosition+      `Prelude.hashWithSalt` startPosition++instance Prelude.NFData Step where+  rnf Step' {..} =+    Prelude.rnf geometryOffset+      `Prelude.seq` Prelude.rnf distance+      `Prelude.seq` Prelude.rnf durationSeconds+      `Prelude.seq` Prelude.rnf endPosition+      `Prelude.seq` Prelude.rnf startPosition
+ gen/Amazonka/Location/Types/TimeZone.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.TimeZone+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.TimeZone where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about a time zone. Includes the name of the time zone and+-- the offset from UTC in seconds.+--+-- /See:/ 'newTimeZone' smart constructor.+data TimeZone = TimeZone'+  { -- | The time zone\'s offset, in seconds, from UTC.+    offset :: Prelude.Maybe Prelude.Int,+    -- | The name of the time zone, following the+    -- <https://www.iana.org/time-zones IANA time zone standard>. For example,+    -- @America\/Los_Angeles@.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TimeZone' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'offset', 'timeZone_offset' - The time zone\'s offset, in seconds, from UTC.+--+-- 'name', 'timeZone_name' - The name of the time zone, following the+-- <https://www.iana.org/time-zones IANA time zone standard>. For example,+-- @America\/Los_Angeles@.+newTimeZone ::+  -- | 'name'+  Prelude.Text ->+  TimeZone+newTimeZone pName_ =+  TimeZone' {offset = Prelude.Nothing, name = pName_}++-- | The time zone\'s offset, in seconds, from UTC.+timeZone_offset :: Lens.Lens' TimeZone (Prelude.Maybe Prelude.Int)+timeZone_offset = Lens.lens (\TimeZone' {offset} -> offset) (\s@TimeZone' {} a -> s {offset = a} :: TimeZone)++-- | The name of the time zone, following the+-- <https://www.iana.org/time-zones IANA time zone standard>. For example,+-- @America\/Los_Angeles@.+timeZone_name :: Lens.Lens' TimeZone Prelude.Text+timeZone_name = Lens.lens (\TimeZone' {name} -> name) (\s@TimeZone' {} a -> s {name = a} :: TimeZone)++instance Data.FromJSON TimeZone where+  parseJSON =+    Data.withObject+      "TimeZone"+      ( \x ->+          TimeZone'+            Prelude.<$> (x Data..:? "Offset")+            Prelude.<*> (x Data..: "Name")+      )++instance Prelude.Hashable TimeZone where+  hashWithSalt _salt TimeZone' {..} =+    _salt+      `Prelude.hashWithSalt` offset+      `Prelude.hashWithSalt` name++instance Prelude.NFData TimeZone where+  rnf TimeZone' {..} =+    Prelude.rnf offset `Prelude.seq` Prelude.rnf name
+ gen/Amazonka/Location/Types/TravelMode.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.Location.Types.TravelMode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.TravelMode+  ( TravelMode+      ( ..,+        TravelMode_Car,+        TravelMode_Truck,+        TravelMode_Walking+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TravelMode = TravelMode'+  { fromTravelMode ::+      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 TravelMode_Car :: TravelMode+pattern TravelMode_Car = TravelMode' "Car"++pattern TravelMode_Truck :: TravelMode+pattern TravelMode_Truck = TravelMode' "Truck"++pattern TravelMode_Walking :: TravelMode+pattern TravelMode_Walking = TravelMode' "Walking"++{-# COMPLETE+  TravelMode_Car,+  TravelMode_Truck,+  TravelMode_Walking,+  TravelMode'+  #-}
+ gen/Amazonka/Location/Types/TruckDimensions.hs view
@@ -0,0 +1,162 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.Types.TruckDimensions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.TruckDimensions where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.DimensionUnit+import qualified Amazonka.Prelude as Prelude++-- | Contains details about the truck dimensions in the unit of measurement+-- that you specify. Used to filter out roads that can\'t support or allow+-- the specified dimensions for requests that specify @TravelMode@ as+-- @Truck@.+--+-- /See:/ 'newTruckDimensions' smart constructor.+data TruckDimensions = TruckDimensions'+  { -- | The height of the truck.+    --+    -- -   For example, @4.5@.+    --+    -- For routes calculated with a HERE resource, this value must be between 0+    -- and 50 meters.+    height :: Prelude.Maybe Prelude.Double,+    -- | The length of the truck.+    --+    -- -   For example, @15.5@.+    --+    -- For routes calculated with a HERE resource, this value must be between 0+    -- and 300 meters.+    length :: Prelude.Maybe Prelude.Double,+    -- | Specifies the unit of measurement for the truck dimensions.+    --+    -- Default Value: @Meters@+    unit :: Prelude.Maybe DimensionUnit,+    -- | The width of the truck.+    --+    -- -   For example, @4.5@.+    --+    -- For routes calculated with a HERE resource, this value must be between 0+    -- and 50 meters.+    width :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TruckDimensions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'height', 'truckDimensions_height' - The height of the truck.+--+-- -   For example, @4.5@.+--+-- For routes calculated with a HERE resource, this value must be between 0+-- and 50 meters.+--+-- 'length', 'truckDimensions_length' - The length of the truck.+--+-- -   For example, @15.5@.+--+-- For routes calculated with a HERE resource, this value must be between 0+-- and 300 meters.+--+-- 'unit', 'truckDimensions_unit' - Specifies the unit of measurement for the truck dimensions.+--+-- Default Value: @Meters@+--+-- 'width', 'truckDimensions_width' - The width of the truck.+--+-- -   For example, @4.5@.+--+-- For routes calculated with a HERE resource, this value must be between 0+-- and 50 meters.+newTruckDimensions ::+  TruckDimensions+newTruckDimensions =+  TruckDimensions'+    { height = Prelude.Nothing,+      length = Prelude.Nothing,+      unit = Prelude.Nothing,+      width = Prelude.Nothing+    }++-- | The height of the truck.+--+-- -   For example, @4.5@.+--+-- For routes calculated with a HERE resource, this value must be between 0+-- and 50 meters.+truckDimensions_height :: Lens.Lens' TruckDimensions (Prelude.Maybe Prelude.Double)+truckDimensions_height = Lens.lens (\TruckDimensions' {height} -> height) (\s@TruckDimensions' {} a -> s {height = a} :: TruckDimensions)++-- | The length of the truck.+--+-- -   For example, @15.5@.+--+-- For routes calculated with a HERE resource, this value must be between 0+-- and 300 meters.+truckDimensions_length :: Lens.Lens' TruckDimensions (Prelude.Maybe Prelude.Double)+truckDimensions_length = Lens.lens (\TruckDimensions' {length} -> length) (\s@TruckDimensions' {} a -> s {length = a} :: TruckDimensions)++-- | Specifies the unit of measurement for the truck dimensions.+--+-- Default Value: @Meters@+truckDimensions_unit :: Lens.Lens' TruckDimensions (Prelude.Maybe DimensionUnit)+truckDimensions_unit = Lens.lens (\TruckDimensions' {unit} -> unit) (\s@TruckDimensions' {} a -> s {unit = a} :: TruckDimensions)++-- | The width of the truck.+--+-- -   For example, @4.5@.+--+-- For routes calculated with a HERE resource, this value must be between 0+-- and 50 meters.+truckDimensions_width :: Lens.Lens' TruckDimensions (Prelude.Maybe Prelude.Double)+truckDimensions_width = Lens.lens (\TruckDimensions' {width} -> width) (\s@TruckDimensions' {} a -> s {width = a} :: TruckDimensions)++instance Prelude.Hashable TruckDimensions where+  hashWithSalt _salt TruckDimensions' {..} =+    _salt+      `Prelude.hashWithSalt` height+      `Prelude.hashWithSalt` length+      `Prelude.hashWithSalt` unit+      `Prelude.hashWithSalt` width++instance Prelude.NFData TruckDimensions where+  rnf TruckDimensions' {..} =+    Prelude.rnf height+      `Prelude.seq` Prelude.rnf length+      `Prelude.seq` Prelude.rnf unit+      `Prelude.seq` Prelude.rnf width++instance Data.ToJSON TruckDimensions where+  toJSON TruckDimensions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Height" Data..=) Prelude.<$> height,+            ("Length" Data..=) Prelude.<$> length,+            ("Unit" Data..=) Prelude.<$> unit,+            ("Width" Data..=) Prelude.<$> width+          ]+      )
+ gen/Amazonka/Location/Types/TruckWeight.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.Location.Types.TruckWeight+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.TruckWeight where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types.VehicleWeightUnit+import qualified Amazonka.Prelude as Prelude++-- | Contains details about the truck\'s weight specifications. Used to avoid+-- roads that can\'t support or allow the total weight for requests that+-- specify @TravelMode@ as @Truck@.+--+-- /See:/ 'newTruckWeight' smart constructor.+data TruckWeight = TruckWeight'+  { -- | The total weight of the truck.+    --+    -- -   For example, @3500@.+    total :: Prelude.Maybe Prelude.Double,+    -- | The unit of measurement to use for the truck weight.+    --+    -- Default Value: @Kilograms@+    unit :: Prelude.Maybe VehicleWeightUnit+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TruckWeight' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'total', 'truckWeight_total' - The total weight of the truck.+--+-- -   For example, @3500@.+--+-- 'unit', 'truckWeight_unit' - The unit of measurement to use for the truck weight.+--+-- Default Value: @Kilograms@+newTruckWeight ::+  TruckWeight+newTruckWeight =+  TruckWeight'+    { total = Prelude.Nothing,+      unit = Prelude.Nothing+    }++-- | The total weight of the truck.+--+-- -   For example, @3500@.+truckWeight_total :: Lens.Lens' TruckWeight (Prelude.Maybe Prelude.Double)+truckWeight_total = Lens.lens (\TruckWeight' {total} -> total) (\s@TruckWeight' {} a -> s {total = a} :: TruckWeight)++-- | The unit of measurement to use for the truck weight.+--+-- Default Value: @Kilograms@+truckWeight_unit :: Lens.Lens' TruckWeight (Prelude.Maybe VehicleWeightUnit)+truckWeight_unit = Lens.lens (\TruckWeight' {unit} -> unit) (\s@TruckWeight' {} a -> s {unit = a} :: TruckWeight)++instance Prelude.Hashable TruckWeight where+  hashWithSalt _salt TruckWeight' {..} =+    _salt+      `Prelude.hashWithSalt` total+      `Prelude.hashWithSalt` unit++instance Prelude.NFData TruckWeight where+  rnf TruckWeight' {..} =+    Prelude.rnf total `Prelude.seq` Prelude.rnf unit++instance Data.ToJSON TruckWeight where+  toJSON TruckWeight' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Total" Data..=) Prelude.<$> total,+            ("Unit" Data..=) Prelude.<$> unit+          ]+      )
+ gen/Amazonka/Location/Types/VehicleWeightUnit.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.Location.Types.VehicleWeightUnit+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.Location.Types.VehicleWeightUnit+  ( VehicleWeightUnit+      ( ..,+        VehicleWeightUnit_Kilograms,+        VehicleWeightUnit_Pounds+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype VehicleWeightUnit = VehicleWeightUnit'+  { fromVehicleWeightUnit ::+      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 VehicleWeightUnit_Kilograms :: VehicleWeightUnit+pattern VehicleWeightUnit_Kilograms = VehicleWeightUnit' "Kilograms"++pattern VehicleWeightUnit_Pounds :: VehicleWeightUnit+pattern VehicleWeightUnit_Pounds = VehicleWeightUnit' "Pounds"++{-# COMPLETE+  VehicleWeightUnit_Kilograms,+  VehicleWeightUnit_Pounds,+  VehicleWeightUnit'+  #-}
+ gen/Amazonka/Location/UntagResource.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.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)+--+-- Removes one or more tags from the specified Amazon Location resource.+module Amazonka.Location.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.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The Amazon Resource Name (ARN) of the resource from which you want to+    -- remove tags.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:resourcetype\/ExampleResource@+    resourceArn :: Prelude.Text,+    -- | The list of tag keys to remove from the specified resource.+    tagKeys :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource from which you want to+-- remove tags.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:resourcetype\/ExampleResource@+--+-- 'tagKeys', 'untagResource_tagKeys' - The list of tag keys to remove from the specified resource.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  -- | 'tagKeys'+  Prelude.NonEmpty Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ pTagKeys_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Lens.coerced Lens.# pTagKeys_+    }++-- | The Amazon Resource Name (ARN) of the resource from which you want to+-- remove tags.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:resourcetype\/ExampleResource@+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The list of tag keys to remove from the specified resource.+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty 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.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath UntagResource where+  toPath UntagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery UntagResource where+  toQuery UntagResource' {..} =+    Prelude.mconcat+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]++-- | /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/Location/UpdateGeofenceCollection.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.Location.UpdateGeofenceCollection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the specified properties of a given geofence collection.+module Amazonka.Location.UpdateGeofenceCollection+  ( -- * Creating a Request+    UpdateGeofenceCollection (..),+    newUpdateGeofenceCollection,++    -- * Request Lenses+    updateGeofenceCollection_description,+    updateGeofenceCollection_pricingPlan,+    updateGeofenceCollection_pricingPlanDataSource,+    updateGeofenceCollection_collectionName,++    -- * Destructuring the Response+    UpdateGeofenceCollectionResponse (..),+    newUpdateGeofenceCollectionResponse,++    -- * Response Lenses+    updateGeofenceCollectionResponse_httpStatus,+    updateGeofenceCollectionResponse_collectionArn,+    updateGeofenceCollectionResponse_collectionName,+    updateGeofenceCollectionResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateGeofenceCollection' smart constructor.+data UpdateGeofenceCollection = UpdateGeofenceCollection'+  { -- | Updates the description for the geofence collection.+    description :: Prelude.Maybe Prelude.Text,+    -- | No longer used. If included, the only allowed value is+    -- @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | This parameter is no longer used.+    pricingPlanDataSource :: Prelude.Maybe Prelude.Text,+    -- | The name of the geofence collection to update.+    collectionName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateGeofenceCollection' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'updateGeofenceCollection_description' - Updates the description for the geofence collection.+--+-- 'pricingPlan', 'updateGeofenceCollection_pricingPlan' - No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+--+-- 'pricingPlanDataSource', 'updateGeofenceCollection_pricingPlanDataSource' - This parameter is no longer used.+--+-- 'collectionName', 'updateGeofenceCollection_collectionName' - The name of the geofence collection to update.+newUpdateGeofenceCollection ::+  -- | 'collectionName'+  Prelude.Text ->+  UpdateGeofenceCollection+newUpdateGeofenceCollection pCollectionName_ =+  UpdateGeofenceCollection'+    { description =+        Prelude.Nothing,+      pricingPlan = Prelude.Nothing,+      pricingPlanDataSource = Prelude.Nothing,+      collectionName = pCollectionName_+    }++-- | Updates the description for the geofence collection.+updateGeofenceCollection_description :: Lens.Lens' UpdateGeofenceCollection (Prelude.Maybe Prelude.Text)+updateGeofenceCollection_description = Lens.lens (\UpdateGeofenceCollection' {description} -> description) (\s@UpdateGeofenceCollection' {} a -> s {description = a} :: UpdateGeofenceCollection)++-- | No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+updateGeofenceCollection_pricingPlan :: Lens.Lens' UpdateGeofenceCollection (Prelude.Maybe PricingPlan)+updateGeofenceCollection_pricingPlan = Lens.lens (\UpdateGeofenceCollection' {pricingPlan} -> pricingPlan) (\s@UpdateGeofenceCollection' {} a -> s {pricingPlan = a} :: UpdateGeofenceCollection)++-- | This parameter is no longer used.+updateGeofenceCollection_pricingPlanDataSource :: Lens.Lens' UpdateGeofenceCollection (Prelude.Maybe Prelude.Text)+updateGeofenceCollection_pricingPlanDataSource = Lens.lens (\UpdateGeofenceCollection' {pricingPlanDataSource} -> pricingPlanDataSource) (\s@UpdateGeofenceCollection' {} a -> s {pricingPlanDataSource = a} :: UpdateGeofenceCollection)++-- | The name of the geofence collection to update.+updateGeofenceCollection_collectionName :: Lens.Lens' UpdateGeofenceCollection Prelude.Text+updateGeofenceCollection_collectionName = Lens.lens (\UpdateGeofenceCollection' {collectionName} -> collectionName) (\s@UpdateGeofenceCollection' {} a -> s {collectionName = a} :: UpdateGeofenceCollection)++instance Core.AWSRequest UpdateGeofenceCollection where+  type+    AWSResponse UpdateGeofenceCollection =+      UpdateGeofenceCollectionResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateGeofenceCollectionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CollectionArn")+            Prelude.<*> (x Data..:> "CollectionName")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable UpdateGeofenceCollection where+  hashWithSalt _salt UpdateGeofenceCollection' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` pricingPlanDataSource+      `Prelude.hashWithSalt` collectionName++instance Prelude.NFData UpdateGeofenceCollection where+  rnf UpdateGeofenceCollection' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf pricingPlanDataSource+      `Prelude.seq` Prelude.rnf collectionName++instance Data.ToHeaders UpdateGeofenceCollection where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateGeofenceCollection where+  toJSON UpdateGeofenceCollection' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan,+            ("PricingPlanDataSource" Data..=)+              Prelude.<$> pricingPlanDataSource+          ]+      )++instance Data.ToPath UpdateGeofenceCollection where+  toPath UpdateGeofenceCollection' {..} =+    Prelude.mconcat+      [ "/geofencing/v0/collections/",+        Data.toBS collectionName+      ]++instance Data.ToQuery UpdateGeofenceCollection where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateGeofenceCollectionResponse' smart constructor.+data UpdateGeofenceCollectionResponse = UpdateGeofenceCollectionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The Amazon Resource Name (ARN) of the updated geofence collection. Used+    -- to specify a resource across AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollection@+    collectionArn :: Prelude.Text,+    -- | The name of the updated geofence collection.+    collectionName :: Prelude.Text,+    -- | The time when the geofence collection was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateGeofenceCollectionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateGeofenceCollectionResponse_httpStatus' - The response's http status code.+--+-- 'collectionArn', 'updateGeofenceCollectionResponse_collectionArn' - The Amazon Resource Name (ARN) of the updated geofence collection. Used+-- to specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollection@+--+-- 'collectionName', 'updateGeofenceCollectionResponse_collectionName' - The name of the updated geofence collection.+--+-- 'updateTime', 'updateGeofenceCollectionResponse_updateTime' - The time when the geofence collection was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+newUpdateGeofenceCollectionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'collectionArn'+  Prelude.Text ->+  -- | 'collectionName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  UpdateGeofenceCollectionResponse+newUpdateGeofenceCollectionResponse+  pHttpStatus_+  pCollectionArn_+  pCollectionName_+  pUpdateTime_ =+    UpdateGeofenceCollectionResponse'+      { httpStatus =+          pHttpStatus_,+        collectionArn = pCollectionArn_,+        collectionName = pCollectionName_,+        updateTime =+          Data._Time Lens.# pUpdateTime_+      }++-- | The response's http status code.+updateGeofenceCollectionResponse_httpStatus :: Lens.Lens' UpdateGeofenceCollectionResponse Prelude.Int+updateGeofenceCollectionResponse_httpStatus = Lens.lens (\UpdateGeofenceCollectionResponse' {httpStatus} -> httpStatus) (\s@UpdateGeofenceCollectionResponse' {} a -> s {httpStatus = a} :: UpdateGeofenceCollectionResponse)++-- | The Amazon Resource Name (ARN) of the updated geofence collection. Used+-- to specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:geofence-collection\/ExampleGeofenceCollection@+updateGeofenceCollectionResponse_collectionArn :: Lens.Lens' UpdateGeofenceCollectionResponse Prelude.Text+updateGeofenceCollectionResponse_collectionArn = Lens.lens (\UpdateGeofenceCollectionResponse' {collectionArn} -> collectionArn) (\s@UpdateGeofenceCollectionResponse' {} a -> s {collectionArn = a} :: UpdateGeofenceCollectionResponse)++-- | The name of the updated geofence collection.+updateGeofenceCollectionResponse_collectionName :: Lens.Lens' UpdateGeofenceCollectionResponse Prelude.Text+updateGeofenceCollectionResponse_collectionName = Lens.lens (\UpdateGeofenceCollectionResponse' {collectionName} -> collectionName) (\s@UpdateGeofenceCollectionResponse' {} a -> s {collectionName = a} :: UpdateGeofenceCollectionResponse)++-- | The time when the geofence collection was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@+updateGeofenceCollectionResponse_updateTime :: Lens.Lens' UpdateGeofenceCollectionResponse Prelude.UTCTime+updateGeofenceCollectionResponse_updateTime = Lens.lens (\UpdateGeofenceCollectionResponse' {updateTime} -> updateTime) (\s@UpdateGeofenceCollectionResponse' {} a -> s {updateTime = a} :: UpdateGeofenceCollectionResponse) Prelude.. Data._Time++instance+  Prelude.NFData+    UpdateGeofenceCollectionResponse+  where+  rnf UpdateGeofenceCollectionResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf collectionArn+      `Prelude.seq` Prelude.rnf collectionName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/UpdateMap.hs view
@@ -0,0 +1,245 @@+{-# 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.Location.UpdateMap+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the specified properties of a given map resource.+module Amazonka.Location.UpdateMap+  ( -- * Creating a Request+    UpdateMap (..),+    newUpdateMap,++    -- * Request Lenses+    updateMap_description,+    updateMap_pricingPlan,+    updateMap_mapName,++    -- * Destructuring the Response+    UpdateMapResponse (..),+    newUpdateMapResponse,++    -- * Response Lenses+    updateMapResponse_httpStatus,+    updateMapResponse_mapArn,+    updateMapResponse_mapName,+    updateMapResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateMap' smart constructor.+data UpdateMap = UpdateMap'+  { -- | Updates the description for the map resource.+    description :: Prelude.Maybe Prelude.Text,+    -- | No longer used. If included, the only allowed value is+    -- @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | The name of the map resource to update.+    mapName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateMap' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'updateMap_description' - Updates the description for the map resource.+--+-- 'pricingPlan', 'updateMap_pricingPlan' - No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+--+-- 'mapName', 'updateMap_mapName' - The name of the map resource to update.+newUpdateMap ::+  -- | 'mapName'+  Prelude.Text ->+  UpdateMap+newUpdateMap pMapName_ =+  UpdateMap'+    { description = Prelude.Nothing,+      pricingPlan = Prelude.Nothing,+      mapName = pMapName_+    }++-- | Updates the description for the map resource.+updateMap_description :: Lens.Lens' UpdateMap (Prelude.Maybe Prelude.Text)+updateMap_description = Lens.lens (\UpdateMap' {description} -> description) (\s@UpdateMap' {} a -> s {description = a} :: UpdateMap)++-- | No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+updateMap_pricingPlan :: Lens.Lens' UpdateMap (Prelude.Maybe PricingPlan)+updateMap_pricingPlan = Lens.lens (\UpdateMap' {pricingPlan} -> pricingPlan) (\s@UpdateMap' {} a -> s {pricingPlan = a} :: UpdateMap)++-- | The name of the map resource to update.+updateMap_mapName :: Lens.Lens' UpdateMap Prelude.Text+updateMap_mapName = Lens.lens (\UpdateMap' {mapName} -> mapName) (\s@UpdateMap' {} a -> s {mapName = a} :: UpdateMap)++instance Core.AWSRequest UpdateMap where+  type AWSResponse UpdateMap = UpdateMapResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateMapResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "MapArn")+            Prelude.<*> (x Data..:> "MapName")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable UpdateMap where+  hashWithSalt _salt UpdateMap' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` mapName++instance Prelude.NFData UpdateMap where+  rnf UpdateMap' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf mapName++instance Data.ToHeaders UpdateMap where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateMap where+  toJSON UpdateMap' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan+          ]+      )++instance Data.ToPath UpdateMap where+  toPath UpdateMap' {..} =+    Prelude.mconcat+      ["/maps/v0/maps/", Data.toBS mapName]++instance Data.ToQuery UpdateMap where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateMapResponse' smart constructor.+data UpdateMapResponse = UpdateMapResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The Amazon Resource Name (ARN) of the updated map resource. Used to+    -- specify a resource across AWS.+    --+    -- -   Format example: @arn:aws:geo:region:account-id:map\/ExampleMap@+    mapArn :: Prelude.Text,+    -- | The name of the updated map resource.+    mapName :: Prelude.Text,+    -- | The timestamp for when the map resource was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateMapResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateMapResponse_httpStatus' - The response's http status code.+--+-- 'mapArn', 'updateMapResponse_mapArn' - The Amazon Resource Name (ARN) of the updated map resource. Used to+-- specify a resource across AWS.+--+-- -   Format example: @arn:aws:geo:region:account-id:map\/ExampleMap@+--+-- 'mapName', 'updateMapResponse_mapName' - The name of the updated map resource.+--+-- 'updateTime', 'updateMapResponse_updateTime' - The timestamp for when the map resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newUpdateMapResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'mapArn'+  Prelude.Text ->+  -- | 'mapName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  UpdateMapResponse+newUpdateMapResponse+  pHttpStatus_+  pMapArn_+  pMapName_+  pUpdateTime_ =+    UpdateMapResponse'+      { httpStatus = pHttpStatus_,+        mapArn = pMapArn_,+        mapName = pMapName_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | The response's http status code.+updateMapResponse_httpStatus :: Lens.Lens' UpdateMapResponse Prelude.Int+updateMapResponse_httpStatus = Lens.lens (\UpdateMapResponse' {httpStatus} -> httpStatus) (\s@UpdateMapResponse' {} a -> s {httpStatus = a} :: UpdateMapResponse)++-- | The Amazon Resource Name (ARN) of the updated map resource. Used to+-- specify a resource across AWS.+--+-- -   Format example: @arn:aws:geo:region:account-id:map\/ExampleMap@+updateMapResponse_mapArn :: Lens.Lens' UpdateMapResponse Prelude.Text+updateMapResponse_mapArn = Lens.lens (\UpdateMapResponse' {mapArn} -> mapArn) (\s@UpdateMapResponse' {} a -> s {mapArn = a} :: UpdateMapResponse)++-- | The name of the updated map resource.+updateMapResponse_mapName :: Lens.Lens' UpdateMapResponse Prelude.Text+updateMapResponse_mapName = Lens.lens (\UpdateMapResponse' {mapName} -> mapName) (\s@UpdateMapResponse' {} a -> s {mapName = a} :: UpdateMapResponse)++-- | The timestamp for when the map resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+updateMapResponse_updateTime :: Lens.Lens' UpdateMapResponse Prelude.UTCTime+updateMapResponse_updateTime = Lens.lens (\UpdateMapResponse' {updateTime} -> updateTime) (\s@UpdateMapResponse' {} a -> s {updateTime = a} :: UpdateMapResponse) Prelude.. Data._Time++instance Prelude.NFData UpdateMapResponse where+  rnf UpdateMapResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf mapArn+      `Prelude.seq` Prelude.rnf mapName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/UpdatePlaceIndex.hs view
@@ -0,0 +1,266 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.UpdatePlaceIndex+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the specified properties of a given place index resource.+module Amazonka.Location.UpdatePlaceIndex+  ( -- * Creating a Request+    UpdatePlaceIndex (..),+    newUpdatePlaceIndex,++    -- * Request Lenses+    updatePlaceIndex_dataSourceConfiguration,+    updatePlaceIndex_description,+    updatePlaceIndex_pricingPlan,+    updatePlaceIndex_indexName,++    -- * Destructuring the Response+    UpdatePlaceIndexResponse (..),+    newUpdatePlaceIndexResponse,++    -- * Response Lenses+    updatePlaceIndexResponse_httpStatus,+    updatePlaceIndexResponse_indexArn,+    updatePlaceIndexResponse_indexName,+    updatePlaceIndexResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdatePlaceIndex' smart constructor.+data UpdatePlaceIndex = UpdatePlaceIndex'+  { -- | Updates the data storage option for the place index resource.+    dataSourceConfiguration :: Prelude.Maybe DataSourceConfiguration,+    -- | Updates the description for the place index resource.+    description :: Prelude.Maybe Prelude.Text,+    -- | No longer used. If included, the only allowed value is+    -- @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | The name of the place index resource to update.+    indexName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdatePlaceIndex' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataSourceConfiguration', 'updatePlaceIndex_dataSourceConfiguration' - Updates the data storage option for the place index resource.+--+-- 'description', 'updatePlaceIndex_description' - Updates the description for the place index resource.+--+-- 'pricingPlan', 'updatePlaceIndex_pricingPlan' - No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+--+-- 'indexName', 'updatePlaceIndex_indexName' - The name of the place index resource to update.+newUpdatePlaceIndex ::+  -- | 'indexName'+  Prelude.Text ->+  UpdatePlaceIndex+newUpdatePlaceIndex pIndexName_ =+  UpdatePlaceIndex'+    { dataSourceConfiguration =+        Prelude.Nothing,+      description = Prelude.Nothing,+      pricingPlan = Prelude.Nothing,+      indexName = pIndexName_+    }++-- | Updates the data storage option for the place index resource.+updatePlaceIndex_dataSourceConfiguration :: Lens.Lens' UpdatePlaceIndex (Prelude.Maybe DataSourceConfiguration)+updatePlaceIndex_dataSourceConfiguration = Lens.lens (\UpdatePlaceIndex' {dataSourceConfiguration} -> dataSourceConfiguration) (\s@UpdatePlaceIndex' {} a -> s {dataSourceConfiguration = a} :: UpdatePlaceIndex)++-- | Updates the description for the place index resource.+updatePlaceIndex_description :: Lens.Lens' UpdatePlaceIndex (Prelude.Maybe Prelude.Text)+updatePlaceIndex_description = Lens.lens (\UpdatePlaceIndex' {description} -> description) (\s@UpdatePlaceIndex' {} a -> s {description = a} :: UpdatePlaceIndex)++-- | No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+updatePlaceIndex_pricingPlan :: Lens.Lens' UpdatePlaceIndex (Prelude.Maybe PricingPlan)+updatePlaceIndex_pricingPlan = Lens.lens (\UpdatePlaceIndex' {pricingPlan} -> pricingPlan) (\s@UpdatePlaceIndex' {} a -> s {pricingPlan = a} :: UpdatePlaceIndex)++-- | The name of the place index resource to update.+updatePlaceIndex_indexName :: Lens.Lens' UpdatePlaceIndex Prelude.Text+updatePlaceIndex_indexName = Lens.lens (\UpdatePlaceIndex' {indexName} -> indexName) (\s@UpdatePlaceIndex' {} a -> s {indexName = a} :: UpdatePlaceIndex)++instance Core.AWSRequest UpdatePlaceIndex where+  type+    AWSResponse UpdatePlaceIndex =+      UpdatePlaceIndexResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdatePlaceIndexResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "IndexArn")+            Prelude.<*> (x Data..:> "IndexName")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable UpdatePlaceIndex where+  hashWithSalt _salt UpdatePlaceIndex' {..} =+    _salt+      `Prelude.hashWithSalt` dataSourceConfiguration+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` indexName++instance Prelude.NFData UpdatePlaceIndex where+  rnf UpdatePlaceIndex' {..} =+    Prelude.rnf dataSourceConfiguration+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf indexName++instance Data.ToHeaders UpdatePlaceIndex where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdatePlaceIndex where+  toJSON UpdatePlaceIndex' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DataSourceConfiguration" Data..=)+              Prelude.<$> dataSourceConfiguration,+            ("Description" Data..=) Prelude.<$> description,+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan+          ]+      )++instance Data.ToPath UpdatePlaceIndex where+  toPath UpdatePlaceIndex' {..} =+    Prelude.mconcat+      ["/places/v0/indexes/", Data.toBS indexName]++instance Data.ToQuery UpdatePlaceIndex where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdatePlaceIndexResponse' smart constructor.+data UpdatePlaceIndexResponse = UpdatePlaceIndexResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The Amazon Resource Name (ARN) of the upated place index resource. Used+    -- to specify a resource across AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:place- index\/ExamplePlaceIndex@+    indexArn :: Prelude.Text,+    -- | The name of the updated place index resource.+    indexName :: Prelude.Text,+    -- | The timestamp for when the place index resource was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdatePlaceIndexResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updatePlaceIndexResponse_httpStatus' - The response's http status code.+--+-- 'indexArn', 'updatePlaceIndexResponse_indexArn' - The Amazon Resource Name (ARN) of the upated place index resource. Used+-- to specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:place- index\/ExamplePlaceIndex@+--+-- 'indexName', 'updatePlaceIndexResponse_indexName' - The name of the updated place index resource.+--+-- 'updateTime', 'updatePlaceIndexResponse_updateTime' - The timestamp for when the place index resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newUpdatePlaceIndexResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'indexArn'+  Prelude.Text ->+  -- | 'indexName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  UpdatePlaceIndexResponse+newUpdatePlaceIndexResponse+  pHttpStatus_+  pIndexArn_+  pIndexName_+  pUpdateTime_ =+    UpdatePlaceIndexResponse'+      { httpStatus =+          pHttpStatus_,+        indexArn = pIndexArn_,+        indexName = pIndexName_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | The response's http status code.+updatePlaceIndexResponse_httpStatus :: Lens.Lens' UpdatePlaceIndexResponse Prelude.Int+updatePlaceIndexResponse_httpStatus = Lens.lens (\UpdatePlaceIndexResponse' {httpStatus} -> httpStatus) (\s@UpdatePlaceIndexResponse' {} a -> s {httpStatus = a} :: UpdatePlaceIndexResponse)++-- | The Amazon Resource Name (ARN) of the upated place index resource. Used+-- to specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:place- index\/ExamplePlaceIndex@+updatePlaceIndexResponse_indexArn :: Lens.Lens' UpdatePlaceIndexResponse Prelude.Text+updatePlaceIndexResponse_indexArn = Lens.lens (\UpdatePlaceIndexResponse' {indexArn} -> indexArn) (\s@UpdatePlaceIndexResponse' {} a -> s {indexArn = a} :: UpdatePlaceIndexResponse)++-- | The name of the updated place index resource.+updatePlaceIndexResponse_indexName :: Lens.Lens' UpdatePlaceIndexResponse Prelude.Text+updatePlaceIndexResponse_indexName = Lens.lens (\UpdatePlaceIndexResponse' {indexName} -> indexName) (\s@UpdatePlaceIndexResponse' {} a -> s {indexName = a} :: UpdatePlaceIndexResponse)++-- | The timestamp for when the place index resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+updatePlaceIndexResponse_updateTime :: Lens.Lens' UpdatePlaceIndexResponse Prelude.UTCTime+updatePlaceIndexResponse_updateTime = Lens.lens (\UpdatePlaceIndexResponse' {updateTime} -> updateTime) (\s@UpdatePlaceIndexResponse' {} a -> s {updateTime = a} :: UpdatePlaceIndexResponse) Prelude.. Data._Time++instance Prelude.NFData UpdatePlaceIndexResponse where+  rnf UpdatePlaceIndexResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf indexArn+      `Prelude.seq` Prelude.rnf indexName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/UpdateRouteCalculator.hs view
@@ -0,0 +1,252 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.Location.UpdateRouteCalculator+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the specified properties for a given route calculator resource.+module Amazonka.Location.UpdateRouteCalculator+  ( -- * Creating a Request+    UpdateRouteCalculator (..),+    newUpdateRouteCalculator,++    -- * Request Lenses+    updateRouteCalculator_description,+    updateRouteCalculator_pricingPlan,+    updateRouteCalculator_calculatorName,++    -- * Destructuring the Response+    UpdateRouteCalculatorResponse (..),+    newUpdateRouteCalculatorResponse,++    -- * Response Lenses+    updateRouteCalculatorResponse_httpStatus,+    updateRouteCalculatorResponse_calculatorArn,+    updateRouteCalculatorResponse_calculatorName,+    updateRouteCalculatorResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateRouteCalculator' smart constructor.+data UpdateRouteCalculator = UpdateRouteCalculator'+  { -- | Updates the description for the route calculator resource.+    description :: Prelude.Maybe Prelude.Text,+    -- | No longer used. If included, the only allowed value is+    -- @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | The name of the route calculator resource to update.+    calculatorName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateRouteCalculator' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'updateRouteCalculator_description' - Updates the description for the route calculator resource.+--+-- 'pricingPlan', 'updateRouteCalculator_pricingPlan' - No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+--+-- 'calculatorName', 'updateRouteCalculator_calculatorName' - The name of the route calculator resource to update.+newUpdateRouteCalculator ::+  -- | 'calculatorName'+  Prelude.Text ->+  UpdateRouteCalculator+newUpdateRouteCalculator pCalculatorName_ =+  UpdateRouteCalculator'+    { description =+        Prelude.Nothing,+      pricingPlan = Prelude.Nothing,+      calculatorName = pCalculatorName_+    }++-- | Updates the description for the route calculator resource.+updateRouteCalculator_description :: Lens.Lens' UpdateRouteCalculator (Prelude.Maybe Prelude.Text)+updateRouteCalculator_description = Lens.lens (\UpdateRouteCalculator' {description} -> description) (\s@UpdateRouteCalculator' {} a -> s {description = a} :: UpdateRouteCalculator)++-- | No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+updateRouteCalculator_pricingPlan :: Lens.Lens' UpdateRouteCalculator (Prelude.Maybe PricingPlan)+updateRouteCalculator_pricingPlan = Lens.lens (\UpdateRouteCalculator' {pricingPlan} -> pricingPlan) (\s@UpdateRouteCalculator' {} a -> s {pricingPlan = a} :: UpdateRouteCalculator)++-- | The name of the route calculator resource to update.+updateRouteCalculator_calculatorName :: Lens.Lens' UpdateRouteCalculator Prelude.Text+updateRouteCalculator_calculatorName = Lens.lens (\UpdateRouteCalculator' {calculatorName} -> calculatorName) (\s@UpdateRouteCalculator' {} a -> s {calculatorName = a} :: UpdateRouteCalculator)++instance Core.AWSRequest UpdateRouteCalculator where+  type+    AWSResponse UpdateRouteCalculator =+      UpdateRouteCalculatorResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateRouteCalculatorResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "CalculatorArn")+            Prelude.<*> (x Data..:> "CalculatorName")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable UpdateRouteCalculator where+  hashWithSalt _salt UpdateRouteCalculator' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` calculatorName++instance Prelude.NFData UpdateRouteCalculator where+  rnf UpdateRouteCalculator' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf calculatorName++instance Data.ToHeaders UpdateRouteCalculator where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateRouteCalculator where+  toJSON UpdateRouteCalculator' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan+          ]+      )++instance Data.ToPath UpdateRouteCalculator where+  toPath UpdateRouteCalculator' {..} =+    Prelude.mconcat+      ["/routes/v0/calculators/", Data.toBS calculatorName]++instance Data.ToQuery UpdateRouteCalculator where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateRouteCalculatorResponse' smart constructor.+data UpdateRouteCalculatorResponse = UpdateRouteCalculatorResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The Amazon Resource Name (ARN) of the updated route calculator resource.+    -- Used to specify a resource across AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:route- calculator\/ExampleCalculator@+    calculatorArn :: Prelude.Text,+    -- | The name of the updated route calculator resource.+    calculatorName :: Prelude.Text,+    -- | The timestamp for when the route calculator was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateRouteCalculatorResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateRouteCalculatorResponse_httpStatus' - The response's http status code.+--+-- 'calculatorArn', 'updateRouteCalculatorResponse_calculatorArn' - The Amazon Resource Name (ARN) of the updated route calculator resource.+-- Used to specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:route- calculator\/ExampleCalculator@+--+-- 'calculatorName', 'updateRouteCalculatorResponse_calculatorName' - The name of the updated route calculator resource.+--+-- 'updateTime', 'updateRouteCalculatorResponse_updateTime' - The timestamp for when the route calculator was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newUpdateRouteCalculatorResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'calculatorArn'+  Prelude.Text ->+  -- | 'calculatorName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  UpdateRouteCalculatorResponse+newUpdateRouteCalculatorResponse+  pHttpStatus_+  pCalculatorArn_+  pCalculatorName_+  pUpdateTime_ =+    UpdateRouteCalculatorResponse'+      { httpStatus =+          pHttpStatus_,+        calculatorArn = pCalculatorArn_,+        calculatorName = pCalculatorName_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | The response's http status code.+updateRouteCalculatorResponse_httpStatus :: Lens.Lens' UpdateRouteCalculatorResponse Prelude.Int+updateRouteCalculatorResponse_httpStatus = Lens.lens (\UpdateRouteCalculatorResponse' {httpStatus} -> httpStatus) (\s@UpdateRouteCalculatorResponse' {} a -> s {httpStatus = a} :: UpdateRouteCalculatorResponse)++-- | The Amazon Resource Name (ARN) of the updated route calculator resource.+-- Used to specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:route- calculator\/ExampleCalculator@+updateRouteCalculatorResponse_calculatorArn :: Lens.Lens' UpdateRouteCalculatorResponse Prelude.Text+updateRouteCalculatorResponse_calculatorArn = Lens.lens (\UpdateRouteCalculatorResponse' {calculatorArn} -> calculatorArn) (\s@UpdateRouteCalculatorResponse' {} a -> s {calculatorArn = a} :: UpdateRouteCalculatorResponse)++-- | The name of the updated route calculator resource.+updateRouteCalculatorResponse_calculatorName :: Lens.Lens' UpdateRouteCalculatorResponse Prelude.Text+updateRouteCalculatorResponse_calculatorName = Lens.lens (\UpdateRouteCalculatorResponse' {calculatorName} -> calculatorName) (\s@UpdateRouteCalculatorResponse' {} a -> s {calculatorName = a} :: UpdateRouteCalculatorResponse)++-- | The timestamp for when the route calculator was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+updateRouteCalculatorResponse_updateTime :: Lens.Lens' UpdateRouteCalculatorResponse Prelude.UTCTime+updateRouteCalculatorResponse_updateTime = Lens.lens (\UpdateRouteCalculatorResponse' {updateTime} -> updateTime) (\s@UpdateRouteCalculatorResponse' {} a -> s {updateTime = a} :: UpdateRouteCalculatorResponse) Prelude.. Data._Time++instance Prelude.NFData UpdateRouteCalculatorResponse where+  rnf UpdateRouteCalculatorResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf calculatorArn+      `Prelude.seq` Prelude.rnf calculatorName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/UpdateTracker.hs view
@@ -0,0 +1,353 @@+{-# 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.Location.UpdateTracker+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the specified properties of a given tracker resource.+module Amazonka.Location.UpdateTracker+  ( -- * Creating a Request+    UpdateTracker (..),+    newUpdateTracker,++    -- * Request Lenses+    updateTracker_description,+    updateTracker_positionFiltering,+    updateTracker_pricingPlan,+    updateTracker_pricingPlanDataSource,+    updateTracker_trackerName,++    -- * Destructuring the Response+    UpdateTrackerResponse (..),+    newUpdateTrackerResponse,++    -- * Response Lenses+    updateTrackerResponse_httpStatus,+    updateTrackerResponse_trackerArn,+    updateTrackerResponse_trackerName,+    updateTrackerResponse_updateTime,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateTracker' smart constructor.+data UpdateTracker = UpdateTracker'+  { -- | Updates the description for the tracker resource.+    description :: Prelude.Maybe Prelude.Text,+    -- | Updates the position filtering for the tracker resource.+    --+    -- Valid values:+    --+    -- -   @TimeBased@ - Location updates are evaluated against linked geofence+    --     collections, but not every location update is stored. If your update+    --     frequency is more often than 30 seconds, only one update per 30+    --     seconds is stored for each unique device ID.+    --+    -- -   @DistanceBased@ - If the device has moved less than 30 m (98.4 ft),+    --     location updates are ignored. Location updates within this distance+    --     are neither evaluated against linked geofence collections, nor+    --     stored. This helps control costs by reducing the number of geofence+    --     evaluations and historical device positions to paginate through.+    --     Distance-based filtering can also reduce the effects of GPS noise+    --     when displaying device trajectories on a map.+    --+    -- -   @AccuracyBased@ - If the device has moved less than the measured+    --     accuracy, location updates are ignored. For example, if two+    --     consecutive updates from a device have a horizontal accuracy of 5 m+    --     and 10 m, the second update is ignored if the device has moved less+    --     than 15 m. Ignored location updates are neither evaluated against+    --     linked geofence collections, nor stored. This helps educe the+    --     effects of GPS noise when displaying device trajectories on a map,+    --     and can help control costs by reducing the number of geofence+    --     evaluations.+    positionFiltering :: Prelude.Maybe PositionFiltering,+    -- | No longer used. If included, the only allowed value is+    -- @RequestBasedUsage@.+    pricingPlan :: Prelude.Maybe PricingPlan,+    -- | This parameter is no longer used.+    pricingPlanDataSource :: Prelude.Maybe Prelude.Text,+    -- | The name of the tracker resource to update.+    trackerName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateTracker' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'updateTracker_description' - Updates the description for the tracker resource.+--+-- 'positionFiltering', 'updateTracker_positionFiltering' - Updates the position filtering for the tracker resource.+--+-- Valid values:+--+-- -   @TimeBased@ - Location updates are evaluated against linked geofence+--     collections, but not every location update is stored. If your update+--     frequency is more often than 30 seconds, only one update per 30+--     seconds is stored for each unique device ID.+--+-- -   @DistanceBased@ - If the device has moved less than 30 m (98.4 ft),+--     location updates are ignored. Location updates within this distance+--     are neither evaluated against linked geofence collections, nor+--     stored. This helps control costs by reducing the number of geofence+--     evaluations and historical device positions to paginate through.+--     Distance-based filtering can also reduce the effects of GPS noise+--     when displaying device trajectories on a map.+--+-- -   @AccuracyBased@ - If the device has moved less than the measured+--     accuracy, location updates are ignored. For example, if two+--     consecutive updates from a device have a horizontal accuracy of 5 m+--     and 10 m, the second update is ignored if the device has moved less+--     than 15 m. Ignored location updates are neither evaluated against+--     linked geofence collections, nor stored. This helps educe the+--     effects of GPS noise when displaying device trajectories on a map,+--     and can help control costs by reducing the number of geofence+--     evaluations.+--+-- 'pricingPlan', 'updateTracker_pricingPlan' - No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+--+-- 'pricingPlanDataSource', 'updateTracker_pricingPlanDataSource' - This parameter is no longer used.+--+-- 'trackerName', 'updateTracker_trackerName' - The name of the tracker resource to update.+newUpdateTracker ::+  -- | 'trackerName'+  Prelude.Text ->+  UpdateTracker+newUpdateTracker pTrackerName_ =+  UpdateTracker'+    { description = Prelude.Nothing,+      positionFiltering = Prelude.Nothing,+      pricingPlan = Prelude.Nothing,+      pricingPlanDataSource = Prelude.Nothing,+      trackerName = pTrackerName_+    }++-- | Updates the description for the tracker resource.+updateTracker_description :: Lens.Lens' UpdateTracker (Prelude.Maybe Prelude.Text)+updateTracker_description = Lens.lens (\UpdateTracker' {description} -> description) (\s@UpdateTracker' {} a -> s {description = a} :: UpdateTracker)++-- | Updates the position filtering for the tracker resource.+--+-- Valid values:+--+-- -   @TimeBased@ - Location updates are evaluated against linked geofence+--     collections, but not every location update is stored. If your update+--     frequency is more often than 30 seconds, only one update per 30+--     seconds is stored for each unique device ID.+--+-- -   @DistanceBased@ - If the device has moved less than 30 m (98.4 ft),+--     location updates are ignored. Location updates within this distance+--     are neither evaluated against linked geofence collections, nor+--     stored. This helps control costs by reducing the number of geofence+--     evaluations and historical device positions to paginate through.+--     Distance-based filtering can also reduce the effects of GPS noise+--     when displaying device trajectories on a map.+--+-- -   @AccuracyBased@ - If the device has moved less than the measured+--     accuracy, location updates are ignored. For example, if two+--     consecutive updates from a device have a horizontal accuracy of 5 m+--     and 10 m, the second update is ignored if the device has moved less+--     than 15 m. Ignored location updates are neither evaluated against+--     linked geofence collections, nor stored. This helps educe the+--     effects of GPS noise when displaying device trajectories on a map,+--     and can help control costs by reducing the number of geofence+--     evaluations.+updateTracker_positionFiltering :: Lens.Lens' UpdateTracker (Prelude.Maybe PositionFiltering)+updateTracker_positionFiltering = Lens.lens (\UpdateTracker' {positionFiltering} -> positionFiltering) (\s@UpdateTracker' {} a -> s {positionFiltering = a} :: UpdateTracker)++-- | No longer used. If included, the only allowed value is+-- @RequestBasedUsage@.+updateTracker_pricingPlan :: Lens.Lens' UpdateTracker (Prelude.Maybe PricingPlan)+updateTracker_pricingPlan = Lens.lens (\UpdateTracker' {pricingPlan} -> pricingPlan) (\s@UpdateTracker' {} a -> s {pricingPlan = a} :: UpdateTracker)++-- | This parameter is no longer used.+updateTracker_pricingPlanDataSource :: Lens.Lens' UpdateTracker (Prelude.Maybe Prelude.Text)+updateTracker_pricingPlanDataSource = Lens.lens (\UpdateTracker' {pricingPlanDataSource} -> pricingPlanDataSource) (\s@UpdateTracker' {} a -> s {pricingPlanDataSource = a} :: UpdateTracker)++-- | The name of the tracker resource to update.+updateTracker_trackerName :: Lens.Lens' UpdateTracker Prelude.Text+updateTracker_trackerName = Lens.lens (\UpdateTracker' {trackerName} -> trackerName) (\s@UpdateTracker' {} a -> s {trackerName = a} :: UpdateTracker)++instance Core.AWSRequest UpdateTracker where+  type+    AWSResponse UpdateTracker =+      UpdateTrackerResponse+  request overrides =+    Request.patchJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateTrackerResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "TrackerArn")+            Prelude.<*> (x Data..:> "TrackerName")+            Prelude.<*> (x Data..:> "UpdateTime")+      )++instance Prelude.Hashable UpdateTracker where+  hashWithSalt _salt UpdateTracker' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` positionFiltering+      `Prelude.hashWithSalt` pricingPlan+      `Prelude.hashWithSalt` pricingPlanDataSource+      `Prelude.hashWithSalt` trackerName++instance Prelude.NFData UpdateTracker where+  rnf UpdateTracker' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf positionFiltering+      `Prelude.seq` Prelude.rnf pricingPlan+      `Prelude.seq` Prelude.rnf pricingPlanDataSource+      `Prelude.seq` Prelude.rnf trackerName++instance Data.ToHeaders UpdateTracker where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateTracker where+  toJSON UpdateTracker' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("PositionFiltering" Data..=)+              Prelude.<$> positionFiltering,+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan,+            ("PricingPlanDataSource" Data..=)+              Prelude.<$> pricingPlanDataSource+          ]+      )++instance Data.ToPath UpdateTracker where+  toPath UpdateTracker' {..} =+    Prelude.mconcat+      ["/tracking/v0/trackers/", Data.toBS trackerName]++instance Data.ToQuery UpdateTracker where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateTrackerResponse' smart constructor.+data UpdateTrackerResponse = UpdateTrackerResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The Amazon Resource Name (ARN) of the updated tracker resource. Used to+    -- specify a resource across AWS.+    --+    -- -   Format example:+    --     @arn:aws:geo:region:account-id:tracker\/ExampleTracker@+    trackerArn :: Prelude.Text,+    -- | The name of the updated tracker resource.+    trackerName :: Prelude.Text,+    -- | The timestamp for when the tracker resource was last updated in+    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+    updateTime :: Data.ISO8601+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateTrackerResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateTrackerResponse_httpStatus' - The response's http status code.+--+-- 'trackerArn', 'updateTrackerResponse_trackerArn' - The Amazon Resource Name (ARN) of the updated tracker resource. Used to+-- specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:tracker\/ExampleTracker@+--+-- 'trackerName', 'updateTrackerResponse_trackerName' - The name of the updated tracker resource.+--+-- 'updateTime', 'updateTrackerResponse_updateTime' - The timestamp for when the tracker resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+newUpdateTrackerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'trackerArn'+  Prelude.Text ->+  -- | 'trackerName'+  Prelude.Text ->+  -- | 'updateTime'+  Prelude.UTCTime ->+  UpdateTrackerResponse+newUpdateTrackerResponse+  pHttpStatus_+  pTrackerArn_+  pTrackerName_+  pUpdateTime_ =+    UpdateTrackerResponse'+      { httpStatus = pHttpStatus_,+        trackerArn = pTrackerArn_,+        trackerName = pTrackerName_,+        updateTime = Data._Time Lens.# pUpdateTime_+      }++-- | The response's http status code.+updateTrackerResponse_httpStatus :: Lens.Lens' UpdateTrackerResponse Prelude.Int+updateTrackerResponse_httpStatus = Lens.lens (\UpdateTrackerResponse' {httpStatus} -> httpStatus) (\s@UpdateTrackerResponse' {} a -> s {httpStatus = a} :: UpdateTrackerResponse)++-- | The Amazon Resource Name (ARN) of the updated tracker resource. Used to+-- specify a resource across AWS.+--+-- -   Format example:+--     @arn:aws:geo:region:account-id:tracker\/ExampleTracker@+updateTrackerResponse_trackerArn :: Lens.Lens' UpdateTrackerResponse Prelude.Text+updateTrackerResponse_trackerArn = Lens.lens (\UpdateTrackerResponse' {trackerArn} -> trackerArn) (\s@UpdateTrackerResponse' {} a -> s {trackerArn = a} :: UpdateTrackerResponse)++-- | The name of the updated tracker resource.+updateTrackerResponse_trackerName :: Lens.Lens' UpdateTrackerResponse Prelude.Text+updateTrackerResponse_trackerName = Lens.lens (\UpdateTrackerResponse' {trackerName} -> trackerName) (\s@UpdateTrackerResponse' {} a -> s {trackerName = a} :: UpdateTrackerResponse)++-- | The timestamp for when the tracker resource was last updated in+-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>+-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.+updateTrackerResponse_updateTime :: Lens.Lens' UpdateTrackerResponse Prelude.UTCTime+updateTrackerResponse_updateTime = Lens.lens (\UpdateTrackerResponse' {updateTime} -> updateTime) (\s@UpdateTrackerResponse' {} a -> s {updateTime = a} :: UpdateTrackerResponse) Prelude.. Data._Time++instance Prelude.NFData UpdateTrackerResponse where+  rnf UpdateTrackerResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf trackerArn+      `Prelude.seq` Prelude.rnf trackerName+      `Prelude.seq` Prelude.rnf updateTime
+ gen/Amazonka/Location/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.Location.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.Location.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.Location.Lens+import Amazonka.Location.Types+import qualified Amazonka.Prelude as Prelude
+ src/.gitkeep view
+ test/Main.hs view
@@ -0,0 +1,23 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Main+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Main (main) where++import Test.Amazonka.Location+import Test.Amazonka.Location.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "Location"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/Location.hs view
@@ -0,0 +1,1098 @@+{-# 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.Location+-- Copyright   : (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.Location where++import Amazonka.Location+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.Location.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"+--         [ requestAssociateTrackerConsumer $+--             newAssociateTrackerConsumer+--+--         , requestBatchDeleteDevicePositionHistory $+--             newBatchDeleteDevicePositionHistory+--+--         , requestBatchDeleteGeofence $+--             newBatchDeleteGeofence+--+--         , requestBatchEvaluateGeofences $+--             newBatchEvaluateGeofences+--+--         , requestBatchGetDevicePosition $+--             newBatchGetDevicePosition+--+--         , requestBatchPutGeofence $+--             newBatchPutGeofence+--+--         , requestBatchUpdateDevicePosition $+--             newBatchUpdateDevicePosition+--+--         , requestCalculateRoute $+--             newCalculateRoute+--+--         , requestCalculateRouteMatrix $+--             newCalculateRouteMatrix+--+--         , requestCreateGeofenceCollection $+--             newCreateGeofenceCollection+--+--         , requestCreateMap $+--             newCreateMap+--+--         , requestCreatePlaceIndex $+--             newCreatePlaceIndex+--+--         , requestCreateRouteCalculator $+--             newCreateRouteCalculator+--+--         , requestCreateTracker $+--             newCreateTracker+--+--         , requestDeleteGeofenceCollection $+--             newDeleteGeofenceCollection+--+--         , requestDeleteMap $+--             newDeleteMap+--+--         , requestDeletePlaceIndex $+--             newDeletePlaceIndex+--+--         , requestDeleteRouteCalculator $+--             newDeleteRouteCalculator+--+--         , requestDeleteTracker $+--             newDeleteTracker+--+--         , requestDescribeGeofenceCollection $+--             newDescribeGeofenceCollection+--+--         , requestDescribeMap $+--             newDescribeMap+--+--         , requestDescribePlaceIndex $+--             newDescribePlaceIndex+--+--         , requestDescribeRouteCalculator $+--             newDescribeRouteCalculator+--+--         , requestDescribeTracker $+--             newDescribeTracker+--+--         , requestDisassociateTrackerConsumer $+--             newDisassociateTrackerConsumer+--+--         , requestGetDevicePosition $+--             newGetDevicePosition+--+--         , requestGetDevicePositionHistory $+--             newGetDevicePositionHistory+--+--         , requestGetGeofence $+--             newGetGeofence+--+--         , requestGetMapGlyphs $+--             newGetMapGlyphs+--+--         , requestGetMapSprites $+--             newGetMapSprites+--+--         , requestGetMapStyleDescriptor $+--             newGetMapStyleDescriptor+--+--         , requestGetMapTile $+--             newGetMapTile+--+--         , requestGetPlace $+--             newGetPlace+--+--         , requestListDevicePositions $+--             newListDevicePositions+--+--         , requestListGeofenceCollections $+--             newListGeofenceCollections+--+--         , requestListGeofences $+--             newListGeofences+--+--         , requestListMaps $+--             newListMaps+--+--         , requestListPlaceIndexes $+--             newListPlaceIndexes+--+--         , requestListRouteCalculators $+--             newListRouteCalculators+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestListTrackerConsumers $+--             newListTrackerConsumers+--+--         , requestListTrackers $+--             newListTrackers+--+--         , requestPutGeofence $+--             newPutGeofence+--+--         , requestSearchPlaceIndexForPosition $+--             newSearchPlaceIndexForPosition+--+--         , requestSearchPlaceIndexForSuggestions $+--             newSearchPlaceIndexForSuggestions+--+--         , requestSearchPlaceIndexForText $+--             newSearchPlaceIndexForText+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateGeofenceCollection $+--             newUpdateGeofenceCollection+--+--         , requestUpdateMap $+--             newUpdateMap+--+--         , requestUpdatePlaceIndex $+--             newUpdatePlaceIndex+--+--         , requestUpdateRouteCalculator $+--             newUpdateRouteCalculator+--+--         , requestUpdateTracker $+--             newUpdateTracker+--+--           ]++--     , testGroup "response"+--         [ responseAssociateTrackerConsumer $+--             newAssociateTrackerConsumerResponse+--+--         , responseBatchDeleteDevicePositionHistory $+--             newBatchDeleteDevicePositionHistoryResponse+--+--         , responseBatchDeleteGeofence $+--             newBatchDeleteGeofenceResponse+--+--         , responseBatchEvaluateGeofences $+--             newBatchEvaluateGeofencesResponse+--+--         , responseBatchGetDevicePosition $+--             newBatchGetDevicePositionResponse+--+--         , responseBatchPutGeofence $+--             newBatchPutGeofenceResponse+--+--         , responseBatchUpdateDevicePosition $+--             newBatchUpdateDevicePositionResponse+--+--         , responseCalculateRoute $+--             newCalculateRouteResponse+--+--         , responseCalculateRouteMatrix $+--             newCalculateRouteMatrixResponse+--+--         , responseCreateGeofenceCollection $+--             newCreateGeofenceCollectionResponse+--+--         , responseCreateMap $+--             newCreateMapResponse+--+--         , responseCreatePlaceIndex $+--             newCreatePlaceIndexResponse+--+--         , responseCreateRouteCalculator $+--             newCreateRouteCalculatorResponse+--+--         , responseCreateTracker $+--             newCreateTrackerResponse+--+--         , responseDeleteGeofenceCollection $+--             newDeleteGeofenceCollectionResponse+--+--         , responseDeleteMap $+--             newDeleteMapResponse+--+--         , responseDeletePlaceIndex $+--             newDeletePlaceIndexResponse+--+--         , responseDeleteRouteCalculator $+--             newDeleteRouteCalculatorResponse+--+--         , responseDeleteTracker $+--             newDeleteTrackerResponse+--+--         , responseDescribeGeofenceCollection $+--             newDescribeGeofenceCollectionResponse+--+--         , responseDescribeMap $+--             newDescribeMapResponse+--+--         , responseDescribePlaceIndex $+--             newDescribePlaceIndexResponse+--+--         , responseDescribeRouteCalculator $+--             newDescribeRouteCalculatorResponse+--+--         , responseDescribeTracker $+--             newDescribeTrackerResponse+--+--         , responseDisassociateTrackerConsumer $+--             newDisassociateTrackerConsumerResponse+--+--         , responseGetDevicePosition $+--             newGetDevicePositionResponse+--+--         , responseGetDevicePositionHistory $+--             newGetDevicePositionHistoryResponse+--+--         , responseGetGeofence $+--             newGetGeofenceResponse+--+--         , responseGetMapGlyphs $+--             newGetMapGlyphsResponse+--+--         , responseGetMapSprites $+--             newGetMapSpritesResponse+--+--         , responseGetMapStyleDescriptor $+--             newGetMapStyleDescriptorResponse+--+--         , responseGetMapTile $+--             newGetMapTileResponse+--+--         , responseGetPlace $+--             newGetPlaceResponse+--+--         , responseListDevicePositions $+--             newListDevicePositionsResponse+--+--         , responseListGeofenceCollections $+--             newListGeofenceCollectionsResponse+--+--         , responseListGeofences $+--             newListGeofencesResponse+--+--         , responseListMaps $+--             newListMapsResponse+--+--         , responseListPlaceIndexes $+--             newListPlaceIndexesResponse+--+--         , responseListRouteCalculators $+--             newListRouteCalculatorsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responseListTrackerConsumers $+--             newListTrackerConsumersResponse+--+--         , responseListTrackers $+--             newListTrackersResponse+--+--         , responsePutGeofence $+--             newPutGeofenceResponse+--+--         , responseSearchPlaceIndexForPosition $+--             newSearchPlaceIndexForPositionResponse+--+--         , responseSearchPlaceIndexForSuggestions $+--             newSearchPlaceIndexForSuggestionsResponse+--+--         , responseSearchPlaceIndexForText $+--             newSearchPlaceIndexForTextResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateGeofenceCollection $+--             newUpdateGeofenceCollectionResponse+--+--         , responseUpdateMap $+--             newUpdateMapResponse+--+--         , responseUpdatePlaceIndex $+--             newUpdatePlaceIndexResponse+--+--         , responseUpdateRouteCalculator $+--             newUpdateRouteCalculatorResponse+--+--         , responseUpdateTracker $+--             newUpdateTrackerResponse+--+--           ]+--     ]++-- Requests++requestAssociateTrackerConsumer :: AssociateTrackerConsumer -> TestTree+requestAssociateTrackerConsumer =+  req+    "AssociateTrackerConsumer"+    "fixture/AssociateTrackerConsumer.yaml"++requestBatchDeleteDevicePositionHistory :: BatchDeleteDevicePositionHistory -> TestTree+requestBatchDeleteDevicePositionHistory =+  req+    "BatchDeleteDevicePositionHistory"+    "fixture/BatchDeleteDevicePositionHistory.yaml"++requestBatchDeleteGeofence :: BatchDeleteGeofence -> TestTree+requestBatchDeleteGeofence =+  req+    "BatchDeleteGeofence"+    "fixture/BatchDeleteGeofence.yaml"++requestBatchEvaluateGeofences :: BatchEvaluateGeofences -> TestTree+requestBatchEvaluateGeofences =+  req+    "BatchEvaluateGeofences"+    "fixture/BatchEvaluateGeofences.yaml"++requestBatchGetDevicePosition :: BatchGetDevicePosition -> TestTree+requestBatchGetDevicePosition =+  req+    "BatchGetDevicePosition"+    "fixture/BatchGetDevicePosition.yaml"++requestBatchPutGeofence :: BatchPutGeofence -> TestTree+requestBatchPutGeofence =+  req+    "BatchPutGeofence"+    "fixture/BatchPutGeofence.yaml"++requestBatchUpdateDevicePosition :: BatchUpdateDevicePosition -> TestTree+requestBatchUpdateDevicePosition =+  req+    "BatchUpdateDevicePosition"+    "fixture/BatchUpdateDevicePosition.yaml"++requestCalculateRoute :: CalculateRoute -> TestTree+requestCalculateRoute =+  req+    "CalculateRoute"+    "fixture/CalculateRoute.yaml"++requestCalculateRouteMatrix :: CalculateRouteMatrix -> TestTree+requestCalculateRouteMatrix =+  req+    "CalculateRouteMatrix"+    "fixture/CalculateRouteMatrix.yaml"++requestCreateGeofenceCollection :: CreateGeofenceCollection -> TestTree+requestCreateGeofenceCollection =+  req+    "CreateGeofenceCollection"+    "fixture/CreateGeofenceCollection.yaml"++requestCreateMap :: CreateMap -> TestTree+requestCreateMap =+  req+    "CreateMap"+    "fixture/CreateMap.yaml"++requestCreatePlaceIndex :: CreatePlaceIndex -> TestTree+requestCreatePlaceIndex =+  req+    "CreatePlaceIndex"+    "fixture/CreatePlaceIndex.yaml"++requestCreateRouteCalculator :: CreateRouteCalculator -> TestTree+requestCreateRouteCalculator =+  req+    "CreateRouteCalculator"+    "fixture/CreateRouteCalculator.yaml"++requestCreateTracker :: CreateTracker -> TestTree+requestCreateTracker =+  req+    "CreateTracker"+    "fixture/CreateTracker.yaml"++requestDeleteGeofenceCollection :: DeleteGeofenceCollection -> TestTree+requestDeleteGeofenceCollection =+  req+    "DeleteGeofenceCollection"+    "fixture/DeleteGeofenceCollection.yaml"++requestDeleteMap :: DeleteMap -> TestTree+requestDeleteMap =+  req+    "DeleteMap"+    "fixture/DeleteMap.yaml"++requestDeletePlaceIndex :: DeletePlaceIndex -> TestTree+requestDeletePlaceIndex =+  req+    "DeletePlaceIndex"+    "fixture/DeletePlaceIndex.yaml"++requestDeleteRouteCalculator :: DeleteRouteCalculator -> TestTree+requestDeleteRouteCalculator =+  req+    "DeleteRouteCalculator"+    "fixture/DeleteRouteCalculator.yaml"++requestDeleteTracker :: DeleteTracker -> TestTree+requestDeleteTracker =+  req+    "DeleteTracker"+    "fixture/DeleteTracker.yaml"++requestDescribeGeofenceCollection :: DescribeGeofenceCollection -> TestTree+requestDescribeGeofenceCollection =+  req+    "DescribeGeofenceCollection"+    "fixture/DescribeGeofenceCollection.yaml"++requestDescribeMap :: DescribeMap -> TestTree+requestDescribeMap =+  req+    "DescribeMap"+    "fixture/DescribeMap.yaml"++requestDescribePlaceIndex :: DescribePlaceIndex -> TestTree+requestDescribePlaceIndex =+  req+    "DescribePlaceIndex"+    "fixture/DescribePlaceIndex.yaml"++requestDescribeRouteCalculator :: DescribeRouteCalculator -> TestTree+requestDescribeRouteCalculator =+  req+    "DescribeRouteCalculator"+    "fixture/DescribeRouteCalculator.yaml"++requestDescribeTracker :: DescribeTracker -> TestTree+requestDescribeTracker =+  req+    "DescribeTracker"+    "fixture/DescribeTracker.yaml"++requestDisassociateTrackerConsumer :: DisassociateTrackerConsumer -> TestTree+requestDisassociateTrackerConsumer =+  req+    "DisassociateTrackerConsumer"+    "fixture/DisassociateTrackerConsumer.yaml"++requestGetDevicePosition :: GetDevicePosition -> TestTree+requestGetDevicePosition =+  req+    "GetDevicePosition"+    "fixture/GetDevicePosition.yaml"++requestGetDevicePositionHistory :: GetDevicePositionHistory -> TestTree+requestGetDevicePositionHistory =+  req+    "GetDevicePositionHistory"+    "fixture/GetDevicePositionHistory.yaml"++requestGetGeofence :: GetGeofence -> TestTree+requestGetGeofence =+  req+    "GetGeofence"+    "fixture/GetGeofence.yaml"++requestGetMapGlyphs :: GetMapGlyphs -> TestTree+requestGetMapGlyphs =+  req+    "GetMapGlyphs"+    "fixture/GetMapGlyphs.yaml"++requestGetMapSprites :: GetMapSprites -> TestTree+requestGetMapSprites =+  req+    "GetMapSprites"+    "fixture/GetMapSprites.yaml"++requestGetMapStyleDescriptor :: GetMapStyleDescriptor -> TestTree+requestGetMapStyleDescriptor =+  req+    "GetMapStyleDescriptor"+    "fixture/GetMapStyleDescriptor.yaml"++requestGetMapTile :: GetMapTile -> TestTree+requestGetMapTile =+  req+    "GetMapTile"+    "fixture/GetMapTile.yaml"++requestGetPlace :: GetPlace -> TestTree+requestGetPlace =+  req+    "GetPlace"+    "fixture/GetPlace.yaml"++requestListDevicePositions :: ListDevicePositions -> TestTree+requestListDevicePositions =+  req+    "ListDevicePositions"+    "fixture/ListDevicePositions.yaml"++requestListGeofenceCollections :: ListGeofenceCollections -> TestTree+requestListGeofenceCollections =+  req+    "ListGeofenceCollections"+    "fixture/ListGeofenceCollections.yaml"++requestListGeofences :: ListGeofences -> TestTree+requestListGeofences =+  req+    "ListGeofences"+    "fixture/ListGeofences.yaml"++requestListMaps :: ListMaps -> TestTree+requestListMaps =+  req+    "ListMaps"+    "fixture/ListMaps.yaml"++requestListPlaceIndexes :: ListPlaceIndexes -> TestTree+requestListPlaceIndexes =+  req+    "ListPlaceIndexes"+    "fixture/ListPlaceIndexes.yaml"++requestListRouteCalculators :: ListRouteCalculators -> TestTree+requestListRouteCalculators =+  req+    "ListRouteCalculators"+    "fixture/ListRouteCalculators.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestListTrackerConsumers :: ListTrackerConsumers -> TestTree+requestListTrackerConsumers =+  req+    "ListTrackerConsumers"+    "fixture/ListTrackerConsumers.yaml"++requestListTrackers :: ListTrackers -> TestTree+requestListTrackers =+  req+    "ListTrackers"+    "fixture/ListTrackers.yaml"++requestPutGeofence :: PutGeofence -> TestTree+requestPutGeofence =+  req+    "PutGeofence"+    "fixture/PutGeofence.yaml"++requestSearchPlaceIndexForPosition :: SearchPlaceIndexForPosition -> TestTree+requestSearchPlaceIndexForPosition =+  req+    "SearchPlaceIndexForPosition"+    "fixture/SearchPlaceIndexForPosition.yaml"++requestSearchPlaceIndexForSuggestions :: SearchPlaceIndexForSuggestions -> TestTree+requestSearchPlaceIndexForSuggestions =+  req+    "SearchPlaceIndexForSuggestions"+    "fixture/SearchPlaceIndexForSuggestions.yaml"++requestSearchPlaceIndexForText :: SearchPlaceIndexForText -> TestTree+requestSearchPlaceIndexForText =+  req+    "SearchPlaceIndexForText"+    "fixture/SearchPlaceIndexForText.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateGeofenceCollection :: UpdateGeofenceCollection -> TestTree+requestUpdateGeofenceCollection =+  req+    "UpdateGeofenceCollection"+    "fixture/UpdateGeofenceCollection.yaml"++requestUpdateMap :: UpdateMap -> TestTree+requestUpdateMap =+  req+    "UpdateMap"+    "fixture/UpdateMap.yaml"++requestUpdatePlaceIndex :: UpdatePlaceIndex -> TestTree+requestUpdatePlaceIndex =+  req+    "UpdatePlaceIndex"+    "fixture/UpdatePlaceIndex.yaml"++requestUpdateRouteCalculator :: UpdateRouteCalculator -> TestTree+requestUpdateRouteCalculator =+  req+    "UpdateRouteCalculator"+    "fixture/UpdateRouteCalculator.yaml"++requestUpdateTracker :: UpdateTracker -> TestTree+requestUpdateTracker =+  req+    "UpdateTracker"+    "fixture/UpdateTracker.yaml"++-- Responses++responseAssociateTrackerConsumer :: AssociateTrackerConsumerResponse -> TestTree+responseAssociateTrackerConsumer =+  res+    "AssociateTrackerConsumerResponse"+    "fixture/AssociateTrackerConsumerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AssociateTrackerConsumer)++responseBatchDeleteDevicePositionHistory :: BatchDeleteDevicePositionHistoryResponse -> TestTree+responseBatchDeleteDevicePositionHistory =+  res+    "BatchDeleteDevicePositionHistoryResponse"+    "fixture/BatchDeleteDevicePositionHistoryResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchDeleteDevicePositionHistory)++responseBatchDeleteGeofence :: BatchDeleteGeofenceResponse -> TestTree+responseBatchDeleteGeofence =+  res+    "BatchDeleteGeofenceResponse"+    "fixture/BatchDeleteGeofenceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchDeleteGeofence)++responseBatchEvaluateGeofences :: BatchEvaluateGeofencesResponse -> TestTree+responseBatchEvaluateGeofences =+  res+    "BatchEvaluateGeofencesResponse"+    "fixture/BatchEvaluateGeofencesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchEvaluateGeofences)++responseBatchGetDevicePosition :: BatchGetDevicePositionResponse -> TestTree+responseBatchGetDevicePosition =+  res+    "BatchGetDevicePositionResponse"+    "fixture/BatchGetDevicePositionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchGetDevicePosition)++responseBatchPutGeofence :: BatchPutGeofenceResponse -> TestTree+responseBatchPutGeofence =+  res+    "BatchPutGeofenceResponse"+    "fixture/BatchPutGeofenceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchPutGeofence)++responseBatchUpdateDevicePosition :: BatchUpdateDevicePositionResponse -> TestTree+responseBatchUpdateDevicePosition =+  res+    "BatchUpdateDevicePositionResponse"+    "fixture/BatchUpdateDevicePositionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchUpdateDevicePosition)++responseCalculateRoute :: CalculateRouteResponse -> TestTree+responseCalculateRoute =+  res+    "CalculateRouteResponse"+    "fixture/CalculateRouteResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CalculateRoute)++responseCalculateRouteMatrix :: CalculateRouteMatrixResponse -> TestTree+responseCalculateRouteMatrix =+  res+    "CalculateRouteMatrixResponse"+    "fixture/CalculateRouteMatrixResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CalculateRouteMatrix)++responseCreateGeofenceCollection :: CreateGeofenceCollectionResponse -> TestTree+responseCreateGeofenceCollection =+  res+    "CreateGeofenceCollectionResponse"+    "fixture/CreateGeofenceCollectionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateGeofenceCollection)++responseCreateMap :: CreateMapResponse -> TestTree+responseCreateMap =+  res+    "CreateMapResponse"+    "fixture/CreateMapResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateMap)++responseCreatePlaceIndex :: CreatePlaceIndexResponse -> TestTree+responseCreatePlaceIndex =+  res+    "CreatePlaceIndexResponse"+    "fixture/CreatePlaceIndexResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreatePlaceIndex)++responseCreateRouteCalculator :: CreateRouteCalculatorResponse -> TestTree+responseCreateRouteCalculator =+  res+    "CreateRouteCalculatorResponse"+    "fixture/CreateRouteCalculatorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateRouteCalculator)++responseCreateTracker :: CreateTrackerResponse -> TestTree+responseCreateTracker =+  res+    "CreateTrackerResponse"+    "fixture/CreateTrackerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateTracker)++responseDeleteGeofenceCollection :: DeleteGeofenceCollectionResponse -> TestTree+responseDeleteGeofenceCollection =+  res+    "DeleteGeofenceCollectionResponse"+    "fixture/DeleteGeofenceCollectionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteGeofenceCollection)++responseDeleteMap :: DeleteMapResponse -> TestTree+responseDeleteMap =+  res+    "DeleteMapResponse"+    "fixture/DeleteMapResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteMap)++responseDeletePlaceIndex :: DeletePlaceIndexResponse -> TestTree+responseDeletePlaceIndex =+  res+    "DeletePlaceIndexResponse"+    "fixture/DeletePlaceIndexResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeletePlaceIndex)++responseDeleteRouteCalculator :: DeleteRouteCalculatorResponse -> TestTree+responseDeleteRouteCalculator =+  res+    "DeleteRouteCalculatorResponse"+    "fixture/DeleteRouteCalculatorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteRouteCalculator)++responseDeleteTracker :: DeleteTrackerResponse -> TestTree+responseDeleteTracker =+  res+    "DeleteTrackerResponse"+    "fixture/DeleteTrackerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteTracker)++responseDescribeGeofenceCollection :: DescribeGeofenceCollectionResponse -> TestTree+responseDescribeGeofenceCollection =+  res+    "DescribeGeofenceCollectionResponse"+    "fixture/DescribeGeofenceCollectionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeGeofenceCollection)++responseDescribeMap :: DescribeMapResponse -> TestTree+responseDescribeMap =+  res+    "DescribeMapResponse"+    "fixture/DescribeMapResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeMap)++responseDescribePlaceIndex :: DescribePlaceIndexResponse -> TestTree+responseDescribePlaceIndex =+  res+    "DescribePlaceIndexResponse"+    "fixture/DescribePlaceIndexResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribePlaceIndex)++responseDescribeRouteCalculator :: DescribeRouteCalculatorResponse -> TestTree+responseDescribeRouteCalculator =+  res+    "DescribeRouteCalculatorResponse"+    "fixture/DescribeRouteCalculatorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeRouteCalculator)++responseDescribeTracker :: DescribeTrackerResponse -> TestTree+responseDescribeTracker =+  res+    "DescribeTrackerResponse"+    "fixture/DescribeTrackerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeTracker)++responseDisassociateTrackerConsumer :: DisassociateTrackerConsumerResponse -> TestTree+responseDisassociateTrackerConsumer =+  res+    "DisassociateTrackerConsumerResponse"+    "fixture/DisassociateTrackerConsumerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DisassociateTrackerConsumer)++responseGetDevicePosition :: GetDevicePositionResponse -> TestTree+responseGetDevicePosition =+  res+    "GetDevicePositionResponse"+    "fixture/GetDevicePositionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDevicePosition)++responseGetDevicePositionHistory :: GetDevicePositionHistoryResponse -> TestTree+responseGetDevicePositionHistory =+  res+    "GetDevicePositionHistoryResponse"+    "fixture/GetDevicePositionHistoryResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDevicePositionHistory)++responseGetGeofence :: GetGeofenceResponse -> TestTree+responseGetGeofence =+  res+    "GetGeofenceResponse"+    "fixture/GetGeofenceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetGeofence)++responseGetMapGlyphs :: GetMapGlyphsResponse -> TestTree+responseGetMapGlyphs =+  res+    "GetMapGlyphsResponse"+    "fixture/GetMapGlyphsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetMapGlyphs)++responseGetMapSprites :: GetMapSpritesResponse -> TestTree+responseGetMapSprites =+  res+    "GetMapSpritesResponse"+    "fixture/GetMapSpritesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetMapSprites)++responseGetMapStyleDescriptor :: GetMapStyleDescriptorResponse -> TestTree+responseGetMapStyleDescriptor =+  res+    "GetMapStyleDescriptorResponse"+    "fixture/GetMapStyleDescriptorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetMapStyleDescriptor)++responseGetMapTile :: GetMapTileResponse -> TestTree+responseGetMapTile =+  res+    "GetMapTileResponse"+    "fixture/GetMapTileResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetMapTile)++responseGetPlace :: GetPlaceResponse -> TestTree+responseGetPlace =+  res+    "GetPlaceResponse"+    "fixture/GetPlaceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetPlace)++responseListDevicePositions :: ListDevicePositionsResponse -> TestTree+responseListDevicePositions =+  res+    "ListDevicePositionsResponse"+    "fixture/ListDevicePositionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListDevicePositions)++responseListGeofenceCollections :: ListGeofenceCollectionsResponse -> TestTree+responseListGeofenceCollections =+  res+    "ListGeofenceCollectionsResponse"+    "fixture/ListGeofenceCollectionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListGeofenceCollections)++responseListGeofences :: ListGeofencesResponse -> TestTree+responseListGeofences =+  res+    "ListGeofencesResponse"+    "fixture/ListGeofencesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListGeofences)++responseListMaps :: ListMapsResponse -> TestTree+responseListMaps =+  res+    "ListMapsResponse"+    "fixture/ListMapsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListMaps)++responseListPlaceIndexes :: ListPlaceIndexesResponse -> TestTree+responseListPlaceIndexes =+  res+    "ListPlaceIndexesResponse"+    "fixture/ListPlaceIndexesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListPlaceIndexes)++responseListRouteCalculators :: ListRouteCalculatorsResponse -> TestTree+responseListRouteCalculators =+  res+    "ListRouteCalculatorsResponse"+    "fixture/ListRouteCalculatorsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListRouteCalculators)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responseListTrackerConsumers :: ListTrackerConsumersResponse -> TestTree+responseListTrackerConsumers =+  res+    "ListTrackerConsumersResponse"+    "fixture/ListTrackerConsumersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTrackerConsumers)++responseListTrackers :: ListTrackersResponse -> TestTree+responseListTrackers =+  res+    "ListTrackersResponse"+    "fixture/ListTrackersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTrackers)++responsePutGeofence :: PutGeofenceResponse -> TestTree+responsePutGeofence =+  res+    "PutGeofenceResponse"+    "fixture/PutGeofenceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutGeofence)++responseSearchPlaceIndexForPosition :: SearchPlaceIndexForPositionResponse -> TestTree+responseSearchPlaceIndexForPosition =+  res+    "SearchPlaceIndexForPositionResponse"+    "fixture/SearchPlaceIndexForPositionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SearchPlaceIndexForPosition)++responseSearchPlaceIndexForSuggestions :: SearchPlaceIndexForSuggestionsResponse -> TestTree+responseSearchPlaceIndexForSuggestions =+  res+    "SearchPlaceIndexForSuggestionsResponse"+    "fixture/SearchPlaceIndexForSuggestionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SearchPlaceIndexForSuggestions)++responseSearchPlaceIndexForText :: SearchPlaceIndexForTextResponse -> TestTree+responseSearchPlaceIndexForText =+  res+    "SearchPlaceIndexForTextResponse"+    "fixture/SearchPlaceIndexForTextResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SearchPlaceIndexForText)++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)++responseUpdateGeofenceCollection :: UpdateGeofenceCollectionResponse -> TestTree+responseUpdateGeofenceCollection =+  res+    "UpdateGeofenceCollectionResponse"+    "fixture/UpdateGeofenceCollectionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateGeofenceCollection)++responseUpdateMap :: UpdateMapResponse -> TestTree+responseUpdateMap =+  res+    "UpdateMapResponse"+    "fixture/UpdateMapResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateMap)++responseUpdatePlaceIndex :: UpdatePlaceIndexResponse -> TestTree+responseUpdatePlaceIndex =+  res+    "UpdatePlaceIndexResponse"+    "fixture/UpdatePlaceIndexResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdatePlaceIndex)++responseUpdateRouteCalculator :: UpdateRouteCalculatorResponse -> TestTree+responseUpdateRouteCalculator =+  res+    "UpdateRouteCalculatorResponse"+    "fixture/UpdateRouteCalculatorResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateRouteCalculator)++responseUpdateTracker :: UpdateTrackerResponse -> TestTree+responseUpdateTracker =+  res+    "UpdateTrackerResponse"+    "fixture/UpdateTrackerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateTracker)
+ test/Test/Amazonka/Location.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.Location+-- Copyright   : (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.Location+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/Location/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.Location.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.Location.Internal where